分享

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

 金刚光 2020-01-31

概述

本文是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位置即可。

烧写配置参考:

上电打印

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

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

  • 2

  • 3

上电打印参考:

当然,使用这个串口工具不太方便调试,我们可以使用PuTTY工具。切换到PuTTY时记得关闭之前的串口。

PuTTY上电打印

搭建完成

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

连接WiFi

在PuTTY会话窗口中输入

>>>help()
  • 1

打印的信息会告诉你如何连接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("<AP_name>", "<password>") # Connect to an AP sta_if.isconnected() # Check for successful connection
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

使用WebREPL上传文件

webrepl客户端

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

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

>>>import webrepl_setup
  • 1

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

>>>import webrepl >>>webrepl.start()
  • 1

  • 2

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

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

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

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

设置上电自动连接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()
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

之后通过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']
  • 1

  • 2

  • 3

查看内存资源

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

>>> 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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多