[[pbl2023winter|2023年寒假在家一起练]]
## 2022年寒假在家一起练项目
**活动的目的:**
* 通过一系列动手编程的项目加强对书本知识/理论的理解、分析问题解决问题的能力、撰写文档报告/展示自己的能力
* 为**电赛**做准备 - 训练的题目都与全国大学生电子设计竞赛考察的技能要点相关,这种基于项目的训练学习(PBL)能够最高效地在最短的时间掌握从模电到数电、控制等的技能知识
* 为**毕业设计**做准备,完成每个平台要求的**综合性项目**,相当于一个本科毕业设计的难度和工作量
* “一起练“ - 以目标为导向,围绕一个目标共同学习、共同交流,在给定的时间内完成任务
**活动的方式:**
* 先根据自己的需要购买板卡,在指定的时间内完成项目并开源分享出来,通过审核即退换购买板卡的费用
* 活动期间会针对每个平台做3次直播,包括平台介绍、基本入门以及问题答疑,并通过微信群或QQ群的方式“一起学习、一起交流”
* 针对有些高校的“社会实践”、“生产实习”我们会提供更深层次的服务 - 系统性的直播培训、综合考试/评估、证书等(取决于平台)
* 硬禾学堂会将参加活动发布项目的学生按照“学校”来进行组织、展示,以便未来同企业项目的对接
* 硬禾学堂会选出最优秀的50个项目给予一定的奖励,并向知名企业内推实习的机会(上海、苏州、深圳、北京)
* 各校实验室可以根据自己的情况自行命题并给同学搭配套件
**其它: **
* 条件 - 在校的本科生皆可参加,有的平台的项目需要用到简单的测量仪器,建议在实验室完成验证,或通过口袋仪器来验证
* 时间:
* 12月31日前报名
* 2022年1月14日前完成发货
* 2022年2月27日晚12点完成项目并上传到电子森林项目网站
* 2022年3月15日前完成审核并告知审核通过者
* 2022年2月21日-2022年4月15日期间完成退款。
* 评价 - 根据上传的项目报告做评价
* 5分钟短视频,展示自己完成的项目
* 至少2000字的项目总结报告,根据提供的格式要求
* 提交可以验证的二进制代码,由硬禾学堂的工程师来验证其功能是否符合要求
* 提交项目中用到的源代码,并开源发布在项目页面中
### 平台1 - 基于树莓派RP2040的嵌入式系统入门学习平台
{{ :gamepad2040.jpg |}}
{{drawio>game2040_block.png}}
#### 提升的技能
* 基于Arm Cortex M0+的嵌入式系统
* MicroPython或C/C++编程
* 总线访问 - SPI、I2C
* 图形化信息显示编程 - 240 * 240 LCD
* 按键和模拟信号的输入控制
* 红外接收和控制
* ADC数据采集及信息处理
* DDS + PWM产生任意波形,并合成音频信号
* 音频信号处理 - 模拟放大、滤波、采集、数字信号处理、输出
* 姿态传感器的使用
#### 题目- 总计8个项目,任选其中一个项目完成并按照要求开源、分享在电子森林的项目平台
##### 项目1 - 模拟信号采集及参数分析
- 通过板上的耳机插孔连接外部的音源(手机或电脑播放,特征信号可以通过一些App生成后通过耳机插孔送给板子)
- 通过ADC数据采集并处理,在LCD屏幕上显示采集到的音频信号的波形,要求流畅显示
- 通过FFT变换得到采集音频信号的频谱,并将频谱显示在LCD上,可以和波形同屏显示,或者通过外部按键切换显示
- 能够计算被测信号的基本参数:
- 幅度
- 周期、频率
- 谐波分量
- 失真度
- 被测信号的频率范围在DC - 100KHz
##### 项目2 - 能控制LCD和电脑界面的“鼠标”
- 利用板上的四向摇杆和按键设计一款“鼠标”
- 在240*240的LCD屏幕内可以通过该鼠标进行菜单选择和参数控制
- 通过USB端口可以控制PC屏幕上的光标移动和点击操作,行使电脑鼠标的功能
##### 项目3 - 带学习功能的红外遥控器
- 通过板上的红外接收器,接收任何一款家用遥控器的控制信号,并能够对遥控器的控制信号进行识别
- 在LCD上绘制一个遥控器控制界面,并能够通过四向摇杆和按键来行使原来遥控器的控制操作
##### 项目4 - 复古游戏移植
- 设计或移植一款经典的游戏,通过LCD屏显示,通过按键和四向摇杆控制游戏的动作
- 经典的Pong
- 挖地雷
- 打飞机
- 俄罗斯方块
- 在游戏中要通过蜂鸣器播放背景音乐
##### 项目5 - 制作MCU调试器
- 使用板上的扩展端口
- 支持SWD
##### 项目6 - 制作FPGA调试器
- 可以实现对FPGA的JTAG调试
##### 项目7 - 制作SPI/I2C调试器
- 可以调试SPI/I2C的外设,对外设进行配置,并能够读取外设的参数信息
- 可以使用PC界面或板上的LCD/按键来操作
##### 项目8 - 制作8位逻辑分析仪
- 使用RP2040的PIO制作一个逻辑分析仪
- 在LCD上显示数据波形
- 可以使用PC界面或板上的LCD/按键来操作
以上的8个项目不限用MicroPython或C/C++语言编写。
### 平台2 基于STM32G031的数据采集和分析训练
硬禾学堂会开源一套完整的、支持所有功能的程序做参考
{{ :g031tm_3d.png |}} 基于STM32G031的测试测量学习套件的3D效果图
{{drawio>g031tm_block.png}} 基于STM32G031的测试测量学习套件的构成框图
#### 能够提升的技能
* 基于Arm Cortex M系列单片机的嵌入式系统编程(C)
* 测试测量的基本原理 - 示波器、信号发生器的硬件构成原理及软件实现
* 微控制器的按键输入、图形化显示(OLED)输出
* 微控制器的ADC和PWM使用、DMA数据搬运、中断的使用等
* 资源(时钟、总线速度、存储空间等)受限情况下的系统性能优化 - 采集、刷屏、通信、响应
* 数字信号处理 - FFT、数字滤波
* 模拟电路的实际应用 - 放大器、滤波器
* 串行总线 - SPI、UART的使用
#### 项目要求,任选其中一个项目完成并按照要求开源、分享在电子森林的项目平台
##### 项目1 设计一个带频谱分析功能的双通道示波器
- 通过STM32G031的ADC采集外部模拟信号,信号范围2mVpp到30Vpp,频率为DC - 50KHz
- 将采集到的波形显示在128*128的LCD上,并以触发的方式显示波形
- 通过FFT并将频谱显示在LCD上
- 通过板上的PWM+LPF的方式产生1KHz、幅度为3V的正弦波,用作测试信号
- 能够自动测量波形的参数 - 峰峰值、平均值、频率/周期
- 能够通过按键来对波形进行缩放查看
##### 项目2 音频信号放大电路特性测试及分析
- 分析板上麦克风音频放大电路的幅频特性和相频特性
- 通过跳线选择,将音频信号源切换为测试信号,通过编程生成频率可调的测试信号
- 通过MCU编程,将ADC采集到的信号同测试信号进行对比,进而得出音频放大电路的幅频和相频特性
- 在OLED显示屏上显示出音频放大电路的幅频和相频特性曲线
- 改变测试信号的幅度,测试音频放大电路的动态范围
- 通过仿真软件对音频放大电路做仿真,并对比实际测试结果
##### 项目3 DC-100KHz的DDS任意波形发生器
##### 项目4 扫频信号分析仪
##### 项目5 幅频特性测试仪
##### 项目6 失真度测试仪
##### 项目7 数字电能表 (搭配外部传感器)
### 项目3 - 基于ESP32-S2的物联网音频处理平台
{{ :esp32board.jpg |}} ESP32-S2音频收发处理板
{{ :esp32_audio_block.png |}} ESP32-S2音频收发处理板内部功能框图
#### 提升的技能:
* 嵌入式系统/C编程或MicroPython编程
* WiFi系统使用及编程
* 嵌入式系统中总线的使用和编程 - SPI、I2C
* 按键信息输入(包括消抖)和OLED参数显示、波形显示、菜单设计
* 模拟电路 - 音频运算放大器的使用、模拟滤波器、模拟开关的使用
* ADC、DAC的使用,PWM的使用
* 数字信号处理 - 音频处理、FFT、数字滤波、音效合成等
#### 题目 - 总计3个,任选其中一个项目完成并按照要求开源、分享在电子森林的项目平台
##### 项目1 实现网络收音机的功能
* 可以通过WiFi接收网络上的电台,也可以通过FM模块接收空中的电台,并可以通过按键进行切换、选台
* 在OLED显示屏上显示网络电台的IP地址、节目名字等相关信息或FM信号的频段
* 系统能够自动校时,开机后自动调节到准确的时间(年、月、日、时、分、秒)
##### 项目2 实现FM收音机的功能
* 可以通过FM接收电台信号,并播放出来
* 通过OLED显示电台的频率
##### 项目3 音频信号示波器/频谱仪:
- 将Mic或耳机插孔输入的语音信号进行ADC量化,并在OLED显示屏上将波形和频谱显示出来,并能够自动测量输入信号的参数 - 峰峰值、频率分量
- 通过DAC生成一个单频的模拟正弦波信号,将生成的波形连接到麦克风输入端,并进行ADC采集,再将采集到的波形显示在OLED屏上,并测量出其峰峰值、平均值、频率/周期
##### 项目4 基于Web的音频示波器及FFT频谱分析
* 利用开源的Web页面示波器显示软件,通过Wifi连接
* 将板上音频信号进行采集通过WiFi发送到网页上进行显示、分析
##### 项目5 音效处理和显示
* 通过Mic或耳机插孔输入语音,ESP32对采集量化后的语音信号进行处理(处理的内容待定)
* 处理前和处理后的语音信号(数字信号)在电脑显示屏上进行显示(通过WiFi连接电脑),要求显示波形和频谱,能够对处理前和处理后的音频信号在时域和频域进行对比
* 处理后的信号通过DAC变换的到模拟信号,并通过喇叭或耳机进行音频播放
##### 项目6 本地语音识别和控制
* 本地语音识别,能够用语音控制声音的播放/暂停
##### 项目7 制作一个本地气象台/温度计
* 利用OLED显示
* 显示当前本地的时间、温度和气象信息
##### 项目8 网络存储
* 利用板上USB OTG制作网盘
* 能够通过网页对该网盘进行保存和读取
##### 项目9 连接阿里云
##### 项目10 远程遥控
* 利用板上的红外接收器,用遥控器控制网页界面上的按钮
### 平台4 - 基于iCE40UP5K FPGA的综合训练平台
{{ :ice40_learning.png |}}
#### 提升的技能
* FPGA编程
* 协议原理 - SPI、I2C、UART
* 图形化显示 - OLED
* DDS产生任意波形、高速DAC的构成及使用
* 串行ADC的构成、应用及数据采集
* 温度传感器数据采集及显示
* PWM的工作原理,应用及音乐播放
#### 题目,任选其中一个项目完成并按照要求开源、分享在电子森林的项目平台
##### 项目1 - 利用ADC制作一个数字电压表
- 旋转电位计可以产生0-3.3V的电压
- 利用板上的串行ADC对电压进行转换
- 将电压值在板上的OLED屏幕上显示出来
##### 项目2 - 利用PWM制作一个音乐播放器
- 通过PWM产生不同的音调,并驱动板上蜂鸣器将音调输出
- 能够播放三首不同的曲子,每个曲子的时间长度为1分钟,可以切换播放
- 曲子的切换使用小脚丫核心板上的按键,需要有按键消抖的功能
- 播放的曲子的名字在OLED屏幕上显示出来(汉字显示)
##### 项目3 - 利用DAC制作一个可调波形、频率、幅度、直流偏移的DDS信号发生器
- 能够产生正弦波、三角波、方波,可以通过小脚丫上的拨码开关控制波形的切换
- 产生信号的幅度0-3Vpp之间可调,调节分辨率精确到10mV,可以通过电位计进行调节
- 产生信号的频率100Hz - 2MHz之间可调,频率调节分辨率可达10Hz
- 将1KHz - 10KHz频率范围的信号同时送到蜂鸣器,驱动蜂鸣器发出声音,调节频率和信号的幅度会改变蜂鸣器的声音输出
- 产生的波形、波形的幅度、波形的频率都实时显示在OLED屏幕上
##### 项目4 - 声音控制的节日彩灯
##### 项目5 - 可定时的音乐时钟
##### 项目6 - 用彩灯显示的水平仪/节日焰火
##### 项目7 - 音频信号采集/FFT频谱分析
##### 项目8 - 计数器/频率计
##### 项目9 - RISC-V软核的设计或移植
##### 项目10 - SDR通信数据收发系统
{{drawio>ice40sdrblock.png}}
-----
### 平台5 基于小脚丫FPGA的电赛综合训练平台
{{ :fpga_contest_board.png |}} 基于小脚丫FPGA的电赛训练板
{{ :fpga_contest_block.png |}} 基于小脚丫FPGA的电赛训练板构成
#### 提升的技能点
#### 项目设计
##### 项目1 - 单通道示波器/OLED显示
- 通过板上高速ADC(10bits/50Msps)采集模拟信号,并能够在OLED上显示出波形以及频率/幅度参数
- 被采集信号的频率范围为DC - 1MHz
- 如没有外接信号源,可以通过板上的高速DAC产生任意波形或通过GPIO产生频率可调、占空比可调的PWM波形作为测试信号
- 按键/旋转编码器可以控制波形的时间和幅度的缩放,按键的功能可以自行定义
##### 项目2 - 单通道示波器/PC页面显示
- 通过板上高速ADC采集模拟信号,将采集到的数据通过串口发送到PC上,通过PC上的界面进行显示
- 被采集信号的频率范围为DC - 1MHz
- PC上的界面显示可以使用Matlab、LabView或开源的串口调试工具
- 如没有外接信号源,可以通过板上的高速DAC产生任意波形或通过GPIO产生频率可调、占空比可调的PWM波形作为测试信号
- 按键/旋转编码器可以控制波形的时间和幅度的缩放,按键的功能可以自行定义
##### 项目3 - DDS任意波形发生器/本地控制
- 通过板上的高速DAC(10bits/125Msps)配合FPGA内部DDS的逻辑,生成波形可调(正弦波、三角波、方波)、频率可调(DC-)、幅度可调的
##### 项目4 - DDS任意波形发生器/PC远程控制
-
##### 项目5 - 高速频率计/计数器
##### 项目6 - 元器件特性测试
##### 项目7 - 扫频仪
##### 项目8 - 频谱分析仪
##### 项目9 - 逻辑分析仪/协议分析仪
##### 项目10 - FM发射机
##### 项目11 - FM接收机
##### 项目12 - SDR无线数据传输系统