基于STEP Pico的反应测试器的总结报告
- 项目介绍
1.1具体要求:随机点亮板上的一个LED,按下板上的一个按键,在显示屏上显示出从灯亮到按键之间的时间,这是心理学上的一个重要实验
1.2实现方式:通过软件产生随机数,程序启动以后在随机数控制的时间下点亮板上的LED,被测试者按下按键以后,处理器计算从点亮灯到接收到按键之间的时间差,并将时间差通过USB显示在PC上,也可以将OLED用起来,在OLED上显示时间信息。
- 设计思路
主要通过树莓派Pico核心模块与树莓派Pico扩展板上的oled显示屏、两个按键以及12个led彩色小灯来实现。具体的设计思路是,当使用者按下按键一时,系统启动,并通过oled屏向使用者给出提示,随后在2-4秒的时间内,12个小灯的其中一个会随机亮起,此时使用者需要作出反应,并按下按键二,系统会记录从小灯亮起到按下按键之间的时间,并最终显示到oled屏幕上面,完成反应测试。
- 逻辑框图
- 硬件介绍
该项目用到的硬件包括树莓派Pico扩展板 x1,硬禾版本树莓派Pico核心模块 - STEP Pico x1,Type-C 数据线 x1。STEP Pico是一款低成本,高性能的微控制器开发板,具有灵活数字接口(完全兼容Raspberry Pi Pico)。硬件上采用了Raspberry Pi官方自主研发的RP微控制器芯片,搭载了ARM Cortex M0+双核处理器,高达133MHz的运行频率,内置了264KB SRAM和2MB闪存,还板载有多达26个多功能的GPIO引脚。其中板卡硬件包括2个按键输入,四个单色LED,12个WS2812B RGB三色灯,一个姿态传感器,一个128*64的OLED显示屏,一个蜂鸣器,一个可调电位计(用于电压表),一路音频信号输入和8位R-2R电阻网络构成的DAC。在本次项目中主要使用的是OLED显示屏、RGB三色灯以及两个按键输入。
- 软件介绍
使用官方推荐的开发软件thonny,该软件页面简洁,基础功能齐全且强大,简单易上手,搭配上硬禾学堂官方的教学视频,让我这样的micropython初学者也能快速上手。
编程所使用的语言是MicroPython。MicroPython是Python3编程语言的一个完整软件实现,用C语言编写,被优化于运行在微控制器之上。MicroPython是运行在微控制器硬件之上的完全的Python编译器和运行时系统。提供给用户一个交互式提示符(REPL)来立即执行所支持的命令。除了包括选定的核心Python库,MicroPython还包括了给予编程者访问低层硬件的模块。除了实现一系列核心Python库之外,MicroPython还包括用于访问低级硬件的“机器”等模块。
- 实现功能及图片展示
6.1通过OLED屏幕提示使用者按下k1开始测试
6.2通过OLED屏与小灯提醒使用者做好准备
6.3经过一段随机时间(二到四秒)后,在12个RGB小灯中随机亮起一个并通过OLED屏幕提醒使用者按下k2作出反应
6.4计算得出使用者的反应时间并显示到OLED屏幕上,并将数据返还到电脑端。
- 主要代码片段及说明
7.1引入项目资源中的开源代码所提供的函数
7.2将变量初始化
7.3通过坐标控制将文本输出在oled屏幕上的固定位置
7.4定义几个接下来会用到的控制灯泡颜色的函数
7.5判断k1按键的值来控制接下来的程序
7.6利用random库获取随机数来控制灯亮的时间以及哪个灯亮
7.7将灯亮的时间设定为起始时间
7.8判断k2键的值,并将按下k2键的时间定为结束时间
7.9利用结束时间减去起始时间从而得到反应时间,并将这一时间显示到oled屏幕上
- 难题及解决方法
在刚开始接触micro python时,由于对其的不熟悉,导致起步不是十分顺利。但是在直播课程以及交流群中其他同学的帮助下,我很快地熟悉并熟练地开始了编程。最后在开源代码库的帮助下,我最终顺利地完成了项目设计。
- 未来的计划
首先十分感谢硬禾学堂提供的这次宝贵机会,能够让我有机会低成本得接触并学习嵌入式系统的项目开发。硬禾学堂不仅免费地为我们提供开发板等硬件设备,并且无偿地提供相关学习课程以及直播来帮助我们学习,甚至还建立微信交流群来安排老师指导帮助我们。硬禾学堂所作的这一切都为我的学习提供了极大的便利,为我打开了嵌入式系统的大门。虽然我此次的项目比较简单,完成起来也相对顺利,但是我依然从中学到了许多。我要好好总结这次学习经历所带给我的知识与经验,并用于之后的学习生活之中。