出来工作也有快两年的时间了,总结一下自己在嵌入式学习的心路历程:

大学

大一期间一直待实验室敲C语言。真正玩起的单片机还是从大二开始的,当时实验室导师自己做了一批IAP15的单片机,但是没什么资料,上手很难,于是自己就花了几十块钱买了块STC89C52的单片机,就跟着视频教程走,点灯、点蜂鸣器、做密码锁和搞矩阵按键等等。记得大概是大二末期,老师让实验室的成员每个人想一个单片机项目报给他,然后按计划实施,当时那段时间我喜欢上了无线传输,像什么蓝牙、ESP8266、NRF24L01和红外NEC传输都再玩,觉得很有意思,看不见摸不着的东西在自己手上实现了数据传输。于是乎就报了无线红外空调遥控器,其主要功能:
       ① 学习实验室格力和美的空调遥控器的开关键码,实现对空调的控制。
       ② 实现键码掉电保存。
       ③ 增加WIFI模块,实现手机控制收发。

最开始,我在某宝上买了一块可以支持收发的红外模块。当时带红外发射同时又带红外接收模块的单片机不多,找了好久才找到了一个卖家。好像是做什么项目剩的几个,也是STC15系列的主控,卖家很好,送了我一个demo,能够实现红外解码功能的,当时也不知道怎么验证,就只会串口printf打印。仅仅只有这个小模块,怎么才能实现我的无线空调遥控器项目呢?首先这个模块也没法外接WiFi模块,权衡之下只能先在这个板上调红外功能,然后自己做板添加其他硬件模块。于是我就拉了实验室的一个同学合作做这个东西,他重点负责硬件画图,我就重点负责软件功能设计。

因为都是小白呀,所以一切都得从头做,我就负责在之前的小模块上调试软件,他就照着这个小模块的原理图做图,每天七点钟去实验室,晚上十点钟离开(该上课上课)。当时调试过程遇见了很多棘手的问题,这里列举一二:

其中有一个很烦的问题,买的那小模块经常下不进去程序,硬件一点都不稳定,非常影响进度。怎么办呢?找卖家返修。老板人也不情愿:就一个几十块钱的小的东西,你来来回回找我好几遍。最后软磨硬泡终于给我换了个,然后老板人直接商品下架了。换了以后,刚开始用的挺好,最后还是会出现程序下不进去,很迷茫呀!不知道为啥,也不能找卖家了。模块总是出一些乱七八糟的幺蛾子,进度几次出现停滞状态,最后实在没办法,寻求实验室老师帮助,老师给我们换了主控芯片,就好了很多。

还有就是软件实际调试发现,格力和美的人遥控器的数据协议跟你书本上的不一样呀!书本上是16个字节好像,但是当时我们实验室那两个品牌的空调好像一个是36+36个字节另一个是48个字节(时间太久,记不太清了)。关键是格力(还是美的)会发两遍,中间有一个固定时长的低电平连接,实际测试中少发一遍都不能控制。最后没办法不能按书本上的来,实现对这两种品牌的定制化编程,因为两者的起始码时序不一样的,可以凭借这个识别是哪个品牌,进而实现定制化编程。

历经三四个月,终于板子图PCB出来了,打印墨纸,腐蚀铜板、焊接元器件,无线空调遥控器V1.0 硬件总算出炉了,第一次下程序很谨慎呀,生怕哪哪弄不好把板子烧了,其实板子也没有我们想象那么脆弱,只要保证电源电压不给高了就行。三四个月的时间,我对红外NEC通信协议研究的七七八八了,在小模块上基本实现了对空调的控制(通过按键触发)。最后在做出来的大板上,程序跑的跟小模块一样,能够实现基本的控制。但是有一点缺陷,距离太**近了,实测是在1米之内,但是人家遥控器就能在五米前后精准控制,起初怀疑是不是功率不够呀,又是改电阻又是换电容的,换上之后好像是有点改善,1米内能够稳定控制,2米稳中带虚时灵时不灵的。千思百想不应该啊!总是怀疑电路问题,突然有一天,突发奇想测测遥控器的红外发射管的波形,上了逻辑分析仪,一测!发现门道了,人红外加的载波跟课本上的不一样呀!书上说是38KHZ频率的载波,但是人家用了76KHZ的红外载波呀!于是,在软件上改定时器周期,加大了载波频率。满怀激动的测了一下,终于成功了,且距离大大提升基本和遥控器的控制距离不相上下!我和另一个同学非常正式的握了握手:“合作愉快!”

