MicroPython物联网开发入门1欢迎上贼船ESP8266

这篇具有很好参考价值的文章主要介绍了MicroPython物联网开发入门1欢迎上贼船ESP8266。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1欢迎上贼船

1.1 关于本教程

这是一个针对Python初学者的教程,他们想学习对设备进行编程,以便与物理世界互动。你将学习如何使用MicroPython编程,MicroPython是专为在微控制器上运行的Python版本。你将学习如何编写的应用程序将从传感器读取数据,在小屏幕上显示信息,对按钮作出反应,并从互联网上传或下载数据。有很多很酷的东西!

1.2 要求

有Python的基本编码经验。你不需要有任何关于微控制器、电子学、甚至MicroPython的知识。

你还需要一台有USB接口的Ubunutu电脑,因为你要把微控制器连接到电脑上进行编程。

购物清单

1.3.1 微控制器

MicroPython可以在几种不同类型的微控制器上运行,但在本教程中,我将只使用一种型号:ESP8266。请注意,有一些不同的板子,你可以买到相同的芯片。你想买的型号是非正式地称为 "开发板 "的型号,更正式的名称是ESP-12。这些板子上安装有微控制器,小型Wi-Fi天线,用于供电和编程的微型USB输入,以及30个可直接插入面包板的引脚。

MicroPython物联网开发入门1欢迎上贼船ESP8266

ESP8266微控制器芯片是一个较大的银色盒子。在它上面你可以看到一条人字形的金线。那是Wi-Fi天线。你可以看到每侧有15个引脚,每个引脚都有标签,应该印在电路板上,名称是D0、D1、3V3、GND等。

有三个标有3V3或3.3V的引脚,它们提供电流。这个名字来自于电压,即3.3伏。这些引脚可用于向其他元件提供输入电流。还有四个GND或 "ground"引脚。这些引脚提供了接地连接。正如你在本教程后面所学到的,所有元件都有明确标记的引脚,用于输入电流,通常称为VCC,还有用于连接到地面,称为GND。

标有D的引脚是数据引脚。这些引脚用于单片机和其他连接设备之间的通信。

电路板上有两个内置的小LED(发光二极管,如果你愿意,也可以说是小灯泡),你可以在图中看到黄色的。上面的LED与标有D4或GPIO2的引脚相连,而下面的LED则与D0相连,也就是GPIO16。

在其余的引脚中,A0是值得一提的,因为它是电路板上唯一的 "模拟 "引脚。所有其他的引脚要么是0,要么是1,但是模拟引脚可以有一定的数值范围,由通过该引脚的电流大小决定。本教程不使用模拟针脚。

另一个有趣的引脚是RST,它可以用来向电路板发送复位信号。后续你将学习如何使用这个引脚来 "唤醒 "处于深度睡眠状态的微控制器。

标有Vin的引脚可以用来给电路板供电,作为更方便的Micro-USB端口的替代。在本教程中,你要做的所有例子都是通过micro-USB端口供电的,所以你不会使用这个引脚。

其余的引脚在大多数板子上都是留给微控制器自己使用的,所以这里没有很多有趣的功能可以提及。如果你想知道在你的特定板子上有什么用途,你应该查阅具体的文件,因为这些引脚的接线方式不尽相同。

在底部中央,你有一个微型USB输入连接器。在本教程中,你将总是通过这个连接器给电路板供电。如果你把电缆的另一端连接到你的电脑上,那么电路板就会在你的电脑上显示为一个串行设备。这个串行连接将被用来向微控制器上传代码。

为了完成这个概述,请注意电路板上有两个小按钮,分别是RST和FLASH,在微型USB端口的两侧。FLASH按钮为板子准备了新的固件,但这个按钮很少需要,因为当前版本的板子可以通过串行连接进入闪存模式。RST按钮是简单的复位按钮,按下它可以重新启动电路板。

MicroPython物联网开发入门1欢迎上贼船ESP8266

