在2023年,作为一名工程师,我坚持的爱好有阅读、写作、coding,战绩为阅读书籍20+,写作80余篇,爱好项目5个左右,完成了从后端向嵌入式的转行,也增长了一岁,19岁大三,虽然offer暂无,但是能力见长,但愿明年能成功找到一份满意的工作,完成从学生到工程师的彻底转变!
本文主要围绕2023年,我从0开始创作的几个音视频的嵌入式项目。
2.1 51单片机演奏音乐,天下
这是2023年3月份左右创作的一个项目,当时差不多学了有半个多月51单片机,
主要代码结构如下:
明明是天下,为什么句句不离她,哈哈,主要思路就是:
音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#,
播放速度,值为四分音符的时长(ms)
#define SPEED 750
然后将天下的谱转换为索引对应的频率震动来发声,延时来反转翻转蜂鸣器IO口
2.2 Arduino
2.2.1 Arduino+ov7670+qt上位机实现监控
这个项目应该是在5月份左右完成的,当时学完Arduino做的一个项目
上位机差不多长这样:
下位机:
(时间有点长,我找不到了,该图片来自网络)
思路:
OV7670 在 I2C 接口上运行,通过I2C来将Arduino和OV7670连接在一起
下位机和上位机之间使用串口来进行通信
缺点:
这个摄像头的像素仅有约30w,注定了拍摄的很模糊
串口的速率为115200,进行计算后也不难得出,他的帧率只有5-8,如果改为摄像应该会好很多
(当时拍摄的一张图)
上位机代码包含:
- 串口的打开和关闭
- 串口数据的读取和发送,(读取在缓冲区)
- QMediaPlayer来实现视频的播放
- 进行视频的保存
下位机代码包含:
- <util/twi.h> 库,I2C把Arduino和OV7670连接起来
- 初始化相机
- 设置相机分辨率
- 选择单色拍摄
- 串口传输
2.2.2 Arduino+0.96显示屏
这个也在4,5月份完成的,当时是做了一个基于U8g2库的,在各种显示屏上显示图形,也比较简单,读者想仔细了解的话,直接去看官方文档就好了
2.3 STM32
接着就是STM32单片机了,这是我今年接触的最后一款单片机,其实还有一块瑞萨的A2E1,但是那块没做和音视频相关的开发,也就不多说了,改天有时间再聊
STM32的OLED显示,更改字模
这应该是在6月初的时候做的,
思路:
- 标准的I2C协议,OLED显示程序
- 创建字模库,来对应客户的学号+姓名
- 初始化OLED显示屏
- 添加到main函数,进行仿真测试
2.4 其他项目
原生Qt做的一个云音乐播放器
思路:
Http通信:与云音乐服务端进行通信,C/S架构
本地存储的功能,也可离线听歌
WebSocket:用于实现实时通信和音乐播放进度的推送
HLS:用于音乐的分段传输和播放,支持自适应比特率
物联网控制面板
思路:
多线程开发,调用ECharts来绘制曲线模型
数据存储为Mysql数据库
…… 还有很多就不再赘述了
回应开头,还是想成为一名合格的开发者,当然有大佬看到这篇博文也欢迎捞捞弟弟。
首发于InfoQ: 回顾2023,展望2024——小工程师的执着 (infoq.cn)