2018年9月16日 星期日

[Python] OSX esptool.py 燒錄MicroPython 到 Node MCU(CH340 USB to UART Chip)問題

在燒錄MicroPython到Node MCU後,使用adafruit ampy出問題

could not enter raw repl
















網路上說加-d 2可解

ampy --port /dev/cu.wchusebserial1410 -d 2 ls

結果是卡住,沒有回應...Orz,該不是會沒燒好吧....


最後想到過去在工作中遇到CH3400 在linux上baud rate 250000 無法正確工作的情況,

仔細看了一下,它燒錄baud rate用460800~降速到115200看看,皆大歡喜。

esptool.py --port /dev/cu.wchusbserial1410 --baud 115200 write_flash --flash_size=detect 0 ~/Downloads/esp8266-20180511-v1.9.4.bin

目前試了2款Mac book Pro , MBP 2015用460800可以燒錄,不會有錯誤訊息,但有機會不成功,我就是踩到這個坑。

MBP 2017則會直接無法燒錄,改成115200後正常






























參考資料
CH340 OSX flash error with speed greater 115200https://github.com/espressif/esptool/issues/145

[ESP8266] 燒錄MicroPython到Node MCU (OS X)

MicroPython 是一種精簡且高效率實作的 Python 3 程式語言,其中含有少量 Python 標準函式庫子集,針對在微控制器和受限環境中執行進行最佳化。

執行MicroPython需要的硬體如下:

至少

256K Flash Rom
16K RAM
時脈80MHz
------------------------------------------------------------------------------------


要在ESP8266上運行MicroPython,需要至少1MB的Flash Rom 版本,

(MicroPython Firmware大約佔去512K) ,而Node MCU選用的是ESP12E,

有4MB Flash Rom,十分足夠。


1.首先要下載MicroPython Firmware。

http://micropython.org/download#esp8266

到此連結選擇最新的穩定版本,撰寫本文時最新版本為esp8266-20180511-v1.9.4.bin



2.燒錄工具 (電腦需要有python環境以及pip工具), 建議用python3

pip3 install esptool

3.檔案工具Adafruit MicroPython Tool  (AMPY)

pip3 install adafruit-ampy

4.將Node MCU連接到電腦 ,確認是否可以看到Node MCU的Serial Port

ls /dev/cu.*









若能夠看到/dev/cu.wchusbserial1410(或1420) 代表能夠捉到Node MCU的Serial Port (驅動成功安裝) , 如果沒有看到

需要確定您使用的Node MCU是使用那一個版本的USB to TTL晶片

若是CH340
安裝以下驅動(安裝完畢後必須重開機,並且在隱私設定中允許)

http://www.wch.cn/download/CH341SER_MAC_ZIP.html

















若是CP2102 則安裝以下驅動,並允許隱私權中的設定,然候重開機
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers


5.抺除Node MCU中原廠的Firmware (注意 port可能和我不同)


CH340
esptool.py --port /dev/cu.wchusbserial1410 erase_flash














CP2102


6.寫入MicroPython Firmware

CP2102
esptool.py --port /dev/cu.SLAB_USBtoUART --baud 460800 write_flash --flash_size=detect 0 ~/Downloads/esp8266-20180511-v1.9.4.bin


CH340
esptool.py --port /dev/cu.wchusbserial1410 --baud 115200 write_flash --flash_size=detect 0 ~/Downloads/esp8266-20180511-v1.9.4.bin




7.透過ampy 查詢一下Node MCU中有什麼東要(測試燒錄是否成功)

CH340

ampy --port /dev/cu.wchusbserial1410 ls

出現錯誤 colud not entr raw repl

俺試過加入Delay 2秒也沒用,最後發現跟本是沒有燒好(MBP 2015不會跳錯,但不一定燒錄成功,而MBP 2017則是無法燒錄),在CH340的USB  To TTL晶片記得要在燒錄時把baud 改成 115200.






























CP2102
ampy --port /dev/cu.SLAB_USBtoUART  ls











8.到此燒錄MicroPython已完成,接下來寫一個main.py

import time
from machine import Pin

led = Pin(2, Pin.OUT)
led.value(1)

while True:
    led.value(0)
    time.sleep_ms(500)
    led.value(1)
    time.sleep_ms(500)

9.將main.py丟到Node MCU

CP2102
ampy --port /dev/cu.SLAB_USBtoUART  ls
CH340
ampy --port /dev/cu.wchusbserial1410 put  main.py
接下來按下RST鍵,藍色LED就會以0.5秒間隔閃爍。


































參考資料:

Malo老師的GitHub

CH340 OSX flash error with speed greater 115200


2018年9月14日 星期五

[Python] [SSL: TLSV1_ALERT_PROTOCOL_VERSION]


在OS X Python 2.7.14使用pip套件安裝出現以下錯誤

There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661) - skipping








在網路上找到一個解法

curl https://bootstrap.pypa.io/get-pip.py | python



















之後pip就正常了


參考網頁:

Problem Confirming the SSL Certificate - OSXhttps://github.com/pypa/pip/issues/5236

[Arduino]外部中斷

過去我們在偵測button有沒有按下時,我們會在loop() 中不斷的去檢查button狀態,

但這樣其實效能不佳,我們可以透過中斷,來處理Button按下的問題。

但記住一件事,傳統的button會有彈跳現像,這個我們之後再談。