OCROBOT ESP8266 WIFI模块之重新定义
首先上个图,最新研究的这么一个很便宜的wifi模块。 这是个串口转wifi信号的模块。可以用UDP TCP通信。
我写的教程帖子一般不解释底层原理什么的。因为我也不懂!
这次的测试就是板子发送一个UDP消息(setup done..)给电脑上的socket调试软件。 再由socket调试软件发送一个字符串给板子。
这次修改的开发库添加了4个接口。使程序更简洁明了。 用的是arduino mega 2560软串口。迷你强写的两个开发库一个mega 一个328。因为我没328所以,就改了mega2560。 所以接下来准备好一个mega 2560开始玩。只有328的不好意思。。。 可以用SocketTool等工具,这里推荐弘毅大大他们家的通信软件,更简单一点。
USR-TCP232-Test.rar (375.4 KB, 下载次数: 20)
选择UDP,因为我也只测试了UDP。。其他的虽然都写好了~但我没测试~ 原因是我懒!
另外注意这里的UDP 是 UDP Server 第二行是自己的IP 端口不要设置为8080 因为8080端口比较特殊 都改好了 就点connect~
接下来搞arduino部分~
ESP8266 — ARDUINO V ——– 3v3 G ——- GND T ——— Serial1 RX R ——— Serial1 TX 交叉通信
先来个开发库:
uarlWIFI_D.rar (7.38 KB, 下载次数: 29) GitHub ESP8266开发库最新版本下载地址 << 点击
第一部分代码:
[C] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
#include <uarlWIFI.h>
WIFI wifi;
void
setup()
{
Serial.begin(9600);
bool
b = wifi.Initialize(STA,
"SSID"
,
"PASSWORD"
);
if
(!b)
{
Serial.println(
"Init error"
);
}
else
{
Serial.println(
"Init done.."
);
}
wifi.ipConfig(UDP,
"192.168.0.103"
, 60000);
Serial.println(
"setup done.."
);
wifi.SendMessage(
"setup done.."
);
pinMode(13, OUTPUT);
}
|
这里提供了wifi模块3个接口 第一个是初始化,初始化成功返回true //////////////////////////////////////////////////////////////////////////////////////// WIFI初始化的类型 STA接入局域网 AP自身为局域网server端 #define STA 1 #define AP 2 #define AT_STA 3
参数:网络方式 SSID PASSWORD 如果网络方式选择AP模式 最后两个参数可选择填写 默认通道1 加密方式2 bool Initialize(byte a, String ssid, String pwd, byte chl = 1, byte ecn = 2);
////////////////////////////////////////////////////////////////////////////////////////
第二个是ipConfig,这里设置的是给对方发送数据的IP和端口,不是自己的。 这个模块自己的IP是接入路由器后自动分配的。 //////////////////////////////////////////////////////////////////////////////////////// 参数:通信方式 对方ip 对方端口 默认单对单通信boolean为0 如果改为1 可以分配ID 0~4 0号可以连接客户端和服务器,其他只能连接服务器 void ipConfig(byte type, String addr, int port, boolean a = 0, byte id = 0);
////////////////////////////////////////////////////////////////////////////////////////
第三个是常用的接口 发送数据SendMessage //////////////////////////////////////////////////////////////////////////////////////// void SendMessage(String str); //单路模式发送数据 void SendMessage(byte id, String str); //多路模式发送数据
////////////////////////////////////////////////////////////////////////////////////////
第二部分代码:
[C] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
void
loop()
{
//定一个接收消息用的buffer
char
buf[1024];
int
iLen = wifi.ReceiveMessage(buf);
if
(iLen > 0)
{
//判断buf是否为规定字符串
if
(
strcmp
(buf,
"HIGH"
) == 0)
{
digitalWrite(13, HIGH);
}
else
if
(
strcmp
(buf,
"LOW"
) == 0)
{
digitalWrite(13, LOW);
}
}
}
|
最后一个wifi模块的重要接口 ReceiveMessage //////////////////////////////////////////////////////////////////////////////////////// 参数:接收buf 未开发参数(保留) 返回接收到的buf的长度 int ReceiveMessage(char *buf, int MsgLen = 0);
////////////////////////////////////////////////////////////////////////////////////////
下面跟着教程走的可以将两块代码合到一起~烧录arduino中~
 首先打开串口监视窗口,代码运行到初始化阶段,返回true。初始化没问题。 串口监视窗口打印出了Init done..
接下去是配置对方的IP端口,这里步骤需要5秒时间。分配好了发送一个setup done给上位机的socket软件。
这时候两者就连同了。这个有着和奇葩图标的调试软件也收到了arduino发送的数据。并且有了对方的IP和端口。
最后loop开始接收。这里随便打了两个做测试。提取接收的字符串做判断。LED灯也顺利的控制了亮暗。
P.S. 迷你强说要修改arduino的一个文件,把串口缓冲区容量提高到128以上说是如果wifi热点多的地方就会溢出~
结贴~~P.S. Seeed wifi模块简直烂!史上最烂!
|