在 nRF52832 - PCA10040 - S132 DK開發板上玩 micropython 1.9.4

動機:如何在 nRF52832 - PCA10040 S132 DK開發板上玩 micropython 1.9.4 呢?!

準備環境
1.MacBook Pro/Windows10筆電
2.安裝妥 Oracle VM VirtualBox 5.2.12 + Ubuntu 18.04 LTS 虛擬機
3.nRF52832 - S132 DK開發板(需連接USB數據線)

實作步驟
1.先下載 micropython 1.9.4 (如~參攷1.),指令如下
$ git clone https://github.com/micropython/micropython.git
如下圖

2.再依據 上述1. 源碼直接 compile & make,指令如下
$ cd micropython
$ git submodule update --init
$ cd ports/unix
$ make axtls
$ make

3.待完成後,測試 micropython,指令如下
$ ./micropython
>>> list(5 * x + y for x in range(10) for y in [4, 2, 1])
如下圖
按下 CTRL-D 離開shell...

4.因為 micropython 源碼(ports/nrf)內並無 nRF52832 所需的程式,另下載 (如~參攷2.),指令如下
$ cd /tmp
$ git clone https://github.com/tralamazza/micropython.git

再複製至 micropython 資料夾內,指令如下
$ cp -R /tmp/micropython/ports/nrf/* nrf/

5.再依據 https://github.com/tralamazza/micropython/tree/master/ports/nrfREADME.md 說明執行,如下
$ make V=1 -C mpy-cross
$ cd ports/nrf
$ make V=1

此時,出現一堆 fatal error 如下圖

經查係 lib 資料夾內缺 nrfx 所致,另外下載指令如下
$ cd ../../lib
$ git clone https://github.com/NordicSemiconductor/nrfx.git

再次執行如下
$ cd ports/nrf
make V=1

此時,發現 error 如下圖

修改如下
$ nano ../../lib/utils/pyexec.h
於 第53行 新增程式如下
mp_obj_t pyb_set_repl_info(mp_obj_t o_value);

再次執行如下
make V=1

終於make成功沒有錯誤,如下圖

燒錄至 nRF52832 DK板,指令如下
$ make flash

如下圖

6.接下來,準備 Bluetooth,指令如下
./drivers/bluetooth/download_ble_stack.sh

修改設定,指令如下
$ nano bluetooth_conf.h
修改其中的內容(第17、18行),如下(紅色字所註)
#elif (BLUETOOTH_SD == 132)

#define MICROPY_PY_BLE                  (1)
#define MICROPY_PY_BLE_NUS              (1)
#define BLUETOOTH_WEBBLUETOOTH_REPL     (1)
#define MICROPY_PY_UBLUEPY              (1)
#define MICROPY_PY_UBLUEPY_PERIPHERAL   (1)
#define MICROPY_PY_UBLUEPY_CENTRAL      (1)

執行compile及flash,指令如下
$ make BOARD=pca10040 SD=s132 sd

如下圖

7.測試 Bluetooth LE REPL
先安裝 NUS Console for Linux,指令如下
$ git clone https://github.com/tralamazza/nus_console.git
$ cd nus_console/
$ sudo npm install

connect to the nordic UART service (6e400001b5a3f393e0a9e50e24dcca9e),指令如下
$ sudo node index.js

如下圖

顯示輔助說明,如下圖

點亮 nRF52832 DK板LED4,如下圖

顯示 BLE 資訊,如下圖

後記:查 ports/nrf/boards/pca10040/mpconfigboard.mk 檔案內容,發現其 softdevice 3.0 (SOFTDEV_VERSION = 3.0.0),惟查官網 (如~參攷3.) 目前SD最新版為 6.0,希望有機會能夠昇級之!!


參攷
1.micropython/micropython, https://github.com/micropython/micropython
2.tralamazza/micropython, https://github.com/tralamazza/micropython
3.nRF52832 SoftDevices, http://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF52832#Downloads

留言