Arduino 2560 esp8266控制LED(可不用USB转TTL)
Arduino 2560+esp8266控制LED
真的不得不记录下这一刻,搞了好几天的esp8266终于能点亮LED了,我来给大家分享下。
通常,大家买来esp8266会先接USB转TTL用sscom42单独调试下,但是我手头上没有USB转TTL,再加上我急于求成,就把这步省略了,好在成功了,哈哈哈哈哈哈哈(建议大家先调试下,至少修改一下esp8266的波特率)
不改也行 跟着我来👇🏻
思路:用手机连接esp8266设置的WiFi,用通过手机网络调试助手发送信号,控制Arduino上的LED的亮/灭
硬件:
Arduino 2560 一个
esp8266 一个
LED 一个
杜邦线若干
esp8266接线
按照上图连接Arduino和esp8266
- CH_PD——3.3V
- VCC————3.3V(接5V可能会烧坏)
- GND————GND
- RX————TX
- TX————RX
esp8266的其余引脚悬空
LED接线
LED的长脚接Arduino的数字4号脚(代码中设置了),短脚接GND
代码
看了很多关于Arduino+esp8266的文章,但是对于要啥没啥得我来说,可是把我难倒了,没有路由器,不知道手机IP。。。怎么办,,废话不多说,上代码:
int apin=4;//LED脚 void(* resetFunc) (void) = 0; //制造重启命令 char ch[2]; void setup() { Serial.begin(115200);//开启串口并设置波特率 Serial2.begin(115200);//开启串口2并设置波特率 pinMode(apin,OUTPUT); digitalWrite(apin, LOW); //esp8266设置 Serial2.println('AT+RST'); //重启 delay(2000); Serial2.println('AT+CWMODE=3'); //设置为AP & station模式 delay(1000); Serial2.println('AT+CWSAP=\'esp8266-ces\',\'123456789\',1,4');//设置WIFI delay(1000); Serial2.println('AT+CIPMUX=1'); //打开多连接 delay(1000); Serial2.println('AT+CIPMODE=1'); //透传模式 delay(1000); Serial2.println('AT+CIPSERVER=1,8080');//开启服务器模式,8080为端口号 delay(1000); } void loop() { // while(Serial2.available())//检查是否至少有一个可用字符 // { Serial.write(Serial2.read()); for(int i=0;i<1;i++) //此时i只能取1位,第2位是结束符\0 { ch[i]= char(Serial2.read()); delay(10); } Serial.println(ch); if(strncmp(ch,'a',1)==0) { digitalWrite(apin, HIGH); } if(strncmp(ch,'b',1)==0) { digitalWrite(apin, LOW); } //} }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
是不是很简单,Serial2.println()加AT指令可以直接在Arduino程序中设置WIFI
注意
- esp8266和Arduino的串口波特率要相同(学长跟我说波特率最好设置成19200,所以买来8266的第一件事就是,接USB转TTL进行调试修改8266的波特率,我没有调试,所以用的8266的出厂波特率,一般是115200)
- 代码中Serial后的“2”表示8266连接的Arduino的串口(Arduino 2560有0、1、2、3 四组,如果是Arduino uno 可设置软串口,我还没有弄过,大家有兴趣可以试一试)
- Serial2.begin()里的波特率要正确否则代码中的esp8266设置会有问题
- 修改过8266波特率的同学注意,可能要加上代码中注释掉的那句(别忘了{})
点亮LED
连接好电路,将上面的代码烧录进Arduino 2560中,打开手机的WLAN,找到设置的WIFI——esp8266-ces,输入密码进行连接,打开网络调试助手,用调试助手的tcp client功能,点击增加,弹出窗口,输入8266的IP(一般为192.168.4.1)和端口号(代码中有设置,为8080),点击增加,最后在下方对话框中输入“a”或“b”,点击发送,即可控制LED的亮/灭。
结语
以上就是我用Arduino 2560+esp8266控制LED的所有内容,回头看一遍,又感觉挺容易的,但是这个过程真的是太难受了,心累。。。(8266怕是我现在遇到的最难搞定的模块了,特别多问号?????)