IoT 物聯網教學-Logyun 連雲Wi-Fi 模組 – V1.1新版本更新與功能說明

一、介紹

Logyun連雲是CIRCUS Pi 特別為專案製作上,有IoT 需求的使用者打造的Wi-Fi 模組。簡單易懂的使用方式,具備與各種微控制器、微電腦良好的通用性,內建各項老師用於教學或學生製作專案時常用的功能,加速使用者的開發。為了讓剛學習程式設計的學生能上手 Logyun連雲 ,支援目前最熱門的微控制器BBC micro:bit,並提供可用於程式編輯器MakeCode 的擴充積木與範例程式,使入門的玩家或習慣使用micro:bit 開發的使用者也能透過Logyun連雲製作相關專題。

相關介紹與詳細使用說明可參閱以下連結:

文章重點章節整理:

二、V1.1 新版功能

新版本的韌體V1.1 總共增加了三個功能,如下圖所示:

Logyun連雲五大功能

我們替MQTT增加了訂閱多個Topic 的功能,前一個版本的MQTT 只能訂閱一個Topic,導致使用上有所限制,沒有辦法透過這項功能有效的發揮多裝置互聯的效果。

新增了LINE Notify 的功能,現在可輕易透過連雲,傳送資料到自己的LINE 上,您可以製作遠端警報器與監控裝置,透過LINE Notify 的功能通知您遠端智慧盆栽的狀態,或是住家有無人進出。

新增了IFTTT 功能,經由簡單的指令,您將能連線到最多人使用的串聯平台服務,讓micro:bitArduino UNO 這類沒有Wi-Fi 功能的控制板,也能發Email 到指定的信箱。

指令名稱功能說明輸入參數回傳訊息
MQTTSubscribe(訂閱的Topic 名稱)訂閱其他TopicTopic 名稱回傳:ok
LineNotify(認證碼,訊息)發送訊息至LINE認證碼訊息回傳:ok
IFTTT(認證碼,事件名稱,訊息1,訊息2,訊息3)透過IFTTT串聯服務認證碼事件名稱訊息1訊息2訊息3回傳:ok

三、如何燒錄新韌體升級?

與原先恢復或更新原廠功能一樣,硬體的部份我們需要USB 轉TTL 模組,軟體的部份需要透過下列網址下載新版的韌體(logyun_v1.1.bin)與ESP8266更新軟體

https://github.com/iCShopMgr/CIRCUS_Pi_Logyun/tree/main/Logyun-Prog

1. 下載新的韌體程式及ESP8266更新軟體

2. 連接設定

準備方才提到的USB 轉TTL 模組,選擇自己常用的即可。

Logyun連雲 、USB 轉TTL 模組與連接線

連接線的Grove 端照樣插在 Logyun連雲 ,另一端杜邦母線連接在 USB 轉TTL 模組 上,連接RX的黃色線接在模組的TX,連接TX的白色線接在模組的RX,GND的黑色線接在模組的GND,連接VCC的紅色線接在模組的5V 或3V3。

3. 更新步驟

點選「ESP8266Flasher.exe」,開啟這個燒錄程式。

點選Config頁籤,紅框內的選單選取或輸入「0x00000」,再點選齒輪符號開啟搜尋欄位。

選擇資料夾內欲燒錄的程式檔案「logyun_v1.1.bin」,並按下開啟。

點選Advanced頁籤,依照下圖設定各項目。

Baudrate:115200

Flash size:4MByte

Flash speed:80MHz

SPI Mode:DIO

點選Operation頁籤,選取對應的COM Port後,按下「Flash」按鈕準備進行燒錄。

接著需要按下 Logyun連雲 上面的按鈕啟動上傳程序,先按住 Logyun連雲 上面的「PROG按鈕」不放,緊接著再按下 Logyun連雲 上面的「RESET按鈕」後,先是放開 「RESET按鈕」 再放開 「PROG按鈕」 。

如果燒錄程序啟動成功,進度條會開始跑。

完成後左下角會出現打勾的符號。

這樣就完成 Logyun連雲 更新囉!打開一些常見的序列埠監控軟體,並按下連雲的RESET 按鈕,可以在開頭查看到版本。

四、micro:bit 使用方法(MakeCode)

1. 連接與擴充

除了 Logyun連雲 ,首先準備一條「Grove to 杜邦母」的連接線,與一塊能將micro:bit 金手指轉換成排針的「擴展板」。

Grove to 杜邦母連接線、 Logyun連雲 與Mbitbot Lite擴展板

