首先上個圖,最新研究的這麼一個很便宜的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模塊簡直爛!史上最爛!
工具