真的不得不記錄下這一刻,搞了好幾天的esp8266終于能點(diǎn)亮LED了,我來給大家分享下。
通常,大家買來esp8266會先接USB轉(zhuǎn)TTL用sscom42單獨(dú)調(diào)試下,但是我手頭上沒有USB轉(zhuǎn)TTL,再加上我急于求成,就把這步省略了,好在成功了,哈哈哈哈哈哈哈(建議大家先調(diào)試下,至少修改一下esp8266的波特率)
不改也行 跟著我來????
思路:用手機(jī)連接esp8266設(shè)置的WiFi,用通過手機(jī)網(wǎng)絡(luò)調(diào)試助手發(fā)送信號,控制Arduino上的LED的亮/滅
硬件:
Arduino 2560 一個(gè)
esp8266 一個(gè)
LED 一個(gè)
杜邦線若干
esp8266的其余引腳懸空
LED的長腳接Arduino的數(shù)字4號腳(代碼中設(shè)置了),短腳接GND
看了很多關(guān)于Arduino+esp8266的文章,但是對于要啥沒啥得我來說,可是把我難倒了,沒有路由器,不知道手機(jī)IP。。。怎么辦,,廢話不多說,上代碼:
int apin=4;//LED腳
void(* resetFunc) (void) = 0; //制造重啟命令
char ch[2];
void setup()
{
Serial.begin(115200);//開啟串口并設(shè)置波特率
Serial2.begin(115200);//開啟串口2并設(shè)置波特率
pinMode(apin,OUTPUT);
digitalWrite(apin, LOW);
//esp8266設(shè)置
Serial2.println('AT+RST'); //重啟
delay(2000);
Serial2.println('AT+CWMODE=3'); //設(shè)置為AP & station模式
delay(1000);
Serial2.println('AT+CWSAP=\'esp8266-ces\',\'123456789\',1,4');//設(shè)置WIFI
delay(1000);
Serial2.println('AT+CIPMUX=1'); //打開多連接
delay(1000);
Serial2.println('AT+CIPMODE=1'); //透傳模式
delay(1000);
Serial2.println('AT+CIPSERVER=1,8080');//開啟服務(wù)器模式,8080為端口號
delay(1000);
}
void loop()
{
// while(Serial2.available())//檢查是否至少有一個(gè)可用字符
// {
Serial.write(Serial2.read());
for(int i=0;i<1;i++) //此時(shí)i只能取1位,第2位是結(jié)束符\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);
}
//}
}
是不是很簡單,Serial2.println()加AT指令可以直接在Arduino程序中設(shè)置WIFI
連接好電路,將上面的代碼燒錄進(jìn)Arduino 2560中,打開手機(jī)的WLAN,找到設(shè)置的WIFI——esp8266-ces,輸入密碼進(jìn)行連接,打開網(wǎng)絡(luò)調(diào)試助手,用調(diào)試助手的tcp client功能,點(diǎn)擊增加,彈出窗口,輸入8266的IP(一般為192.168.4.1)和端口號(代碼中有設(shè)置,為8080),點(diǎn)擊增加,最后在下方對話框中輸入“a”或“b”,點(diǎn)擊發(fā)送,即可控制LED的亮/滅。
以上就是我用Arduino 2560+esp8266控制LED的所有內(nèi)容,回頭看一遍,又感覺挺容易的,但是這個(gè)過程真的是太難受了,心累。。。(8266怕是我現(xiàn)在遇到的最難搞定的模塊了,特別多問號?????)
聯(lián)系客服