书接上文,这一篇说说wemos D1 R2板。值得庆幸的是,这个板子虽然有点小众,但淘宝上面卖的比别人贵的那家还是挺靠谱。
wemos D1 R2、wemos D1 R23、wemos D1 mini等等,虽然接脚各不相同,但是同为ESP8266拓展板,其原理基本都一样,报错的侧重点也没什么差别。
(报错记录:
https://blog.csdn.net/qq_41984831/article/details/103762229)
1. 简单说明
它的供电和串口连接方式是数据线。试了一下用手机的数据线大约是不行的。驱动和Arduino Uno板不同,需要自己安装。板子上有一些重复引脚,比如D1~D7,这说明这些引脚是从一根线上引出来的,在连接传感器的时候注意不要将几个口混接。传感器连接的定义方式稍显不同:
#define echoPin D1
#define trigPin D2
就像这样,在接线上接哪个都没问题。
2. 代码
和传感器的数据交流部分与arduino Uno 类似,按下不表。
无线传输的部分:TCP/IP协议。TCP协议不是很快,但是能尽可能减少数据漏包,还是符合大部分初级工程需求的。
TCP协议,最简单的解释就是三次握手、四次挥手、遇事不决缓冲区。具体到Wemos代码里,主要体现有:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
基本的两个库。
const char* ssid = "218";
const char* password = "nnnri218";
让ESP8266去连接路由器网络,和电脑处在同一网域。
WiFiServer server(26);
WiFiClient client;
服务器端口为26,8266作为server端。
进入setup()
函数:
WiFi.begin(ssid,password);
Serial.println("Connecting");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
把IP地址输出一下,便于在后期client端对接的时候直接填上。
server.begin();
服务器开始传输。
进入loop()
函数:
client = server.available();
if (client){
Serial.println("Client connected");
while (client.connected()){传感器相关}
监听一下能不能连接到客户端,如果可以就开始传,输出用client.print()
。
一开始可以用client和Serial同时输出,二者一致就说明可行。
unity接收的问题,见下下篇。