无网不进  
软硬件开发

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

posted on 2020-05-12 16:06  无网不进  阅读(944)  评论(0编辑  收藏  举报