这个项目最基本的也是最难的就是红外键码的学习和发射了,再后来,为了那这个作品去参赛,我们又完善了WiFi功能、添加了DHT11模块和ds18b20模块,同时又拉了两个同学组成团队,他们负责安卓的app开发和电脑端的上位机开发,实现电脑端和手机与硬件的WiFi数据交互。进了国赛,拿了二等。还有一笔不错得到奖励金,高兴!

当时就是这个项目,让我的单片机编程能力有了一些小提高,可以说是完全入门了。学会了画原理图,对电路也有深一步了解,会用逻辑分析仪、建立通信协议、各种串口交互架构搭建和调试方法等等。最后在大三末大四初的那个暑假留校,开始着手自己的毕业设计了,是stm32单片机作为主控的,这期间对stm32有了进一步的学习,嵌入式编程能力也步上新阶段。

工作

大四的上学期11月份,做完毕设就出来实习了。入职了一家搞IOT的方案公司,主要负责搞共享项目的,其主要由GSM模块+单片机构成,其中GSM通过MQTT/HTTP连接到阿里云,公司会做一个自己的平台连接到阿里云上,我主要负责硬件连接阿里云以及与阿里云数据交互,其实主要就是做Json的封装与解析以及单片机对底层控制逻辑。当时闹了个笑话: 我最开始把Json叫成Jason,被阿里云的技术吊: Jason是人名! 除了做这个,还会做stm32的一些项目。记得有一个: 当时老大丢给我一个电机小模块,就是门上的电机小锁,集成一个单片机+电机+GSM,我就负责驱动电机和降低功耗。最后待机做到几百uA,但是手册写的好像是能达到10几uA好像。前后也做了好几个共享的项目,不过都是现成的代码,自己在里面加功能。唯一有一个自己独立实现所有代码逻辑的项目,还黄掉了(功能都做齐全了!)。带我的老大,话很少,但是单片机的能力经验还是很强的,从他身上我又学会了很多编程和调试的技巧,也学会了keil工具debug的更多使用方法。

毕业后,跳槽到了现在的公司,最初做的也是单片机IOT,公司架构调整以后,转到了安卓驱动,当时一门心思想搞linux驱动,觉得linux更有趣且以后发展也会更好。买了一块韦东山老师的imx6ull开发板,跟着手册学习。也会参照安卓驱动来写一些驱动放到imx6ull开发板运行。

总结:

本篇就是对自己入门嵌入式的前后的一个小总结,路线就是C语言 --> 51单片机 --> stm32单片机 --> Linux。
几点对自己的忠告:
    1. 原则上,不要因为一些特例否定正确的原则。不要因为身边的人,轻易放弃自己的初心。别人做不到的事情,不一定自己也做不到,总结别人的失败,充实自己的想法。 
    2. 技术上,学习与沉淀。大方的将自己的经验与代码开源到网上让更多人看到,自己玩自己的,进步不会太大。如果自己的观点有错,坦荡的承认,真正的大牛也不会与你计较。
    3. 为人上,不要把别人身上看不惯的毛病在自己身上重现。
    4. 处事上,万事留一线,对于所有可能性,不要一票否决。不要过多去争论一些没有意义的观点。谦虚的对待每一个人,不要轻易忽视他人的观点,思考别人说不定对你就有启发。

5. 学习上,多做笔记,遇见一个需要思考过的问题,就立马记下来。

最后,也是众所周知的道理:认准一件事,踏实的坚持下去。正确的坚持是成功另一个宏定义!

