徐松亮ESP8266专项教学2-基于micropython开发ESP8266的各功能官方讲解

版权声明:本文为博主徐松亮的原创作品,未经允许不得转载,多谢支持!QQ:5387603

推荐点击此链接:欢迎进入徐松亮博客一站式导航搜索(随时更新)


目录

一,前言

二,准备工作

硬件

电脑平台

通讯工具

烧录micropython固件到开发板

连接开发板

官方文档

三,官方实例 

信息获取指令

堆栈信息指令

通用开发板控制指令

主频读取与设定

调试指令

网络指令

网络相关指令演示

联网实用的函数

延时/计时指令

软件定时器

开启:

关闭:

Pins和GPIO

PWM

ADC

软件SPI

硬件SPI

I2C(软件模拟方式)

RTC

深睡模式

单总线驱动

NeoPixel

APA102

DHT

WebREPL

三,个人实例 

自动校时(ntptime)


一,前言

  • 本文基本可以说是micropython官网的翻译版。为什么还要写呢?
    • 我发现很多,甚至大多数的开发人员都没有去官网耐心读取资料的习惯,尤其是英文的文档。
  • 记录一下当前micropython库都有哪些现成的功能让我们使用。
    • 你可以不用一项技术,但是还是要了解这项技术的优势,知己知彼才能百战百胜!
    • 这点很重要,当前开发芯片的方案很多,要根据项目合理选择,这就是方向,方向的选择永远比努力更重要。比如说有个项目,全部需求micropython都有现成的库应用,只需几分钟就搞定的事情,但是你非要用C语言,然后加班加点的读芯片手册,从底层自己写,虽然很努力,发挥了愚公移山的精神,但那也是缺心眼!
  • 用micropython来开发真正的应用项目,目前并不是我的主流方式,主要我还是用它来做一些实验用的平台,但是micropython我觉得是不错的趋势,值得做一定的技术储备,难度不大,稍微花点时间,就可以获得较大的收益。
  • micropython是教小孩基于ESP8266编程的很好的模式。门槛不高,很好入手,我也是准备把它整理后教学给我孩子的。
  • 总之,总结几个特点
    • 基于micropython开发它有的功能模块,很简单,读读说明书而已。
    • 开发micropython没有的功能,那就比较麻烦了,比如开发个SI4462的驱动,我就用的其他模式(C语言)。
  • 用micropython的GPIO是否能自己做时序开发其他驱动?
    • 低速的可以,略高的速度就不合适了。
    • 工作效率很低,这样就导致资源浪费,能效低。

二,准备工作

  • 硬件

    • ESP8266模块(我用的是ESP-12F,就是官方的标准开发板)
  • 电脑平台

    • 我用的是Win10-64bit,其实其他操作系统都可以,甚至linux核的更方便。
  • 通讯工具

    • 串口工具,我推荐用类似于SecureCRT的调试终端,没有的话用串口调试助手也行,区别就是不可屏幕修改字符。
  • 烧录micropython固件到开发板

  • 连接开发板

    • 后面的官方演示,都是通过串口工具操控开发板执行的。
  • 官方文档

三,官方实例 

  • 信息获取指令

    • 堆栈信息指令

  • 通用开发板控制指令

    • 主频读取与设定

    • 调试指令

      • 关闭调试信息(未测试)
        • 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)

    • 因为是网络校时,要确保网络正常的情况下使用
发布了28 篇原创文章 · 获赞 81 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xslxhn/article/details/83992282