【ESP8266】基于ESP8266的MicroPython入门笔记

概述

本文是ESP8266运行MicroPython入门笔记,记录自己在探索MicroPython所见所思的同时,也顺便简单评估该开发方式的优缺点。

开发环境

  • ESP8266开发板: ESP-LAUNCHER(4 MB Flash)
  • 操作系统:Win10 64位

关于MicroPython

MicroPython是一个基于Python 3的、精简和高效的编程语言,其包括Python标准库的一个小子集,并针对微控制器及受限的环境优化以可以运行。

简单评价

根据官方的快速参考的描述,MicroPython已经实现了ESP8266基本硬件资源接口,包括GPIO、PWM、ADC、软SPI和硬SPI、IIC、睡眠模式(Deep-sleep mode)、OneWire等,带有APA102、DHT和DS18B20库。所以使用MicroPython可以快速实现产品原型,比如智能插座,温湿度检测、智能RGB调光器等。

另外可以通过上传py文件运行程序,调试和修改代码不需要像SDK开发一样重新烧录,当然计算速度肯定是比原生SDK 开发慢一点的,对开发者来说只要够用就行。比较遗憾的是暂时未看到对SmartConfig(快速连接)、硬件IR(红外)、Sniffer等的支持。

在ESP8266上运行MicroPython

下载固件

首先到MicroPython的官网下载基于ESP8266的MicroPython固件。目前最新的稳定版本是「esp8266-20161110-v1.8.6.bin」。

该固件大小大约是553KB,对4MB Flash ESP8266来说绰绰有余,并且剩余96KB内存可用(一部分用于系统)。

烧写固件

把该固件烧写到0x0位置即可。

烧写配置参考:
【ESP8266】基于ESP8266的MicroPython入门笔记_第1张图片

上电打印

打开常用的串口工具,设置波特率为115200,打开串口并给ESP8266重启上电,打印如下字符说明烧写固件成功:

MicroPython v1.8.6-7-gefd0927 on 2016-11-10; ESP module with ESP8266
Type "help()" for more information.
>>> 

上电打印参考:
【ESP8266】基于ESP8266的MicroPython入门笔记_第2张图片

当然,使用这个串口工具不太方便调试,我们可以使用PuTTY工具。切换到PuTTY时记得关闭之前的串口。
【ESP8266】基于ESP8266的MicroPython入门笔记_第3张图片

PuTTY上电打印
【ESP8266】基于ESP8266的MicroPython入门笔记_第4张图片

搭建完成

自此,基本的ESP8266的MicroPython环境搭建完成。

连接WiFi

在PuTTY会话窗口中输入

>>>help()

打印的信息会告诉你如何连接WiFi:

import network
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.scan()                             # Scan for available access points
sta_if.connect("", "") # Connect to an AP
sta_if.isconnected()                      # Check for successful connection

使用WebREPL上传文件

webrepl客户端

webrepl是MicroPython官方提供的文件管理工具。 并且有一个webrepl客户端工具, 使用它可以通过浏览器来访ESP8266。

首先我们在ESP8266的会话窗口输入import webrepl_setup以配置webrepl:

>>>import webrepl_setup

接下来按照返回的提示信息输入即可,密码至少要3位。之后输入下面命令,启动WebREPL。

>>>import webrepl
>>>webrepl.start()

从Github下载WebREPL客户端打开或者访问MicroPython官网提供的在线客户端(http://micropython.org/webrepl/),以准备上传和下载文件。

ESP8266连接好WiFi后,输入sta_if.ifconfig()查看连接信息,返回的元组第一个IP就是无线路由器分配给ESP8266的IP。

如果你的电脑和ESP8266在同一个局域网,修改WebREPL要连接的地址为ESP8266的IP,点击「Connect」,返回「Welcome to MicroPython!」说明连接成功,根据提示输入密码(密码默认不显示)。回车后显示「WebREPL connected」表示登录成功。

【ESP8266】基于ESP8266的MicroPython入门笔记_第5张图片

之后就可以用这个客户端上传下载文件了。

【ESP8266】基于ESP8266的MicroPython入门笔记_第6张图片

设置上电自动连接WiFi

MicroPython初始化后都会自动执行main.py文件,所以我们只需要设置该文件即可上电自动连接WiFi。打开自己常用的编辑器,输入下面代码,并保存为main.py文件:

# main.py
import network
import webrepl

SSID = "SSID"
PASSWORD = "password"

def do_connect():
    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(SSID, PASSWORD)
        
    start = utime.time()
    while not wlan.isconnected():
        utime.sleep(1)
        if utime.time()-start > 5:
            print("connect timeout!")
            break
            
    if wlan.isconnected():
        print('network config:', wlan.ifconfig())

do_connect()

之后通过WebREPL客户端上传该文件,完成之后,尝试给ESP8266重启一下,看看ESP8266的会话窗口是不是打印了user init!,如果成功打印,说明上电后确实执行上面的代码了。另外ESP8266重启后,WebREPL客户端需要重新连接才可以操作。

结语

基于ESP8266的MicroPython入门笔记就记录到这里了,本文简单介绍了固件的下载和烧写,以及使用的方法,最后还介绍了如何上传代码到ESP8266,并且配置上电自动连接WiFi。

后面有时间我会再写一篇基于ESP8266的MicroPython的MQTT客户端教程。实际上在Python用MQTT比在C语言的方便多了,比较困难的是如何配置一个可用的环境。

2017-05-11更新:基于ESP8266的MicroPython的MQTT客户端教程已经写完,链接:http://blog.csdn.net/yannanxiu/article/details/71641738

小技巧

查看主目录下的文件列表

可以使用os.listdir()命令查看主目录下的文件,然后可以在webrepl下下载。

>>> import os
>>> os.listdir()
['boot.py', 'webrepl_cfg.py', 'main.py']

查看内存资源

由于单片机开发要时时刻刻留意内存资源,下面是查看内存资源的示例:

>>> import micropython
>>> micropython.mem_info()
stack: 2144 out of 8192
GC: total: 36288, used: 9488, free: 26800
 No. of 1-blocks: 60, 2-blocks: 18, max blk sz: 263, max free sz: 1287

2018年1月22日更新:有关「启动webrepl不了的问题」,试下这个工具烧写,参见评论区8楼。


【ESP8266】基于ESP8266的MicroPython入门笔记_第7张图片

你可能感兴趣的:(ESP8266,Python)