MicroPython 玩转硬件系列3:上电自动执行程序

简介: MicroPython 玩转硬件系列3:上电自动执行程序

1.引言

上一篇我们在ESP32上实现了LED灯的闪烁,但是有一个问题,该功能的实现需要我们在串口终端里去手动执行代码,是否可以让ESP32上电后自动执行代码呢?当然是可以的,本篇文章介绍如何实现该功能。                    

2.ampy安装

ampy是什么,大家直接看下方的官方介绍即可,https://github.com/scientifichackers/ampy     Adafruit MicroPython Tool (ampy) - Utility to interact with a CircuitPython or MicroPython board over a serial connection.Ampy is meant to be a simple command line tool to manipulate files and run code on a CircuitPython or MicroPython board over its serial connection. With ampy you can send files from your computer to the board's file system, download files from a board to your computer, and even send a Python script to a board to be executed.安装方式:pip install adafruit-ampy -upgrade

3.ampy工具使用

前面的2篇文章,我们都是通过直接在Putty终端里写代码或者把Windows里写好的代码复制到Putty终端里执行的。有了ampy后,我们就不需要这么做了,我们可以先在Windows写好MicroPython程序,然后通过ampy工具直接运行程序。第1步:在Windows里,写一个hello.py文件print("Hello World!")第2步:直接在DOS窗口里,通过ampy在板子上运行hello.py程序,执行:ampy --port COM3 run led.py

注意:执行ampy指令前,你得确保串口没有被占用。如果换成下方的led.py文件

from machine import Pin
import time
led=Pin(4,Pin.OUT)
while True:
    led.on()
    print("LED on!")
    time.sleep(1.0)  # Delay for 1 second.
    led.off()
    print("LED off!")
    time.sleep(1.0)  # Delay for 1 second.

执行:ampy --port COM3 run led.py我们看到led在不断闪烁了,但是并没有打印信息,这是什么原因呢?

没打印的原因:By default the run command will wait for the script to finish running on the board before printing its output.因为代码里是一个while(1)循环,所以一直不会退出,所以也就不会打印了。针对这种情况,我们可以使用下面的指令:ampy --port COM3 run --no-output led.py

这样就不会一直停在那里了。同时我们打开PuTTY可以看到在这里一直有打印输出。

4.上电执行代码

通过以下3个步骤就可以实现上电自动执行代码了:1) 将led.py改名为main.py2) ampy --port COM3 put main.py3) 板子重新上电,就可以看到灯不停的闪烁了如果需要删除掉main.py,只需要执行:ampy --port COM3 rm main.py上面的工作机理是,通过ampy把main.py导入到ESP32板子里,上电后会自动执行main.py。

5.参考资料

https://www.digikey.com/en/maker/projects/micropython-basics-load-files-run-code/fb1fcedaf11e4547943abfdd8ad825cehttp://www.cirmall.com/bbs/thread-102620-1-1.html如果你喜欢这篇文章就点击在看或者分享给你的朋友吧!

相关文章
|
网络性能优化
基于MQTT.fx的ESP8266主题发布订阅
本篇文章主要以ESP8266-12E作为开发板,带你了解MQTT发布、订阅、取消订阅的基础知识。
646 0
基于MQTT.fx的ESP8266主题发布订阅
|
Rust 程序员 数据安全/隐私保护
GitHub 上标星 13.4K 的远程软件!太强大了
GitHub 上标星 13.4K 的远程软件!太强大了
4153 0
GitHub 上标星 13.4K 的远程软件!太强大了
|
6月前
|
人工智能 安全 Java
Go与Java泛型原理简介
本文介绍了Go与Java泛型的实现原理。Go通过单态化为不同类型生成函数副本,提升运行效率;而Java则采用类型擦除,将泛型转为Object类型处理,保持兼容性但牺牲部分类型安全。两种机制各有优劣,适用于不同场景。
234 24
|
机器学习/深度学习 自然语言处理 数据可视化
分布式表示(Distributed Representation)
分布式表示(Distributed Representation)
665 2
|
并行计算 安全 Linux
如何设置环境变量KMP_DUPLICATE_LIB_OK=TRUE
【5月更文挑战第25天】如何设置环境变量KMP_DUPLICATE_LIB_OK=TRUE
1522 0
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务
424 1
【软件设计师】常见的算法设计方法——穷举搜索法
【软件设计师】常见的算法设计方法——穷举搜索法
|
Windows
CMake 如何设置 Debug 和 Release 下的不同配置
CMake 设置 Debug 和 Release 下不同的工程依赖库,编译选项宏隔离等
1616 1
CMake 如何设置 Debug 和 Release 下的不同配置
|
新零售 供应链 大数据
良久团购项目系统开发|方案设计|详情模式
新零售是在互联网技术深刻影响了人们的生产和生活之后,基于行业上下游现状衍生出来的全新模式
|
安全 Linux 网络安全
【Linux】centOS7安装配置及Linux的常用命令---超详细
【Linux】centOS7安装配置及Linux的常用命令---超详细
2614 1