Open techiall opened 6 years ago
------------ 2018.5.5 -----------------------
补充:该文章写得不够全面,只是一些简单的使用,我会抽时间继续写有关这个模块更加深入使用的文章。而这篇文章适合刚刚接触esp8266新人阅读。 https://github.com/techial1042/Blog/issues/7
硬件
ESP8266 模块
USB_TLL 串口线
3.3V 电源(可以使用 Arduino 的 3.3V 接口进行供电,如果没有 3.3V 的电压接口,可以使用 3V 的进行供电,5V 的接口电压太高会烧坏模块。
软件
针脚分布图
USB_TLL 与 ESP8266 连接图
这里只列出项目过程中使用较为频繁的指令,更多指令参考 ESP8266 帮助文档。
// 模块重启 AT+RST /* 工作模式设置 AT+CWMODE=1 -> Station 客户端模式 AT+CWMODE=2 -> AP 接入点模式 AT+CWMODE=3 -> Station + AP 两种模式共存 */ AT+CWMODE=3 // 连接到路由器,路由器名称 + 密码,路由器的名称不要使用中文 AT+CWJAP="123","0123456789" // 连接到 TCP 服务器,地址 + 端口号 AT+CIPSTART="TCP","192.168.1.100",8080 // 发送数据,带上发送的字节长度,不要使用不带参数的发送指令 AT+CIPSEND=4
如果以上没问题,也就说明 ESP8266 模块没问题了,可以接下来使用 Arduino UNO 板子连模块了。
线的问题会导致一直无法调试成功。
注意电脑兼容性问题,windows 10 连接调试模块表示躺枪,更新下驱动或者找兼容 windows 10 版本的驱动即可解决。
连接时,按照 WIFI 模块的工作模式来接线。 即 GND 接 Arduino 的 GND , VCC 和 CH_PD 接 Arduino 的 3.3V 输出。 UTXD 和 URXD分别接 Arduino 的 13和12引脚 (即程序中由 SoftwareSerial 定义的 RX 和 TX)。 作者:rollingstarky 链接:https://www.jianshu.com/p/64024d8c3773 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
参考这份资料和 ESP8266 针脚的示意图,稍微修改了 Arduino 上连接的软串口,其实软串口选哪个没啥影响的。就是烧录程序的时候配置一下就可以了。
面包板是绝配,可以让线看起来不会那么乱,不然后期检查是否连错很麻烦……
下面是我的自己的连接方式
ESP8266 <---------> Arduino GND <---------> GND VCC, CH_PD <---------> 3.3V // 可以用 3.0V 电压 UTXD, URXD <---------> 11 和 10 引脚 // RX, TX 配置10、11为软串口 // Arduino UNO 上的 RX, TX 接口理论上可行,但我并未进行测试,自行可进行测试。
打开 Arduino IDE,板子型号和端口选好,然后上传即可。代码如下
#include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX 配置10、11为软串口 void setup() { Serial.begin(9600); while (!Serial); mySerial.begin(9600); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
如果以上都没问题,也就说明传输方面没问题了,剩下的可以和其他模块进行集成。如测电压模块,利用测电压的模块获得电压后,然后构造发送的数据报文,即可发送数据到服务器。
有了这个库,你就不用自己手动构造一个 AT 字符串了,都帮你封装好了,然后调用函数接口即可。
https://github.com/itead/ITEADLIB_Arduino_WeeESP8266
发送 HTTP 请求
#include <Wire.h> #include "Adafruit_ADS1015.h" #include <SoftwareSerial.h> #include "ESP8266.h" //Adafruit_ADS1015 ads; Adafruit_ADS1015 ads1015; Adafruit_ADS1115 ads1115(0x49); SoftwareSerial mySerial(13, 12); // RX, TX 配置10、11为软串口 ESP8266 wifi(mySerial, 115200); // 服务器地址,WiFi 名称,WiFi 密码 const char url[] = "192.168.1.200"; const uint32_t port = 80; const char ssid[] = "123"; const char pwd[] = "0123456789"; const float multiplier = 3.0; // init void setup() { ads1015.begin(); ads1015.setGain(GAIN_ONE); pinMode(10, OUTPUT); //ads.begin(); Serial.begin(115200); while (!Serial) { ; } wifi.restart(); delay(1000); } double get_voltage() { uint16_t adc0 = ads1015.readADC_SingleEnded(0); double res = (adc0 * 2) / 1000.0; Serial.print(">>>> voltage = "); Serial.print(res); Serial.print("\r\n"); return res; } const char str_post_1[] = "GET /index.php?content="; const char str_post_2[] = " HTTP/1.1\n" "Host: 192.168.1.200\n" "Connection: close\n" "Accept: text/html\n\n\n\n"; void loop(void) { // 连接 WiFi if (wifi.joinAP(ssid, pwd)) { Serial.print(">>>> wifi connection success\n"); } else { Serial.print(">>>> wifi connection error\n"); wifi.restart(); delay(1000); return; } while (true) { // 与服务器进行 TCP 连接 if (wifi.createTCP(url, port)) { Serial.print(">>>> creat tcp success\n"); } else { Serial.print(">>>> creat tcp error\n"); continue; } float voltage = get_voltage(); String get = str_post_1; get += voltage; get += str_post_2; if (wifi.send(get.c_str(), get.length())) { Serial.println(">>>> send success"); } else { Serial.println(">>>> send error"); break; } Serial.println(">>> get_string ------------"); Serial.println(get.c_str()); Serial.println("------------ <<<\n"); char result[100]; wifi.recv(result, 100); Serial.println(">>>> result >>> ------------"); Serial.println(result); delay(10000); } delay(2000); // 断开 WiFi 连接 Serial.print(">>>> leave wifi "); Serial.println(wifi.leaveAP() ? "success" : "error"); }
------------ 2018.5.5 -----------------------
补充:该文章写得不够全面,只是一些简单的使用,我会抽时间继续写有关这个模块更加深入使用的文章。而这篇文章适合刚刚接触esp8266新人阅读。 https://github.com/techial1042/Blog/issues/7
ESP8266 模块基本使用
准备材料
硬件
ESP8266 模块
USB_TLL 串口线
3.3V 电源(可以使用 Arduino 的 3.3V 接口进行供电,如果没有 3.3V 的电压接口,可以使用 3V 的进行供电,5V 的接口电压太高会烧坏模块。
软件
连接示意图
针脚分布图
USB_TLL 与 ESP8266 连接图
调试 ESP8266 模块
ESP8266 AT 指令
这里只列出项目过程中使用较为频繁的指令,更多指令参考 ESP8266 帮助文档。
最后
如果以上没问题,也就说明 ESP8266 模块没问题了,可以接下来使用 Arduino UNO 板子连模块了。
线的问题会导致一直无法调试成功。
注意电脑兼容性问题,windows 10 连接调试模块表示躺枪,更新下驱动或者找兼容 windows 10 版本的驱动即可解决。
通过 Arduino 调试 ESP8266
针脚连接
参考这份资料和 ESP8266 针脚的示意图,稍微修改了 Arduino 上连接的软串口,其实软串口选哪个没啥影响的。就是烧录程序的时候配置一下就可以了。
面包板是绝配,可以让线看起来不会那么乱,不然后期检查是否连错很麻烦……
下面是我的自己的连接方式
烧录
打开 Arduino IDE,板子型号和端口选好,然后上传即可。代码如下
最后
如果以上都没问题,也就说明传输方面没问题了,剩下的可以和其他模块进行集成。如测电压模块,利用测电压的模块获得电压后,然后构造发送的数据报文,即可发送数据到服务器。
发送数据到服务器
ESP8266 AT 指令集成库
有了这个库,你就不用自己手动构造一个 AT 字符串了,都帮你封装好了,然后调用函数接口即可。
https://github.com/itead/ITEADLIB_Arduino_WeeESP8266
发送 HTTP 请求
发送电压到服务器参考代码