提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 大体的实现过程
  • 二、测试使用
  • 总结


前言

ESP8266 micropython固件中实现智能配网(smartconfig)功能

公司产品用到了ESP8266芯片。原先的代码在ubuntu中编译,再下载到ESP8266中,操作过于繁琐。所以我想到使用micropython,去采集传感器的数据,再通过MQTT协议与Android系统端的应用程序对接。


提示:以下是本篇文章正文内容,下面案例可供参考

一、大体的实现过程

MQTT协议的实现,需要用到外网,也就是需要ESP8266连接wifi。安信可提供了ESP-TOUCH和AirKiss微信配网两种智能配网方式,但是从micropython官方下载的固件源码中并没有smartconfig这个内置函数库,那么就需要自己来实现micropython固件中的SmartConfig智能配网功能啦。

我自己的理解哈,micropython1.17呢,就相当于linux内核源码包,那么smartconfig功能就相当于linux内核中的驱动,与硬件功能息息相关的,只有这个驱动实现了,那应用层程序才能控制硬件是吧。所以接下来是micropython的底层驱动的实现,最后通过应用层的程序调用这个驱动提供的接口,便可以达到控制硬件的目的了。

这里我用的是MicroPython 1.17版本的源码包,从micropython官网上面下载下来的,之前已经实现ESP32的SmartConfig功能,ESP32这里固件同样也是没有SmartConfig功能的。

micropython官网下载链接如下:

http://micropython.org/download/

第一步呢,在ubuntu 20系统里面编译esp-open-sdk,产生编译器。具体的esp-open-sdk下载编译过程可以参考其他博主大神们的博客。将编译器添加到ubuntu 20系统的/etc/profile配置文件中。这里不得不说一下,从git上面下载的esp-open-sdk缺少tarballs中的压缩包,真的是好坑。该目录下面这些压缩包需要补全了才可以。

编译过程中需要注意的是,micropython固件是使用python3编译的,那么ubuntu系统中需要使用python3进行esp-open-sdk的编译。这里我将ubuntu系统中,支持的python3软链接成python,这样可以避免编译过程中使用的是python2。

编译器编译出来之后,就可以编译micropython固件了,在port/esp8266中完成编译。

编译通过之后,添加modsmartconfig.c文件,修改Makefile和mpconfigport.h配置文件,将modsmartconfig.c添加进来。

mpconfigport.h中添加modsmartconfig.c文件:

Makefile中添加modsmartconfig.c:

Makefile中lib中加上libsmartconfig.a库的指定,esp-open-sdk的lib中有这个库,添加就可以了。

Makefile中lib库的指定如下:

esp-open-sdk lib库: 

再按照micropython规定的语法,实现自己需要使用的接口就可以了。

 通过make编译:

 编译成功之后会在esp8266/build-GENERIC生成一个fireware-combined.bin,这个就是micropython固件啦,接下来就可以将固件下载到esp8266芯片中。

 下载micropython固件到ESP8266的工具,通过串口下载,下载地址设置为0x00000。

二、测试使用

ESP8266 micropython层的smartconfig功能实现之后,micropython的应用代码中便可以直接调用接口函数了。测试代码如下:

def do_smartconfig():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    modsmartconfig.set_type(1)
    modsmartconfig.start()
    while not modsmartconfig.isdone():
        time.sleep_ms(1000)
    print("connect WiFi success!")
    ssid,password = modsmartconfig.getinfo()
    print(ssid)
    print(password)
    SaveWiFiInfo(ssid,password)

总结

最后,经过实验验证,可以通过微信关注安信可科技公众号或者通过ESP-TOUCH手机端软件配置网络。如果通过ESP-TOUCH配置网络或者微信公众号安信可科技配置WiFi,wifi的频道必须为2.4G。smartconfig智能配网的功能做出来了,也不难,就是这个过程有点繁琐,还有一些坑,写篇博客纪念一下这个过程,嘻嘻。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