文章

[模組] ESP32 LoRa 與 CubeCell AB02S 相連做為 GPS tracker

圖片
        本文主要介紹 LoRa 節點之間的通訊傳輸,我們使用 Heltec 公司製造的 ESP32 LoRa 和另一個 CubeCell AB02S 的節點,如下圖一所示。 在前一文  https://han-ya.blogspot.com/2022/06/helium-lora-wan-hnt.html  已經介紹過 LoRa 的公眾網路 Helium 的連線操作,這兒我們希望實作一套 LoRa 節點間的收發通訊連線,由於 CubeCell 具有 GPS 功能,在實作上將 GPS 的經緯度數據透過 LoRa 連線傳送給 ESP32 節點,並在 OLED 螢幕上顯示出 GPS 經緯度數據。接下來,就將 LoRa 傳輸與開發的過程詳述於後,在未來計畫,利用 ESP32 WiFi 的功能,實現出 LoRaWAN 的架構,也就是將 ESP32 做為 LoRa gateway 的角色。 圖一:兩種 LoRa 節點 ESP32 LoRa         這塊開發板是由 ESP32 為核心具有 WiFi 連網功能,再搭配 SX1276 LoRa 晶片所組成,所以這板子能當作 LoRa 轉 WiFi 的路由設備,也可視為 Hotspot 的系統架構。開發它需要從 Arduino IDE 環境下進行編譯,首先在 IDE 的配置中填入開發板管理員的網址 http://resource.heltec.cn/download/package_heltec_esp32_index.json ,這樣 IDE 便會從網址下載板子的相關範例與函數庫,如果下載成功的話,應該能在 IDE 看到下圖二的畫面,然後選擇 "WiFi LoRa 32 (V2)",開發板的硬體版本是V2。 圖二:Arduino IDE 開發板管理員         接著,我們點選程式庫,在程式管理員畫面中將會列出各類開發板的函數庫與程式碼,基本上還未被安裝到電腦上。我們輸入 "heltec" 關鍵字過濾一下,如下圖所示,列出所有與 Heltec 相關的板子與程式,其中只要安裝圖中紅色標示的程式範例版本就可以了。 圖三:Heltec 程式管理列表     ...

[應用] 關於 Helium LoRa WAN 物聯網路 (HNT挖礦機)

圖片
        在前一篇介紹 LoRa 的公眾網路(TTN)  https://han-ya.blogspot.com/2022/05/lora-thethingsnetwork-helium.html ,本文打算再介紹由 LoRa 通訊協定所建構的物聯網路,這網路稱為 Helium 網,而當下仍以擴展網路網,提升覆蓋率為主 。該系統網主要由 Hotspot ( 熱點 )路由器與各類 LoRa 終端設備(或稱為 節點 )所構成,目前全球 Hotspot 裝機量已超過 86 萬台,就我個人看法,Helium 應該還在尋找商業應用的目標階段,不過我會從技術與操作的角度去了解這個 LoRa  公網,底下分別介紹這兩個系統成員 。 Helium Hotspots         就運作角色而言,這個 Hotspots 熱點路由器的功能是做為連接 LoRa 網路與 Internet 網的橋樑,類似一個 IP 分享器的概念。負責接收來自 LoRa 終端設備的連線請求,並轉傳資料到 Internet 網路。另外,每個 Hotspots 涵蓋的範圍大約是方圓 500 公尺,因此整個 LoRa 網則由各地無數個 Hotspots 所形成的覆蓋網,如下圖一的蜂巢狀,我們可以連上  https://explorer.helium.com/  ,從這個網站就能看到全球 Hotspots 分布的情況,圖一是顯示高雄市三民區附近的路由器,蜂巢上面的數字代表這個區域內有多少台 Hotspots 路由器。 圖一:Hotspots 熱點路由器的蜂巢圖         目前 Hotspot 機器由不同的廠商所製造[1][2],並沒有特定的專屬廠商,也就是大家都能製造這台設備的戰國時代,我手上測試的機器是 Linxdot 礦機。為何它稱為挖礦機?在前一篇文章有說明,Helium 網路為了提高覆蓋率,利用加密貨幣的區塊鏈技術,設計一套補貼的商業模式,藉由這誘因以便建構一個全球的 LoRa 物聯網路。當資料流量通過這個 Hotspots,後台系統透過計算機制得出流量的報酬,便會在這台機器上...

[工具] 中文自然語言處理 NLP 的開發套件

