pca10059 (nRF52840 Dongle) + circuitPython + micro SD card 讀取或寫入資料

 有些時候,我們的IoT裝置並不連網,又或者我們就是想存些資料在micro SD卡上。在nRF52840 Dongle上,實現這個要求,搭配circuitPython的情況下,只要加裝一片SD Card模組和撰寫少許程式就可以完成。



我使用這個模組,這應該是市面上最常見也最便宜的micro SD card模組了,大約NT$40-50. 



nRF52840 Dongle就長得如上圖,硬體接線的話要使用到總共6條線,我選擇使用Dongle(以上圖來看)下方的6個接腳(由左到右分別是:1.15, 0.02, 0.29, 0.31, GND, VDO OUT):

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()之類的指令來操作即可。


留言

這個網誌中的熱門文章

D-BUS學習筆記

關於藍牙裝置找尋(inquiry, scan)兩三事

Cisco Switch學習筆記: EtherChannel