發表文章

目前顯示的是 7月, 2023的文章

超簡單做出低功耗藍牙温度計-Part 3(nRF52840 Dongle + BME280 + CircuitPython)

圖片
 之前用TMP102, 只有温度值可以看, 若加上溼度值, 會更具實用性! 那就要改用別顆感測器了, 具温溼度感測功能的sensor有很多選擇, 之前試了DHT11, AM2320, BME280, 覺得BOSCH BME280比較好用, 晶片本身具有I2C, SPI界面, 有些模塊二個界面都有把pin腳引出, 有些模塊只引出I2C, 這種的價錢便宜許多。這裡, 只使用I2C, 所以寫程式方式和之前(TMP102)文章相似, 也可以使用便宜的模塊就好。 同Part 2的文章, 使用CircuitPython來實作BLE低功耗藍牙傳輸資料, 可以使用Adafruit寫好的Bluefruit Connect App, 我們只要在nRF52840 Dongle上面透過現成的BLE UART服務, 把温度和溼度的數值傳送出去給App就可以了。先看一下完成的樣子: 送出來的資料格式就是温度值接著是逗號, 然後是溼度值再接著換行符號。這樣在Plotter就會出現2條線, 一條代表温度, 一條代表溼度。 因為BLE UART服務的寫法, 之前的文章已經看過, 我們現在只要克服讀取BME280這個問題就好了。之前在使用TMP102的時候, 提過可以使用別人現成寫好的驅動, 但為了更深入掌握TMP102, 之前的文章有去了解驅動的寫法, 而且我們自己也動手寫了一支適合自己的TMP102驅動。但這其實很花時間! 在這裡, 我們直接使用現成的BME280驅動。一樣去CircuitPython Librarys (adafruit cricuitpython bundle)找就有 (adafruit_bme280), 如下圖, 把這個目錄複製到開發板上的lib目錄下面: 我買的BME280, 如下圖, 只用到左邊4支接腳(VCC, GND, SCL, SDA)。 同樣接到nRF52840 Dongle的(VDD OUT, GND, 0.31, 0.29), 如下圖圈起處: 把下面程式存入至Dongle上面的code.py, Ctr-D, 同樣由終端機來觀察看看, 如果都成功取得數值, 那麼就成功連通BME280了。 import time import board import busio from adafruit_bme280 import basic as adafruit_bme2

超簡單做出低功耗藍牙温度計-Part 2(nRF52840 Dongle + TMP102 + CircuitPython)

圖片
同樣都使用nRF52840 Dongle, 上一次是用MicroPython, 這一次來用用CircuitPython。不管怎麼說, CircuitPython有Adafruit在支持, 文件和資源是更多的。而且, 目前CircuitPython支持的MCU就是以SAMD21/51和nRF系列為主。但要讓nRF52840 Dongle可以跑CircuitPython, 我們要先做些工作, 網路上有2個地方可以參考, 第1個是這篇文章,  Eric Pietrowicz 使用PCA10056開發板上的JLink除錯器來燒錄具UF2功能的Bootloader。 Bluetooth Low Energy with CircuitPython on a nRF52840 USB Dongle 第2個是這個影片, rdagger使用的是OpenOCD除錯器配合Raspberry Pi 3B來燒錄具UF2功能的Bootloader到nRF52840 Dongle。 當然, 直接使用JLink來燒錄也是可以。 具UF2功能的Bootloader是CircuitPython開發板的標配, 這個Bootloader讓開發板一插到電腦USB, 就會出現一個小硬碟, 讓你感覺這個開發板就是一個小磁碟機, 接下來我們要燒錄firmware, 就只要直接拖拉firmware檔案進去就可以了。 nRF52840 Dongle的UF2 Bootloader, 以及其CircuitPython firmware可以在以下連結找到 https://circuitpython.org/board/pca10059/ 依照前面提到的文章說明, 把nRF52840 Dongle的Bootloader燒成具UF2功能的, 之後插入這支Dongle到電腦的USB埠, 就會出現一個名為NRF52BOOT之類的小磁碟機, 然後將CircuitPython的.uf2 firmware拖拉進去, 就會打造出一個跑CircuitPython的開發板了。 這個過程需要一些工作, 如果覺得太累, 也可以買一個出廠就已經幫你燒好UF2 Bootloader的開發板,  Adafruit Feather nRF52840 Express 就是一個, S EEED STUDIO XIAO NRF52840 也是。 燒好Circu