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

注意

  1. esp8266和Arduino的串口波特率要相同(学长跟我说波特率最好设置成19200,所以买来8266的第一件事就是,接USB转TTL进行调试修改8266的波特率,我没有调试,所以用的8266的出厂波特率,一般是115200)
  2. 代码中Serial后的“2”表示8266连接的Arduino的串口(Arduino 2560有0、1、2、3 四组,如果是Arduino uno 可设置软串口,我还没有弄过,大家有兴趣可以试一试)
  3. Serial2.begin()里的波特率要正确否则代码中的esp8266设置会有问题
  4. 修改过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怕是我现在遇到的最难搞定的模块了,特别多问号?????)

(0)

相关推荐