MicroPython入坑記(二)刷固件(ESP8266 ESP32)


先來個刷寫過程:

其實各種刷ESP8266/ESP32的軟件都可以搞(比如刷NodeMCU的軟件),不過我這還是出問題了:刷完后無限輸出亂碼。然后參照Micropython官方的教程,用esptool先清除所有的FLASH,然后重新刷入,正常運行:

pip install esptool 安裝esptool(當然,電腦上要先裝好python)

esptool.py --port /dev/ttyUSB0 erase_flash 擦除所有的flash,如果是windows系統,則改為具體的COM口,比如我的電腦是COM4:
esptool.py --port COM4 erase_flash

刷入固件這個命令比較長,可以不熟悉命令行的可以用其他GUI軟件代替:
esptool.py --port COM4 --baud 460800 write_flash --flash_size=detect 0 esp8266.bin(這個改為具體固件文件名)
刷完后,用putty連接板子會出現以下界面(如果沒有顯示就先按一下RST鍵):
 

現在就可以執行Python代碼了,支持命令補全哦
列出所有的模塊:


繼續探索:
在ESP8266上,跟板子相關的代碼主要在esp machine兩個模塊上:

>>> import esp
>>> import machine
>>> dir(esp)
['__class__', '__name__', 'SLEEP_LIGHT', 'SLEEP_MODEM', 'SLEEP_NONE', 'apa102_write', 'check_fw', 'deepsleep', 'dht_readinto', 'esf_free_bufs', 'flash_erase', 'flash_id', 'flash_read', 'flash_size', 'flash_user_start', 'flash_write', 'free', 'freemem', 'info', 'malloc', 'meminfo', 'neopixel_write', 'osdebug', 'set_native_code_location', 'sleep_type']
>>> dir(machine)
['__class__', '__name__', 'ADC', 'DEEPSLEEP', 'DEEPSLEEP_RESET', 'HARD_RESET', 'I2C', 'PWM', 'PWRON_RESET', 'Pin', 'RTC', 'SOFT_RESET', 'SPI', 'Signal', 'Timer', 'UART', 'WDT', 'WDT_RESET', 'deepsleep', 'disable_irq', 'enable_irq', 'freq', 'idle', 'mem16', 'mem32', 'mem8', 'reset', 'reset_cause', 'sleep', 'time_pulse_us', 'unique_id']

從上邊的輸出可以看到,esp主要是顯示一些基礎的指令,比如深度休眠,申請內存之類,machine主要是操作IO之類

先試着點一下LED燈(我這個板子自帶了一個LED在GPIO2)

>>> from machine import Pin
>>> led=Pin(2,Pin.OUT)
>>> led.on()
>>> led.off()

是不是很神奇?哈哈

然后連接網絡:

 

>>> import network   # 導入network包
>>> wlan=network.WLAN()  #生成wlan對象
>>> wlan.active(1)  #開啟wlan
mode : sta(5c:cf:7f:0e:25:19) + softAP(5e:cf:7f:0e:25:19)
#5 ets_task(4020ed90, 28, 3fff9fa0, 10)
add if0
>>> wlan.scan() #掃描wlan信號

>>> wlan.connect('OpenWrt','xde12345') #連接wlan

lascandone
state: 0 -> 2 (b0) state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 2
cnt

connected with OpenWrt, channel 11
dhcp client start...
ip:192.168.43.203,mask:255.255.255.0,gw:192.168.43.1

可以看到,已經連接成功了,這里有個很酷的功能,就是esp8266的MicroPython固件是可以自動保存網絡配置(esp32的暫時還不行)的,重新上電就能連接上次連接的無線網絡(酷)

能聯網了,干點啥事呢^^,發現內置個ntptime模塊,玩玩先:

>>> import time
>>> time.localtime()
(2000, 1, 1, 0, 0, 18, 5, 1)

現在時間是2000年1月1號
>>> import ntptime
>>> ntptime.time()
575780696

獲取了個時間戳
>>> ntptime.settime()
(2018, 3, 31, 3, 5, 7, 5, 90)

設置時間
>>> time.localtime()
(2018, 3, 31, 3, 5, 12, 5, 90)
>>>

等等,這世間不對吧,估計是UTC時間,暫時還沒設置時區的地……先這樣吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM