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!(真的只需要几秒钟!)

MicroPython.org 官网也有在线模拟,哪个快用哪个吧。

第一个自己的实验: 闪灯。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 下载固件​​​​​​ (我刚刚在ESP8266测试,下载的是 esp8266-20220117-v1.18.bin 很小的,别下错了)

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

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

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 networkwlan = 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, 胶水一下就同时实现了。不过有个小问题,怎么获得本机的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停止, 看起来简单实验也不用上传文件了。

更新:用了几天后发现, uPyCraft 比较顺手。也支持回车4次开始执行。

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

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

ESP8266/ESP32 + MicroPython (一) 初识相关推荐

  1. ESP8266/ESP32 + MicroPython (四) 向微信发送通知

    前言:互联网 物联网 现在发展都很快,快到几天不看跟不上. 假想一个场景:厨房有个烟雾传感器,一旦触发报警惊天动地,但是主人不在家呢?并不是所有传感器都联到了物业中心,也不是所有物业中心都有人值班,不 ...

  2. 利用CH340C制作MicroPython ESP8266,ESP32的下载器-改进型

    简 介: 本文给出了利用CH340C芯片制作ESP32,ESP8266下载器的方法,并进行了实测测试. 关键词: ESP32,CH340C,MicroPython,下载器 ▌01 ESP的MicroP ...

  3. 测试CH340C的功能,制作MicroPython ESP8266,ESP32下载器

    ▌01 CH340C USB-UART芯片 CH340C 是沁恒公司的USB-UART的转换芯片.在 CH340E USB转串口 IC测试电路 测试了CH340E的基本功能.为了制作 ESP8266以 ...

  4. esp32 micropython web服务器_ESP32 Arduino教程:Websocket server(服务器)

    本文主要介绍如何使用Arduino内核作为编程架构在ESP32(上创建Websocket server(服务器).所创建的Websocket server(服务器)将作为回发服务器使用,也就是说它会把 ...

  5. esp8266原理图_ESP32/ESP8266使用MicroPython控制DHT11/DHT22

    背景知识视频教程 高级ESP32 - 国外课栈​viadean.com 使用NodeMCU(由ESP8266支持),MicroPython和PyCharm进行物联网 - 国外课栈​viadean.co ...

  6. ESP8266基于MicroPython的TCP socket回调函数实现案例

    参考链接 其它参考 python socket和简单tcp通信实现 - Katherina.K - 博客园 GitHub - robert-hh/FTP-Server-for-ESP8266-ESP3 ...

  7. 从零讲起:ESP32+Micropython+MQTT阿里云物联网

    ESP32+Micropython+MQTT阿里云物联网 前言 一.ESP32是什么? 二.Micropthon开发环境搭建 1.ESP32串口驱动下载与安装 三.IDE工具下载及使用说明 1.IDE ...

  8. micropythonesp8266刷固件_MicroPython入坑记2:ESP8266/ESP32刷固件

    先来个刷写过程: 其实各种刷ESP8266/ESP32的软件都可以搞(比如刷NodeMCU的软件),不过我这还是出问题了:刷完后无限输出乱码.然后参照Micropython官方的教程,用esptool ...

  9. 乐鑫esp8266模块MicroPython开发板MQTT物联网人工智能最小系统

    简 介: ※对于购买自网络的基于ESP8266的实验模块进行了初步的测试,它其中的一些示例进行了练习.特别是对于基于ESP8266的特殊的一些外设的测试. 关键词: ESP8266,MicroPyth ...

最新文章

  1. 建立用户体验(User Experience,UX)过程的实用指南
  2. 安装翻译_【现象】面对日益增多的外国人 日本安装远程翻译设施
  3. 实训09.09:简单的彩票系统(自选多注)
  4. 004-docker常用命令[二]-容器操作ps,top,attach,export
  5. (软件工程复习核心重点)第一章软件工程概论-第一节:软件和软件危机
  6. 算法分析之对问题建模
  7. Swift基础语法: 23 - Swift的Trailing闭包, 捕获, 闭包是引用类型
  8. java filter与servlet,Servlet中的Filter和Listener之间的区别(Java EE)
  9. php 怎么验证邮箱验证码,PHP 验证邮箱是否有效 - 沃森博客
  10. 从苏宁电器到卡巴斯基第28篇:难忘的三年硕士时光 VI
  11. 战神引擎php,战神引擎搭建教程
  12. 七夕怕被偷窥?摄像头探测器来帮您!
  13. lamp phpstudy mysql_phpStudy for Linux (lnmp+lamp一键安装包)
  14. 英语词性的分类及用法详述
  15. 功放DIY电路制作完成
  16. 东东在用计算机计算一道题时 把被除数的前,北师大二年级数学下册期末试卷...
  17. LaTex使用技巧19:罗马数字输入(大写和小写)
  18. 我的Python笔记02
  19. 温度传感器采集温度数据通过网关上传至ThingsBoard平台
  20. 深度学习-兼顾工作与孩子

热门文章

  1. i7 11700K参数 i711700K怎么样
  2. 百济神州2021年净亏百亿 与诺华制药合作进一步深入
  3. HTML5与CSS3实现动态网页(笔记)
  4. 泰山OFFICE技术讲座:如何给文字添加着重号
  5. 微信群营销会存在哪些误区?
  6. 计算机软件技术实习项目二(一) 贪吃蛇项目准备
  7. 短视频是先配音还是先做视频?自媒体人看过来
  8. protopie导出html,【实用】Protopie交互+PS样机视频
  9. “肉瘾”女孩从软件测试工程师到主管的成长感悟
  10. Cesium 视角锁定、解除锁定