yi-mp
YI MicroPython 是一个MicroPython简化操作的模块,可以快速的连接WiFi以及开启WebREPL。
安装
如果你的ESP32安装了MicroPython的固件就可以使用,ESP8266我没有试过,手头没这个模块。
注意:使用upip命令需要联网,所以使用需要你的ESP32模块连上WiFi才能安装模块。
已经将yi-mp上传到了PyPI,我们连接上ESP32的串口进行安装:
import upip
upip.install('yi-mp')
这些库会自动安装到/lib下面,我们可以使用以下命令查看安装路径:
>>> upip.get_install_path()
'/lib'
我们可以使用os命令查看下载好的文件
import os
os.listdir('lib')
使用
导入emp_boot 设置启动模式
import emp_boot
设置boot.py的启动模式 这个操作会修改并覆盖boot.py文件
emp_boot.set_boot_mode()
如果你是开发只用就选开发者模式,方便调试和编码,如果已经是完善的程序可以长时间跑了,可以选WiFi模式节约资源。
选择之后模块会重启,然后打印一些系统信息:
Reboot
I (1182645) wifi: state: run -> init (0)
I (1182645) wifi: pm stop, total sleep time: 1081965484 us / 1180618709 us
I (1182645) wifi: new:<3,0>, old:<3,0>, ap:<255,255>, sta:<3,0>, prof:1
E (1182655) event: system_event_sta_disconnected_handle_default 294 esp_wifi_internal_reg_rxcb ret=0x3014
I (1182665) wifi: STA_DISCONNECTED, reason:8
I (1182665) wifi: flush txq
I (1182665) wifi: stop sw txq
I (1182675) wifi: lmac stop hw txq
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:5180
load:0x40078000,len:11388
ho 0 tail 12 room 4
load:0x40080400,len:7340
entry 0x40080704
I (426) psram: This chip is ESP32-D0WD
I (426) spiram: Found 64MBit SPI RAM device
I (426) spiram: SPI RAM mode: flash 80m sram 80m
I (429) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (436) cpu_start: Pro cpu up.
I (440) cpu_start: Application information:
I (445) cpu_start: Compile time: Mar 16 2020 04:36:04
I (451) cpu_start: ELF file SHA256: 0000000000000000...
I (457) cpu_start: ESP-IDF: v3.3
I (462) cpu_start: Starting app cpu, entry point is 0x40083dc0
I (453) cpu_start: App cpu up.
I (946) spiram: SPI SRAM memory test OK
I (947) heap_init: Initializing. RAM available for dynamic allocation:
I (947) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (953) heap_init: At 3FFBA658 len 000259A8 (150 KiB): DRAM
I (959) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (966) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (972) heap_init: At 4009743C len 00008BC4 (34 KiB): IRAM
I (978) cpu_start: Pro cpu start user code
I (100) cpu_start: Chip Revision: 1
I (101) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (880) modsocket: Initializing
---------------------------
- Python YI MicroPython -
- version 1.0.5 -
- by YI -
---------------------------
I (960) wifi: wifi driver task: 3ffc5164, prio:23, stack:3584, core=0
I (2026) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (2036) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (2076) wifi: wifi firmware version: aeed694
I (2076) wifi: config NVS flash: enabled
I (2076) wifi: config nano formating: disabled
I (2076) wifi: Init dynamic tx buffer num: 32
I (2076) wifi: Init data frame dynamic rx buffer num: 32
I (2086) wifi: Init management frame dynamic rx buffer num: 32
I (2086) wifi: Init management short buffer num: 32
I (2096) wifi: Init static rx buffer size: 1600
I (2096) wifi: Init static rx buffer num: 10
I (2106) wifi: Init dynamic rx buffer num: 32
I (2186) phy: phy_version: 4102, 2fa7a43, Jul 15 2019, 13:06:06, 0, 0
I (2186) wifi: mode : sta (ac:67:b2:24:18:dc)
I (2186) wifi: STA_START
创建 config/wifi_cfg.json 配置
I (4606) network: event 1
[0] XXXXX -53 dBm
[1] XXXXX-Client -54 dBm
[2] XXXXX_Test -54 dBm
[3] XXXXX -57 dBm
[4] XXXXX_Test -57 dBm
[5] DaChuang -60 dBm
[6] XXXXX-Client -61 dBm
没有记录!
正在扫描网络...
I (6886) network: event 1
[0] XXXXX -53 dBm
[1] XXXXX-Client -54 dBm
[2] XXXXX_Test -54 dBm
[3] XXXXX -57 dBm
[4] XXXXX_Test -57 dBm
[5] DaChuang -60 dBm
[6] XXXXX-Client -61 dBm
您想访问哪一个? [0-6]
选择wifi,输入密码,连上之后就会打印IP、网关等信息。
WebREPL和串口REPL是一样的,可以到下面这个网址链接操作,他可以通过网页数据命令,让我们摆脱对数据线的依赖。
http://micropython.org/webrepl/
WebREPL的默认密码是123456,你也可以使用一下命令进行重置:
import emp_boot
emp_boot.set_web_repl()
可以使用如下代码查看文件的内容:
print(open('/config/webrepl.pass').read())
让我们摆脱数据线吧,啦啦啦~~~