首先上个图,最新研究的这么一个很便宜的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开发库最新版本下载地址 << 点击
第一部分代码:
php
[C] 纯文本查看 复制代码git
?github
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] 纯文本查看 复制代码网络
?socket
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模块简直烂!史上最烂!
工具