micropython 固件开发_NodeMCU 开发板刷入 MicroPython 固件并通过 Atom 进行编程

webchat.jpg

MicroPython 是对 Python 3 语言的一种精简的实现,主要是为了在微控制器这种硬件资源受限的环境中可以高效地运行,因此做了很多针对性的优化。

它类似于一个小型的 Python 操作系统,可以通过串口与内置的 Python 解释器直接交互,也可以上传程序文件在开机上电后自动运行。

MicroPython 支持多种开发板,包括价格很实惠的基于 ESP8266 芯片的 NodeMCU。

一、刷入固件

我这里使用的开发板是从网上购买的 NodeMCU ,出厂时预先刷好了基于 Lua 语言编程的固件。

为了使用 MicroPython ,需要先对该开发板重新刷写固件。

5dde12306d761.jpg

1. 准备工作

首先进入 MicroPython 官方的下载页面,下载最新版的针对 ESP8266 硬件的固件包。

我这里使用的是 esp8266-20180511-v1.9.4.bin 。

刷写软件可以使用支持多种操作系统的命令行工具 esptool。对于已经装好 Python 环境的电脑,直接使用 pip 命令安装即可:

pip install esptool

2. 刷入固件

首先将 NodeMCU 开发板连接至电脑,Mac 系统可以使用 ls /dev/tty.usbserial* 命令查看当前系统已经检测到的 USB 串口:1

2$ ls /dev/tty.usbserial*

/dev/tty.usbserial-14110

使用 esptool.py -p flash_id 命令确认该串口是否能成功检测到 ESP8266 设备:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15$ esptool.py -p /dev/tty.usbserial-14110 flash_id

esptool.py v2.5.1

Serial port /dev/tty.usbserial-14110

Connecting....

Detecting chip type... ESP8266

Chip is ESP8266EX

Features: WiFi

MAC: 2c:3a:e8:06:aa:7e

Uploading stub...

Running stub...

Stub running...

Manufacturer: c8

Device: 4016

Detected flash size: 4MB

Hard resetting via RTS pin...

使用 esptool.py -p erase_flash 命令对开发板进行擦除操作(以防万一):1

2

3

4

5

6

7

8

9

10

11

12

13

14$ esptool.py -p /dev/tty.usbserial-14110 erase_flash

esptool.py v2.5.1

Serial port /dev/tty.usbserial-14110

Connecting....

Detecting chip type... ESP8266

Chip is ESP8266EX

Features: WiFi

MAC: 2c:3a:e8:06:aa:7e

Uploading stub...

Running stub...

Stub running...

Erasing flash (this may take a while)...

Chip erase completed successfully in 2.5s

Hard resetting via RTS pin...

擦除完成后即可使用 esptool 工具的 write_flash 命令将 MicroPython 固件刷入开发板。

(完整命令为:esptool.py -p --baud 460800 write_flash --flash_size=detect -fm dio 0 )1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22$ esptool.py -p /dev/tty.usbserial-14110 --baud 460800 write_flash --flash_size=detect -fm dio 0 ~/Downloads/esp8266-20180511-v1.9.4.bin

esptool.py v2.5.1

Serial port /dev/tty.usbserial-14110

Connecting....

Detecting chip type... ESP8266

Chip is ESP8266EX

Features: WiFi

MAC: 2c:3a:e8:06:aa:7e

Uploading stub...

Running stub...

Stub running...

Changing baud rate to 460800

Changed.

Configuring flash size...

Auto-detected Flash size: 4MB

Flash params set to 0x0240

Compressed 604872 bytes to 394893...

Wrote 604872 bytes (394893 compressed) at 0x00000000 in 9.9 seconds (effective 490.0 kbit/s)...

Hash of data verified.

Leaving...

Hard resetting via RTS pin...

二、固件测试

刷写固件的操作完成后,可以使用 Mac 系统自带的串口调试工具 cu 连接 USB 串口,对刚刷好的开发版进行测试:

sudo cu -l -s

效果如下:1

2$ sudo cu -l /dev/tty.usbserial-14110 -s 115200

Connected.

终端窗口提示 Connected 之后,按下 NodeMCU 板子上的 RST (Reset) 按钮。

如固件刷写成功,则终端在输出部分乱码后会立即进入 Python 解释器界面:1

2

3MicroPython v1.9.4-8-ga9a3caad0 on 2018-05-11; ESP module with ESP8266

Type "help()" for more information.

>>>

在解释器界面下,输入 help() 命令获取基本的帮助信息:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28MicroPython v1.9.4-8-ga9a3caad0 on 2018-05-11; ESP module with ESP8266

Type "help()" for more information.

>>> help()

Welcome to MicroPython!

For online docs please visit http://docs.micropython.org/en/latest/esp8266/ .

For diagnostic information to include in bug reports execute 'import port_diag'.

Basic WiFi configuration:

import network

sta_if = network.WLAN(network.STA_IF); sta_if.active(True)

sta_if.scan() # Scan for available access points

sta_if.connect("", "") # Connect to an AP

sta_if.isconnected() # Check for successful connection

# Change name/password of ESP8266's AP:

ap_if = network.WLAN(network.AP_IF)

ap_if.config(essid="", authmode=network.AUTH_WPA_WPA2_PSK, password="")

Control commands:

CTRL-A -- on a blank line, enter raw REPL mode

CTRL-B -- on a blank line, enter normal REPL mode

CTRL-C -- interrupt a running program

CTRL-D -- on a blank line, do a soft reset of the board

CTRL-E -- on a blank line, enter paste mode

For further help on a specific object, type help(obj)

>>>

更多的交互命令和详细的指导手册可以参考官方文档

使用如下的命令,能够让 GPIO2 上连接的 LED(即 ESP8266 模块内置的蓝色 LED)以 1s 的频率闪烁:1

2

3

4

5

6

7

8

9

10

11>>> from machine import Pin

>>> import time

>>> p=Pin(2,Pin.OUT)

>>> while True:

... p.on()

... time.sleep(1)

... p.off()

... time.sleep(1)

...

...

...

三、配置 Atom 编程环境

当前可以使用多种软件作为简单的 IDE 对 MicroPython 开发板进行编程。主要是提供连接串口的终端,可以交互地执行 Python 命令,以及程序文件的上传和下载。

我个人比较喜欢 Atom 编辑器搭配上

5dde123431ca4.jpg

Atom 的配置较简单,主要步骤如下:

从 Atom 官网下载对应系统版本的安装程序并安装

通过 Atom 内置的插件管理器搜索安装 pymakr 插件,安装完成后重启编辑器

编辑器重启后底部自动出现 pymakr 的终端窗口,点击终端右上角设置 - 全局设置,找到设备地址并改为开发板连接的端口号

直接点击终端顶部的连接按钮即可完成串口连接

此时的 Atom 编辑器,可以通过底部的终端窗口直接输入 Python 命令。

也可以在编辑器中新建项目目录,并创建 main.py 源文件。编辑好 Python 代码后,点击执行按钮即可直接运行,或者点击上传按钮将代码文件上传至开发板。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值