MicroPython-On-ESP8266——自动连接WIFI与开启webrepl
1. 启动即连接wifi
esp8266芯片的核心作为即为作为网络连接的桥梁,前面咱们也学习了使用network
库将开发板当作热点或者连接到现有网络中。后面需要使用urequests模块作网络请求什么的,都是需要先连接到网络才行。
1.1. 启动方法
micropython固件包刷到开发板上后,里面是有一个boot.py
文件的,而且这个文件不能删除。
开发板上电启动后,会先执行boot.py
中的代码,然后才继续执行main.py
中代码。后期学习过程中,主要的业务逻辑都会写在main文件中,那咱们就可以把连接wifi代码段放到boot文件中,这样就可以专心调度业务功能了。
之前学习网络模块时,有学习到连接现有wifi的功能
def do_connect():
sta_if = network.WLAN(network.STA_IF)
sta_if.active(False)
if not sta_if.isconnected():
print('connecting to network...')
sta_if.active(True)
sta_if.connect('essid', 'password') # 修改为自己wifi密码
while not sta_if.isconnected():
pass
print('network config:', sta_if.ifconfig())
那只要把这段代码放到boot.py
中并启动do_connect函数即可了。
1.2. 配置boot.py文件
查后面的webrepl资料时,找到一个别人配置的boot.py文件,封装得比较好,拿来学习学习。
原地址:https://www.jianshu.com/p/c2ddd4fd05be
def do_connect():
import json
import network
# 尝试读取配置文件wifi_confi.json,这里我们以json的方式来存储WIFI配置
# wifi_config.json在根目录下
# 若不是初次运行,则将文件中的内容读取并加载到字典变量 config
try:
with open('wifi_config.json','r') as f:
config = json.loads(f.read())
# 若初次运行,则将进入excpet,执行配置文件的创建
except:
essid = input('wifi name:') # 输入essid
password = input('wifi passwrod:') # 输入password
config = dict(essid=essid, password=password) # 创建字典
with open('wifi_config.json','w') as f:
f.write(json.dumps(config)) # 将字典序列化为json字符串,存入wifi_config.json
#以下为正常的WIFI连接流程
wifi = network.WLAN(network.STA_IF)
if not wifi.isconnected():
print('connecting to network...')
wifi.active(True)
wifi.connect(config['essid'], config['password'])
import time
time.sleep(5) #一般睡个5-10秒,应该绰绰有余
if not wifi.isconnected():
wifi.active(False) #关掉连接,免得repl死循环输出
print('wifi connection error, please reconnect')
import os
# 连续输错essid和password会导致wifi_config.json不存在
try:
os.remove('wifi_config.json') # 删除配置文件
except:
pass
do_connect() # 重新连接
else:
print('network config:', wifi.ifconfig())
if __name__ == '__main__':
do_connect()
把wifi和密码放到了外部json配置文件中,首次使用需要在REPL中输入,后面有了配置文件就会自己连接到网络了。
2. 使用webrepl
前面学习过程中,调试和上传程序代码这些的都是在REPL中进行的,实际上micropython还提供了一种webrepl调试方法,在开发板连接到网络后,再可开启该功能,就可以通过websocket方式与开发板交互了。这样省去每次都还要连接串口USB线来调试的麻烦。
2.1. 初始化webrepl
要开启webrepl功能,首先还是得连线后在REPL下初始化该模块
import webrepl_set
在REPL中执行这条语句,系统自会提示安装webrepl服务,需要配置一个网络连接的密码,自己记得就行了。
2.2. 启动webrepl服务
初始化好以后就可以启动webrepl了,咱们还是在REPL中继续执行
import webrepl
webrepl.start()
webrepl.start()
方法在启动服务时,需要这里可以在参数里指定port端口(默认是8266)和password密码的。
2.3. 连接到webrepl
服务启来了,那咱们就可以使用websocket来连接和交互了,这里使用官方部署的在线环境客户端就行。
进入地址: http://micropython.org/webrepl
进入后,填写正确的地址和端口(刚才已经把port改为了8888,需要对应),connect后输入密码就会提示连接成功了。
当然了,需要本机与开发板连接到了同一个wifi网络才可以正常访问得到。
因为咱们在连接wifi网络时使用的是STA_IF模式,所以这里访问webrepl时需要用路由给分配的内网ip,192.168.4.1这个就不能用来连接了。
2.3. 设置开发板启动即开启webrepl
前面已经在boot.py
启动文件中配置好了开发板启动即连接到wifi网络,那要再开启webrepl也就容易了,把启动服务指令加到连接网络后面就行
if __name__ == '__main__':
do_connect()
import webrepl
webrepl.start()