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

图1 MicroPython 介绍

若干年前当我还是一个懵懂少年的时候,偶然上了廖雪峰的当,从此误入歧途……并且在歧途上越走越远……以至于到目前越来越懒……(在此处感谢廖雪峰前辈,他是我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的开发板,如下图。

图2 ESP8266开发板实拍图

左上部分可以连接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。下载后打开后出现以下界面:

图3 ESP8266 刷系统软件

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

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

图4 ESP8266刷系统软件具体界面

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

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,下载之后打开如下图;

图5 MicroPython FIle Uploader软件界面

此处选好COM口之后点击Open,再点击开发板上的RESET按钮。在界面输出乱码之后会出现如下界面,表示你已经进入MicroPython的程序了,可以开始表演了。

图6 MicroPython File Uploader 成功界面

在这个界面,如果你想了解更多可以输入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日

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