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開發庫最新版本下載地址  << 點擊

第一部分代碼:
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模塊簡直爛!史上最爛!

工具

相關文章
相關標籤/搜索