圖片
        自然語言處理 ( NLP - Nature Language Processing) 主要能讓機器分析對話文字,進而理解對話的意思,這項技術其實已經發展很多很多年了,但在近年來,拜高速網路 、 海量數據 、 智能發展之賜,有機會廣泛地應用到實際生活之中,比如聊天機器人 、 文件資料搜索 、演講內容分析...等 。開發 NLP 技術的含量很高,需要建立模型 、收集 大量語料 、 訓練與 運算,一般的開發人員其實很難短時間就能將 NLP 的語意功能實現出來。目前幾個雲端平台的大廠(微軟 、 谷歌 、 阿里 、 百度)有提供 NLP 相關的服務,但所幸在中文自然語言處理領域中有幾個學術單位開發出不錯的模型,並且提供 SDK 工具包給工程人員進行二次開發,常見的中文 NLP 模型有:哈爾濱工業大學的 LTP 、中科院的 NLPIR 、清華大學的 THULAC ...等等,其中以哈工大和中科院的 NLP 模型效果比較佳 (根據網路使用者的比較後,這兩家的 CP 值較高),中科院的 SDK 提供 C# / C++ / Java 這些程式語言的介面,對我們開發者更為便利 。本文將介紹中科院的 NLPIR SDK 開發和操作的結果。         首先,我們到 github 網站下載 NLPIR, https://github.com/NLPIR-team/NLPIR ,當中有一個 SDK 目錄,裡面存放了 20 種自然語言處理的組件,各個組件的功能說明,如下圖一所示。雖然這套 SDK 提供便利的介面讓大家進行二次開發,但是它有 license 的限制,對於短期測試的開發人員而言,github 上面會定期提供一個月期限的 license,我們只要下載並更新 license 後就能繼續使用 SDK。如果有商業需求的話,則需要購買商業 license,取得長期使用權。下圖中以藍色標示的組件是我實際測試操作過的部分,當中的 NLPIR-ICTCLAS 組件為系統的核心,可以做到中文分詞,將一段句子或文章經過這組件的分析後,切出一個一個詞並標示出名詞 、 動詞 、 形容詞 、 副詞....等詞性,這一刀切的精不精準就代表這套系統優不優秀了。除了處理中文分詞之外, NLPIR-ICTCLAS...

[應用] Public LoRa 網路:TheThingsNetwork (TTN) 和 Helium hotspots

圖片
        幾年前買了兩個 Arduino MKRWAN 1300 模組,當時測試 LoRa 的點對點通訊,參考前文 https://han-ya.blogspot.com/2018/07/lora-arduino-mkrwan-1300.html ,點對點的資料互傳是沒有問題。最近,想要將模組連上 TheThingsNetwork 和 Helium 公眾的 LoRa 網路,發現連不上 TheThingsNetwork,於是打開 TheThingsNetwork 地圖,如下圖一所示,圖中的每個點代表有多少個 LoRa gateway 在上面,我們能發現 LoRa 公眾網路在歐洲的密度較高,相較之下,亞洲密度也太低了。像我目前在南台灣就連不上 TheThingsNetwork,因為附近沒有 LoRa gateway,我的 Arduino LoRa 模組始終沒有成功上公網。 圖一:TheThingsNetwork 全球設備分布地圖         朋友介紹一個近年流行的 Helium 挖礦熱點 ,它也是一種 LoRa 物聯網,而我稍微了解它的經營模式,其目標是佈建一個低成本且通訊距離遠的物聯網,以補足部分 5G 網路覆蓋之不足的問題,所以覆蓋率便是 Helium 網布建的目的。為了增加布建 Helium hotspot (類似基地台) 誘因,團隊引入區塊鍊與加密貨幣的概念,只要安裝 Helium 設備並連上網後,便會給虛擬貨幣 HNT。在這種利益驅使下,越來越多人會買 Helium 設備 (簡稱為礦機) 布建,因此我們從下圖二能看出布建的熱點比起 TheThingsNetwork 的密度還要高出非常多,歐美地區相當熱絡。 圖二:Helium explore 全球熱點分布圖         將地圖拉近後,觀察地圖被切割成一小塊蜂巢式區域,如下圖。每個區域就是一個覆蓋點,如果這個區域內的 Helium 礦機太多的話,會影響 HNT 虛擬幣的分配,換句話說,每個區域的資金有分配上限,單位面的礦金是固定的,如果越多人來挖,每人分配到的利潤就降下。畢竟這種挖礦的誘因是為了提升網路的覆蓋率而驅...

[筆記] 以 RISC-V 架構的 MCU

