基于树莓派RP2040的游戏机开发板设计
本文使用树莓派RP2040设计了一个简易的游戏机开发板,目的是实现游戏机功能。目前只完成初步设计和打板,初步调试通过,完成了LED指示和按键功能,其它功能需要后续完善。
标签
RP2040
WeDesign活动
chinaking
更新2023-07-04
上海大学
497
  • 概述

本文使用树莓派RP2040,设计了一个游戏机开发板,计划实现经典游戏机功能。

系统主要由电源、单片机最小系统、开关量输入、LED显示、PWM输出、SPI屏幕接口、MP3播放器接口等部分组成。

    目前已经完成打板,并初步调试完成了按键输入及LED显示功能。其它功能需要后续逐步完善。

  • 搜集素材

搜集素材主要参考了以下资料

树莓派官网 ,PICO开发板的设计文档

【核心板】RP2040最小系统

https://oshwhub.com/course-examples/he-xin-ban-rp2040-zui-xiao-xi-tong

该资料比较全面,对硬件设计及软件调试有很大帮助。

电子森林网站 基于树莓派PICO的一些项目创意

https://www.eetree.cn/doc/detail/2293

下面是microPython开发的几个例程

https://blog.csdn.net/qq_50955050/article/details/121085780

https://bytesnbits.co.uk/raspberry-pi-pico-spi-lcd-display/

https://www.instructables.com/Mandelbrot-Set-on-Pi-Pico-ILI9341/

  • 硬件设计

硬件设计方案如下图所示

FsULeSV24AloSxeFy2pZBhE7OtRG

电路原理图主要参考了树莓派PICO,另外增加了一些外围电路和接口。

电源电路

FtbfHjl6WkSiv5l5tRiOD0UZmAiB

按键输入

Fomd63na6v5J5F9IGgmuN7vsQ9JE

手柄输入

Fkt2xO-W-GLewdfGwCJ-nfUeCs3u

LED及PWM输出

FtSor5NuoHT5G3PSARotDSLJkU4C

SPI屏幕

Fuoa7OdNgGMpRRnTWS99zsS6Fhcy

MP3播放模块接口

FhLfSvsgh9dqGWoZRjd8MSOOD0Hy

单片机最小系统

FilBdvqsVmiqBH_QiTLTmbGTo_6P

 

PCB效果图

Fo05Bp4F06w8L6B1bmy_s7Fl-Sqw

下面是焊接效果

FhpBZ3fFv7JSlXcOj00BBThEBRfI

  • 软件设计

 软件设计,目前使用microPython进行开发。首先需要下载并刷入固件。

按住bootsel按钮,将板子通过USB连接电脑,就能发现电脑多出了一个USB设备,此时已经进入bootloader模式,松开按钮,将下载的uf2文件拖入U盘即可。

然后板子会自动重启,如果发现设备管理器增加了一个串口,说明固件更新成功。

然后使用Thonny软件即可进行开发。下面是测试例程。控制两个指示灯交替闪烁

from machine import Pin 
import time #导入时间包
led1=Pin(21,Pin.OUT) #定义引脚编号21(LED灯1),引脚模式为输出#
led2=Pin(22,Pin.OUT) #定义引脚编号21(LED灯2),引脚模式为输出#
while True:
    led1.value(1)
    led2.value(0)
    time.sleep(1)
    led1.value(0)
    led2.value(1)
    time.sleep(1)

下面是按键控制指示灯的程序

from machine import Pin 
import time #导入时间包
key1=Pin(11, Pin.IN, Pin.PULL_UP)
key2=Pin(12, Pin.IN, Pin.PULL_UP)
key3=Pin(13, Pin.IN, Pin.PULL_UP)
key4=Pin(14, Pin.IN, Pin.PULL_UP)

key5=Pin(15, Pin.IN, Pin.PULL_UP)
key6=Pin(16, Pin.IN, Pin.PULL_UP)
key7=Pin(17, Pin.IN, Pin.PULL_UP)
key8=Pin(18, Pin.IN, Pin.PULL_UP)

led1=Pin(21,Pin.OUT) 
led2=Pin(22,Pin.OUT) 
while True:
 if (key1.value()  & key2.value()  & key3.value()  & key4.value() )== 0:
    led1.value(1)
 else:
    led1.value(0)
    
 if key5.value() == 0 or key6.value() == 0 or key7.value() == 0 or key8.value() == 0:
    led2.value(1)
 else:
    led2.value(0)   
    

 

 

效果演示

使用指示灯测试程序时,绿色和红色指示灯会交替闪烁。

使用按键测试程序时,按下左侧4个按键,绿色灯亮,按下按下右侧4个按键,红色灯亮。

Fpv7REHcglV2h3XhZN8VuuG-tgNB

FsBjWq6aRA9rG_-ApAJ_gWkQcsw1

  • 心得体会

RP2040芯片的优势是GPIO资源比较丰富,价格比较便宜。

遇到的主要问题是树莓派RP2040封装为7×7 mm QFN-56 封装,引脚间距只有约0.2mm,而且引脚藏在芯片底部,手工焊接难度较大。勉强焊接好了一块板子,但仍有个别引脚虚焊。

开始准备不足,只是完成了电源部分及芯片最小系统的焊接,开发板USB连接电脑后,可以发现U盘。但更新UF2固件后,无法显示虚拟串口。后来焊接外部Flash芯片后问题解决。

在软件调试方面,USB刷入固件只找到了microPython的uf2文件,此前没有microPython开发经验,使用Thonny软件还不熟悉如何导入第三方库,所以只使用自带基础库实现了按键和指示灯测试。

对Arduino开发这方面,没找到对应的uf2固件,所以没有进一步测试。总之,对软件开发环境的搭建方面还需要进一步学习。

 

  • 彩蛋

由于RP2040手工焊接难度较大,本人又做了一个基于PICO的扩展板,功能和此次做的板子类似,已完成了初步调试。实物图如下,视频末尾有分享。

FlGfTT7xBexIwhSn9h3oZVgpaMhy

FpcC9iE265ECVAkLTWI-QXGc8Sy3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

软硬件
电路图
附件下载
PICO TEST.py
指示灯程序
PICO_KEY_TEST.py
按键程序
RP2040_GameBoard.rar
KiCad工程
团队介绍
老胡,电子爱好者
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号