esp8266-01板的arduino燒寫方式
參考路徑:https://blog.csdn.net/qq_35174914/article/details/52757803
作用:不用AT指令,不用多余的串口調試工具,直接用arduino編輯器對esp8266-01板燒寫arduino程序。
Arduino環境的搭建:
除了從arduino官網上下載完整的編輯器(建議下載1.6.7—1.6.9版本,1.6.10以上版本貌似改了太多東西不確定能不能用)外,還需要連網下載有關esp8266的arduino插件
1.點工具—>開發板—>開發板管理器
2.在確保連上互聯網的前提下收esp8266,下載最高版本
3.點文件—>首選項,將
http://arduino.esp8266.com/stable/package_esp8266com_index.json這個地址添加到如圖位置
4.重啟編輯器,發現工具—>開發板里多了幾個關於ESP8266的可選開發板(第一張圖左下方這樣)表示搭建成功。
接線圖:
一些有關的重要說明:
1.esp8266-01板對電壓的要求很高,燒寫時電源一定要采用3.25V左右的(USB轉TTL模塊直接提供的電壓貌似太高,不行,當然如果你覺得可以,不妨試試。我采用一個ARDUINO UNO供電)正負極再並聯一個10Uf的電容,穩壓。在燒完程序后的使用過程中它對電壓的要求就沒這么高了。
2.ESP8266板其中有一個引腳叫GPIO16,這個腳還有一個名稱叫RESET,一般這個引腳懸空或者最好接一個10K左右的上拉電阻(上拉電阻就是將不確定的信號通過一個電阻鉗位在高電平)。一旦這個腳接到了負極,板子就會reset.
3.RX,TX交叉鏈接
4.CH_PD這個引腳無論是燒程序也好,燒完程序應用也好,一定要加個20k左右的上拉電阻(不這么做串口是沒有數據的,或者燒好的程序也是沒法跑的)
5.GPIO0這個引腳在燒程序的時候必須接負極,燒完程序后想要掉電重新運行的話,必須將這個引腳拉高或者懸空。
燒寫:
溫馨提示:這個步驟是最需要耐心的,不僅燒寫過程大約需要2分鍾,而且還不保證每次都燒成功(成功率在30%左右,可能和電壓有關,保持穩定的3.25V電壓可提高成功率)但是如果上述步驟都做對了,我保證,並且請你一定要相信自己一定會成功的。
先提供一段有注釋的MQTT nodemcu的代碼
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "Ubiways";//連接的路由器的名字
const char* password = "123abc456d";//連接的路由器的密碼
const char* mqtt_server = "iot.eclipse.org";//服務器的地址
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;//存放時間的變量
char msg[50];//存放要發的數據
int settem;//溫控變量
void setup_wifi() {//自動接入網絡
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void callback(char* topic, byte* payload, unsigned int length) {//用於接收服務器接收的數據
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);//串口打印出接收到的數據讓你看看
}
Serial.println();//換行
if ((char)payload[0] == 'a') {//如果收到的數據是a
settem++;
}
}
void reconnect() {//等待,直到連接上服務器
while (!client.connected()) {
if (client.connect("HZYhahahASa")) {//接入時的用戶名,盡量取一個不易與別人重復的用戶名
client.subscribe("setmessage");//接收外來的數據時的intopic
} else {
Serial.print("failed, rc=");
Serial.print(client.state());//重新連接
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
void setup() {//初始化程序,只運行一遍
settem=0;
Serial.begin(9600);//設置串口波特率(與燒寫用波特率不是一個概念)
setup_wifi();
client.setServer(mqtt_server, 1883);//1883為端口號
client.setCallback(callback);
}
void loop() {//主循環
float tem=24.68;//溫度,測試使用
digitalWrite(BUILTIN_LED, HIGH);
reconnect();//確保連上服務器,否則一直等待。
client.loop();//MUC接收數據的主循環函數。
long now = millis();//記錄當前時間
if (now - lastMsg > 2000) {//每隔2秒發一次信號
lastMsg = now;//刷新上一次發送數據的時間
dtostrf(tem,1,2,msg);//將float轉為char的數組msg,其中第三個傳入值(2)是保留的位數(2位)
client.publish("temperature", msg);//發送數據,其中temperature是發出去的topic(不清楚請百度mqtt)
snprintf (msg, 75, "%d", settem);//將int類型的settem轉為char的數組.
client.publish("backa", msg);//反饋設定的溫度值
Serial.println("ok!");//串口打印OK!
}
}
點工具—>開發板—>Generic ESP8266 Module
然后Flash mode選QIO
然后編程器選上圖這個,因為這個比較快速。
選好端口后直接點擊上傳(這個時候等到差不多編譯完成的時候,最好斷開CH_PD這個腳,然后馬上再接上,會發現藍燈閃一下,這樣可以提高成功率,具體什么原因我還不清楚,多次實驗得出)。
若上傳失敗,必須斷開CH_PD這個腳,然后再接上,藍燈閃一下后再次燒寫。
離開燒寫環境自運行:為你燒好程序的esp8266提供一個3.3V左右的電源,電源的要求再也沒燒寫時這么苛刻。 用上拉電阻把CH_PD這個腳一直拉高,GPIO0在板子剛啟動時禁止拉低。由於此板可用引腳數少,所以最好用串口與其他單片機雙機通信。(雙機通信程序在我另一篇博客里有寫)
————————————————
版權聲明:本文為CSDN博主「風度青年」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_35174914/article/details/52757803