聊一聊WIFI模块ESP8266的各个引脚



很久没跟新了,总之就是一言难尽,各种事情,各种忙,但似乎很少有收获,今天就来聊一聊esp8266的各引脚吧,顺便也聊一下esp8266与arduino uno的连接(连线)。

连线如下:

ESP8266        Arduino

  • VCC                      3.3 V
  • GND                     GND
  • CH_PD                 3.3 V
  • TX                         TX
  • RX                         RX
  • GPIO2                   3.3 V
  • GPIO0                   GND
esp8266 连arduino

esp8266与arduino uno连线的方式

参考这张图,但GPIO2不用接,也就是为空。 透传完成后把紫色这根线拔掉,就可以连上了。最后还要arduino与esp8266通信。

顺便附带一个透传的程序吧。


 给ESP8266供电:ESP8266模块是由低电压(3.3V DC)供电的,把ESP8266的VCC和CH_PD连接到Arduino的3.3V开发板上,在GPIO2和3.3V电源中间接一个1KΩ的电阻。
连接TX/RX引脚:TX/RX是 用于编程模块,串口I/O以及调试。将ESP8266的TX与Arduino板上的TX,ESP8266的RX与Arduino上的RX对应连接起来。
将ESP8266设定为FLASH(烧写)模式:当GPIO0(上图紫色线)接地线时,ESP8266是以bootloader模式(编程模式)启动的,这也就是你可以烧写ESP8266(将Arduino上的代码转移到ESP8266上)的时候。在Arduino代码加载完毕时,你将看到Arduino IDE底部提示“上传结束”的信息,然后代码就会开始运行了。
程序上传结束后,将紫色线移除:当你不想将ESP8266一直设定为烧写模式时,将紫色线移除即可,程序将会一直在ESP8266上执行。

原理:下面我们将用到<ESP8266WiFi.h>以及<ArduinoJson.h>头文件,实质上就是通过ESP去访问我们的light.json文件,如果json文件中light的值是on的话,就点亮LED;如果light的值是off的话,就关闭LED(你可以在本地编辑json文件中light的值,来控制LED的开关)。下面是示例代码:

#include <ESP8266WiFi.h>
const char *ssid = “你的wifi”;
const char *password = “wifi密码”;
WiFiClient client;
const char *host = “服务器”;
const int port = 0;
void setupWifi() {
delay(10);
Serial.println();
Serial.print(“Connecting to “);
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi connected”);
Serial.println(“IP address: “);
Serial.println(WiFi.localIP());
}
void setup ( void ) {
Serial.begin(9600);
setupWifi();
}
int loopCount=0;
void loop ( void ) {
//断线重连
while (!client.connected()){
Serial.println(“not connected”);
if (!client.connect(host, port)){
Serial.println(“connect server ….”);
delay(500);
}
}
//透传
while (client.available()){
Serial.write(client.read());
}
while (Serial.available() > 0) {
client.write(Serial.read());
}
//10s发送一次心跳包
delay(500);
loopCount++;
if(loopCount == 20){
client.println(“ping”);
loopCount=0;
}
}