Arduino uno r3 使用 ESP8266 UART-WiFi 透傳模塊
一、所需硬件材料
1.ESP8266:01s某寶上3、5塊錢
2.杜邦線:某寶幾塊錢一組40P,這裡只需要三根,用於連接 樹莓派與繼電器
3.燒錄器
二、ESP8266 AT固件燒錄
ESP8266主要有兩種固件,一種是AT固件(一般出廠自帶)實現UART-WiFi 透傳模塊,一種是IoT固件,即我們自己編寫通過IDE燒錄的固件,如果ESP8266中包含這種固件無法通過AT命令實現透傳,需要從新燒錄AT固件。
0,軟件準備:
- Flash下載工具 flash_download_tools, 樂鑫官網下載地址 //www.espressif.com/zh-hans/support/download/other-tools
- ESP8266 AT固件, 樂鑫官網下載地址 //www.espressif.com/zh-hans/support/download/at
我選的是 ESP8266 NonOS AT Bin V1.7.4
1,連接燒錄器:
如果是ESP01s 直接插入燒錄器,然後插入電腦usb接口;如果是12E/F按陣腳對應接線,注意GPIO0、GPIO2必須接,模塊CH_PC接燒錄器EN(網上說需要接10k電阻,我沒接)
2,軟件燒錄
- 在出現的窗口中, 選擇SPIDownload標籤頁(默認是這一頁)
- 在固件選擇欄中, 勾選需要寫入的行, 文件和地址分別為
- boot_v1.7.bin 0x00000
- user1.1024.new.2.bin 0x01000
- esp_init_data_default_v08.bin 0xfc000
- blank.bin 0x7e000
- blank.bin 0xfe000
- 檢查下面的參數配置: CrystalFreq 26M, SPI SPEED是40MHz, SPI MODE是DIO, FLASH SIZE是8Mbit
- 界面右下方, 選擇正確的COM口, 波特率使用默認的115200
- 點擊START
三、連接到Arduino uno 到ESP8266
1,連線圖
2、代碼
const int tx = 1;
const int rx = 0;
void setup() {
pinMode(rx,INPUT_PULLUP);
pinMode(tx,INPUT_PULLUP);
}
void loop() {
}
以上連接的Arduino上的0和1是硬串口,也可使用軟串口比如設置arduino上的8號口為rx,9號口為tx。就需要把ESP8266 的rx連接到Arduino的9號口上,模塊的tx連接Arduino的8號口上,代碼如下:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // RX, TX
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
delay(1000);
Serial.println("Goodnight moon2");
mySerial.println("AT+GMR");
}
void loop() {
while (mySerial.available()) {
Serial.write(mySerial.read());
}
}
3、調試,打開串口工具
4,使用AT命令透傳
AT+GMR 查看版本信息 //查詢固件版本信息
四、AT 常用命令
AT+RST 重啟模塊
AT+GMR 查看版本信息
AT+CIOBAUD=9600 修改波特率
AT+CWMODE? 查詢工作模式 1.Station (客戶端模式)2.AP (接入點模式)3.Station+AP (兩種模式共存)
AT+CWMODE=1 設置模組為STA模式。
AT+CWLAP 查詢附近 WIFI
AT+CWJAP=”wifi名稱”,”wifi密碼” 連接路由器的 WIFI
AT+CIFSR 查看路由器分配給模組的IP地址,例如 192.168.43.103
AT+CIPMUX=0 設置單連接
AT+CIPMODE=1 設置透傳模式
AT+CIPSTART=”TCP”,”192.168.43.104″,8899 建立的TCP服務器
AT+CIPSEND 開始發送數據
> //進入發送模式
abc 發送數據
+++ 注意退出透傳,直接發送。取消發送新行