iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0
自我挑戰組

Micropython x ESP H/W 之三十個錦囊妙計系列 第 26

[錦囊-貳拾陸] 好用的萬用百寶袋

筆者發現有些好用的知識或技能無法寫成一篇文章, 所以只好寫一篇萬用百寶袋以囊括, 各種主題如下:

  • error code/ debug mode
  • 修改自帶AP的ESSID及channel
  • 掃描無線網路後回傳的列表格式說明
  • MicroPython Firmware OTA Update 實驗
  • 要如何把 py 檔案編譯成mpy文件 (mpy-cross)

[正文開始]

  1. Enable webrepl server 後出現以下錯誤訊息
WebREPL daemon started on ws://192.168.4.1:8266
Started webrepl in normal mode
OSError: [Errno 2] ENOENT

[秘訣] MicroPython 會在重新開啟後自動讀取 main.py 檔案, 目前還沒有上傳這個檔案,所以會出現這個錯誤資訊, 請忽略即可

  1. 開啟自帶的除錯模式 (Debug Mode)
import esp
esp.osdebug(None)

[秘訣]
(1) MicroPython 中提供自帶的debug 模式, 只要在開啟後就會顯示更多執行細節在螢幕上
https://ithelp.ithome.com.tw/upload/images/20181109/20103824TsQ1n4R6Pp.png
(2) 請將上面的程式碼加在main.py 最上面或boot.py 裡頭
(3) 關閉的話, 就直接在esp.osdebug(None) 前面加一個**#**字號即可

  1. 修改自帶AP的ESSID名稱, 預設為Micropython-xxxx
    (1) 啟用自帶AP並查看目前的ESSID 名稱
import network
nic = network.WLAN(network.AP_IF)
nic.active(True)
nic.config('essid')
'MicroPython-262ca5'
* 最後一排是AP名稱, - 後面的位置是依照MAC address而定, 每個都不同

(2) 修改ESSID 為 m26 並指定channel 為6

nic.config(essid=**m26**, channel=**6**)
#6 ets_task(4020f4ac 29, 3fff9640, 10)

[秘訣] 當輸入新的設定後, MicroPython 將自動重啟自帶的AP 並使用新的ESSID跟channel
(3) 查看修改後的ESSID名稱及channel

nic.config('essid')
'm26'
nic.config('channel')
6
  1. 使用nic.scan() 會回傳類似下面的字串.
>>> nic.scan()
(b'AC66', b'0Z:Q\xb4H', 6, -24, 3, 0)
  • SSID (無線網路名稱): b'AC66'
  • BSSID (AP的MAC address): b'0Z:Q\xb4H'
  • channel (頻道名稱): 6
  • RSSI (信號強度): -24
  • 驗證模式: 3
  • 是否隱藏: 0
    [秘訣]
    (1) 驗證模式 指的就是Wi-Fi的連線安全級別, MicroPython 支持以下級別:
    0: Open None
    1: WEP
    2: WPA-PSK
    3: WPA2-PSK
    4: WPA/WPA2-PSK
    (2) 部分進階玩家不喜歡將自己的SSID 廣播出來, 主要是為了安全或不想被別人虧嗅自己的AP, MicroPython 也支持對未廣播的ESSID 進行連線
    (3) 隱藏: 0: visible 1: hidden
  1. 如何使用OTA做MicroPython firmware update
    (1) 下載MicroPython OTA image
wget http://micropython.org/resources/firmware/esp8266-ota-20180718-v1.9.4-272-g46091b8a.bin

https://ithelp.ithome.com.tw/upload/images/20181108/201038242vTDsCfQht.png
(2) 下載OTA更新需要使用的 ota-client toolchain

git clone https://github.com/pfalcon/yaota8266.git

[秘訣] 筆者在嘗試OTA更新後發現, 不管哪種作法都非常複雜且不穩定, 不建議實作, 但如果喜愛挑戰的朋友還是可以參考以下文章進行實作:
MicroPython OTA update Part 1
MicroPython OTA update Part 2

  1. 要如何把 py 檔案編譯成mpy 文件
    (1) 下載MicroPython 原始碼
    (2) 切換到/opt/micropython/mpy-cross 目錄
    [秘訣] 筆者將micropython的原始碼放在/opt 目錄下
    (3) 將自定義的micropython python file 複製到這個目錄, 筆者是複製 uping.py
    (4) 編譯mpy 文件
./mpy-cross uping.py

(5) 編譯好後就會在目錄上看到 uping.mpy 文件
https://ithelp.ithome.com.tw/upload/images/20181109/20103824F6kpDEA2vf.png

[秘訣]
(1) 當把自定義的程式放入modules目錄後, 在編譯過程中就會自動生成mpy文件, 不過mpy文件並不是變小, 就只是被加密過的文件而已.
https://ithelp.ithome.com.tw/upload/images/20181109/20103824M3L1tYZKVa.png
(2) mpy-cross 需要原本開發環境中的xtensi-lx106-elf-xx 編譯器, 如果發現找不到命令的話, 請記得要把下面的路徑加入PATH中

/opt/micropython/esp-open-sdk/xtensa-lx106-elf/bin
* 筆者將micropython放在/opt目錄中

上一篇
[錦囊-貳拾伍] 可以用ESP8266 x MicroPython玩chatbot 嗎?
下一篇
[錦囊-貳拾柒] MicroPython webhook 拆雷之旅 + Line notify 實作
系列文
Micropython x ESP H/W 之三十個錦囊妙計31

尚未有邦友留言

立即登入留言