MicroPython入坑记2: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时间,暂时还没设置时区的地……先这样吧。

https://www.cnblogs.com/yafengabc/p/8681380.html

坐沙发

发表评论

你的邮件地址不会公开


*