1.3.2 温度和湿度传感器

有三个或四个引脚的模型。对于本教程都可以。

MicroPython物联网开发入门1欢迎上贼船ESP8266

1.3.3 屏幕

一些例子会在128x64像素的OLED小屏幕上显示信息。

MicroPython物联网开发入门1欢迎上贼船ESP8266

1.3.4 按键

一些例子将由按钮来触发。

MicroPython物联网开发入门1欢迎上贼船ESP8266

1.3.5 面包板和跳线

为了能够在不焊接的情况下轻松地建立和拆卸电路,你将需要面包板和跳线。

MicroPython物联网开发入门1欢迎上贼船ESP8266

最上面的两排和最下面的2排孔通常被称为 "电源条",它们的工作方式实际上与家用电源条类似。

MicroPython物联网开发入门1欢迎上贼船ESP8266

中间的孔是以五为一组的。中间两部分的十排孔用字母a到j标示,但与电源条不同,这些行没有连接。这些针脚的连接是垂直的,并且只覆盖了每一部分的五个垂直孔组。各列的标签从1到30,但在许多面包板上,你只能看到每五列一个标签。利用这些标签,你可以看到a1、b1、c1、d1和e1孔都是相互连接的,所以任何插入这些孔的引脚都会全部连接。同样,针脚f1、g1、h1、i1和j1之间也是相连的,但它们与上面的五个孔没有共同的连接。

MicroPython物联网开发入门1欢迎上贼船ESP8266

MicroPython物联网开发入门1欢迎上贼船ESP8266

MicroPython物联网开发入门1欢迎上贼船ESP8266

MicroPython物联网开发入门1欢迎上贼船ESP8266

1.3.6 USB到MicroUSB电缆

你将需要一条USB线来连接你的微控制器和你的电脑。这将提供电源,也是串行连接,你将通过它把代码上传到微控制器的存储器中。这和大多数安卓手机的充电线是一样的,所以你可能已经有一条可以使用了。

MicroPython物联网开发入门1欢迎上贼船ESP8266

1.4 Hello

到https://micropython.org/download/?port=esp8266下载固件,一般用2M的版本:esp8266-20230426-v1.20.0.bin
MicroPython物联网开发入门1欢迎上贼船ESP8266

将普通USB端插入计算机上的一个空闲USB端口,将微型USB端插入ESP8266板。当板子通电时,你可能会看到其中一个LED灯闪烁,但当然不会有其他事情发生,因为没有安装软件。

$ sudo pip install esptool rshell
$ esptool.py write_flash 0 Downloads/esp8266-20230426-v1.20.0.bin --flash_size=detect
esptool.py v4.6.2

