[教學] 用 MicroPython的非同步排程 asyncio 來模擬多工

對於使用 Arduino IDE來開發 NodeMCU 專案的朋友來說,要讓兩個以上的任務,在某個時間內,按照一定的時間間隔,個別運作且同時被執行,程式不太容易實現。舉例來說,像下圖這樣三個任務,綠色任務每一秒讀取溫度感測器把結果輸出到UART;黃色任務,每隔兩秒閃一下;藍色任務檢查Pin2 的按鈕是否被按下,然後結束所有工作。而且這三個任務,個別按照一定的時間間隔,重複執行、而且同時運作。在Arduino IDE裡面,要怎麼寫?


[教學] 用MicroPython網路對時NTP 學習解開網路封包

ESP32 NTP 網路對時

由於 NodeMCU (ESP8266) 或 ESP32 的MCU 裡面帶有實時時鐘 (Real-time clock,RTC),在RTC 被校正之後,能用於時間戳章(Time Stamp)的相關應用。比方說,可以把溫度感測器的測量數值,跟當前的時間,一起存進去 SD 卡的 log 紀錄檔,這樣讀取歷史資料時,就知道某個溫度,是在何時被量測紀錄的。

但由於MCU模塊,不像電腦主機板有安裝 CR2032 鋰電池,去維持RTC不間斷運作,一旦 MCU電源中斷,之前網路校準好的時間就沒了,重新上電後,RTC會回到預設的 2000年1月1日0點。好在 NodeMCU 跟 ESP32 都內建 WiFi,因此透過網路對時伺服器 NTP Server,便能隨時校正RTC。對於價格便宜的 MCU 來說,更頻繁地執行網路校時,可以彌補 RTC 不準的缺陷。

[教學] 認識 MicroPython (四) - 使用 ampy 取代 WebREPL

Adafruit Ampy
先前在「認識 MicroPython (二) - 啟用 WebREPL 遠端 WebSocket 服務」一節中,曾經介紹利用 WebREPL 上傳檔案到NodeMCU的方法,這個方法需要在瀏覽器下面操作,而且只有簡單的上傳、下載檔案的功能,比較適合初學MicroPython的時候使用。當你開始寫更複雜的程式,去控制 NodeMCU 之後,往往需要頻繁修改、上傳檔案, WebREPL 操作起來會覺得比較繁瑣,而且這個服務本身,也佔用較多 NodeMCU 的效能。此時,若是能使用命令列指令的工具,會讓上傳、下載程式,以及檔案管理變得更直覺簡單。"ampy"  就是這樣一個簡單的命令列工具,透過 MicroPython 預設的 REPL 界面,用你熟悉的 ftp 指令,去維護、查看 NodeMCU裡面的檔案,功能簡單強大。

替 Arduino Nano 開無線外掛 (二) 使用 WiFiEsp 函式庫

STM32F103C8T6 + ESP-01
之前曾經在《替 Arduino Nano 開無線外掛 (一) 接一片ESP-01》一文中,介紹用 Arduino Nano 連接 ESP-01 達到與外界通訊的目的。不過該文當時還沒寫完,只有提到 Arduino 跟 ESP-01 兩者之間的連接、通訊。事實上,這樣的動作還沒有到達 Internet,還只是板子之間的通訊,簡單測試一下 ESP-01 的 AT指令功能。除非,你在終端機上,用一個一個 AT 指令,逐步下給 ESP-01,讓 ESP-01 執行以下動作:1. 設定WiFi模式 (Station, Server等) ;2. 連接無線AP,獲得 IP;3. 設定通信協定、連接遠端伺服器或等待客戶端連進來;4. 傳送字串資料給遠端的伺服器或接收客戶端來的資料。

這樣才完成開無線外掛的目的。不過,總不能每次都這樣子敲一大堆 AT 指令吧?本文接續前文,繼續介紹完整的外掛控制方法,包含讓你在遠端執行一個 UDP 伺服器,實際收取 Arduino Nano 這端的資料。

如何讓 WiFiEsp 跟 STM32 Blue Pill 編譯時不會出錯?

WiFiEsp 是一個簡單好用的函式庫,讓你的 Arduino 板子,能夠透過 ESP-01物連網模組連上網路、傳送資料。它使用 AT指令跟 ESP-01 溝通,因此不需要更改 ESP-01 的韌體,就可以直接使用。另外它的函式,也跟 Arduino 原裝的 WiFi 與 Ethernet 函式庫差不多,很多函式都一樣。

對於要用現成的 MPU 連接 ESP-01 上網的程式來說,它可以省去許多直接用 AT 指令去控制 ESP-01的麻煩事。不過,這個函式庫,搭配 STM32 的板子,編譯時會出現錯誤訊息,需要在 WiFiEsp 函式庫中的 EspDrv.cpp 加上一些定義,才能順利編譯。

Ubuntu 20.04 iBus 酷音輸入法編輯使用者詞彙


在 Linux作業系統中,由於輸入法系統的開發,讓中文能暢行無阻,無論輸入搜尋關鍵字,或是編寫一篇文章,都能順利以注音、倉頡、拼音輸入法為之。目前 Ubuntu 20.04 版,預設安裝 iBus 輸入法系統,使用者可以在 iBus 中,安裝酷音輸入法或其他種類的輸入法,用以輸入中文。
當你安裝 Ubuntu 20.04 時,有安裝中文字型的話,安裝過程會順便安裝酷音輸入法,並且你可以在「地區和語言」的系統設定項目中,更改酷音輸入法的相關設定,比如把預設的注音鍵盤,改成能夠更快速輸入的許氏注音鍵盤或倚天26鍵注音鍵盤,比 Windows 系統需要自行匯入這些不同注音鍵盤的定義檔,來得更方便。

[教學] Arduino Pro Mini 的便宜替代品 MiniEVB

MiniEVB 是一款仿造 Arduino Pro Mini 的微控制器模組,採用深圳 LogicGreen 公司出品的LGT8F328P-SSOP20 8位元晶片。這顆MCU的功能,除了跟 Arduino Pro Mini 上面使用的 ATmega328 功能相仿之外,核心頻率還比 ATmega328 勝過一籌,可以運行到32MHz,運算速度32 MIPS,內部的32KHz RC振盪器,有提供校準功能,讓可以精準執行即時計數,或輸出準確的方波。而 原廠提供的Arduino 硬體支援包,讓你可以像使用其他 Arduino 模組一樣,用你熟悉的方式, 來開發 MiniEVB 相關的應用。

MiniEVB正面外觀,可明顯看到被塗抹掉的晶片
MiniEVB 正面外觀

晶片基本規格:

I/O 與封裝:QFP48/32L, SSOP20L

32Kbytes 可編程 FLASH 程式記憶體

2Kbytes 內部數據 SRAM

EEPROM 0Kb, 但有提供模擬接口,可配置为 0K/1K/2K/4K/8K (共用 FLASH 空間,而且是配置的2倍空間,這部份不如 ATmega328)

最低功耗: 1uA@3.3V

工作電壓: 1.8V ~ 5.5V

工作頻率: 0 ~ 32MHz

工作溫度: -40C ~ +85C

HBM ESD : > 4KV