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

OBLOQ 物聯網模塊

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

 

技術規格html

  • 供電電壓: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 協議棧

引腳定義git

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

 

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

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

Obloq是一個物聯網模塊,而非主控。因此,Obloq只是充當了Arduino主控(或者其餘單片機主控)的一個「助手」——幫助主控完成網絡通訊。那麼,主控芯片以何種方式傳遞命令給Obloq,以及Obloq有哪些支持的命令呢?服務器

咱們經過下面一個類比來講明:網絡

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

若是主人對狗子小黃說:「跳舞」,然而主人從沒有給小黃訓練過跳舞,因此小黃不會有所反應,它不懂。若是Arduino經過串口給Obloq發送「I love u」,Obloq模塊也不會作出任何動做,由於Obloq燒寫的固件裏沒有這條指令,它沒法識別。oop

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

命令字符串 命令做用
"|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的鏈接

 

 因此咱們能夠得出如下結論:

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

二、Obloq和Arduino(或其餘單片機)主控之間經過串口來做爲命令和響應的傳輸通道。

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

實驗

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平臺註冊帳號,註冊後登陸,網頁右上角有註冊 /登陸按鈕:

登陸後進入工做間 :

 操做步驟:

一、複製【工做間】裏的iot_id和iot_pwd替換下面代碼中的"bbbbbbbbb" 和  "cccccccccc" 。

二、在【工做間】添加一個設備,複製topic替換下面代碼中的"aaaaaaaaa"。

三、將下面代碼中的「myWIFI」和"123456"改成本身使用的WIFI名和WIFI密碼。

四、鏈接好電路後(見下面的接線圖),將代碼下載到Arduino板中。

五、在【工做間】點擊新建設備的【發送消息按鈕】,分別發送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模塊使用教程

相關文章
相關標籤/搜索