# ESP32要修改成如下:
# esptool.py write_flash -z 0x1000 Downloads/esp32-20230426-v1.20.0.bin  --flash_size=detect -e
Found 1 serial ports
Serial port /dev/ttyACM0
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: d8:bf:c0:f8:16:d5
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00000000 to 0x0009afff...
Flash params set to 0x0040
Compressed 634016 bytes to 420365...
Wrote 634016 bytes (420365 compressed) at 0x00000000 in 37.0 seconds (effective 136.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

我将向你展示的是如何连接到你的电路板上运行的Python提示符。这被称为 REPL,它是 "Read-Eval-Print-Loop "的缩写。这是标准的Python提示符,你可能习惯于在使用常规的Python解释器时看到它,但这次它将在你的电路板上运行,为了与它互动,你将使用串行连接到你的计算机。

在你之前发布的esptool.py命令的输出中,寻找以Serial port开头的一行。这一行的内容是连接到你的微控制器板的串口设备的名称。在Linux或Mac电脑上,这将是格式为/dev/的名字,而在Windows上,它将是COM。你可以看到,对于我目前使用的电路板,设备名称是/dev/ttyACM0。

$ rshell --port /dev/ttyACM0
Using buffer-size of 32
Connecting to /dev/ttyACM0 (buffer-size 32)...
Trying to connect to REPL  connected
Retrieving sysname ... esp8266
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ... /boot.py/
Setting time ... Jul 06, 2023 12:57:01
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 2000
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
/home/andrew> repl
Entering REPL. Use Control-X to exit.
>
MicroPython v1.20.0 on 2023-04-26; ESP module with ESP8266
Type "help()" for more information.
>>> 
>>> print('Hello, MicroPython!')
Hello, MicroPython!
>>> 

如果找不到串口:

systemctl stop brltty-udev.service
sudo systemctl mask brltty-udev.service
systemctl stop brltty.service
systemctl disable brltty.service

参考资料

  • 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
  • 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
  • python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
  • https://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
  • https://zhuanlan.zhihu.com/p/82366556
  • https://blog.csdn.net/makeryzx/article/details/79872567
  • https://www.espressif.com.cn/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_cn.pdf
  • https://blog.csdn.net/qq_38405680/article/details/84571843

1.5控制板载的LED

正如我前面提到的,这个板子有两个LED。更准确地说,几乎都是这样的,但有些老的ESP8266开发板只有一个LED。让我们首先尝试控制最常见的那个,即所有板子都有的那个:

>>> import machine
>>> led = machine.Pin(2, machine.Pin.OUT)

machine是板子接口的内置一。这个包最重要的特征之一是Pin()类,它被用来读取或写入数据引脚。

位于Wi-Fi天线旁边的LED是连接到D4引脚的。那么为什么我用2来初始化这个引脚呢?这是因为微控制器中引脚的命名通常非常混乱。印在电路板上的引脚名称其实并不那么有用,在寻址方面真正重要的是它的GPIO(General-purpose input/output)编号。GPIO是通用输入/输出的意思,是对可供应用程序使用的一组引脚的名称。如果你回到本文顶部的引脚图,你会注意到D4也是GPIO2,所以我使用2作为引脚编号。

Pin()类的构造函数需要第二个参数,它是常数,声明这个引脚是输出引脚。这意味着该引脚将被配置为被写入。当针脚被设置为0时,LED会打开,而当针脚被设置为1时,LED会关闭。当你用上面的Python语句将引脚2初始化为输出时,你可能会看到电路板上的LED立即打开,因为在默认情况下,这个引脚的状态是0。

如果你想关闭LED,你可以向该引脚写一个1:

# 关灯
>>> led.value(1)
>>> led.on()
# 开灯
>>> led.value(0)
>>> led.off()

记住,LED是反向接线的,所以on()把它关掉,off()把它打开!

第二个LED在D0引脚上,也被称为GPIO16。如果它存在,它也是反向布线的。

>>> led2 = machine.Pin(16, machine.Pin.OUT)
>>> led2.off()

如果你的电路板有第二个LED,上面的代码应该把它打开。第二个LED位于RST按钮附近。

MicroPython解释器支持控制结构,其方式与标准Python相同。可以用while循环、两个LED和time.sleep()函数创造一个小小的灯光秀:

>>> import time
>>> while True:
...     led.off()
...     led2.on()
...     time.sleep(0.5)
...     led.on()
...     led2.off()
...     time.sleep(0.5)
...

欣赏完灯光秀后,你可以按Ctrl-C键跳出while-loop并停止它。然后你可以按Ctrl-X键退出REPL,回到rshell提示符。最后,你可以按Ctrl-D退出rshell,回到你的终端。

1.6 MicroPython的文件系统

在ESP8266板上,实际上没有文件存储器,所以MicroPython分配了一部分闪存并在其中创建了一个虚拟文件系统。本教程推荐的ESP8266开发板带有4MB的闪存,这足以容纳MicroPython固件和小型文件系统。

两个文件在MicroPython中具有特殊的意义,名字分别是boot.py和main.py。作为正常启动程序的一部分,MicroPython会在内部文件系统中寻找带有这些名字的文件,如果找到它们,它就会自动执行它们。正如你即将看到的,MicroPython固件已经提供了一个boot.py文件,但它不包括main.py,它是留给开发者提供的。所以要创建保存在板子闪存中的应用程序,需要做的就是把它作为main.py写到板子上。

REPL的rshell工具提供了访问文件系统的功能。所以,让我们用USB线把板子连接到电脑上,然后启动rshell。当你进入rshell提示符时,输入help来查看它提供的所有命令:

$ rshell --port /dev/ttyACM0
Using buffer-size of 32
Connecting to /dev/ttyACM0 (buffer-size 32)...
Trying to connect to REPL  connected
Retrieving sysname ... esp8266
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ... /boot.py/
Setting time ... Jul 06, 2023 15:05:37
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 2000
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
/home/andrew> help

Documented commands (type help <topic>):
========================================
args    cat  connect  date  edit  filesize  help  mkdir  rm     shell
boards  cd   cp       echo  exit  filetype  ls    repl   rsync

Use Control-D (or the exit command) to exit rshell.

但这些命令以一种非常有趣的方式工作,使你能够同时处理你的计算机中的文件系统和板上的文件系统。你可以使用路径和文件名来引用你电脑中的任何文件,但特殊目录/pyboard被映射到MicroPython的文件系统中。

home/andrew> ls /pyboard
boot.py
/home/andrew> ls /
boot/       home/       opt/        snap/       usr/        lib64@      swapfile   
cdrom/      lost+found/ proc/       srv/        var/        lib@       
dev/        media/      root/       sys/        bin@        libx32@    
etc/        mnt/        run/        tmp/        lib32@      sbin@      
/home/andrew> cat /pyboard/boot.py
# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
import uos, machine
#uos.dupterm(None, 1) # disable REPL on UART(0)
import gc
#import webrepl
#webrepl.start()
gc.collect()

虽然修改和/或添加代码到boot.py中并没有什么不妥,但不去管这个文件,因为有些情况下MicroPython本身会修改这个文件。我更喜欢在main.py上进行所有的编码,因为它是可完全掌控的文件。

1.7 闪烁灯应用程序

为了使你所有的教程文件井井有条,让我们创建一个子目录,用来存放本章的代码。所以确保你的当前目录被设置为micropython-tutorial,并创建一个chapter3子目录:

/home/andrew/code/micro_esp/ch2> cat main.py
import machine
import time

led = machine.Pin(2, machine.Pin.OUT)
led2 = machine.Pin(16, machine.Pin.OUT)
while True:
    led.on()
    led2.off()
    time.sleep(0.5)
    led.off()
    led2.on()
    time.sleep(0.5)
/home/andrew/code/micro_esp/ch2> cp main.py /b
/bin/      /boot.py/  /boot/     
/home/andrew/code/micro_esp/ch2> cp main.py /pyboard/
Copying '/home/andrew/code/micro_esp/ch2/main.py' to '/pyboard/main.py' ...

要把这个文件上传到微控制器板上,你可以在rshell提使用cp命令, 拷贝完成后reset一下即可生效。文章来源地址https://www.toymoban.com/news/detail-527813.html

到了这里,关于MicroPython物联网开发入门1欢迎上贼船ESP8266的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 物联网开发笔记(68)- 使用Micropython开发ESP32开发板之使用官方工具esptool烧录

    一、目的         这一节我们学习如何使用我们的ESP32开发板来烧录。 二、环境         ESP32 + esptool + Win10 + python3.10 + 其他工具。 ESP32开发板购买地址: https://item.taobao.com/item.htm?spm=a1z09.2.0.0.39352e8dy0hBq0id=679204453863_u=2p01rched2a https://item.taobao.com/item.htm?spm=a1z09.2.0.0.39352e8dy0hBq0

    2024年02月05日
    浏览(49)
  • 物联网开发笔记(59)- 使用Micropython开发ESP32开发板之控制合宙4g Air724U模块

    一、目的         这一节我们学习如何使用我们的ESP32开发板来控制合宙4g Air724U模块。 二、环境         ESP32 + 合宙4g Air724U模块 + Thonny IDE + 几根杜邦线 接线方法: 注意连接方式: ESP32的RX2-----4G模块的TX ESP32的TX2-----4G模块的RX 三、介绍         1,数据流通图 ESP32

    2024年02月08日
    浏览(69)
  • 物联网开发笔记(87)- 使用Micropython开发ESP32开发板之烧录合宙ESP32C3开发板

    一、目的         这一节我们学习如何使用我们的ESP32开发板来学习合宙ESP32C3开发板,该开发板有两种:一种是带串口通讯的,一种是通过使用USB通讯接口的。  二、环境         ESP32 + 合宙ESP32C3开发板 + USB转type-C线  + Win10 接线方法:         开发板通过USB线插到

    2024年02月14日
    浏览(50)
  • 物联网开发笔记(31)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(1)

    一、目的         我们分3节讲述远程控制。这一节在我们的240x240的oled屏幕上显示二维码,然后用手机扫二维码,从开发板的TCP服务器上返回字符串。 二、环境         ESP32 + 240x240的oled彩色屏幕+ Thonny IDE + 几根杜邦线             接线方式请看上前面的章节,此处

    2024年02月15日
    浏览(48)
  • 物联网开发笔记(32)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(2)

    一、目的         上一节我们测试了远程控制的环境是好的,这一节在我们的240x240的oled屏幕上显示二维码,然后用手机扫二维码,远程控制LED灯的状态。 二、环境         ESP32 + 240x240的oled彩色屏幕+ Thonny IDE + 几根杜邦线             接线方式请看上前面的章节,

    2024年02月09日
    浏览(57)
  • 物联网开发笔记(91)- 使用Micropython开发ESP32开发板之通过串口SPI控制ILI9341 液晶屏显示文字

    一、目的         这一节我们学习如何使用ESP32开发板,通过串口SPI控制ILI9341 液晶屏。我使用的是3.2寸的,分辨率240x320 V1.0,TFT屏幕。文末有购买地址。 二、环境         ESP32(固件:esp32-20220618-v1.19.1.bin) + Thonny(V4.0.1) + ILI9341 液晶屏模块 + 几根杜邦线 + Win10 64位商业版

    2024年02月16日
    浏览(50)
  • 物联网开发笔记(51)- 使用Micropython开发ESP32开发板之通过MAX98357 I2S音频模块播放音乐

    一、目的         这一节我们学习如何使用我们的ESP32开发板来播放音乐。 二、环境         ESP32 + MAX98357 I2S音频模块 + Thonny IDE + 几根杜邦线 接线方法: 三、代码     代码1,播放wav格式文件:wav格式文件几百K,别太大ESP32存储空间有限。 音频格式转换网站: 在线转

    2024年02月16日
    浏览(48)
  • 物联网开发笔记(96)- Micropython ESP32开发之SPI接口控制Micro SD卡TF卡模块挂载内存卡

    一、目的         这一节我们学习如何使用乐鑫的ESP32开发板连接SD卡模块,进行目录、文件的相关操作。         在早前我们也介绍过TFT SD卡的操作,这里我们重新复习一下。 物联网开发笔记(60)- 使用Micropython开发ESP32开发板之SPI接口控制Micro SD卡TF卡模块_microsd卡

    2024年01月25日
    浏览(42)
  • MicroPython开发ESP32入门笔记 -- 蓝牙篇

    博主之前学习了用C语言去开发了51单片机,虽然没有将各种外设和传感器都玩遍,但博主基本将一些重要的外设和传感器通过原理学习加小项目实验的方式比较深入地玩了一下。众所周知,51单片机是相对底层的,用来开发一些大项目的效率会比较低,所以我们很有必要学习

    2023年04月19日
    浏览(49)
  • MicroPython开发esp32入门笔记--串口篇

    串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包