Obloq模塊:基於ESP8266的物聯網模塊


OBLOQ 物聯網模塊

OBLOQ模塊是DFRobot公司開發的一款基於ESP8266芯片的物聯網通信模塊。模塊使用串口(TTL UART)和Arduino(或者其他單片機)通信,支持MQTT,HTTP等協議,可以很方便的訪問互聯網,快速搭建物聯網項目。

 

技術規格

  • 供電電壓:3.3~5.0V
  • 工作電流:<240mA
  • 接口類型:Gravity UART 4PIN
  • 接口速率:9600
  • 無線模式:IEEE802.11b/g/n
  • 加密類型:WPA WPA2/WPA2–PSK
  • 無線頻率:2.4GHz(不要連接5G Wi-Fi)
  • 產品尺寸:35mm * 32mm / 1.38inch * 1.26inch
  • 內置協議:TCP/IP 協議棧

引腳定義

引腳編號 引腳名 作用
1 TX 串口發送
2 RX 串口接收
3 GND 電源地
4 Vcc 電源正

 

ESP8266是樂鑫公司開發的一款帶Wi-Fi功能的主控芯片,所以里面也跑有程序(或者叫固件:Firmware)。但是ESP8266的開發環境還不夠普及,開發難度較大,所以通常會將ESP8266設計成一個單獨的網絡模塊去使用(相當於作為單片機主控的無線網卡)。市面上比較流行是安信可公司的ESP8266模塊,燒寫了支持AT命令的固件,那么單片機主控就可以通過UART發送AT命令來控制和使用ESP8266。OBLOQ模塊默認燒寫了DFRobot公司自己開發的固件,其使用格式化的字符串形式的調用接口,而非AT命令。

Obloq模塊如何與Arduino配合使用?

Obloq是一個物聯網模塊,而非主控。所以,Obloq只是充當了Arduino主控(或者其他單片機主控)的一個“助手”——幫助主控完成網絡通信。那么,主控芯片以何種方式傳遞命令給Obloq,以及Obloq有哪些支持的命令呢?

我們通過下面一個類比來說明:

主人通過說話的方式,發出命令傳達給狗子小黃,小黃聽到命令后就會里面完成相應的動作。Arduino將命令字符串通過串口發送給Obloq模塊,模塊收到命令后,執行對應的操作。 

如果主人對狗子小黃說:“跳舞”,然而主人從沒有給小黃訓練過跳舞,所以小黃不會有所反應,它不懂。如果Arduino通過串口給Obloq發送“I love u”,Obloq模塊也不會做出任何動作,因為Obloq燒寫的固件里沒有這條指令,它無法識別。

Obloq命令字符串舉例點擊查看完整的命令表

命令字符串 命令作用
"|2|1|wifi_ssid,wifi_pwd|\r"

連接一個指定的WIFI,例如:

"|2|1|myWIFI,123456|\r"

將命令Obloq模塊連接名稱為myWIFI,密碼為123456的WIFI

"|2|2|\r"

命令Obloq模塊斷開當前連接的WIFI

"|4|1|1|host|port|iotid|iotpwd|\r"

連接到一個MQTT Broker。

host是服務器的主機名或者IP地址;

port是MQTT Broker的端口;

iotid是建立MQTT連接使用的用戶名;

iotpwd是建立MQTT連接使用的密碼;

 

為了形成對比,再來看一下安信可ESP8266官方使用的AT命令 

AT命令 命令作用
"AT+CWJAP=<wifi_ssid>,<wifi_pwd>\r\n"

連接一個指定的WIFI,例如:

"AT+CWJAP=\"myWIFI\",\"123456\"\r\n"

將命令ESP8266模塊連接名稱為myWIFI,密碼為123456的WIFI。

注意雙引號里面嵌套的雙引號要用轉意字符。

"AT+CWQAP\r\n"

斷開與當前WIFI的連接

 

 所以我們可以得出以下結論:

1、調用接口就是ESP8266固件里面預定義的命令的集合,這些命令由主控通過串口下發,有的命令執行后ESP8266還會回傳執行狀態給主控。當然這里的解釋只限於本文涉及到的context。

2、Obloq和Arduino(或其他單片機)主控之間通過串口來作為命令和響應的傳輸通道。

