本帖最后由 latera 于 2022-12-31 16:14 编辑
通过Arrow 有好料的活动,申请了一个RP2040开发板来测试一下。 DFR0959 beetle RP2040的大小就比拇指头大一点,相对的袖珍。 引出8个引脚,可以做GPIO,SPI,UART,I2C,和ADC功能开发。 Beetle比树莓派 PICO小很多,自然,接出来的引脚接也少了一大半。不过,我只是简单尝一下鲜而已。IO口多少也不太重要。Pico样子如下: Beetle和Pi的电路结构其实也差不多。一个RP2040就是全部。电路可以参考如下: 板上有2个按键,一个是复位按键,一个是boot按键,用于烧录程序的。另外就是一个TypeC。 板上还有一个小led灯,(但是电路图上)没有找到说明。但是可以在Arduino开发中知道这个led是接到RP2040的GPIO13。 DFR0959介绍资料可以参考下面的网址:(官网) 下面介绍一下,RP2040如何开发(把玩),其实Beetle的开发可以完全参考树莓派 Pico 的资料,树莓派 Pico 的中文网址如下: https://pico.org.cn/ 教程中介绍的开发方式有三种 基于MicoPython SDK开发 基于Arduino开发 基于C/C++开发 我这尝试使用使用Arduino开发和MicoPython SDK开发。 首先是Arduinoa开发,上面dfroot的wifi网址就是重点介绍用Arduino开发的。 第一步肯定是安装Arduino IDE和Beetle的开发板 下载后直接安装。第一次打开Arduino时,可能会自动安装相关的工具,在窗口下方的Output页面会提示安装过程,等它安装结束即可。 确认后退出“Preferneces”窗口,Arduino就会自动下载开发包。如果不放心,可以关闭再重启。 第二步就是将Beetle通过USB接入电脑,在Arduino IDE中的“Select Board”可以找到新识别的串口设备,我的是COM12,依次选择“DFRobot Beetle RP2040”和COM口。就相这个开发工程选好了开发平台。 第三步,码代码和下载测试。简单代码如下,其中 LED_BUILITIN是板载的led,D0和D3是我自己加的2个led。 void setup() { pinMode(LED_BUILTIN, OUTPUT);//设置引脚为输出模式 pinMode(D0, OUTPUT); pinMode(D3, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); //为端口写高电平 digitalWrite(D0, HIGH); digitalWrite(D3, HIGH); delay(1000); // 延时一秒钟 digitalWrite(LED_BUILTIN, LOW); //为端口写低电平 digitalWrite(D0, LOW); digitalWrite(D3, LOW); delay(1000); //延时一秒 } 点击Arduino左上方的“->”箭头就可以一步完成编译和下载。下载之后,Beetle会自动重启。测试效果如下: 通过“Sketch”->“Show Sketch Folder”查看到生成的下载文件,文件格式是.uf2。可以通过Boot重刷固件。(下面有讲) MicroPython SDK开发, 因为MicroPython需要用到官方的固件,先介绍一下用Boot按键重刷固件的方式。 按住Boot按键,讲Beetle接入电脑。这时电脑会识别出一个U盘,直接将.uf2文件拖入U盘,就完成了烧录。 MicroPython SDK开发第一步 烧录固件。 第二步 串口连接 使用串口终端工具或者串口调试工具,连接Beetle。我使用的是MobaXterm,连接方法就不多说了,串口格式115200,8,1,无校验。 使用参考如下: https://datasheets.raspberrypi.org/pico/sdk/pico_python_sdk.pdf 第三步 码代码 首先通过简单的Hello world测试,在终端上输入print("Hello, Beetle!") ,Beetle就会通过终端回显以上命令和返回“Hello, Beetle!” 显示结果如下: 然后可以测试一下板载led。 在终端中依次输入2行 from machine import Pin led = Pin(13, Pin.OUT) 这就完成对GPIO13的引脚配置,分别输入 led.value(1) led.value(0) 可以实现led的亮和灭。其中1表示高电平,对应led亮。 当然,你也可以让它通过定时来循环闪烁。程序如下: from machine import Pin, Timer led = Pin(13, Pin.OUT) tim = Timer() def tick(Timer): global led led.toggle() tim.init(freq=2.5, mode=Timer.PERIODIC, callback=tick) 需要注意的是led.toggle() 和 tim.init(freq=2.5, mode=Timer.PERIODIC, callback=tick)之间要有多行相隔才行。 接着是板载的ADC测试。RP2040有内部温度的ADC,可以用来测试。测试代码如下 import machine import utime sensor_temp = machine.ADC(4) conversion_factor = 3.3 / (65535) while True: reading = sensor_temp.read_u16() * conversion_factor temperature = 27 - (reading - 0.706)/0.001721 print(temperature) utime.sleep(2) 其中ADC(4)为内部温度检测的ADC通道。温度计算方法为:检测电压为0.706V时,对应温度为27摄氏度,电压每升高0.001721V,对应温度降低1摄氏度。 输入最后一行后,多次换行,保证while命令结束,之后Beetle就会每2s回显一次温度值 以上就是初步的评测,有时间再尝试用C/C++的方式。 |