pca10059 (nRF52840 Dongle) + circuitPython + micro SD card 讀取或寫入資料
有些時候,我們的IoT裝置並不連網,又或者我們就是想存些資料在micro SD卡上。在nRF52840 Dongle上,實現這個要求,搭配circuitPython的情況下,只要加裝一片SD Card模組和撰寫少許程式就可以完成。
我使用這個模組,這應該是市面上最常見也最便宜的micro SD card模組了,大約NT$40-50.
micro SD card module nRF52840 Dongle
------------------ ----------------
CS 1.15
MISO 0.02
MOSI 0.29
SCK 0.31
GND GND
VCC VDO OUT
Note: 注意哦!因為我選擇使用3V的電壓,這顆micro SD card模組的1117已經被我拔掉!另外還把其中2個接點接在一起。如下圖:
這樣的話,這個模組就可以使用和nRF52840 Dongle一樣的3V電壓,如果你不想移掉1117和改線路,那就要給這個模組VCC腳位5V的電,以nRF52840 Dongle來說,可以由VBUS這個腳位來供電(但前提是,nRF52840 Dongle必須插在USB插槽上)。circuitPython似乎預設是支持micro SD,所以code.py的內容:
'''
Mount a MicroSD Card, using SPI interface
SPI Pin mapping:
------------------------
GPIO 0.31, SCK
GPIO 0.29, MOSI
GPIO 0.02, MISO
GPIO 1.15, CS
------------------------
'''
import board
import busio
spi = busio.SPI(board.P0_31, board.P0_29, board.P0_02)
import os
import sdcardio
import storage
sd = sdcardio.SDCard(spi, board.P1_15)
vfs = storage.VfsFat(sd)
storage.mount(vfs, '/sd')
os.listdir('/sd')
# show data.txt contents
with open('/sd/data.txt','r') as f:
for line in f:
print(line.strip())
# umount
# storage.umount('/sd')
就可以將micro SD掛到/sd這個目錄下,並讀取其中的data.txt這個檔案的內容。我以Tonny這個環境來跑看看:是可以成功的讀取其中的資料。Tonny左下角這個小視窗(circuitPython設備)可以顯示開發板的儲存空間。在執行上列程式後,如下圖,重新整理circuitPython設備,可以發現這個小視窗多出了一個目錄/sd,其下還有一個檔案data.txt。
在這個檔案上點2下,會打開它,看到其內容,確實是如我們寫的程式所輸出的有2行資料。這一點是Tonny這個環境,我覺得很好用的功能!我們也可以在這裡直接編修這個data.txt檔案,編完是可以儲存的。(是真的存回micro SD裡面)
當然,我們寫的程式也可以對這個檔案做寫入的動作,應該就是:open('/sd/data.txt','r')改為open('/sd/data.txt','w')或者open('/sd/data.txt','a'),然後用write()之類的指令來操作即可。
留言