3、模塊只能識別和執行它的固件中定義的命令,不同的固件支持的命令可能不同,命令的表現形式也可能不同。

實驗

Ardunio或兼容Arduino的開發板都有一顆板載的LED,通常是用pin13驅動的,Arduino核心庫中的LED_BUILTIN宏定義了驅動板載LED的引腳,隔離和平台差異。本實驗將通過MQTT協議來遠程點亮和熄滅板載LED。

通過串口發送命令給Obloq來命令其工作依然是很繁瑣的,慶幸的是DFRobot開發出了一個封裝了串口命令的C++庫:Obloq庫。使得我們不用關心底層的串口命令,更加的方便快速的使用OBLOQ模塊。

我們可以在DFRobot的官方Github頁面下載Obloq模塊的Arduino驅動庫。只需要下載其中的Qbloq.cpp和Qbloq.h文件即可,如下圖所示:

接下來安裝Obloq驅動庫到Arduino開發環境。步驟:在Ardiono安裝目錄下的【libraries】目錄下新建一個文件夾【DFRobot_Obloq】(名稱任意),然后將下載的Qbloq.cpp和Qbloq.h文件放進去即可。如下圖:

 

 

 接下來我們要去DFRobot的Easy IOT平台注冊賬號,注冊后登錄,網頁右上角有注冊 /登錄按鈕:

登錄后進入工作間 :

 操作步驟:

1、復制【工作間】里的iot_id和iot_pwd替換下面代碼中的"bbbbbbbbb" 和  "cccccccccc" 。

2、在【工作間】添加一個設備,復制topic替換下面代碼中的"aaaaaaaaa"。

3、將下面代碼中的“myWIFI”和"123456"改為自己使用的WIFI名和WIFI密碼。

4、連接好電路后(見下面的接線圖),將代碼下載到Arduino板中。

5、在【工作間】點擊新建設備的【發送消息按鈕】,分別發送on 和 off,觀察Arduino開發板上的LED的狀態。

 

實驗接線圖:

 

實驗代碼:

#include <stdint.h>
#include <Obloq.h>
#include <SoftwareSerial.h>

const String topic1 = "aaaaaaaaa";             //訂閱的主題,需要在【工作間】里添加一個設備后得到


const String iotId = "bbbbbbbbb";              //MQTT服務器的用戶名,在【工作間】里的iot_id可以查看
const String iotPwd = "cccccccccc";            //MQTT服務器的密碼,在【工作間】里的iot_pwd可以查看


const String wifiSSID = "myWIFI";              //obloq模塊連接的WIFI名,改成你用的WIFI名,最好不要有中文
const String wifiPwd = "123456";               //obloq模塊連接的WIFI密碼,改成你用的WIFI密碼

SoftwareSerial obloqModuleSerial(10,11);       // 創建一個軟串口,用於和obloq模塊進行通信:10是其RX(接Obloq的TX) ,  11是其TX(接Obloq的RX)

Obloq olq(&obloqModuleSerial,wifiSSID,wifiPwd,iotId,iotPwd);  //創建一個Obloq對象。


//已監聽設備的消息回調函數,可以在這個函數里面對接收的消息做判斷和相應處理,需要用setMsgHandle()來設置這個回調函數
void msgHandle(const String& topic,const String& message)
{
    if(topic==topic1)
    {
        if(message == "off")    //如果收到了關於topic1主題的"off"消息,則熄滅板載LED
        {
          digitalWrite(LED_BUILTIN,LOW);
        }
        else if(message == "on") //如果收到了關於topic1主題的"on"消息,則點亮板載LED
        {
            digitalWrite(LED_BUILTIN,HIGH);
        }
    }
}

void setup(void)
{
    
    obloqModuleSerial.begin(9600);   //obloq模塊的串口通信波特率是9600,所以要把軟串口的波特率也設置為9600
    
    olq.setMsgHandle(msgHandle);//注冊消息回掉函數
    
    olq.subscribe(topic1);    //訂閱主題

    pinMode(LED_BUILTIN,OUTPUT);  //配置pin 13 ,即驅動板載LED的引腳為輸出模式

}

void loop(void)
{
  olq.update();  //輪詢
  
}

 本文參考

OBLOQ模塊文檔

OBLOQ模塊使用教程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM