版权声明:本文为博主徐松亮的原创作品,未经允许不得转载,多谢支持!QQ:5387603
推荐点击此链接:欢迎进入徐松亮博客一站式导航搜索(随时更新)
目录
一,前言
- 本文基本可以说是micropython官网的翻译版。为什么还要写呢?
- 我发现很多,甚至大多数的开发人员都没有去官网耐心读取资料的习惯,尤其是英文的文档。
- 记录一下当前micropython库都有哪些现成的功能让我们使用。
- 你可以不用一项技术,但是还是要了解这项技术的优势,知己知彼才能百战百胜!
- 这点很重要,当前开发芯片的方案很多,要根据项目合理选择,这就是方向,方向的选择永远比努力更重要。比如说有个项目,全部需求micropython都有现成的库应用,只需几分钟就搞定的事情,但是你非要用C语言,然后加班加点的读芯片手册,从底层自己写,虽然很努力,发挥了愚公移山的精神,但那也是缺心眼!
- 用micropython来开发真正的应用项目,目前并不是我的主流方式,主要我还是用它来做一些实验用的平台,但是micropython我觉得是不错的趋势,值得做一定的技术储备,难度不大,稍微花点时间,就可以获得较大的收益。
- micropython是教小孩基于ESP8266编程的很好的模式。门槛不高,很好入手,我也是准备把它整理后教学给我孩子的。
- 总之,总结几个特点
- 基于micropython开发它有的功能模块,很简单,读读说明书而已。
- 开发micropython没有的功能,那就比较麻烦了,比如开发个SI4462的驱动,我就用的其他模式(C语言)。
- 用micropython的GPIO是否能自己做时序开发其他驱动?
- 低速的可以,略高的速度就不合适了。
- 工作效率很低,这样就导致资源浪费,能效低。
二,准备工作
-
硬件
- ESP8266模块(我用的是ESP-12F,就是官方的标准开发板)
- ESP8266模块(我用的是ESP-12F,就是官方的标准开发板)
-
电脑平台
- 我用的是Win10-64bit,其实其他操作系统都可以,甚至linux核的更方便。
-
通讯工具
- 串口工具,我推荐用类似于SecureCRT的调试终端,没有的话用串口调试助手也行,区别就是不可屏幕修改字符。
-
烧录micropython固件到开发板
- 详见本人原创文档:徐松亮ESP8266专项教学1-简介与多种开发环境搭建
-
连接开发板
- 后面的官方演示,都是通过串口工具操控开发板执行的。
-
官方文档
- 如果你能够认真的看官方文档,就不用看本文了:
- http://docs.micropython.org/en/latest/esp8266/quickref.html#
三,官方实例
-
信息获取指令
-
堆栈信息指令
-
-
通用开发板控制指令
-
主频读取与设定
-
调试指令
- 关闭调试信息(未测试)
-
import esp esp.osdebug(None)
-
- 重新定向调试输出信息端口到Uart0
-
import esp esp.osdebug(0)
-
- 关闭调试信息(未测试)
-
-
网络指令
-
网络相关指令演示
- 创建一个静态网络接口并激活它
- 扫描接入点
- 查询当前网络是否连接
- 本里说明当前还没有连接
- 连接wlan
- 由返回结果可知,与路由之间的网路已经连接
- 获取mac地址(没看懂开发板返回的信息)
- 网络信息
- 创建热点
- 当前测试: 热点创建后,手机可以连接上开发板,但不能通过开发板上网
- 创建一个静态网络接口并激活它
-
联网实用的函数
-
def do_connect(): import network wlan = network.WLAN(network.STA_IF) wlan.active(True) if not wlan.isconnected(): print('connecting to network...') wlan.connect('essid', 'password') while not wlan.isconnected(): pass print('network config:', wlan.ifconfig())
-
通过以上网络连接后函数后,就可以使用socket做TCP/UDP的网络应用啦.
-
-
-
延时/计时指令
-
软件定时器
-
开启:
-
关闭:
- tim.deinit()
-
-
Pins和GPIO
-
PWM
-
ADC
-
软件SPI
- 支持两路SPI驱动,可以工作在所有引脚
-
硬件SPI
- 硬件优点是速度更快,可以达到80MHz的主频
- 硬件缺点是引脚是固定的,只能用12/13/14.
- 硬件只能用SPI1,因为SPI0用于FlashRom芯片的通讯,不对用户开放。
- 硬件的应用与软件的应用几乎一样,只有建立的时候有区别,如下:
-
I2C(软件模拟方式)
- 因为是软件模拟出来的,所以可以应用于所有引脚。
-
RTC
-
深睡模式
-
单总线驱动
- 单总线最典型的应用,无非就是温度传感器DS18B20啦,单总线的优点就不在此说明啦。
- 记得我10几年前做DS18B20的时候,正经苦逼读了2天的说明书,然后自己仿时序调试的呢,现在可以接上就用,还是很方便的。
-
NeoPixel
- 这个东西我没有实际做过,简单查了一下,就是全彩LED的驱动。简单说就是把灯设置各种颜色。
- 没做过什么实验,暂时就不多说这块了,暂时先贴个图片
-
APA102
- APA102是一种内置IC的灯珠
- 关于这个多彩灯珠,我也没做过什么实验,暂时就不多说这块了,暂时先贴个图片
-
DHT
- DHT驱动是DHT11/DHT21等温湿度传感器的驱动,性价比很高的温湿度器件
- DHT也是用的单线传输方式,但是跟DS18B20那个单总线完全不一样。
- DS18B20那个单总线更高级,可以级联,也就是1根线可以挂及时甚至几百个器件(吹个牛逼:我曾做过一款温度采集表头,一个IO口能连接几百米的线挂载将近100个传感器,而且还不用接电源,是寄生供电方式,当然硬件和时序都是经过我优化过的),但是这里说的DHT单总线就比较弱了,只是一对一传输。
- DHT单总线时序没有硬件的,都是软件仿的,所以可以接到任何引脚。
-
WebREPL
- 传输文件用的,你做产品不可能一条一条的打指令,而是这些指令做到.py文件里,再把这个文件传给电路板。
- 因为在搭建ESP8266环境的文章里有相关介绍,在此就不再重复,只是贴个图算了。
三,个人实例
-
自动校时(ntptime)
- 因为是网络校时,要确保网络正常的情况下使用