連接線的Grove 端插在 Logyun連雲 ,杜邦母線連接在擴展板上,連接VCC的紅色線接在擴展板的VCC,連接GND的黑色線接在擴展板的GND,連接RX的黃色線需接在micro:bit支援序列連接的腳位(這邊選擇P1),連接TX的白色線需接在micro:bit支援序列連接的腳位(這邊選擇P2)。

打開MakeCode 並進入擴展畫面,輸入「https://github.com/iCShopMgr/CIRCUS_Pi_Logyun」網址擴充程式積木。

擴展成功即可在程式列表看到「Logyun連雲」。

2. MQTTSubscribe(訂閱的Topic 名稱)

您可以在MQTT 積木程式的當中看到新增的積木「MQTT 訂閱 Topic:("")」,我們可以透過這個程式積木,額外訂閱其他的Topic。

使用上與之前的用法相同,但要特別注意的是,我們會需要先連上提供MQTT 服務的伺服器,並與之前一樣先訂閱一個Topic,確認MQTT 伺服器連線成功後,才能再增加其他的Topic,如下圖所示:

下方程式示範新程式積木的使用方法。

程式連結

首先發送連接Wi-Fi 的指令,並透過確認的迴圈,確保連上Wi-Fi 再進行下一步驟,連上網路後經由打勾圖案的顯示來告知使用者已連上,並開始連接指定的MQTT 伺服器,同樣透過確認的迴圈來保證連上伺服器,確認連上後顯示笑臉的圖案。

完成Wi-Fi 連接並連上MQTT 伺服器,就能使用新的積木程式來增加訂閱的Topic。

透過「取得來源Topic名稱」、「取得訊息」來確認是否有成功接收來自不同Topic 的訊息。

3. LineNotify(認證碼,訊息)

您可以在Logyun 連雲積木程式列表當中,看到新增的積木「Line Notify 認證碼:("")訊息:("")」,我們可以透過這個程式積木,將想要發送的訊息傳送到手機上的LINE 。

3-1. 啟用LINE Notify 服務

首先進入到LINE Notify 主頁面,並點選右上角的「登入」來登入自己的LINE帳號。

LINE Notify

登入完畢後,右上角會出現「使用者名稱」,點選名稱會跳出「選單」,請選擇選單內的「個人頁面」。

可以在個人頁面內看到「發行權杖」,這個權杖就是我們需要的認證碼,請點選「發行權杖」。

請自行填寫發送訊息時的開頭名稱(可自行定義),以及選擇要發送通知的聊天室,若是自行使用也可以選擇「透過1對1聊天接收LINE Notify的通知」,設定完畢後按下發行取得認證碼。

將顯示的認證碼複製起來,程式撰寫時需要這組認證碼。

關閉視窗後就能在個人頁面內看到我們已連動的服務。

3-2. 程式撰寫

下方程式示範新程式積木的使用方法,切記要先連上Wi-Fi 。

程式連結

使用方法相當簡單,將剛剛取得的認證碼填入,並在訊息框框內輸入想要發送的訊息即可。

以下是LINE 端會收到的訊息狀態。

4. IFTTT(認證碼,事件名稱,訊息1,訊息2,訊息3)

您可以在Logyun 連雲積木內找到您相當熟悉的IFTTT 程式積木,需要填入的欄位也與其他使用過的介面相同,需填入認證碼與事件名稱,最多可發送三筆資料。

關於IFTTT 串接服務的部份,網路上有很多資訊與詳細的教學,於此不再贅述。我們直接進到MakeCode 的部份。

下方程式示範新程式積木的使用方法,一樣別忘記先連上Wi-Fi 呦!

程式連結

五、Raspberry Pi Pico 使用方法(MicroPython)

Raspberry Pi Pico

想要讓Raspberry Pi Pico 也使用Logyun連雲來收發資料,首先要先知道Pi Pico 的UART位置,我們可以到 Raspberry Pi Pico官方網站找到腳位圖,Pi Pico 的UART 有兩組,我們將使用UART1,也就是下圖代表UART1 TX( GP4 ) 與UART1 RX( GP5 )。

Raspberry Pi Pico 腳位圖

