1. 入门使用
1.1. 硬件概述
开元主控
供电方式:USB TypeC(DC: 5V)
处理器: 树莓派 RP2040,双核 ARM Cortex-M0,主频:133MHz;
外设:1xUSB;2xUART;2xSPI;3channel ADC;2xI2C;8个可编程IO状态机,可实现自定义UART,PWM等。
存储:Flash:4MiB; SRAM:264kB;
显示屏:2.4英寸,分辨率320*240,IPS全视角液晶显示屏
主控由两部分组成,通过排线连接,采用M2铜柱固定。
- 主控结构简介:
两个用户按键
8个Grove标准接口(HY2.0-4P)
板连接器
树莓派 RP2040
用户LED
USB TypeC 接口
Flash 编程按键
液晶显示屏
无源蜂鸣器
1.2. 引脚连接
板载模块
描述 |
引脚 |
|---|---|
蜂鸣器 |
15 |
按键1 |
20 |
按键2 |
21 |
用户LED |
25 |
Note
蜂鸣器为无源蜂鸣器;板载按键按下接地;用户LED高电平亮
拓展接口
主控拓展接口通过连接线与外部模块连接,接口为:HY2.0-4P,套件附带的连接线线序说明如下:
主控拓展接口连接说明
描述 |
黑色线(地) |
红色线(电源) |
白色线(信号2) |
黄色线(信号1) |
|---|---|---|---|---|
端口1 |
GND |
VCC(5V) |
16/UART0_TX |
17/UART0_RX |
端口2 |
GND |
VCC(5V) |
18 |
19 |
端口3 |
GND |
VCC(5V) |
26/ADC0 |
27/ADC1 |
端口4 |
GND |
VCC(5V) |
22 |
28/ADC2 |
端口5 |
GND |
VCC(5V) |
0 |
1 |
端口6 |
GND |
VCC(5V) |
2 |
3 |
端口7 |
GND |
VCC(5V) |
4/UART1_TX |
5/UART1_RX |
端口8 |
GND |
VCC(5V) |
6 |
7 |
通过程序查询端口引脚连接
'''
导入 get_port_pin 方法
'''
from openaie import get_port_pin #
'''
查看端口引脚
@ports: 端口号 1~8
@signal: 信号线 1或2
Example:
# 查看端口1,信号1(黄色信号线 )引脚
print(get_port_pin(1, 1))
'''
get_port_pin(ports, signal)
1.3. 软件安装
点击 Thonny 下载IDE,根据提示安装即可。IDE安装成功后,打开软件,如下图所示:
驱动安装
一般情况系统会自动安装驱动,若没有找到端口请查看 链接
1.4. 运行测试
通过TypeC数据线连接开发板到电脑,打开软件,如下图所示:
点击连接设备
如果是首次运行,先新建文件
点击运行,在弹出的提示框中选择 Raspberry Pi Pico
输入文件名 demo.py,点击确认
输入或复制示例程序到程序编辑框内,点击“运行”,观察。
Example: 拓展模块综合测试
'''
开元套件测试案例
硬件连接:
可编程全彩LED -- 端口1
按键组 -- 端口2
电位器 -- 端口3
舵机 -- 端口4
温湿度传感器 -- 端口5
光照强度传感器 -- 端口6
电机风扇 -- 端口7
超声波测距传感器 -- 端口8
实验现象:
可编程全彩LED模块 3个LED 红蓝绿色跳变
显示屏显示温湿度,光照强度,电位器值,超声波测量结果,按键状态
电位器控制舵机和风扇转动(顺时针)
'''
import time, lcd
from openaie import *
from machine import Timer
rgb = rgb_led(1) # 可编程全彩LED -- 端口1
bt2 = button_group(2) # 按键组 -- 端口2
p = potentiometer(3) # 电位器 -- 端口3
s = servo(4) # 舵机 -- 端口4
th = th_sensor(5) # 温湿度传感器 -- 端口5
light = light_sensor(6) # 光照强度传感器 -- 端口6
m = motor_fan(7) # 电机风扇 -- 端口7
us_sensor = ultrasonic(8) # 超声波测距传感器 -- 端口8
lcd.rotation(0)
lcd.clear(color=0)
c = 0
def rgb_display(a):
global c
if c == 0:
for i in range(3):
rgb.set(i, (20, 0, 0))
elif c == 1:
for i in range(3):
rgb.set(i, (0, 20, 0))
elif c == 2:
for i in range(3):
rgb.set(i, (0, 0, 20))
rgb.display()
c += 1
if c == 3:
c = 0
# 创建并开启500ms周期定时器
tim = Timer()
tim.init(period=500, mode=Timer.PERIODIC, callback=rgb_display)
time_sensor_update = time.ticks_add(time.ticks_ms(), 500)
read_flag = False
while True:
if time.ticks_diff(time.ticks_ms(), time_sensor_update): # 500ms间隔
if read_flag:
read_flag = False
time_sensor_update = time.ticks_add(time.ticks_ms(), 500)
try :
th_info = "温度: %.1fC 湿度: %d%%"%(th.read_temperature(), th.read_humidity())
light_info = "光照强度: %dlux"%light.read()
dis_info = "距离: %dcm"%us_sensor.read()
lcd.clear(color=0)
lcd.draw_string(10, 16, th_info, fc=(0,0,255), bc=(0,0,0))
lcd.draw_string(10, 38, light_info, fc=(0,0,255), bc=(0,0,0))
lcd.draw_string(10, 60, dis_info, fc=(0,0,255), bc=(0,0,0))
except:
pass
else:
read_flag = True
try :
us_sensor.measure()
except:
pass
val = p.read()
m.set(val)
s.write(math_map(val, 0, 100, 0, 180))
if bt2.is_press(1):
lcd.draw_string(10, 110, "按键1 按下", fc=(255,0,0), bc=(0,0,0))
else :
lcd.draw_string(10, 110, "按键1 释放", fc=(0,255,0), bc=(0,0,0))
if bt2.is_press(2):
lcd.draw_string(110, 110, "按键2 按下", fc=(255,0,0), bc=(0,0,0))
else :
lcd.draw_string(110, 110, "按键2 释放", fc=(0,255,0), bc=(0,0,0))
lcd.draw_string(10, 82, "电位器值: %d "%val, fc=(0,0,255), bc=(0,0,0))
lcd.display()
time.sleep_ms(50)
1.5. 固件烧录
系统固件存放在Falsh内存中,按住 Flash 按键,再连接 USB,主控上电后释放按键,可以看到系统出现“RPI-RP2(H:)”盘符。 进入 链接 (提取码:rcx6) 下载所需版本固件(“firmware.uf2”文件),将固件复制进去即可完成固件烧录。
一般情况主控开机会显示当前固件版本,没有显示时可通过运行程序,查看主控当前运行的固件版本:
import openaie
print("version:", openaie.__version__)
Note
由于文档、固件持续更新,为保证使用体验的一致性,在测试案例前,请先升级固件到最新版本。
1.6. 开机运行
通过 Thonny IDE 运行的程序,要开机运行需要将程序保存到“main.py”中。
Note
一般测试保存文件名不要为“main.py”。当“main.py”程序有无限循环时可能出现无法连接的情况,解决方法请查看“异常处理”章节。
1.7. 异常处理
1. 设备忙
解决方法:点击“停止/重启后端进程”,等待片刻;或者先点击“选择设备”,后点击“停止/重启后端进程”。
2. 端口无法连接
解决方法:重新插拔USB
3. 找不到端口
解决方法:断开USB,按住板载按键1,再连接USB,上电后释放按键。
4. 未知错误
解决方法:烧录资料链接固件中的“nuke.uf2”文件擦除整个Falsh后,再烧录新固件。