《物联网开发实战》16 实战准备:如何搭建硬件开发环境?(学习笔记)
仅作为本人学习《物联网开发实战》的学习笔记,原课程链接:极客时间《物联网开发实战》——郭朝斌
文章目录
- 搭建 MicroPython 开发环境
- 第一步:准备固件文件
- 第二步:安装烧录工具
- 第三步:烧录固件
- 第四步:确认运行状态
- 体验交互
- 部署代码到开发板
原课程选择使用 Python 作为开发语言,硬件平台为 NodeMCU(ESP8266),开发板上不能直接运行 Python,但可以运行 MicroPython 。
MicroPython ,是Python3编程语言的一个完整软件实现,用C语言编写,被优化于运行在微控制器之上。MicroPython是运行在微控制器硬件之上的完全的Python编译器和运行时系统。提供给用户一个交互式提示符(REPL)来立即执行所支持的命令。除了包括选定的核心Python库,MicroPython还包括了给予编程者访问低层硬件的模块。
——百度百科
搭建 MicroPython 开发环境
第一步:准备固件文件
我们需要 NodeMCU 准备好的 MicroPython 固件,我们可以直接去官方下载现成的,否则就需要自己用专门的软件进行交叉编译。
固件下载地址:(原课程使用的是 ESP8266,而我的芯片型号是 ESP32)
ESP8266: https://micropython.org/download/esp8266/
ESP32: https://micropython.org/download/esp32/
第二步:安装烧录工具
烧录工具需要在 Python 终端上进行安装,所以我们需要先安装 Python,版本这里选择 Python3.8(听说需要安装3.6以上的版本才行),下载地址:https://www.python.org/downloads/release/python-385/
下载对应版本,我选择的是 Windows 64位,下载安装程序,
运行安装程序,pip 是用来下载和安装 Python 软件包的工具,安装烧录工具就需要用到 pip 命令,可以勾选 “Add Python 3.8 to PATH”,这样就可以直接在控制台运行 Python 了。
在控制台输入 python -V
查看 Python 版本,
Python 环境安装好后,就可以开始安装烧录工具了,在控制台输入以下命令,
pip install esptool
将 NodeMCU 连接电脑(前提是已经安装 USB-TTL 驱动),可以通过 esptool.py read_mac
命令,确认 NodeMCU 是否连接成功,如下图:
第三步:烧录固件
烧录固件前,需要先将 Flash 里的数据擦除,使用 esptool.py --chip esp32 --port COM5 erase_flash
(COM5 是我电脑里与 NodeMCU 连接的端口,具体根据实际情况而定,chip 选项可需要注意)
我在擦除时,遇到了无法访问串口的问题,
could not open port 'COM5': PermissionError(13, '拒绝访问。', None, 5)
开始以为是 Python 权限的问题,后来发现就连串口调试助手也不能访问该串口,最后通过拔插 USB 数据线(同时用串口调试助手测试能否正常打开)解决了这个问题。
擦除成功:
擦除成功后,进入固件所在目录,运行如下命令,即可将固件烧录到开发板中:
# 芯片信号,端口号和固件名称需要根据具体情况修改
esptool.py --chip esp32 --port COM5 --baud 460800 write_flash -z 0x1000 esp32-20220117-v1.18.bin
第四步:确认运行状态
怎么知道开发板是否在运行呢?
这里介绍两种方法:
- 用手机或电脑搜索周围的 Wi-Fi 热点,如果看到类似 “MicroPython-xxxxxx” 名称的热点,说明 NodeMCU 工作正常。(但是我实测是没有热点的,可能默认没打开吧)
- 使用串口终端软件连接开发板,这类软件很多,比如 Putty,XShell 等,我这里使用的是 MobaXterm。
体验交互
先用 “hello world” 来检测测试一下,然后再体验一下 MicroPython 控制 LED 灯。
可以看到蓝色的 LED 被点亮:
部署代码到开发板
MicroPython 的官方提供了一个工具,名为pyboard.py,可以使用它来操作开发板上的文件系统,如文件拷贝、创建文件夹、文件删除等功能。
将 pyboard.py 下载到电脑,就可以使用这个工具了。
下面是原文的一个代码段,功能是让 LED 灯以 1 秒间隔闪烁。
import machine
import time# 指明 GPIO2 管脚
pin = machine.Pin(2, machine.Pin.OUT)# 循环执行
while True:time.sleep(1) pin.on()time.sleep(1)pin.off()
要在开发板上运行这个 Python 代码,我们需要做两件事:
- 将代码保存在一个文件中,命名为 main.py。(必须是这个名字)
- 将 main.py 放到开发板的文件系统中,而且是根目录。
开发板启动时,就会自动执行 main.py 文件中的代码。如何把 main.py 复制到开发板上呢,这就要用到前面提到的 pyboard.py 了。
具体操作如下:
将 main.py 复制到开发板,重启开发板后,main.py 自动运行
pyboard.py --device COM5 -f cp main.py :main.py
运行效果:
我们也可以不复制 main.py ,直接让它在开发板上运行:
pyboard.py --device COM5 main.py
《物联网开发实战》16 实战准备:如何搭建硬件开发环境?(学习笔记)相关推荐
- 【kratos入门实战教程】1-kratos项目搭建和开发环境配置
1.系列目录 [kratos入门实战教程]0-商城项目介绍 [kratos入门实战教程]1-kratos项目搭建和开发环境配置 [kratos入门实战教程]2-实现注册登陆业务 2.概览 经过上一篇的 ...
- ASP.NET Core分布式项目实战(详解oauth2授权码流程)--学习笔记
最近公司产品上线,通宵加班了一个月,一直没有更新,今天开始恢复,每日一更,冲冲冲 任务13:详解oauth2授权码流程 我们即将开发的产品有一个用户 API,一个项目服务 API,每个服务都需要认证授 ...
- ASP.NET Core分布式项目实战(Consent Controller Get请求逻辑实现)--学习笔记
任务20:Consent Controller Get请求逻辑实现 接着上一节的思路,实现一下 ConsentController 根据流程图在构造函数注入 IClientStore,IResourc ...
- 大数据开发工程师基本功修炼之史上最全Linux学习笔记(建议)
我正在参加年度博客之星评选,请大家帮我投票打分,您的每一分都是对我的支持与鼓励. 2021年「博客之星」参赛博主:Maynor大数据 (感谢礼品.红包免费送!) https://bbs.csdn.ne ...
- React学习:脚手架搭建、antd引入-学习笔记
文章目录 React学习:脚手架搭建.antd引入-学习笔记 脚手架搭建 项目目录结构 antd引入 antd附加:数据可放置的三个位置 React学习:脚手架搭建.antd引入-学习笔记 脚手架搭建 ...
- C/C++ 开发 boost 库参考手册整理(2) 【学习笔记】
文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...
- 【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.11-3.12)
[全栈之巅]Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.11-3.12) 本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会 https://gi ...
- 【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.16-3.20)
[全栈之巅]Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.16-3.20) 本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会 https://gi ...
- 【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(4.1-4.10)
[全栈之巅]Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(4.1-4.10) 本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会 https://git ...
- 【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.6-3.10)
[全栈之巅]Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.6-3.10) 本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会 https://git ...
最新文章
- ACMNO.20 C语言-插入队列 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。 输入 第一行,原始数列。 第二行,需要插入的数字。
- project项目管理案例_福清公司开展Project项目管理软件学习培训活动
- java bytebuffer 大小_java – 为什么DirectByteBuffer.array()有额外的大小?
- php如何获取文本中的换行符,如何获取字符里面的换行符
- 黑马程序员_java基础笔记(06)...集合
- 【还是回来了】博客搬家--https://cangbean.github.io
- php安装redis扩展'checking for igbinary includes... configure: error: Cannot find igbinary.h'解决方法...
- SylixOS 任务调度源代码分析
- [技巧]如何绕过MaxtoCode的15天限制
- ftp工具绿色版,四款好用的绿色版ftp工具
- 睡眠不好怎么办?提升睡眠质量的小妙招
- 谈女人 作者:张爱玲
- c1任务如何通过进制转换修改关卡和金币
- ElasticSearch教程——创建索引、类型、文档
- 洪柱森老师介绍--沪师经纪-刘建
- [机器学习]Logistic回归
- \t\tMy philosophy
- Java——【案例】Java坦克大战游戏[版本1]能控制移动的GUI界面坦克大战游戏
- 稳定软件研发团队组织结构
- 主流开源软件是否会被闭源,github能封杀个人账户请转战gitee