0
使用MicroPython控制炫彩灯
大信(QQ:8125036) 今天拿到 电子发烧网上申请到的Banana PI Leaf S3开发板,在中午休息时候,上手试了一下。开发板非常简洁,一个小的板子,两边开了排针孔。它还有一个艺名:香蕉派。
其它各种派多是以 ARM Linux 为基础。但此香蕉派BPI-Leaf-S3则不同,它采用的是乐鑫ESP32-S3 双核 WiFi 和 BLE AI 处理器,可以兼容 ESP32-S3-DevKitC-1、设有内置的 USB 转 TTL 芯片,还增加了对电池和 I2C 连接器的支持。 看了介绍,香蕉派 BPI-Leaf系列是为物联网设计的低功耗微控制器,支持创客教育和STEAM教育的一款开发板。BPI-Leaf-S3采用乐鑫ESP32-S3芯片设计,采用Xtensa®32位LX7双核处理器,主频最高可达240 MHz。支持2.4 GHz Wi-Fi和蓝牙®LE双模无线 通信,外设兼容低功耗硬件设计,深度睡眠模式下功耗仅为10uA。主控制器支持USB和外接3.7V锂电池两种供电方式,可实现自动 电源开关功能。
一、开发板威廉希尔官方网站
规格硬件关键特性: 1. MCU: ESP32-S3,Xtensa® 32 bit LX7 2. 拓展 PSRAM , FLASH 3. 超低功耗 10uA 4. 2.4G WIFI无线 ,蓝牙Bluetooth 5 ,Bluetooth mesh网络 5. GPIO , ADC , TOUCH , PWM , I2C , SPI , RMT , I2S , UART ,LCD,CAMERA ,USB , JTAG 6. 1* 4pin I2C 连接 7. 1 * USB Type-C接口 8. 1 * 2pin 电池接口 9. 1 * Neopixel LED 开发板硬件接口:
开发板硬件规格: SoC | ESP32-S3,Xtensa® dual-core 32-bit LX7 microprocessor | Clock Frequency | 240MHz MAX | Ambient Temperature | -40℃~+85℃ | Internal ROM | 384 KB | Internal SRAM | 320 KB | External FLASH ROM | 8MB | External PSRAM | 8MB | WIFI | IEEE 802.11 b/g/n ,2.4Ghz,150Mbps | Bluetooth | Bluetooth 5 ,Bluetooth mesh | GPIO | BPI-Leaf-S3 has led out 36 available gpios | ADC | 2 × 12-bit SAR ADCs, up to 20 channels | Touch Sensor | 14 | SPI | 4 | I2C | 2 | I2S | 2 | LCD | 1 × LCD interface (8-bit ~16-bit parallel RGB, I8080 and MOTO6800) | CAMERA | 1 × DVP 8-bit ~16-bit camera interface | UART | 3 | PWM | 8 channels 14 bits | MCPWM | 2 | USB | 1 × full-speed USB OTG,female Type-C socket | USB Serial/JTAG controller | 1,CDC-ACM ,JTAG | Temperature sensor | 1,range of –20 °C to 110 °C | SD/MMC | 1 × SDIO host controller with 2 slots,SD 3.0,SD 3.01,SDIO 3.0,CE-ATA 1.1,MMC 4.41,eMMC 4.5,eMMC 4.51 | TWAI® controller | 1 ,compa tible with ISO 11898-1 (CAN Specification 2.0) | General DMA controller (GDMA) | 5 transmit channels and 5 receive channels | RMT | 4 TX channels,4RX channels.Eight channels share a 384 x 32-bit RAM | Pulse Count Controller | 4 independent pulse counters (units).Each unit consists of two independent channels | Timers | 4 × 54-bit general-purpose timers.1 × 52-bit system timer.3 × watchdog timers | External crystal oscillator | 40Mhz | RTC and LowPower Management | Power Management Unit (PMU) + Ultra-Low-Power Coprocessor(ULP) | Deep-sleep consumption current | 10uA | Operating Voltage | 3.3V | Input Voltage | 3.3V~5.5V | Maximum discharge current | 2A@3.3V LDO | USB charge | Support | Maximum charging current | 500mA | Neopixel LED | 1 |
二、连接电脑建立开发环境 BananaPI Leaf S3开发板使用的是Type-C 的接口与PC连接,找一个标准的Type-C USB线插入开发板和电脑,即完成连接。 连接线后,开发板上的一个LED亮起,表示已经上电。其它有个LED微微亮起,看来是板子有默认的系统在运行中。 此时在PC上点开我的电脑,设备管理器,查看这个设备的接口,可以看到是USB转串,但是没有提示安装任何驱动程序,直接就支持的。这个可真是方便。
在得到开发板的串行通讯口后,就可以打开串行工具软件来通讯。这里使用的是SureCRT多功能超级终端软件,如下图创建并设置好串行通讯连接,点击连接即进入到了板子里了。
在串行里输入 help() 即出现一些提示,包括怎么控制 LED,怎么连接网络灯,连帮助都是在线的,真是太方便了,但这样是不是占用板上资源呢。
从串行输出信息看,该板子串行口处于一个命令交互模式,从提示信息可以看到它是MicroPython ,这很有意思。笔者对Python是非常的熟悉了,对这样一个 单片机上运行MicroPython更觉得有意思,同时也疑惑,它能跑的起来吗?跑的流畅吗,速度怎么样,会很费系统资源吗,怎么完成硬件的IO操作,怎么完成硬件通讯以及逻辑处理,能做些什么呢等等。 既然是开发python脚本,那么任何一个文件编辑器就应该可以了,我电脑上刚好安装Python自带的IDE,这个pythonIDE 虽然比较简陋,但编写和脚本还是绰绰有余了,赖的去装其它的IDE开发工具,就用它了。
三、了解学习MicroPython 带着以上这些疑,先去了解了一下MicroPython,简单的介绍如下: MicroPython是Python的一个精简版本,它是为了运行在单片机这样的性能有限的微控制器上,最小体积仅256K,运行时仅需16K内存。 MicroPython是基于Python 3.4的语法标准。因为要适应嵌入式微控制器,所以裁剪了大部分标准库,仅保留部分模块如math、sys的部分函数和类。此外,很多标准模块如json、re等在MicroPython中变成了以u开头的ujson、ure,表示针对MicroPython开发的标准库。 现在MicroPython除了可以运行在最初开发的pyboard微控制器上外,还可以运行在大量基于ARM的嵌入式系统,如Arduino,这样就可以通过Python来非常方便地开发自动控制、机器人等复杂的应用。 MicroPython还有很多高级功能,例如交互式提示、任意精度整数、闭包、列表理解、生成器、异常处理等。 然而,它足够紧凑, MicroPython 设计时是尽可能与普通 Python 兼容,这样可以将代码从桌面传输到微控制器或嵌入式系统。 MicroPython是在裸机上运行的完整 Python 编译器和运行时。 您将获得一个交互式提示 (REPL) 以立即执行命令,以及从内置文件系统运行和导入脚本的能力。 MicroPython尽量与 Python(称为CPython)尽可能兼容,包括用于访问低级硬件的“机器”等模块也实现了一些核心Python库。 一个简单的MicroPython是操作硬件的例子, 直接在串行的终端上输入命令即可:
- import machine
- # 点亮 LED1 ,假设LED1接在GPIO1上,并且共阴极
复制代码
这样就可以这样简单的操作一个LED的点亮和关闭,也可以打印log到串口窗口 四、操作GPIO点亮开发板的炫彩灯 了解了Banana PI Leaf S3开发板上的MicroPython,那么就可以来做点测试了,首先找到有段控制LED灯的代码,在串口交互行里输入以下python脚本,可以看到炫彩灯的变化: 脚本如下:复制后直接copy到串口终端里。
- from machine import Pin
- from neopixel import NeoPixel
- import time
- pin_48 = Pin(48, Pin.OUT)
- np = NeoPixel(pin_48, 1,bpp=3, timing=1)
- RED = (255, 0, 0)
- ORANGE = (255, 100, 0)
- YELLOW = (255, 255, 0)
- GREEN = (0, 255, 0)
- CYAN = (0, 255, 255)
- BLUE = (0, 0, 255)
- PURPLE = (180, 0, 255)
- WHITE = (255, 255, 255)
- OFF = (0, 0, 0)
- color_list = [RED,ORANGE,YELLOW,GREEN,CYAN,BLUE,PURPLE,WHITE,OFF]
- brightness = 0.1
- while True:
- for i in color_list:
- color = (round(i[0]*brightness),round(i[1]*brightness),round(i[2]*brightness))
- np[0] = color
- np.write()
- time.sleep(0.2)
复制代码
在串口终端输入带逻辑控制的的脚本后,回三次车,脚本即开始自动执行,执行中按Ctrl-C中止执行,退回到交互命令方式。
五、上手试用总结 通过不到半小时的试用,很快上手Banana PI Leaf S3开发板的micropython开发了,也没有安装其它专用的工具,直接使用notepad或python IDE工具,即可上手开发,简单快捷,方便轻便,可谓老少皆宜。再对照micropython文档与硬件的接口资料,就可以专注的开发设计应用了。 体验下来,这版子的开发体验正如其名里的一个字:真香。
|
-
7.png
(44.35 KB, 下载次数: 0)
|