圖片
        隨著開源的 RISC-V 架構開始熱絡起來,市場上逐漸出現以此架構設計的晶片,搭配類似 Eclipse 的開發環境 IDE,參考前文 https://han-ya.blogspot.com/2022/02/rt-thread-studio.html 。於是,購買了幾個 RISC-V 核心的開發板,正可對比 ARM Cortext-M 架構的 MCU。在晶片短缺之際,RISC-V 架構的晶片或許可做為另一項選擇。 CSM32RV20         南京中科微電子的 CSM32RV20 低功耗控制器,最高時脈 32MHz,操作電壓範圍 1.8 ~ 5V,內建 Flash 最多 40kB 和 4kB SRAM。這樣的運算等級相當於 ARM Cortex-M0 的控制器,如下圖。周邊介面包含 GPIO 、 I2C 、 SPI 、UART 、高精度的 ADC (up to 16-bit)...等等,這規格看起來滿吸引人的。         這塊開發板需要安裝自家的開發軟體 (CSM Studio) ,其實也是類似 Eclipse 的開發環境,專門接上自家的 debugger (或 JLink)並搭配這套軟體使用,如下圖一所示。安裝後,提供 BSP 驅動程式和範例,使用者就能測試看看晶片的功能。 圖一:CSM Studio 開發軟體 CH32V103         沁恆微電子的 CH32V103 控制器, 最高時脈 80MHz,操作電壓範圍 2.7 ~ 5.5V ,內建 Flash 最多 64kB 和 20kB SRAM,他們的 CH32V2x 系列的時脈可達到 144MHz。這樣的運算等級相當於 ARM Cortex-M3 的控制器,如下圖所示。其 周邊介面包含 GPIO 、 I2C 、 SPI 、UART 、 12-bit  ADC 、DMA、USB...等等,這規格正可對比意法半導體的 STM32F103 系列。 這塊開發板需要安裝一套名為 MounRiver 開發軟體 (MounRiver Studio) ,也是基於 Eclipse 平台所設計的 RISC-V 集成開發環境,我們還需...

[功能] 在 Filogic 130A SDK 裡,如何使用 HTTP POST 的連線?

圖片
        前陣子與金屬中心執行工廠廠線的數據可視化案子,後來又在 DIY Maker 社團裡看到不少 IoT 數據可視化的影片,能想像在大數據的環境下,將各類數據可視化做成圖表是一件滿吸引眼球的事。於是,打算用聯發科的 Filogic 130A 開發板來實現雲端 IoT 數據的 dashboard,首先雲端的可視化展現將採用 ThingSpeak ( https://thingspeak.com/ )提供的服務,註冊一個屬於自己的 channel,如下圖所示。 圖一:在 ThingSpeak 網站創建自己的可視化         接著,研究看看數據用哪種方式上傳到該網站上,在 "Write Data to Channel" 內文提到採用兩種方式,一種是 REST API ,另一種是 MQTT API ,而本文將使用 REST API 的方式把 Filogic 130A 的數據上傳到雲端。         回到 Filogic 130A SDK 的部分,它提供了一個 httpclient 的模組程式碼,讓使用者自己實現 HTTP POST 的連結。這個模組只提供 HTTP 的連線,如果需要 SSL 的 HTTPS 連線,必須在編譯的 makefile 中開啟 " MTK_HTTPCLIENT_SSL_ENABLE " 這個定義,在 feature.mk 檔案裡,加上下列一行:                          MTK_HTTPCLIENT_SSL_ENABLE      = y 然後再進行編譯,此時 SDK 裡頭的 mbedtls 模組也會載入編譯,HTTPS 便能使用 SSL 認證連線了。程式設計方面,首先要呼叫  httpclient_connect( ) 函數建立連線, 設定  URL 為   https://api.thingspeak.com/update,連線成功後,再呼叫 httpclie...

[工具] 在 Arduino IDE 環境下,也能編譯其他廠商的開發板

圖片
        Arduino 開發板發行多年了,也是 DIY maker 很喜歡拿來開發的板子之一,主要是板子的周邊介面讓入門者簡易明白,加上 IDE (Integrated Develop Environment) 這套工具介面簡潔且非常容易上手,這些優點讓 DIY maker 能夠很快驗證某些電路或功能和應用。另外,在教育方面,由於免費的開發工具以及初學者能負擔的板子價格,所以在理工科系也會拿 Arduino 做為課程,設計各類嵌入式系統的應用。不過,本文並不打算介紹 Arduino 開發板如何使用,而是介紹 Arduino IDE 這套工具如何編譯 ⌈非⌋ Arduino 板子,借用 IDE 來開發第三方的板子。         隨著 Arduino 這個生態系統發展多年後,使用者越來越多,在 DIY maker 的討論越來越火熱的情況下,吸引來自  ⌈非⌋ Arduino 生態的廠商也希望用 IDE 工具來編譯自家的板子 。既然 IDE 是編譯工具,能直接編譯其他  ⌈非⌋ Arduino  廠商的晶片嗎?答案當然是不行了,因為每家晶片的核心不見得相同 (Arduino 是 Atmel AVR 核心),不能用同一套 compiler tool-chain 工具,有興趣可以參考前面的  "漫談 ARM cross compiler 環境"  一文。因此,在 IDE 裡面提供一個欄位,讓使用者輸入網址,並自動下載第三方開發板的開發工具 (tool-chain),該工具會自動整合到 IDE 裡面,使用者也可以非常便利地在 Arduino IDE 開發第三方的程式。下圖一所示為支援 樂鑫 ESP32 的網址,以及 瑞昱阿米巴 Ameba 開發板的網址。 圖一:額外開發板的下載網址         IDE 自動下載並安裝後,我們在下圖的目錄中能找到第三方廠商的工具包,明顯看出工具包都包含了 hardware 和 tools 資料夾。其中, tools 裡面就是編譯的工具程式 (包括 compile 和 link...),還有燒錄韌體到板子的程式。以 EPS32 為例,這晶片的核心是 Xte...