1035|1

422

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

【得捷电子Follow me第1期】Raspberry Pi Pico的敏捷开发的总结 [复制链接]

  本帖最后由 北方 于 2023-7-13 16:16 编辑

Raspberry Pi Pico的敏捷开发的总结

1 感谢得捷电子和EEWORLD提供的项目开发机会,通过学习视频和文档,熟悉了Raspberry Pi Pico使用和开发 。这个过程最大的体会就是敏捷开发,也就是使用最快捷的方式熟悉并掌握开发硬件和软件,并且高效地开发出可以应用的实际项目。

这样的快速开发,可以使用记忆MicroPython的thonny,还同时支持基于C++开发的VS code,分别在如下两个帖子中描述。这样把注意力在代码和逻辑实现,在应用上提高了开发和使用效率。

https://bbs.eeworld.com.cn/thread-1242823-1-1.html

https://bbs.eeworld.com.cn/thread-1247125-1-1.html

 

2 总结视频

基于上述的项目总结

lv_0_20230713160842

 

 

3 项目总结报告

     本次活动用到的硬件有5项

主控板:Raspberry Pi Pico w ——RP2040

扩展板:103100142——方便将pico w开发板的信号引出,连接到各种 grove 设备

屏幕:104020208——I2C接口 单色 OLED显示屏,可以通过编程显示各种文字、图案

外设1:107020000——蜂鸣器,可以通过GPIO驱动发出声音

外设2:109020022——高性能、高集成度、低功耗的多模卫星定位导航模块

    从而完成以下规定的基本任务和扩展,

 

3.1 任务1:熟悉thonny软件与micropython的基本语法

   基于Rpi Pico W的开发工具有很多选择,其中thonny是最便捷和快速的,安装方法简单,在已经安装好python的电脑上,使用如下pip命令安装,

    pip install thonny

    启动后,这个工具分为上下两个主视窗,上面的是代码编辑区域,下面是输出区域。右下角的硬件状态显示当前的软件和硬件状态,即可以用本地python调试运行,也可以直接在PICO的硬件平台上编辑后运行。

    MicroPython是标准python语句的一个子集,可以在https://micropython.org/help/ 这个官网上查到使用的说明和更新的手册。具体到Pico开发板,有专门的页面,在标准库之外,还列出了完整的外设库。了解整个开发环境和工具后可以通过以下简单代码完成测试。简单设定主频的代码如下

    import machine

    machine.freq()          # get the current frequency of the CPU

    machine.freq(240000000) # set the CPU frequency to 240 MHz

    点击保存,可以在Pico开发板上保存,并在上电后自动运行。

    基于Raspberry Pico W的micropython固件更新及开发,使用thonny就可以快速完成,避免了复杂过程,快捷有效。

 

3.2 任务2:驱动外设

本任务使用的搭配器件:有Raspberry Pi Pico w开发板、GROVE SHIELD、GROVE OLED扩展板、GROVE BUZZER扩展板

3.2.1 驱动LED

本任务驱动板载LED,直接调用外设库machine,然后对led直接写入数值,加上延时函数就可以简单完成,代码如下,

LED控制运行成功。

3.2.2 驱动OLED显示屏

这里选用的OLED是I2C驱动的0.96点阵128x64的OLED,这样,这款SSD1315驱动,可以直接下载SSD1306驱动使用,

链接已隐藏,如需查看请登录或者注册
, 下载后直接复制到Pico W开发板,

OLED显示控制成果,其中自己制作了得捷的logo做成buff文件,显示代码有误,还需要再找找明确的说明才好。

3..2.3 驱动蜂鸣器

    驱动蜂鸣器,可以用直接用pwm的驱动控制实现,因为语音的感受程度在20Hz~2000Hz之间,完全在PWM驱动范围内无压实现,这个范例实现的是频率从200Hz到2400Hz的逐步变化,到最高之后再从最低开始重新升高频率。

硬件连接有了grove开发板,就变得极其简单,如下,其中GROVE接口上有编号,这里选择了D20端子对应Pizzo的SIG信号线,运行通过。

 