嵌入式学习路上的一些总结相关推荐

  1. 嵌入式学习路线——解惑

    你是否在嵌入式学习过程中有很多疑惑,不知道从哪里开始,不知道怎么学一些列问题,在这里给了部分解答,一起去看看 问题一 初学者学习C语言什么时候才能写出像JAVA一样.WEB一样.QT C++一样.py ...

  2. 计算机网络之-嵌入式学习

    网络作为嵌入式学习的必备知识,很多嵌入式学习者还没有真正的去系统的了解过网络这个知识,在学习网络这块的知识,整理了一些网络笔记,希望对大家的学习能有帮助,那下面就一起看看计算机网络的相关知识吧!本文较 ...

  3. 嵌入式学习真的这么烧钱吗?

    大家好,我是小麦,从一开始接触嵌入式到现在,已经已经有十年了. 在这期间走过很多弯路,踩过很多坑. 平时和搞技术朋友聊到嵌入式的各种坑的时候,都会不约而同地提到这几点,  硬件的成本高,比较氪金,技术 ...

  4. 自学python推荐书籍同时找哪些来实践-Python学习路上有这些论坛、网站、书籍与你同行...

    Python学习路上有这些论坛.网站.书籍与你同行 2019-05-03 18:24:41 613点赞 9508收藏 164评论 创作立场声明:希望我的一些经验可以给你少走一些弯路,但人总得走点弯路才 ...

  5. 嵌入式学习路线怎么学,如何学习嵌入式系统

    随着互联网的快速发展,嵌入式也越来越火热,更多的人投入到嵌入式开发的行列中来,那么想要学习嵌入式,该从哪里入手学习,嵌入式学习路线图怎么学? 想要学习好嵌入式,想成为嵌入式软件工程师.那么当前企业需要 ...

  6. 以软件推动工业进步 -嵌入式学习网站

    http://www.cnblogs.com/cubean/archive/2010/04/26/1721035.html 以下内容转自:http://bbs.msembed.com/showtopi ...

  7. C指针-这该死的嵌入式学习生涯

    C指针-这该死的嵌入式学习生涯 01 前言 最近在公众号里面收到好几个同学关于嵌入式方面的咨询,再加上在知乎里面陆续推送了好几个嵌入式学习入门的问题,这次想统一整理一下,说说我这些年是如何被嵌入式按在 ...

  8. 学习路上遇到的Error2

    学习路上遇到的Error2:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: ...

  9. 嵌入式学习的几种线路图

    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段: 1.嵌入式linux上层应用,包括QT的GUI开发 2.嵌 ...

最新文章

  1. vb double显示最大精度_个人信息与对应照片同步显示系统开发
  2. 同花顺怎么导出数据到excel_Excel怎么导出手机通讯录vCard文件
  3. python界面编程和网口通信_Python—网络通信编程之tcp通信编程
  4. Protocol Buffer 序列化
  5. Android动态添加Device Admin权限
  6. Swagger写的接口的输入参数是对象的处理方法!通俗易懂(图文并茂), 小白与大佬之间的对话!
  7. java获取窗口_获取窗口句柄
  8. 天宇优配|利好太多,写不下了!A股港股全线走高,股民嗨了
  9. java.lang.ClassCastException: org.apache.hadoop.mapreduce.lib.input.FileSplit cannot be cast to...
  10. 5菜鸟教程_【菜鸟手册7】如何在NVIDIA Jetson平台上安装Anaconda
  11. 大数据三驾马车,第一个上市的Hortonworks要翻车了?
  12. 抖音发广告需要注意什么,三个注意事项与规范要牢记
  13. 头条等互联网公司面试准备、HR、Android技术等面试问题汇总
  14. DAY5 C高级笔记
  15. 缺失数据填补基础方法(3)——Multiple Imputation by Chained Equations (MICE)
  16. 毕业设计 树莓派人脸识别系统(Python)
  17. 同质化游戏做出不同点在于背景音乐
  18. 台式计算机usb口接触不良,台式机usb接口不好怎么办
  19. python练习---大球吃小球游戏
  20. 地球上空首次绽放焰火汉字“未来”

热门文章

  1. 内存双通道与Java中的Channel
  2. Flutter 2 正式发布!
  3. html1001无标题,QQ个性签名1001无标题
  4. 新生儿护理问题(上)
  5. (附源码)计算机毕业设计ssm宠物寄养平台设计
  6. 【如何提高程序员的职场情商?先学会这些“黑话”】
  7. 上海地铁1号线两列车侧碰
  8. blender 插件如何下载
  9. 【自学php】如何用 PHP 制作个人博客网站:一步步实现从零到一
  10. 进阶的新冠疫苗 又一个中国造