圖片擷取來源(https://www.raspberrypi.org/documentation/pico/getting-started/

1. 連接連雲

連接線的Grove 端照樣插在Logyun連雲,另一端杜邦母線連接在Pi Pico 上,連接RX的黃色線接在Pi Pico 的GP4,連接TX的白色線接在Pi Pico 的GP5,GND的黑色線接在Pi Pico 任一GND,連接VCC的紅色線接在Pi Pico 的3V3(OUT)。如下圖所示:

2. 程式編輯器

有關於 Raspberry Pi Pico 使用MicroPython 的起手式,官方網站有很詳細的教學,請依照教學指示完成環境設定。

編輯器的部份我們使用方便又強大的Thonny,版本是3.3.4 (支援Raspberry Pi Pico)。

軟體連結

圖片擷取來源(https://thonny.org/

下載並安裝完畢後,請將 Raspberry Pi Pico 透過USB 傳輸線接上電腦,並打開 Thonny ,點選上方選單的執行>選擇直譯器,在頁面內選單選取Raspberry Pi Pico 並按下確認,如下圖所示:

看到下圖顯示版本就表示有連上 Raspberry Pi Pico ,若是出現一堆紅字,有可能是Pi Pico 正在執行內部程式,可以點選Stop 按鈕停止Pi Pico 正在執行的程式。

3. MQTTSubscribe(訂閱的Topic 名稱)

我們同樣使用「uart.write()」來傳輸指令,透過「uart.readline()」接收指令。

若對MicroPython 還不太熟悉,可以先閱讀「Logyun連雲 – 史上最簡單IoT模組」,在開頭有詳細說明關於啟用uart 每行程式碼的功能。

指令名稱功能說明輸入參數回傳訊息
MQTTSubscribe(訂閱的Topic 名稱)訂閱其他TopicTopic 名稱回傳:ok

我們將透過UART 發送上述指令「MQTTSubscribe(訂閱的Topic 名稱)」,使連雲訂閱我們指定的Topic。

程式連結

在使用的過程中,除了Wi-Fi 之外,我們需要先連上MQTT 伺服器並先訂閱一個Topic,等到連上MQTT 伺服器後才能再訂閱其他的Topic。

如下圖,我們在連接伺服器時順便訂閱了「home/light」,待連線成功後再使用新指令訂閱「home/door」,若是還有其他Topic 可以依序訂閱。

同樣我們透過既有的「MQTTReceivedTopic()」、「MQTTReceivedMsg()」指令來查看接收到的訊息與來源的Topic 名稱。

驗證看看是否能從您訂閱的這幾個Topic 接收到資料。

4. LineNotify(認證碼,訊息)

4-1. 啟用LINE Notify 服務

首先進入到LINE Notify 主頁面,並點選右上角的「登入」來登入自己的LINE帳號。

登入完畢後,右上角會出現「使用者名稱」,點選名稱會跳出「選單」,請選擇選單內的「個人頁面」。

可以在個人頁面內看到「發行權杖」,這個權杖就是我們需要的認證碼,請點選發行權杖。

請自行填寫發送訊息時的開頭名稱(可自行定義),以及選擇要發送通知的聊天室,若是自行使用也可以選擇「透過1對1聊天接收LINE Notify的通知」,設定完畢後按下發行取得認證碼。

將顯示的認證碼複製起來,程式撰寫時需要這組認證碼。

關閉視窗後就能在個人頁面內看到我們已連動的服務。

4-2. 程式撰寫

我們同樣使用「uart.write()」來傳輸指令,透過「uart.readline()」接收指令。

若是對MicroPython 還不太熟悉,可以先閱讀這「Logyun連雲 – 史上最簡單IoT模組」,在開頭有詳細說明關於啟用uart 每行程式碼的功能。

指令名稱功能說明輸入參數回傳訊息
LineNotify(認證碼,訊息)發送訊息至LINE認證碼訊息回傳:ok

我們將透過UART 發送上述指令「LineNotify(認證碼,訊息)」,讓Pico 透過連雲發送訊息至指定的LINE聊天室。

程式連結

使用方法相當簡單,將剛剛取得的認證碼填入並取代程式中的認證碼,並在「逗號」後方輸入想要發送的訊息即可。

若是想將變數填入指令內,可以透過MicroPython 既有的「format」 功能,如下所示:

以下是LINE 端會收到的訊息狀態。

5. IFTTT(認證碼,事件名稱,訊息1,訊息2,訊息3)

關於IFTTT 串接服務的部份,網路上有很多資訊與詳細的教學, 於此不再贅述。我們直接進到程式碼的部份。

指令名稱功能說明輸入參數回傳訊息
IFTTT(認證碼,事件名稱,訊息1,訊息2,訊息3)透過IFTTT串聯服務認證碼事件名稱訊息1訊息2訊息3回傳:ok

IFTTT 服務的使用方法與其他平台的一樣,需填入認證碼與事件名稱,最多可發送三筆資料。

我們將透過MicroPython 既有的「random」 功能,隨機產生0-100 範圍內的數字,再透過除以不同數字產生三筆數值,作為IFTTT 發送的訊息。

程式連結

將自己申請的IFTTT 認證碼取代程式內的「認證碼」,並將設定的事件名稱取代程式內的「事件名稱」,數值的部分或訊息可以直接填入事件名稱的「逗號」後方。

下方的程式碼採用與Line  Notify 範例程式內一樣的「format」 功能將變數填入。

六、Arduino UNO 使用方法(C++)

除了Arduino UNO,您也可以使用其他Arduino 系列的主控板或相容板,以下教學我們以最普遍使用的UNO 作為主要的示範。

Logyun連雲是透過UART 傳輸,所以我們需要來尋找UNO 的UART 在哪裡?透過Arduino 官方網站可以找到腳位圖,圖中有標示TX、RX 字樣的腳位只有一組,分別是D0( RX )、D1( TX )。

圖片擷取來源(https://store.arduino.cc/usa/arduino-uno-rev3)DOCUMENTATION頁籤

因為只有一組UART 所以我們得謹慎的尋找是否有用於其他用途,果然在FAQ的頁籤裡找到以下內容,簡述就是這組UART 也用於USB 傳輸(序列埠監控視窗、燒錄程式)。若是拿去連接Logyun連雲,這樣就無法透過序列埠監控視窗觀察到結果。

圖片擷取來源(https://store.arduino.cc/usa/arduino-uno-rev3)FAQ的頁籤

為了應對主板本身就只有一組UART 的狀況,Arduino 有提供一個程式庫「SoftwareSerial」,可以讓其他腳位模擬UART 傳輸,但因為是模擬出來的…所以多多少少還是有限制。

如下圖所示,模擬的極限速度剛好就是Logyun連雲的115200 bps。在連接一個裝置時,通常需要支援更高的速率,這樣傳輸才會穩定。

圖片擷取來源(https://www.arduino.cc/en/Reference/softwareSerial)

到此,若是想使用序列埠監控視窗觀察結果,用UNO 就得承擔傳輸資料不穩的情形(傳輸內容不正確、漏資料),或是選用有多組實體UART 的Arduino 來使用,例如:Arduino Mega 2560,詳細資訊可到Arduino 官方網站查詢。

實際測試UNO 後,發現確實有時候會掉資料或是資料有誤,但因為不是每次都是這樣,做實驗還是可以的,以下我們就用模擬的UART 帶大家使用 Logyun連雲

1. 連接Logyun連雲

連接線的Grove 端照樣插在 Logyun連雲 ,另一端杜邦母線連接在Arduino UNO 上,連接RX的黃色線接在UNO 的D12(程式內會設定此腳為TX),連接TX的白色線接在UNO 的D11(程式內會設定此腳為RX),GND的黑色線接在UNO 任一GND,連接VCC的紅色線接在UNO 的5V 或3.3V。

您可以連接在板子上標示的位子,或是如下圖所示,連接在ICSP 的位子,兩邊都是一樣的。

2. 程式編輯器

使用Arduino IDE 來作為這次撰寫程式的編輯器是最方便的,請依照自己的作業系統版本下載對應的Arduino IDE 安裝。

軟體安裝完成後,將Arduino UNO 透過USB 傳輸線連接到電腦,開啟軟體並於上方選單選擇「工具」,並於選單內選擇「開發板:Arduino UNO」,並選擇對應的序列埠,這樣準備工作就完成了。

3. MQTTSubscribe(訂閱的Topic 名稱)

我們同樣使用「#include <SoftwareSerial.h>」將SoftwareSerial 的功能導入。

若對Arduino 還不太熟悉,可以先閱讀「Logyun連雲 – 史上最簡單IoT模組」,在開頭有詳細說明關於啟用SoftwareSerial 每行程式碼的功能。

指令名稱功能說明輸入參數回傳訊息
MQTTSubscribe(訂閱的Topic 名稱)訂閱其他TopicTopic 名稱回傳:ok

我們將透過SoftwareSerial 的功能發送上述指令「MQTTSubscribe(訂閱的Topic 名稱)」,使連雲訂閱我們指定的Topic。

程式連結

在使用的過程中,除了Wi-Fi 之外,我們需要先連上MQTT 伺服器並先訂閱一個Topic,等到連上MQTT 伺服器後才能再訂閱其他的Topic。

使用傳送命令「logyun.write();」傳送後,需等待一段時間才能切換為接收指令,程式內統一延遲100 毫秒。

如下圖,我們在連接伺服器時順便訂閱了「home/light」,帶連線成功後再使用新指令訂閱「home/door」,若是還有其他Topic 可以依序訂閱。

同樣我們透過既有的「MQTTReceivedTopic()」、「MQTTReceivedMsg()」指令來查看接收到的訊息與來源的Topic 名稱。

驗證看看是否能從您訂閱的這幾個Topic 接收到資料。

4. LineNotify(認證碼,訊息)

4-1. 啟用LINE Notify 服務

首先進入到LINE Notify 主頁面,並點選右上角的「登入」來登入自己的LINE帳號。

登入完畢後,右上角會出現「使用者名稱」,點選名稱會跳出「選單」,請選擇選單內的「個人頁面」。

可以在個人頁面內看到「發行權杖」,這個權杖就是我們需要的認證碼,請點選發行權杖。

請自行填寫發送訊息時的開頭名稱(可自行定義),以及選擇要發送通知的聊天室,若是自行使用也可以選擇「透過1對1聊天接收LINE Notify的通知」,設定完畢後按下發行取得認證碼。

將顯示的認證碼複製起來,程式撰寫時需要這組認證碼。

關閉視窗後就能在個人頁面內看到我們已連動的服務。

4-2. 程式撰寫

我們同樣使用「#include <SoftwareSerial.h>」將SoftwareSerial 的功能導入。

若對Arduino 還不太熟悉,可以先閱讀「Logyun連雲 – 史上最簡單IoT模組」,在開頭有詳細說明關於啟用SoftwareSerial 每行程式碼的功能。

指令名稱功能說明輸入參數回傳訊息
LineNotify(認證碼,訊息)發送訊息至LINE認證碼訊息回傳:ok

我們將透過SoftwareSerial 的功能發送上述指令「LineNotify(認證碼,訊息)」,讓Pico 透過連雲發送訊息至指定的LINE聊天室。

程式連結

使用傳送命令「logyun.write();」傳送後,需等待一段時間才能切換為接收指令,程式內統一延遲100 毫秒。

我們開頭有「int count = 1;」這行程式碼,這是設定一個名稱為count 的變數,隨著程式運行過程中裡面的值會不斷變化,用來展示如何在發送指令中加入變數。

傳送訊息到LINE 的使用方法相當簡單,將剛剛取得的認證碼填入並取代程式中的認證碼,並在「逗號」後方輸入想要發送的訊息即可。

若是想將變數填入指令內,可以透過轉換變數為「字串」,透過字串與字串相加,並將整個組合好的字串括弧起來並如下所示,在括號外面加上「.c_str()」即可編譯成功。

以下是LINE 端會收到的訊息狀態。

5. IFTTT(認證碼,事件名稱,訊息1,訊息2,訊息3)

關於IFTTT 串接服務的部份,網路上有很多資訊與詳細的教學,於此不再贅述。我們直接進到程式碼的部份。

指令名稱功能說明輸入參數回傳訊息
IFTTT(認證碼,事件名稱,訊息1,訊息2,訊息3)透過IFTTT串聯服務認證碼事件名稱訊息1訊息2訊息3回傳:ok

IFTTT 服務的使用方法與其他平台的一樣,需填入認證碼與事件名稱,最多可發送三筆資料。

我們將透過「random」 功能,隨機產生範圍為100 以內的三筆數值,並儲存到變數中,作為IFTTT 發送的訊息。

程式連結

將自己申請的IFTTT 認證碼取代程式內的「認證碼」,並將設定的事件名稱取代程式內的「事件名稱」,數值的部分或訊息可以直接填入事件名稱的「逗號」後方。

與上一個LINE Notify 的範例相同,若是想將變數填入指令內,可以透過轉換變數為「字串」,透過字串與字串相加,並將整個組合好的字串括弧起來並如下所示,在括號外面加上「.c_str()」即可編譯成功。

七、結語

上述就是這次關於 Logyun連雲 新增「 MQTT訂閱多個Topic」、 「LINE Notify」、「 IFTTT 」三項功能的介紹,並且針對不同的主控板與語言所展示的教學範例,希望透過這次新增加的功能,可以幫助到想要快速搭建IoT 應用的使用者。

未來若有新增什麼有趣的功能,或是修正錯誤的部份,都會持續更新並以文章的方式呈現,請大家多多分享與關注喔!