用于找工作的自我介绍
本科
大二开始接触嵌入式, 刚开始主要是学习51, 430, stm32一些单片机, 裸机编程, 做过一些电子DIY小设计, 比如: 参加电赛的音频数字处理器, 自平衡小车, 抛投遥控机器人, 四驱漂移遥控小车(本科毕业设计)
参加电赛的音频数字处理器(主要是做音频信号的放大, 保证音频信号不失真(啸叫抑制处理), 且能够滤掉噪声(带通滤波器) -- 基于430处理器)
- 自平衡小车(积分分离pid, mpu6050传感器, 光栅编码器, stm32输出PWM波控制电机驱动)
- 积分分离pid, 根据误差大小选择是否选用p环节(即积分环节)
- 引入积分环节的目的主要是为了消除静差(静态误差),提高控制精度
- 但在过程的启动、结束或大幅度增减设定时,短时间内系统输出有很大的偏差,会造成PID运算的积分积累,致使控制量超过执行机构可能允许的最大动作范围对应的极限控制量,引起系统较大的振荡(一会儿正转, 一会儿反转),这在生产中是绝对不允许的
- 积分分离控制基本思路是,当被控量与设定值偏差较大时,取消积分作用,以免由于积分作用使系统稳定性降低,超调量增大;(误差大的时候不用积分环节, 只用pd)
- 当被控量接近给定量时,引入积分控制,以便消除静差,提高控制精度(误差小的时候再加上积分环节)
- 积分分离主要体现了一个分段的思想
if (abs(pid.err) > 200) { index = 0; } else { index = 1; pid.integral += pid.err; //积分就是指错误的积累, 对每次迭代出来的误差(目标值 - 当前指)求和 //微分环节就是指这次这次误差与上次误差的差值(做减法) //比例环节就是直接乘以一个比例常数 } pid.voltage = pid.Kp * pid.err + pid.Ki*pid.integral + pid.Kd*(pid.err - pid.err_last);
- 抛投遥控机器人(有视频传输的功能, 遥控器是用2.4G的串口透传模块)
- 还是基于stm32来做的, 这个小项目的主要挑战是小型化设计, 和安全性能上的挑战, 图像透传
- 四驱漂移遥控小车(本科毕业设计)
- 简单的运动控制算法和差速转弯控制算法(pwm波输出控制波形)
- NRF24L01无线模块(SPI全双工通信协议)
- 全桥驱动芯片A4973(Allegro公司)
- 本科自己做了一些事情, 但思维方式比较固定(缺少一些探索本质的精神), 而且当时自己的视野比较窄, 对未来的预判和掌握不太准, 基础数据结构与算法, 程序设计, 操作系统还比较欠缺
研究生阶段
- 主要恶补了一些数据结构与算法, 操作系统, 程序设计相关的知识
- 看过的书籍: (其实这些书自己只是停留在看看上面, 并没有很好的实践, 那为什么不从现在开始好好实践呢?)
- 《c三剑客》
- 《CSAPP深入理解计算机系统》
- 《Unix环境高级编程》
- 《STL源码剖析》
- 《算法导论》
- 《effective C++》
- 《Unix网络编程》
- 《现代操作系统》
- 看过的书籍: (其实这些书自己只是停留在看看上面, 并没有很好的实践, 那为什么不从现在开始好好实践呢?)
- 研究生期间自己主要集中大量的精力在学习上, 项目参加不太多
- 找工作最重要的其实是: 项目在于精而不在于多, 要做到项目知其然知其所以然的效果, 不要只停留在表面(切记)
- 惨痛的教训是: 要养成随时记录笔记的习惯(面试工程中往往会问道很多细节问题)
- 主要参与的是一个可穿戴项目(毕业设计), 发了一篇专利和一篇SCI论文
- 参加了两届华为软件精英挑战赛(类似ACM的比赛, 但是以解决工业界的实际问题为出发点)
- 第一年赛区初赛第9, 复赛第15
- 第二年赛区初赛第20, 复赛第7
- 在一家做无人驾驶的初创公司实习过3个月左右的时间, 做了一个底盘模拟器的server服务器项目
主要会的技能
- C/C++, Linux环境编程, 操作系统相关的基础知识
找工作的方向
- 找工作的方向: 主要集中在两个方向, 嵌入式软件开发或C++后台开发
- Java的基本语法自己大致的过了一遍, 感觉和C++有很多共通的地方
- 自己的优势: 对新技术敏感, 注重基础知识的巩固
- 自己的缺点: 交流沟通上还需要进一步的加强, 拓展自己的语言表达能力和理解能力(要更多的站在别人的位置上思考问题)