【ESP8266】基于ESP8266的MicroPython入门笔记
2017-01-01 16:36
519 查看
概述
本文是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. >>>
上电打印参考:
当然,使用这个串口工具不太方便调试,我们可以使用PuTTY工具。切换到PuTTY时记得关闭之前的串口。
PuTTY上电打印
搭建完成
自此,基本的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("<AP_name>", "<password>") # 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」表示登录成功。
之后就可以用这个客户端上传下载文件了。
设置上电自动连接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不了的问题」,试下这个工具烧写,参见评论区。
相关文章推荐
- 【ESP8266】基于ESP8266的MicroPython连接MQTT服务器
- 基于MicoPython的ESP8266开发笔记--1.在ESP8266上运行MicoPython
- 【ESP8266】MicroPython的快速入门教程
- ESP8266基于microPython的OLED(SSD1306)驱动程序
- 基于MicoPython的ESP8266开发笔记--2.如何下载我们的代码到ESP8266中
- 用python做网页抓取与解析入门笔记
- [Python入门及进阶笔记]Python-decorator装饰器小结
- [Python入门及进阶笔记]Python-基础-文件处理小结
- Python入门练习(一):基于全切分,一元语法模型的汉语分词
- 基于ARM的SOC设计入门(学习笔记)
- [Python入门及进阶笔记]Python-基础-列表及列表解析小结
- [Python入门及进阶笔记00]-写在前面(目录/书籍/学习路线/其他)
- Python入门笔记(二)
- [Python入门及进阶笔记00]-写在前面(目录/书籍/学习路线/其他)
- 基于Python的监控工具Graphite安装笔记
- 滴水穿石--python 学习笔记--入门 (1)
- [Python入门及进阶笔记]Python-decorator装饰器小结
- [Python入门及进阶笔记]Python-基础-字符串小结
- Python入门笔记(一)
- Python入门笔记