3.3同步网络时间

3.3.1 同步网络时间,主要是学习网络的连接和参数查看等方法,网络同步时间是其中的应用。网络同步时间是专门提供一个网络时间同步服务器,不断给访问提供时间反馈和时间戳,这样,发送者从发送和接受的时间对比,可以比较精确地算出网络时延补偿,减去反馈的时间戳就是实际时间。这个就是ntp协议的主要内容。这个功能可以自己计算,也可以直接引入包。这个功能,只用Raspberry Pi Pico w开发板就可以实现的。

 

3.3.2 network模块用法

Network模块是标准库,具体用法参加https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf

总体来说,这个和arduino的wifi库相似,都是高度封装,只需要输入联网热点数据,依次执行连接,就可以读取信息并反馈数据。具体示例如下。

 

3.3.3 连接网络、查看网络参数等用法,

 

3.3.4 实现通过网络同步系统时间。

这个采用封装的ntptime,首先在thonny的会话框,如下安装ntptime。然后就可以直接引入并使用,见如下代码

 

 

3.4 实现定位功能

3.4.1 掌握GNSS模块用法

器件:Raspberry Pi Pico w开发板、GROVE - GPS扩展板

GNSS是GPS定位功能,这个是Air530模块支持的全球定位系统模块,这个模块是通过UART串口进行数据交互的,具体搜索卫星和卫星定位的算法都是在模块内实现的。在pico W中使用GPS功能,更进一步把UART的AT命令会话过程封装成gps库,可以直接简化读取。

 

3.4.2实现定位功能。

首先需要安装GPS模块,访问

链接已隐藏,如需查看请登录或者注册
,然后下载其中的micropyGPS.py,

 

 

 

3.5 使用C++实现OV2640摄像头的访问

    使用MicroPython实现了很多功能,逻辑清楚,效果显著,不过美中不足的是对于PicoW的资源利用不充分,比如DMA等高速访问都不能简单实现。所以,还是要考虑用C++的方法来实现,这里对于摄像头的访问就需要比较大的数据交换,最适合体现这个过程。

    在windows下的visual code实现,也可以用树莓派4B在linux环境下实现,也是很有意思的,不过在windows实现也是大同小异。访问

链接已隐藏,如需查看请登录或者注册
下载并安装,可以直接创建PICO SDK的开发环境并直接实现。

    摄像头的端口是SCCB协议和并行数据口,因为PicoW的端口有限,所以实际上还是用I2C来实现SCCB协议的模拟实现,用SCCB来传输数据包,这样的速度不如并行端口来实现的快,这里的硬件连接使用的SIOC,SIOD作为SCK和SDIO,另外是XCLK等行同步命令和列同步信号,实现扫描。访问的方法是通过i2c的地址0x60访问,写入不同的OV2640地址,分别确定为命令和数据,这样在完成初始化之后,读取I2C的通道数据直接入DMA写入设定的内存buff中。 在对于高速传输的要求,还混合编程,还采用了image.pio的汇编代码实现快速的DMA初始化

     这个开发的过程中,使用c++比micropython负责很多,但是即使这样,也是非常好用的,同时还可以支持更多的资源和能力,是对于复杂一些程序的更优选择。

 

4 代码提交,按照上面的顺序依次为

 

任务1
task1.py (103 Bytes, 下载次数: 0)

任务2
task2_1.py (148 Bytes, 下载次数: 0)
task2_2.py (2.35 KB, 下载次数: 0)
task2_3.py (237 Bytes, 下载次数: 0)

任务3
task3.py (477 Bytes, 下载次数: 0)
 

任务4

task4.py (576 Bytes, 下载次数: 0)
 
任务5
rp2040_ov2640-main.zip (7.14 KB, 下载次数: 0)

 

 

 

 

最新回复

楼主的在视频中讲的很好,测试的思路清晰 推荐收藏观看   详情 回复 发表于 2023-7-14 07:33
点赞 关注
 
 

回复
举报

6609

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

楼主的在视频中讲的很好,测试的思路清晰

推荐收藏观看

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表