arduino esp8266透傳程式碼
阿新 • • 發佈:2018-12-20
//這理用的是2560 的主機板串列埠比較多用的是串列埠1如果是UNO的主機板可以用串列埠0 但是要在刷軟體的時候把串列埠0上的線去掉要不刷不進去!
#include <ESP8266.h> //庫檔案
#define SSID "SSID" //WIFI 名#define PASSWORD "PWD" //WIFI 密碼
#define HOST_NAME "192.168.2.9" //連線伺服器的 IP
#define HOST_PORT (60000) //連線伺服器的 埠
ESP8266 wifi(Serial1); //串列埠1 和ESP8266 對接透傳
int ledPin = 7; //小燈1
int ledPin2 = 6; //小燈2
void setup(void) //程式初始化
{
pinMode(ledPin,OUTPUT);
pinMode(ledPin2,OUTPUT);
Serial.begin(9600); //初始化串列埠0
Serial1.begin(9600); //初始化串列埠1 這個地方 要先在ESP 8266 上設定一下 波特率 設定成 9600 預設 應該是 115200
Serial.flush(); //不知道
Serial.print("setup begin\r\n"); //列印初始化狀態把?
Serial.print("FW Version:"); //列印 ESP版本
Serial.println(wifi.getVersion().c_str()); //不知道
if (wifi.setOprToStationSoftAP()) { //應該是執行模式 這個應該是 clent+AP 模式
Serial.print("to station + softap ok\r\n"); //設定模式成功
} else {
Serial.print("to station + softap err\r\n"); //設定模式失敗
}
if (wifi.joinAP(SSID, PASSWORD)) { //連線無線路由
Serial.print("Join AP success\r\n"); //加入網路成功
Serial.print("IP:"); //顯示IP地址
Serial.println( wifi.getLocalIP().c_str()); //顯示IP地址
} else {
Serial.print("Join AP failure\r\n"); //加入網路失敗
}
if (wifi.disableMUX()) {
Serial.print("single ok\r\n");
} else {
Serial.print("single err\r\n");
}
Serial.print("setup end\r\n");
}
void loop(void)
{
uint8_t buffer[128] = {0}; //初始化 buffer 這個快取
if (wifi.createTCP(HOST_NAME, HOST_PORT)) { // 連線WIFI網路
Serial.print("create tcp ok\r\n");//建立網路是否成功
} else {
Serial.print("create tcp err\r\n");} //建立網路失敗
delay(200);
char *hello = "Hello, this is client!"; //傳送到上位機的資料
wifi.send((const uint8_t*)hello, strlen(hello)); //傳送到上位機
uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000); //上位機傳過來的資料
if (len > 0) { //判斷是否有資料到達
Serial.print("Rec:["); //輸出一個固定開頭
char (*inChar) = buffer; //把快取中的資料存到一個變數中
Serial.print( inChar); //列印快取中的內容
//if ( *inChar == 'H')
if(strcmp(inChar,"HOME")==0) //判斷上位機傳過來的資料是否等於 HOME
{ Serial.print("start"); //如果滿足上面的如果列印這個 start
digitalWrite(ledPin, HIGH); //點亮這個小燈
}
//if ( *inChar == "STOP")
else if(strcmp(inChar,"STOP")==0)
{Serial.print("STOP");
digitalWrite(ledPin2, HIGH);
}
else {Serial.print("NUMBER"); } //如果上位機傳來的資料 不滿足上面兩個如果 就執行列印 NUMBER 單詞
Serial.print("]\r\n"); //列印一個尾部字元
}
if (wifi.releaseTCP()) { //關閉網路連線
Serial.print("release tcp ok\r\n"); //關閉成功
} else {
Serial.print("release tcp err\r\n"); //關閉失敗
}
delay(5000); //延遲5秒
digitalWrite(ledPin,LOW); //熄滅小燈 1
digitalWrite(ledPin2,LOW); //熄滅小燈2
}