【輕鬆堆疊】MTDuino+Sensor kit上機實作

作者:賴桑

前面一篇文(MTDuino—專門替 Sigfox 打造的 Arduino)中提到如何能讓MTDuino透過內建的Sigfox電路,以Serial1跟SerialUSB演練按鈕以後上傳次數的範例。不過,光只有按鈕~~似乎是太沒意思了點!為了要能夠更像是個具有高度整合性質的效果,開發MTDuino的邁特電子(Mighty Net)也推出了各式各樣的感測器整合式擴充板(行話叫做烏龜板!因為掛在電路上面像是烏龜揹著殼一樣),像是我這次就拿到兩個。

1. BLE+溫濕度感測+三軸加速度計

第一個(如下圖)從外觀上不難看到,藍色那小塊就是個無線電的通訊模組,其實呢~就是BLE!另外,也有看到紅色基板上還有兩個小黑塊、一個小白塊,這其實是附帶在BLE擴充板上的大氣溫溼度,及透過微機電MEM工程為基礎開發的三軸加速度計。

Sensor Kit:BLE+溫濕度感測+三軸加速度計

2. GPS+大氣壓力+UV感測+環境光感

第二個(如下圖)如果之前用Arduino做專題的人,應該一眼就認出來:GPS!不過呢,這上面一樣,還不只GPS,還包括大氣壓力、紫外光UV感測、環境光照Ambient light感測,通通都有!

Sensor Kit:GPS+大氣壓力+UV感測+環境光感

其他還有好幾種,邁特電子說將會陸續推出。我個人來說算是蠻期待的,這可讓我在做物聯網方面的專題簡單多了!至於疊接的方法…應該一看更懂,超級簡單,只要腳位一對一就好了,請參考下圖。

把MTDuino疊接擴充板的方法,只要腳位一對一插上去就好

我的建議:一般來說有天線的,天線要是不能延長露出來,那就是盡量靠近外側,好比說,最上面或者靠銜接起來最多空位的地方,這樣收發無線電效果比較明顯!所以,這三個我是如下圖這樣疊接:

有天線的盡量靠近外側或上方

那更會有人問了:「我用一般的Arduino Uno那些也可以做得到啊!」嘿嘿嘿,問到重點了,別忘了!MTDuino的核心微控器可是個32 Bits的SAMD21,比起一般的Arduino用的8 Bits AVR系列,運算能力上可是超過許多,記憶體容量也更大,這意味著功能更強和程式碼有充足的容量。

所以寫這篇文也是為了凸顯軟體、硬體都有其價值,這正是為什麼『軟硬體共同設計』這個概念越來越受到重視。所以能用MTDuino這種高度整合解決方案的開發板與Sensor Kit,不是反倒經濟實惠嗎?

實際操作

這篇先來玩其中一個Kit:將MTDuino與有GPS擴充板疊接好之後,我們挑選GPS、紫外光UV感測、大氣壓力這三項簡單的感測範例給試給大家瞧瞧。這裡說一下:SAMD21的程式看起來跟一般Arduino很接近,不過眼尖的人可能一看就發現有些不一樣。

其實這些不一樣之處,就讓SAMD21比起一般的Arduino性能上有更顯著的表現。至於整個可以執行的版本也整理成可以下載的壓縮檔案了,當然你可以直接編譯後燒錄給MTDuino來執行。程式碼為壓縮檔案中的:mt_LB-M8Q104A\mt_LB-M8Q104A.ino

如果要執行這個範例,記得靠窗邊一點!最好可以連著筆電一起帶到戶外,如此一來GPS定位才容易成功。

程式碼執行後的畫面

範例解說

跟GPS在同一個擴充板上的紫外光UV感測、大氣壓力,分別採用了Si1132、MS5607這兩個晶片,其中Si1132的規格表看來,是具有光波段Light Spectrum效果,能透過I2C與它通訊的感測晶片。而MS5607的規格表看來,是個Barometer,也同樣可以透過I2C與它通訊。

