【ESP8266学习记录-1】MicroPython上手初体验-刷系统,文件上传,设置WIFI,DHT11温湿度模块的使用,IO的使用

[caption id=”attachment_648” align=”aligncenter” width=”960”] 图1 MicroPython 介绍[/caption] 若干年前当我还是一个懵懂少年的时候,偶然上了廖雪峰的当,从此误入歧途……并且在歧途上越走越远……以至于到目前越来越懒……(在此处感谢廖雪峰前辈,他是我Python的领路人。他的Blog:www.liaoxuefeng.com) 人生苦短,我学Python。人生苦短,我玩硬件也用Python!不过这次使用的是Python的阉割版MicroPython(官方网站:http://www.micropython.org/)。据我目前对于MicroPython不多的了解来看,其具备以下几个优点:

1,可以直接控制IO 2,有“丰富”的模块(库)方便调用 3,上手简单

本次以ESP8266为例,与其说本文讲的是MicroPython还不如说本文讲的是ESP8266+MicroPython。本文略过ESP8266的其他使用方法,直接讲解其结合MicroPython的使用方法。 一,上手初体验

我本次使用的是在某宝上购买的ESP8266的开发板,如下图。

[caption id=”attachment_649” align=”aligncenter” width=”780”] 图2 ESP8266开发板实拍图[/caption]

左上部分可以连接OLED,使用I2C模式。右下为外设接口,我用来连接DHT11模块(温湿度检测模块)。左下为两个按键,左侧为BOOT按键,右侧为RESET按键。

二,刷入MicroPython

1,进入MicroPython官网的对应芯片的下载网址,此处为ESP8266(http://www.micropython.org/download#esp8266)此外还支持:PYBD,PyBoard,WiPy,ESP32等,具体可以自行前往官网查看。

2,下载对应bin文件,下载刷写工具:flash_download_tools,博主使用的是V3.6.3。下载后打开后出现以下界面:

[caption id=”attachment_650” align=”aligncenter” width=”357”] 图3 ESP8266 刷系统软件[/caption]

因为我们要刷入ESP8266,所以我们选择ESP8266输入工具,点击“ESP8266 DownloadTool”。

3,进入ESP8266刷入工具后会出现以下界面:

[caption id=”attachment_651” align=”aligncenter” width=”402”] 图4 ESP8266刷系统软件具体界面[/caption]

这里有几个地方需要设置:

1.波特率为115200

2.FLASH-SIZE根据你自己的型号选择,大部分为32M

3.刷入位置设置为:0x00000

4.设置正确的COM口,可在计算机硬件管理界面通过不断的插拔检测时哪个COM口(不推荐)

4,开始刷入

在开始刷入之前先点击ERASE将原来的数据清空一次,避免出现莫名其妙的问题。点击START即可开始刷入。刷入成功之后会显示“成功”。

至此,MicroPython刷入完毕,接下来就要进行联网等设置了。 三,芯片的控制 使用Python来控制的好处就是可以省去很多事,如果你依然使用非常麻烦的方法来控制和交互,那么就是违背了Python设计的宗旨。所以此处只讲使用MicroPython File Uploader(http://www.wbudowane.pl/download/)进行控制,这是我目前见过最好的(没有之一)的类SSH操作MicroPython的软件。可以在我前文给出的链接网址进行下载。文件只有70+KB,下载之后打开如下图; [caption id=”attachment_652” align=”aligncenter” width=”778”] 图5 MicroPython FIle Uploader软件界面[/caption] 此处选好COM口之后点击Open,再点击开发板上的RESET按钮。在界面输出乱码之后会出现如下界面,表示你已经进入MicroPython的程序了,可以开始表演了。 [caption id=”attachment_653” align=”aligncenter” width=”778”] 图6 MicroPython File Uploader 成功界面[/caption] 在这个界面,如果你想了解更多可以输入help()来了解更多。 四,连接WIFI ESP8266最大的亮点就是可以接入互联网,因此连接WIFI是重中之重,当然,如果你的开发并不需要连接WIFI可以忽略。这里采用的是1Z实验室的代码。

import sys

添加路径

sys.path.append(‘examples’)

defis_legal_wifi(essid, password):’’’
判断WIFI密码是否合法
‘’’if len(essid) == 0or len(password) == 0:
returnFalsereturnTruedefdo_connect():import json
import network
# 尝试读取配置文件wifi_confi.json,这里我们以json的方式来存储WIFI配置# wifi_config.json在根目录下# 若不是初次运行,则将文件中的内容读取并加载到字典变量 configtry:
with open(‘wifi_config.json’,’r’) as f:
config = json.loads(f.read())
# 若初次运行,则将进入excpet,执行配置文件的创建 except:
essid = ‘’
password = ‘’whileTrue:
essid = input(‘wifi name:’) # 输入essid
password = input(‘wifi passwrod:’) # 输入passwordif is_legal_wifi(essid, password):
config = dict(essid=essid, password=password) # 创建字典with open(‘wifi_config.json’,’w’) as f:
f.write(json.dumps(config)) # 将字典序列化为json字符串,存入wifi_config.jsonbreakelse:
print(‘ERROR, Please Input Right WIFI’)

#以下为正常的WIFI连接流程        
wifi = network.WLAN(network.STA\_IF)  
ifnot wifi.isconnected(): 
    print('connecting to network...')
    wifi.active(True) 
    wifi.connect(config\['essid'\], config\['password'\]) 
    import utime

    for i in range(200):
        print('第{}次尝试连接WIFI热点'.format(i))
        if wifi.isconnected():
            break
        utime.sleep\_ms(100) #一般睡个5-10秒,应该绰绰有余ifnot wifi.isconnected():
        wifi.active(False) #关掉连接,免得repl死循环输出
        print('wifi connection error, please reconnect')
        import os
        # 连续输错essid和password会导致wifi\_config.json不存在try:
            os.remove('wifi\_config.json') # 删除配置文件except:
            pass
        do\_connect() # 重新连接else:
        print('network config:', wifi.ifconfig()) 

if __name__ == ‘__main__‘:
do_connect()

这个文件要写入main.py文件内,ESP8266内有两个用到的python文件,一个是boot.py另一个是main.py。在ESP8266启动的时候会首先执行boot.py,再判断是否存在main.py,如果存在main.py则执行main.py,不存在则不执行。 这个程序的主要功能就是在开机的时候自动连接wifi,过程是创建一个wifi_config.json文件,在首次运行的时候将你输入的wifi账号和密码存储,以后登陆的时候会进行自动连接。 创建main.py文件后,将上面的代码复制进入。在使用我上面介绍的MicroPython File Uploader 软件上传,最后会自动重启。重启后输入WiFi的账号和密码即可。 五,DHT11温湿度模块的使用 MicroPython的方便之处就在于和Python同样有各种常用的你需要的模块,当然DHT模块也不例外。官方的dht模块支持DHT11和DHT22。 使用方法是:

import dht import machine d=dht.DHT11(machine.Pin(5)) d.measure()”””初始化””” d.temperature()”””温度””” d.humidity()”””湿度”””

同理,DHT22也可以用同样的方法来操作,唯一不同的就是DHT11使用的时候官方推荐查询频率为每秒一次,DHT22查询频率为每两秒一次。 六,IO的控制 硬件开发设备最重要的一点就是可以直接控制IO,所以我很喜欢树莓派和这个模块。特别是能用Python直接控制IO。使用方式如下:

from machine import Pin p0 = Pin(0, Pin.OUT) # 设置0IO口位输出 p0.on() # 设置为高电位 p0.off() # 使之为低电位 p0.value(1) # 设置高电位 p2 = Pin(2, Pin.IN) # 设置2IO为输入 print(p2.value()) # 输出0/1

一般情况下,只有0,1,2,3,4,5,12,13,14,15,16可用,引脚(1)和引脚(3)分别是REPL UART TX和RX。另请注意,Pin(16)是一个用于从深度睡眠模式唤醒的引脚。 本文完。


All the splendor in the world is not worth a good friend.——Voltaire 歪克士 (海叔)2019年4月22日


【ESP8266学习记录-1】MicroPython上手初体验-刷系统,文件上传,设置WIFI,DHT11温湿度模块的使用,IO的使用
https://www.wicos.me/yingjian/647/
作者
Wicos
发布于
2019年4月22日
许可协议