## 2021年暑期在家一起练项目
**活动的目的:**
* 为**电赛**做准备 - 训练的题目都与全国大学生电子设计竞赛考察的技能要点相关,这种基于项目的训练学习(PBL)能够最高效地在最短的时间掌握从模电到数电、控制等的技能知识
* 为**毕业设计**做准备,完成每个平台要求的**综合性项目**,相当于一个本科毕业设计的难度和工作量
* 通过一系列动手编程的项目加强对书本知识/理论的理解、分析问题解决问题的能力、撰写文档报告/展示自己的能力
* “一起练“ - 以目标为导向,围绕一个目标共同学习、共同交流,在给定的时间内完成任务
**活动的方式:**
* 先根据自己的需要购买板卡,在指定的时间内完成项目并开源分享出来,通过审核即退换购买板卡的费用
* 活动期间会针对每个平台做3次直播,包括平台介绍、基本入门以及问题答疑,并通过微信群或QQ群的方式“一起学习、一起交流”
* 针对有些高校的“社会实践”、“生产实习”我们会提供更深层次的服务 - 系统性的直播培训、综合考试/评估、证书等(取决于平台)
* 电子森林会将参加活动发布项目的学生按照“学校”来进行组织、展示,以便未来同企业项目的对接
* 硬禾学堂会选出最优秀的50个项目给予一定的奖励,并向知名企业内推实习的机会(上海、苏州、深圳、北京)
**其它: **
* 条件 - 在校的本科生皆可参加,有的平台的项目需要用到简单的测量仪器,建议在实验室完成验证,或通过口袋仪器来验证
* 时间:
* 7月15日前报名
* 7月30日前收到套件
* 8月31日完成项目并上传到电子森林项目网站
* 9月15日前完成评价并对符合要求的同学退款
* 评价 - 根据上传的项目报告做评价
* 5分钟短视频,展示自己完成的项目
* 至少2000字的项目总结报告,根据提供的格式要求
* 提交可以验证的二进制代码,由硬禾学堂的工程师来验证其功能是否符合要求
* 提交项目中用到的源代码,并开源发布在项目页面中
### 平台1 - 基于小脚丫FPGA的综合训练平台
数量 - 500套
#### 1 系统框图
{{ :traningboard_3d.png?800 |}} 基于小脚丫FPGA的综合技能训练板3D效果图
{{ :trainingboard_bd.png?800 |}} 基于小脚丫FPGA的综合技能训练板的功能框图
#### 2 功能介绍
* 能够通过R-2R阶梯网络生成0 - 2MHz的任意波形,包括正弦波、三角波、锯齿波、方波等,信号幅度为3Vpp;
* 能够通过PWM生成0-20KHz的任意波形;
* 能够采集温度传感器的数据并显示出来
* OLED显示;
* 单路串行ADC;
#### 3 提升的技能
* FPGA编程
* 协议原理 - SPI、I2C、UART
* 图形化显示 - OLED
* DDS产生任意波形、高速DAC的构成及使用
* 串行ADC的应用及数据采集
* 温度传感器数据采集及显示
* PWM的工作原理,应用及音乐播放
#### 4 题目,任选其中一个项目完成并按照要求开源、分享在电子森林的项目平台
##### 项目1 - 利用ADC制作一个数字电压表
- 旋转电位计可以产生0-3.3V的电压
- 利用板上的串行ADC对电压进行转换
- 将电压值在板上的OLED屏幕上显示出来
##### 项目2 - 利用PWM制作一个音乐播放器
- 通过PWM产生不同的音调,并驱动板上蜂鸣器将音调输出
- 能够播放三首不同的曲子,每个曲子的时间长度为1分钟,可以切换播放
- 曲子的切换使用小脚丫核心板上的按键,需要有按键消抖的功能
- 播放的曲子的名字在OLED屏幕上显示出来(汉字显示)
##### 项目3 - 利用DAC制作一个可调波形、频率、幅度、直流偏移的DDS信号发生器
- 能够产生正弦波、三角波、方波,可以通过小脚丫上的拨码开关控制波形的切换
- 产生信号的幅度0-3Vpp之间可调,调节分辨率精确到10mV,可以通过电位计进行调节
- 产生信号的频率100Hz - 2MHz之间可调,频率调节分辨率可达10Hz
- 将1KHz - 10KHz频率范围的信号同时送到蜂鸣器,驱动蜂鸣器发出声音,调节频率和信号的幅度会改变蜂鸣器的声音输出
- 产生的波形、波形的幅度、波形的频率都实时显示在OLED屏幕上
##### 综合性题目 - 制作一个可以上位机控制的可调波形、幅度、频率输出的信号发生器
{{ :fpga_labview.png |}}
- 能够产生正弦波、三角波、方波,可以通过小脚丫上的拨码开关控制波形的切换
- 产生信号的幅度0-3Vpp之间可调,调节分辨率精确到10mV,可以通过电位计进行调节
- 产生信号的频率100Hz - 2MHz之间可调,频率调节分辨率可达10Hz
- 将1KHz - 10KHz频率范围的信号同时送到蜂鸣器,驱动蜂鸣器发出声音,调节频率和信号的幅度会改变蜂鸣器的声音输出
- 产生的波形、波形的幅度、波形的频率都实时显示在OLED屏幕上
- 在PC上编写控制界面,可以采用LabView、Matlab或其它工具,在PC上通过界面改变波形、波形的幅度和频率参数,并通过UART将设置传输到FPGA板上对波形进行调节
- PC的控制和板卡上的控制可以同时有效
-----
### 平台2 - 基于树莓派Pico的功能开发板
数量 - 300套
#### 1 系统框图
{{drawio>pico_ext}}
#### 2 功能介绍
{{ :pico_ext_brd.png |}}
* PICO模块拥有264KB的SRAM(RP2040片内自带)和2MB的Flash(模块上外扩),存储空间比较大,适合于MicroPython编程学习
* GPIO方面的优势,能够灵活配置,支持实时性比较强的应用
* 内部ADC支持两路模拟信号的输入,采样率为500Kbps,并可以提供外部参考电压
* 23数字GPIO + 3个模拟/数字复用的输入管脚,这3个管脚可以做为ADC的输入
* 通过USB供电和程序配置
#### 3 提升的技能
* MicroPython或C/C++编程、Arm Cortex M0嵌入式系统
* 总线访问 - SPI、I2C
* 图形化信息显示 - 240 * 240 LCD
* 按键和光电旋转编码器的输入控制
* ADC数据采集及信息处理
* DDS+PWM产生任意波形,并合成音频信号
* 音频信号处理 - 模拟放大、滤波、采集、数字信号处理、输出
* SD卡的文件管理及访问
* 姿态传感器的使用
#### 4 题目- 总计3个项目,任选其中一个项目完成并按照要求开源、分享在电子森林的项目平台
##### 项目1 - 制作一个音频参数测试仪
- 通过PICO内部的ADC采集板上麦克风的音频信号
- 通过按键或光电旋转编码器能够左右、上下移动波形;左右、上下缩放波形,按键或旋转编码器的功能可以自己定义
- 通过ADC采集音频信号的电压峰峰值,并能够将音频信号的电压峰峰值显示在LCD屏幕上
- 对采集到的波形进行FFT变换,得到被测信号的频谱并在LCD上显示出来,并对单频信号显示其频率值
##### 项目2 - 设计一个带有背景音乐的数码相框
- 将多张照片保存在SD卡中,能够在240*240的LCD屏幕上以至少3种不同的切换模式轮流播放照片,模式的切换由按键控制
- 播放照片的同时,播放背景音乐,通过蜂鸣器或耳机插孔输出
- 利用姿态传感器,旋转板卡,照片可以自动旋转,保证无论板卡是什么方向,照片的方向都是正的
##### 项目3 - 设计/移植一款游戏
- 设计或移植一款经典的游戏,通过LCD屏显示,通过按键和旋转编码器控制
- 在游戏中要通过蜂鸣器播放背景音乐
以上的3个项目不限用MicroPython或C/C++语言编写。
----
### 项目3 - 基于ESP32的网络收音机
数量 - 5000套
#### 1 系统框图
{{drawio>esp32_radio.png}}
#### 2 功能介绍:
* 基于ESP32-S2 WiFi核心模块
* 128*64 OLED显示,SPI接口,显示信息、参数、波形
* 4个按键,用于参数控制、菜单选择
* 1路Mic音频输入 - 模拟电路,通过电位计可以调节增益0-40dB调节范围,并有带通滤波器
* 1路耳机插座音频输入 - 模拟电路,通过电位计可以调节增益 0-40dB调节范围,并有带通滤波器
* 2路音频输出,并有功率放大,可以驱动喇叭和耳机插座
* 一个FM接收模块,ESP32通过I2C接口对其进行参数设置,调节FM电台以及设置音量大小
* 一个模拟开关切换来自ESP32产生的音频还是FM输出的音频,模块开关的输出送到喇叭或耳机输出
#### 3 提升的技能:
* 嵌入式系统/C编程或MicroPython编程
* WiFi系统使用及编程
* 嵌入式系统中总线的使用和编程 - SPI、I2C
* 按键信息输入(包括消抖)和OLED参数显示、波形显示、菜单设计
* 模拟电路 - 音频运算放大器的使用、模拟滤波器、模拟开关的使用
* ADC、DAC的使用,PWM的使用
* 数字信号处理 - 音频处理、FFT、数字滤波、音效合成等
#### 4 题目 - 总计3个,任选其中一个项目完成并按照要求开源、分享在电子森林的项目平台
##### 项目1 实现网络收音机的功能
* 可以通过WiFi接收网络上的电台,也可以通过FM模块接收空中的电台,并可以通过按键进行切换、选台
* 在OLED显示屏上显示网络电台的IP地址、节目名字等相关信息或FM信号的频段
* 系统能够自动校时,开机后自动调节到准确的时间(年、月、日、时、分、秒)
##### 项目2 音效处理和显示
* 通过Mic或耳机插孔输入语音,ESP32对采集量化后的语音信号进行处理(处理的内容待定)
* 处理前和处理后的语音信号(数字信号)在电脑显示屏上进行显示(通过WiFi连接电脑),要求显示波形和频谱,能够对处理前和处理后的音频信号在时域和频域进行对比
* 处理后的信号通过DAC变换的到模拟信号,并通过喇叭或耳机进行音频播放
##### 项目3 音频信号示波器/频谱仪:
- 将Mic或耳机插孔输入的语音信号进行ADC量化,并在OLED显示屏上将波形和频谱显示出来,并能够自动测量输入信号的参数 - 峰峰值、频率分量
- 通过DAC生成一个单频的模拟正弦波信号,将生成的波形连接到麦克风输入端,并进行ADC采集,再将采集到的波形显示在OLED屏上,并测量出其峰峰值、平均值、频率/周期
#### 5 参考设计
* [[https://how2electronics.com/simple-esp32-internet-web-radio-with-oled-display/|Simple ESP32 Internet Web Radio with OLED Display]]
* [[https://www.instructables.com/Internet-Radio-Using-an-ESP32/|Internet Radio Using an ESP32]]
* [[https://www.instructables.com/Art-Deco-FM-Radio-Project-Using-Arduino/|Art Deco FM Radio Project Using Arduino]]
* [[https://circuitdigest.com/microcontroller-projects/esp32-based-internet-radio-using-max98357a-i2s-amplifier-board|ESP32 Based Internet Radio using MAX98357A I2S Amplifier Board]]
* [[https://github.com/michelep/ESP32_WebRadio|ESP32_WebRadio]]
* [[https://www.electronicsforu.com/electronics-projects/esp32-internet-radio/amp|ESP32 Internet Radio]]
### 平台4 基于STM32F072的简易口袋仪器平台
数量 - 1000套,硬禾学堂会提供一套完整的、支持所有功能的程序
{{ ::tg1.png?800 |}}
简易口袋仪器的图片 - 提供模具外壳
#### 1 系统构成
{{drawio>mini_instru.png}}
#### 2 功能介绍
* 双路可调直流电压输出 - -4V -+4V,每路能够支持的电流为20mA
* 双路示波器 - 1Msps采样率,100KHz模拟带宽,输入信号幅度最大10Vpp
* 一路任意波形发生器 - 最高100KHz频率分量的任意波形,输出信号的幅度为-4V ~ 4V可调节,直流偏移可以调节
* 一路数字波形发生器 - 可以调节频率和占空比,频率调节范围为1MHz
* 带有1.54寸240*240彩色LCD显示,脱离PC也可以进行基本的测试
* 能够通过USB连接PC,访问www.eetree.cn/wfl的在线测量仪器软件,通过WFL进行波形的显示和控制
#### 3 能够提升的技能
* 基于Arm Cortex M系列单片机的嵌入式系统编程(C)
* 测试测量的基本原理 - 示波器、信号发生器、可调电源的硬件构成原理及软件实现
* 微控制器的按键输入、显示(LCD)输出
* 微控制器的ADC和DAC使用、DMA数据搬运、中断的使用等
* 资源(时钟、总线速度、存储空间等)受限情况下的系统性能优化 - 采集、刷屏、通信、响应
* 数字信号处理 - FFT、数字滤波
* 模拟电路的实际应用 - 放大器、滤波器
* 串行总线 - SPI、UART的使用
* 用户体验至上的操作界面设计
#### 4 项目要求,任选其中一个项目完成并按照要求开源、分享在电子森林的项目平台
##### 项目1 制作双通道示波器
- 通过STM32F072的ADC采集外部模拟信号,信号范围最大10Vpp,频率为DC - 50KHz
- 将采集到的波形显示在240*240的LCD上,并以触发的方式显示波形
- 执行FFT并将频谱显示在LCD上
- 能够自动测量波形的参数 - 峰峰值、平均值、频率/周期
- 能够通过按键来对波形进行缩放查看
##### 项目2 制作简易信号发生器
- 通过STM32F072的DAC产生正弦波、三角波等常用波形,输出到Wav管脚
- 通过STM32F072的内部定时器产生可调周期、可调占空比的PWM信号,输出到PWM管脚
- 可以通过按键改变Wav信号的波形、频率、幅度、直流偏移,改变PWM信号的频率和占空比
- 在LCD上显示波形信息以及当前的参数、控制菜单
##### 项目3 制作双通道可调直流电压
- 通过STM32F072的内部定时器产生PWM,进而生成可调的直流电压,输出电压的变化范围为-4V到+4V
- 双路直流电压可以设置为独立模式调节,也可以设置成为跟踪模式调节,也就是DC1调节为2.5V的时候,DC2自动为-2.5V,当DC1调节为1.8V的时候,DC2自动为-1.8V
- 在LCD屏幕上显示两路DC当前的值,以及调节菜单
##### 综合性项目 - 实现一个完整的口袋仪器的功能
- 双通道示波器:采集最大10Vpp、最高100KHz的模拟信号,FFT并频谱显示
- 波形发生器:正弦波、三角波、方波,频率可调,最高位100KHz,可调输出幅度,最大8Vpp,可调直流偏移,从-4V到+4V
- PWM发生器,可调频率和占空比
- 双路可编程直流电压源,-4V到+4V可调,可以设置为独立模式和跟踪模式
- 2个按键、一个波轮开关控制菜单的所有操作
- 240 * 240的LCD显示波形、参数、菜单