MicroPython-On-ESP8266——自动连接WIFI与开启webrepl

22 篇文章 1 订阅
19 篇文章 2 订阅

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值