至於GPS那就得透過我們所熟知的Serial來控制,不過等一下!別忘了SAMD21才是主角,一般Arduino會用SoftwareSerial這種透過GPIO模擬Serial的方式來控制,但這已落伍了!SAMD21的規格表告訴我們,有個更簡單好用的方法:SERCOM。

甚麼叫做SERCOM呢?其實SERCOM的原文全名叫做Serial Communication Interfaces,顧名思義,只要透過SERCOM的設定,SAMD21可以直接利用內建的電路系統執行I2C、SPI、Serial,甚至目前汽車電子常見的控制器區域網路CAN的LIN規格,SAMD21都能夠辦到!

但是…腳位是有限的啊,這怎麼讓SERCOM可以自由調節哪個腳位呢?由Arduino的GitHub中可以看到好幾個,其中一個就是ArduinoCore-samd;這個就是MTDuino的核心基礎!進入ArduinoCore-samd以後,你應該可以看到不少目錄跟檔案,這些就是Arduino原廠當時定義以SAMD21微控器開發設計為基礎的規格。

其中有一個目錄叫做variants,這又會有好幾個目錄,畢竟SAMD21這個32 bits微控器可是不少工業控制都在用的,Arduino當然也有不少個產品系列用上這個微控器,其中Arduino M0 Pro現在產品線叫做Zero,我們就點進去吧!

參考SAMD21的接腳定義

Arduino-M0-Pro現在產品線叫做Zero

這一點進去後,又出現了幾個檔案,令我們比較好奇的是 variant.cpp這個檔案,這個檔案裡面可定義了不少東西,其實就是腳位在電路板上的對應跟佈局Layout。

找到variant.cpp就是接腳的定義

variant.cpp下一開頭就是一堆接腳對應的表

MTDuino可是比起Arduino原廠的設計功能多多 – 還多了Sigfox專用傳輸電路,當然,腳位也不一樣,邁特電子出廠MTDuino時有附自己的variant.cpp給大家參考。

關於GPS擴充版,目前腳位配置如下:

腳位 用途
Pin 7 GPS致能訊號
Pin 25(A1) GPS TX
Pin 26(A2) GPS RX

由MTDuino自己附的variant.cpp查到就是PIN 25、26,也就是SERCOM4

從邁特電子的variant.cpp可以看到PIN-25、26的對應,恰好就是SERCOM4

也因此,我們可以用MTDuino自定義所要的Serial去連結GPS;範例中透過SERCOM4自己定義了Serial3,而每一個Serial當然都要有一個Handler負責資料的收和發,這也就是SERCOM4_Handler()這個函數存在的用意。

自己定義了Serial3

接著在setup()這裡,只要每次程式一開始執行就利用pinPeripheral()函數,定義UART接腳功能,搞定,效能還比SoftwareSerial更高哩!畢竟這可是透過SAMD21微控器硬體本身的電路能辦到的喔!

下令一啟動就把PIN-25、26初始化為UART

小結

這次我們因為MTDuino多了個新夥伴SAMD21這個32 bits功能強大的微控器晶片,同時還因為SAMD21的關係讓大家看到,只要有心,Arduino的功能其實可以更上一層樓。

賴建宏

賴建宏

社群稱號為「賴桑」的他,以電子電機的背景,熱衷於OSHW的應用開發與實作。現為台北科技大學電子所博士班學生,目前主推「農林漁牧大業」計畫的迷你型魚菜共生系統開發。
賴建宏

Author: 賴建宏

社群稱號為「賴桑」的他,以電子電機的背景,熱衷於OSHW的應用開發與實作。現為台北科技大學電子所博士班學生,目前主推「農林漁牧大業」計畫的迷你型魚菜共生系統開發。

Share This Post On
468 ad

Submit a Comment

你的電子郵件位址並不會被公開。 必要欄位標記為 *