IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP8266/ESP32 + MicroPython 一 初识 -> 正文阅读

[嵌入式]ESP8266/ESP32 + MicroPython 一 初识

Arduino 大概来说是基于 c、c++、java 的,程序需要编译再上传,单一用途还算顺溜,但是如果有一些比较灵活的场合,就没有解释型环境来的方便。

Python 也是基于 c、c++,但是默认是交互式的命令行输入输出,勉强有解释型环境的体验。

ESP8266 ESP32 这样的单片机开发板,便宜还集成了较大的eeprom, 算是一个麻雀虽小五脏俱全的小计算机,虽然跑不了 PC 版的 Python,但是有人开发出 MicroPython,而且它比 PC版 Python还容易控制单片机的接口(传感器,通讯,小显示器等)

更高性能的树莓此处不讨论。

不废话,点击下面网址?立即?体验一下什么是 MicroPython 。

https://wokwi.com/projects/new/micropython-esp32

Wokwi 是一个 Arduino 的在线模拟网站,什么硬件都不需要就可以开始 Arduino 的编程和硬件的测试,尤其是 ESP8266/ESP32 上传一次程序比较慢,微调一下显示格式什么的在模拟器上完成看起来很节约功夫,也容易分享。

Wokwi 提供了一个基于?ESP32 的?MicroPython 模拟,点击绿色运行按钮,就立即开始了 Hello 程序, 真是 So Easy!(真的只需要几秒钟!)

第一个自己的实验: 闪灯。Arduino的各种开发板默认都有一个灯,方便上传程序时看到闪烁,例程里有Blink程序,即使没有其他模块都能开始第一个程序。把如下代码贴在左面的程序区,点击绿色运行按钮,右面模拟区?蓝色?的灯会闪哦。

from machine import Pin
import utime
led = Pin(2, Pin.OUT)
while(True):
? led.on()
? utime.sleep_ms(500)
? led.off()
? utime.sleep_ms(500)

当然,实体 ESP32 想把 MicroPython 跑起来还是需要搭建环境的,也需要会一些单片机的基本操作,串口操作基础,C语言 Python PIP的基础,不会也没关系,就是脚踏实地(一步一坑),排除万难(搜索结果中找到适合的文章)慢慢探索罢了。

----------------------------------------------------------------------------------------------------------------------------

文章真的太多了,简单列个步骤,慢慢搜吧

1 和 2 是在 Windows11 里完成的。并不需要连接ESP32

3 和 4 是 ESP插上线连到 Windows , 写入固件

之后 5 以后的步骤是?ESP插上线连到 Windows,通过串口调试

再之后也可以用网络连接的方式调试

几个参考
https://blog.csdn.net/weixin_29056865/article/details/112667018
https://zhuanlan.zhihu.com/p/55366938
https://zhuanlan.zhihu.com/p/82366556

1 下载固件???????(我刚刚在ESP8266测试,下载的是 esp8266-20220117-v1.18.bin 很小的,别下错了)

2 安装esptool??命令行执行? ( Windows11 已经安装好 Python3.10 )?

pip install esptool ?-i https://pypi.tuna.tsinghua.edu.cn/simple?

?1 和 2 是在 Windows11 里完成的

3 擦除闪存? 命令行执行? (刚才执行的pip安装esptool,可以在python目录下找到esptool.py,执行失败就加上文件的全路径,如这个理解不了真的不适合独自玩,去报个班吧)

python esptool.py --port COM4 erase_flash

?执行结果这样的:

4 写入固件? 命令行执行 ?

python esptool.py --port COM4 --baud 115200 write_flash --flash_size=detect 0 esp8266-20220117-v1.18.bin

执行结果这样的:

上面这两步骤很快的,一分钟内。

另外有一个基于浏览器的ESP固件上传 ??Adafruit ESPTool?工具同样可以实现上面步骤 3、4 的功能,不过初试没成功,看了看 安信可?的烧录说明,估计使用的固件不是同一个,有机会再研究吧。

5 串口调试

