查看: 360|回复: 4

Arduino mega 2560 +ESP8266-01S 自动透传代码 C语言代码

[复制链接]

该用户从未签到

发表于 2021-3-2 14:01 | 显示全部楼层 |阅读模式
本帖最后由 ws9528 于 2021-3-2 14:10 编辑

Arduino mega 2560  针脚多,没有WIFI很麻烦。ESP8266有WIFI针脚太少,很麻烦。现在把两个结合起来用。这个代码网上可以找到,我只是改动了一点点,感谢原作者的无私奉献,现在再次贴出,供有需要的朋友参考。
ESP8266-01S 使用的是2560上面标识TX314  和RX315这两个针脚。  也就是用的是3号串口 当然,你想用1号和2号串口都行,0号串口我没有测试,估计是不行的,因为和电脑连接刷芯片那个理论上就是0号串口,如果8266连接0号串口会导致刷机失败。

ESP8266-01S上面的RX针脚连接2560上面的TX314针脚
ESP8266-01S上面的TX针脚连接2560上面的RX314针脚
ESP8266-01S上面的GGND针脚连接2560上面的GND针脚
ESP8266-01S上面的3V3针脚连接2560上面的3.3V针脚




复制代码
  1. const int LED = 50;             // 设置LED指示灯使用50针脚
  2. boolean Zhi_Ling_Mo_Shi = true; // 标识ESP8266在 指令模式 还是在 透传模式
  3. String Fan_Hui_Zi_Fu = "";      // ESP8266返回字符

  4. void setup() {
  5.   Serial.begin(115200);
  6.   Serial3.begin(115200);

  7.   pinMode(LED, OUTPUT);
  8. }

  9. void loop() {
  10.   /*判断ESP8266当前是否在透传模式 并用LED指示灯给于提示*/
  11.   if (Zhi_Ling_Mo_Shi == false) {
  12.     digitalWrite(LED, HIGH);
  13.     //    Serial.println("在透传模式 灯亮");
  14.   } else {
  15.     digitalWrite(LED, LOW);
  16.     //    Serial.println("在指令模式 灯灭");
  17.   }


  18.   /*链接WIFI和服务器并开启透传*/
  19.   while (Zhi_Ling_Mo_Shi == true) {
  20.     Serial.print("第一步:测试ESP8266是否在透传模式  ");
  21.     Serial3.println("test");
  22.     delay(800);
  23.     while (Serial3.available() > 0) {
  24.       Fan_Hui_Zi_Fu += char(Serial3.read());
  25.       delay(2);
  26.     }
  27.     if (Fan_Hui_Zi_Fu.length() < 1) {
  28.       Zhi_Ling_Mo_Shi = false;
  29.       break;
  30.     }
  31.     Serial.println("完成");


  32.     Serial.print("第二步:重新启动ESP8266  ");
  33.     Fan_Hui_Zi_Fu = "";
  34.     Serial3.println("AT+RST");
  35.     while (true) { //wait for ok
  36.       while (Serial3.available() > 0) {
  37.         Fan_Hui_Zi_Fu += char(Serial3.read());
  38.         delay(2);
  39.       }
  40.       if (Fan_Hui_Zi_Fu.lastIndexOf("OK") != -1) {
  41.         //        Serial.println(Fan_Hui_Zi_Fu);
  42.         break;
  43.       }
  44.     }
  45.     Serial.println("完成");


  46.     Serial.print("第三步:开启透传模式  ");
  47.     Fan_Hui_Zi_Fu = "";
  48.     Serial3.println("AT+CIPMODE=1");
  49.     while (true) { //wait for ok
  50.       while (Serial3.available() > 0) {
  51.         Fan_Hui_Zi_Fu += char(Serial3.read());
  52.         delay(2);
  53.       }
  54.       if (Fan_Hui_Zi_Fu.lastIndexOf("OK") != -1) {
  55.         //        Serial.println(Fan_Hui_Zi_Fu);
  56.         break;
  57.       }
  58.     }
  59.     Serial.println("完成");


  60.     Serial.print("第四步:链接WIFI  ");
  61.     Fan_Hui_Zi_Fu = "";
  62.     Serial3.println("AT+CWJAP="HKDNFW","13488214252"");
  63.     while (true) { //wait for ok
  64.       while (Serial3.available() > 0) {
  65.         Fan_Hui_Zi_Fu += char(Serial3.read());
  66.         delay(2);
  67.       }
  68.       if (Fan_Hui_Zi_Fu.lastIndexOf("OK") != -1) {
  69.         //        Serial.println(Fan_Hui_Zi_Fu);
  70.         break;
  71.       }
  72.     }
  73.     Serial.println("完成");


  74.     Serial.print("第五步:设置TCP/UDP连接状态为单路连接  ");
  75.     Fan_Hui_Zi_Fu = "";
  76.     Serial3.println("AT+CIPMUX=0");
  77.     while (true) { //wait for ok
  78.       while (Serial3.available() > 0) {
  79.         Fan_Hui_Zi_Fu += char(Serial3.read());
  80.         delay(2);
  81.       }
  82.       if (Fan_Hui_Zi_Fu.lastIndexOf("OK") != -1) {
  83.         //        Serial.println(Fan_Hui_Zi_Fu);
  84.         break;
  85.       }
  86.     }
  87.     Serial.println("完成");


  88.     Serial.print("第六步:链接TCP服务器  ");
  89.     Fan_Hui_Zi_Fu = "";
  90.     Serial3.println("AT+CIPSTART="TCP","a1vxPWXOWlM.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883");
  91.     while (true) { //wait for ok
  92.       while (Serial3.available() > 0) {
  93.         Fan_Hui_Zi_Fu += char(Serial3.read());
  94.         delay(2);
  95.       }
  96.       if (Fan_Hui_Zi_Fu.lastIndexOf("OK") != -1) {
  97.         //        Serial.println(Fan_Hui_Zi_Fu);
  98.         break;
  99.       }
  100.     }
  101.     Serial.println("完成");


  102.     /* 最后这里要注意,开始透传后将不会接收到来自ESP8266的任何返回值 ESP8266变为透明*/
  103.     Serial.print("第七步:开始透传发送数据  ");
  104.     Fan_Hui_Zi_Fu = "";
  105.     Serial3.println("AT+CIPSEND");
  106.     delay(50);
  107.     Serial.println("完成");

  108.     Zhi_Ling_Mo_Shi = false;
  109.   }


  110. }
复制代码


签到天数: 57 天

[LV.5]常住居民I

发表于 2021-3-2 14:14 | 显示全部楼层
讲真????服务器是阿里云IOT的,乱发数据直接把你给踢了,哪来的透传

该用户从未签到

 楼主| 发表于 2021-3-3 18:18 | 显示全部楼层
XlinliY.Zhang 发表于 2021-3-2 14:14
讲真????服务器是阿里云IOT的,乱发数据直接把你给踢了,哪来的透传

这是开机透传代码,和阿里云没有关系,至于怎么MQTT阿里云我还搞不清楚。这怎么是乱发数据呢?这段代码运行远就已经在透传状态了。哥们,你是不是没仔细看呀?

签到天数: 57 天

[LV.5]常住居民I

发表于 2021-3-3 20:05 | 显示全部楼层
ws9528 发表于 2021-3-3 18:18
这是开机透传代码,和阿里云没有关系,至于怎么MQTT阿里云我还搞不清楚。这怎么是乱发数据呢?这段代码运 ...

a1vxPWXOWlM.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883,这就是阿里云IOT的IP和端口,连上去只要没认证,乱发消息秒踢,根本就进不了透传

该用户从未签到

 楼主| 发表于 2021-3-4 17:44 | 显示全部楼层
XlinliY.Zhang 发表于 2021-3-3 20:05
a1vxPWXOWlM.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883,这就是阿里云IOT的IP和端口,连上去只要没认证 ...

哦,这个问题我还不是很懂,我说的这段代码的事,你说的阿里MQTT服务器的事,咱两说的两个事。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

arduino程序设计基础 blinker物联网解决方案

热门推荐

基于麦克纳姆轮的PID实例学习--机甲大师PID控制
基于麦克纳姆轮的PID实例
一 认识pid 首先要了解PID算法是什么。网上很多帖子要么就是只有理论,要么就没讲清
OLED 128*64自制可达10000000个选项的菜单(已更新)
OLED 128*64自制可达10000
OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
有没有人遇到过"MQTT Ping!"进入500ms间隔发送,偶现自动复位...
有没有人遇到过"MQTT Ping
出现该情况后,我在5V与3.3V端都加了1000uf和104。之后用弱网络进行测试,在一定程度
HC05发送数据出错
HC05发送数据出错
HC05往手机发送数据会产生错乱和缺失?
arduinoT12焊台 控制器 炫酷UI
arduinoT12焊台 控制器 炫
*声明:本项目源于https://github.com/wagiminator/ATmega-Soldering-Station 采用CC3
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表