固件写好之后,基本上就可以开始表演了,这时需要一个串口调试工具,Putty 什么的都可以,注意,需要次输入后面需要加上回车符号 <CR> \r 或 16进制 0x0D,大多数串口软件都支持自动添加的。有人推荐 MicroPython File Uploader? ,因为不仅可以串口调试,还可以上传 .py 文件。

串口调试界面里可以手敲如下命令(python 语句),看到当前板子里有那些程序文件

import os 
os.listdir()

大概是下图这样子的:后5行看得懂的就是实际的操作结果,前面问号这些是ESP初始化的乱码,多年来一直这样的,习惯就好。

6. 上传文件

虽然手敲 python 语句也是蛮好玩的,但是能以文件方式保存,上传到ESP里也是极好的:

把之前闪灯的代码保存 Blink.py ,用 uploader 上传,用 os.listdir() 命令查看

看起来上传成功了,掉电再看也在,可是灯不闪呢?

搜一下。。。原来micropython上电加载 boot.py ,然后自动运行 main.py (注意大小写)。

这下简单了,把?Blink.py 改个名字为?main.py 。。。几秒钟后,蓝灯开始闪了?

至于不需要的文件,删除就好了

os.remove("Blink.py")

?7. 驱动 I2C SSD1306 OLED

这应该是比较常见显示模组,把下面的代码保存为 main.py ,用?uploader 上传,就有画面了。乱搜的各有各的说法,各种库,现在都不需要了,估计固件里自带了。

from machine import I2C,Pin
from ssd1306 import SSD1306_I2C
i2c = I2C(scl = Pin(4),sda = Pin(5),freq = 10000) #软件I2C
oled = SSD1306_I2C(128, 64, i2c) #创建oled对象
oled.rect(0,0,127,63,1)
oled.show()
oled.text("Hello World!",5,5)
oled.show()

8.?WebREPL

uploader 是串口连接,需要插数据线的。有人提到,万一做成了壳子里的成品,再想更新下程序咋办呢?于是还有洋气的玩法,通过 wifi 上传下载文件和命令行交互。

1. Windows下载?webrepl 客户端

2. MicroPython/ESP8266 上面启用 Wifi 和 WebREPL (下面代码保存为 main.py 并上传)

import utime
import network
import webrepl
sta_if = network.WLAN(network.STA_IF);
SSID = "xxx"
PASSWORD = "xxxxxxxxx"
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()
sta_if.ifconfig()

3. 浏览器登陆?WebREPL 页面, 按如下格式登陆,IP 在串口上可以看到的

然后页面下方是可以上传下载文件的

9. OLED 显示 当前 IP ,方便 WebREPL 连接

之前实现了驱动oled,也实现了wifi连接,也实现了WebREPL,Ctrl+C大法几个代码拼接一下就同时实现了呗。不过有个小问题,怎么获得本机的IP??

sta_if.ifconfig()? 是可以获得IP,但是信息有些多,OLED太小。。。

其实?sta_if.ifconfig()? 输出是个“一维数组” ,取第一个元素即可:
这个oled 库有 横 纵 坐标和 arduino 反的,多用几次也就熟悉了

s = sta_if.ifconfig()
oled.text(s[0],5,35) ?# 横 纵

10. 最后,来点和单片机沾边的 ADC,不然还以为就是纯键盘操作呢

和 arduino 略有不同,还是那句话,习惯就好。

from machine import I2C,Pin,ADC
adc = ADC(0)
oled.text(str(adc.read()),5,45) ? # int to str
oled.show()

11. 几个终端工具的比较

?WebREPL 支持网络,支持文件上传下载。不支持复制粘贴,这个就不能接受了(也不知道是不是我的打开方式不对)

Uploader 挺简洁方便,支持文件上传。窗口大小不可调。不支持多行复制粘贴,有些麻烦。

PuTTY?支持多行复制粘贴,窗口大小可调。。。但是没找到文件上传下载。

刚才试了下?PuTTY 里多行粘贴 文首的 闪灯程序,回车4次开始执行,Ctrl-C停止, 看起来简单实验也不用上传文件了。

-------------------------------------------------------------------------------------------------------------

?至于后面怎么玩。。。So(搜)easy!(提示一下,点上图软件右下角就有一些搭建实例)

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:59:21  更:2022-03-13 22:00:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:35:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码