嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/HowieXue/article/details/76696316

目录:

0、引言

何为嵌入式?

1、单片机相关

1.1 基于单片机的智能小车、智能机器人制作

1.2 基于Arduino的3D打印机制作

2、嵌入式Linux相关

2.1 智能扫地机器人

2.2 智能可穿戴类设备:智能安全头盔

2.3 智能可穿戴类设备:面向空巢老人/病人的智能手环

2.4 物联网智能控制系统:家居、农业、医疗

2.5 基于Linux的嵌入式网络视频监控系统

2.6 移动图像监控系统

2.7 基于TCP/IP的安全文件传输系统(TLS/SSL)

2.8 嵌入式MP3播放器

2.9 基于Qt的新能源汽车电池管理系统

2.10 嵌入式车载导航定位系统 Qt+GPS+Baidu Map

2.11 无人机

2.12 嵌入式VR、AR

2.13嵌入式结合AI、Machine Learning

3、嵌入式Android相关

3.1 物联网智能控制系统:家居、农业、医疗

3.2 嵌入式家庭保健系统

3.3 智能电视TV、AR/VR眼镜

3.4 自己定制的平板电脑、手机等

4、裸机开发

4.1 裸机实现串口通信

4.2 裸机实现DMA方式SD卡读写

4.3 裸机是实现NANDFlash、EEPROM的操作(擦除、读写)

5、相关资料分享

博主热门文章推荐:


0、引言

何为嵌入式?

        IEEE官方定义:Devices Used to Control,Monitor Assist the Operation of Equipment,Machinery or Plants。

翻译过来就是:用于“控制、监视或者辅助操作机器和设备的装置”。

          其实按我理解,嵌入式系统就是“高大上+土豪”版的单片机,因为嵌入式不只带操作系统(OS),并且都是上架构(如ARM)的。其实咱们所用PC机也是一个嵌入式系统,只不过处理器、Bootloader、操作系统OS都是通用化的Intel系列、BIOS、Windows等;而面向具体应用,就需要根据需求,实现硬件资源和软件操作系统的“私人订制”,无非就是先根据需求硬件选型,然后根据硬件资源去裁剪操作系统,把软件不需要的都去掉,只留有用的,这样保证我们用的系统在达到需求目标的同时,还保证了实时性稳定性(没有无关因素干扰)并且小型化具有专用性

       再啰嗦几句,假设大家对单片机已经很熟了,举个栗子:对单片机引脚控制LED,用C编程通过IDE编译个Hex文件,烧写就可以运行实现;那么对嵌入式来说呢,因为处理器引脚太多(如Cortex-A9架构的Exynos4412芯片 有400多引脚),那么自己一个个配(裸机编程)实在麻烦,而且编的程序都与硬件密切相关,没有通用性且很难移植;因此就使用上了操作系统;那么操作系统干了什么呢?其实就是和单片机操作引脚一样,只不过OS将这些操作封装成各种驱动(如GPIO驱动),那么你只要在应用程序上调用这个驱动内的函数,借助OS内核实现机制,就能向单片机一样操作这些引脚,所有嵌入式设计,底层都是这么实现的。

      So, 怎么判断该用嵌入式还是单片机呢:其实就是看需求,单片机处理能力、可扩展性及其有限,涉及到图像监控处理、网络协议就捉襟见肘了;因此这个逻辑很简单:单片机不能实现的,上嵌入式;并且现在是个嵌入式功能都有成型的solution,特别是Linux的开源,资料成堆成堆的。这也是近年嵌入式(包括物联网智能硬件火这么快的原因之一吧。

以上都是愚见,切入正题:本人不才整理了几个嵌入式比较好的练手项目和小课题,有的是我之前做的项目,有的是网络搜罗,反正都是我个人认为比较综合而且interesting的,这些网上一大堆相关资料,我这里只是提个题目和其中关键点,具体内容不赘述,感兴趣直接百度google,希望给大家一个参照,大家有idea都可以相互交流,有机会共同学习,感谢。

骚扰方式: Howiexue@gmail.com


1、单片机相关

      这里主要是推荐嵌入式相关,所以单片机就只简单提几句

1.1 基于单片机的智能小车、智能机器人制作

     对于大学经常参加一些智能车比赛的童鞋,相信已经做吐了。。。小车目前可以算是相关资料最多的练手项目之一,各种脑洞大开的智能车车,你值得拥有~

 

1.2 基于Arduino的3D打印机制作

需求:使用单片机,通过限位开关和温度等传感器控制步进电机移动、加热头,将打印材料加热挤出后凝固成型。

硬件:Arduino mega2560开发板,3D打印机套件,打印材料,安装工具等

软件:Marlini开源程序,上位机软件Print3D,切片软件(推荐Cura),三维制图软件(推荐犀牛)等。

参考链接:http://reprap.org/wiki/Kossel

            http://prusaprinters.org/prusa-i3/(推荐一开始做Kossel和i3型的)

800元组装一台3d打印机全教程流程http://tieba.baidu.com/p/2944800373?see_lz=1

注:这个项目实现很费事,可谓处处是坑,不只是单片机软硬件知识,还要学三维制图、机械原理等等,期间会遇到一系列问题,但是最终调试完,第一次打出自己想要的东西时,感觉真是此生难忘,所以当时一做就做了三台(下图,其中左面上角是 Prusa I3 型,其余那俩都是Kossel 三角洲)。推荐创客们玩玩,比四轴飞行器好玩多了(也省软妹币)。

    3D打印现在是所谓工业4.0的主打,特别是牛炸天的细胞打印(对你没有看错)、器官打印、粉末金属打印等。不过我们做的也就打印些塑料小玩具,现在的SLA光敏树脂打印倒挺不错,能比FDM的快几十倍,只是成本太贵(貌似10w+)。又扯远了。。。咳咳,下面开始划重点:


2、嵌入式Linux相关

      嵌入式Linux就是在嵌入式硬件平台上使用Linux操作系统。其实嵌入式开发过程就是硬件+软件设计过程,本节推荐的都是在一个目标硬件平台上设计基于linux系统的应用,主要工作一般都是:Bootloader设计与移植、Linux内核裁剪移植、Linux驱动程序开发移植、文件系统制作移植和最后的应用程序开发移植。说了这么多移植它是什么东东?我理解为:拿着别人写好的东西,稍微自己改改放到自己的平台上,其中的“改”和“放”的过程就是移植的过程。这也是嵌入式工程师必须具备的能力,一定要借鉴甚至使用别人做好的,自己闷头写代码只能闭门造车(大神除外)。

         推荐硬件平台树莓派(首推),友善之臂、飞凌等开发板(这些开发板自带很多练手项目课题,网上也很多资料,本文就不再提那些case),架构最好选主流的ARM,像流行的s3c6410(ARM11)、s5pv210(A8)、exynos4412(A9)等。或者自己画板子(使用现有开源出来的修改下,不过成本高,难度大),有兴趣不妨一试,刚开始学习还是老实用开发板吧。

        推荐软件平台Linux2.6以上内核(2.6以下很多系统机制会不同)嵌入式系统,Github、开源中国和ChinaUnix上一堆开源的Linux驱动和小应用,宿主(PC)机最好使用Fedora、Ubuntu系统(如果使用虚拟机VMware版本最好在9.0以上),Bootloader推荐使用U-Boot;文件系统根据使用的Flash支持,用Busybox制作;人机界面用Qt。

如图:

嵌入式系统层次结构

2.1 智能扫地机器人

       深藏不露的“扫地僧”,类似壁障设轨智能小车,只不过有更多人性化功能,网上资料+自由发挥吧

2.2 智能可穿戴类设备:智能安全头盔

背景:在工厂或危化品存储等场所,经常发生危害气体泄漏,而由于环境、风力等因素,人们无法直接在固定位置检测,而且有的气体是无色无味,如何解决?其实最终目的还是保证工人的人身安全,这时候就体现出来智能可穿戴设备的价值。

需求:设计智能安全头盔,当检测到有害气体后震动报警,并将该危险地点通过GPS上传到上位机显示,生成一个有害气体地图(借助Baidu API)以红色标出危险地段。

2.3 智能可穿戴类设备:面向空巢老人/病人的智能手环

需求:背景不用说,设计一个智能手环(或其他设备),检测人身体的各项生命特征,并且实时GPS传输老人位置,还具有跌倒报警、遇水报警等突发状况向子女手机、服务器端推送报警信息。自由发挥,有些身体特征检测实现确实困难,但总有方法解决,市面已有这类产品。

2.4 物联网智能控制系统:家居、农业、医疗

这就是近年炒的最火的智能家居、智慧农业等物联网项目,其实都是属于嵌入式智能控制系统,无非就是底层传感器网络(如Zigbee)采集环境参数数据,传给嵌入式网关,网关再传给上位机服务器,再加上远程控制、视频监控等。像这样的题目很多很多,例如智能温室大棚控制系统、智能家居系统、智慧医院系统、智能仓储管理系统等等,其实都能归结为一套系统,只不过根据应用领域有些不同细节。

 

 

盗图留种:http://www.embedu.org/projects/smart-agriculture.html

注:这类课题难度适中,建议多人合作,分别负责感知层(传感器网络),网关层(嵌入式平台),上位机应用层(Web服务器、安卓App);至于云端架构可以使用乐联网、Yeelink等已实现好的物联网平台。总之多借鉴别人好的案例。

友情提示:可以先做底层采集温度,传给网关显示并转发到服务器,这一路通了后面程序就好开发了。或者灵活变通,用嵌入式网关采集传感器(需移植传感器驱动到Linux内核),就不需要使用Zigbee等WSN了(如下图)这也可以算是一个题目,都很open的,怎么做你来定,只要脑中有idea,生活处处皆课题(简直是自虐)。

2.5 基于Linux的嵌入式网络视频监控系统

面向安防等应用中,具多个摄像头同时视频传输,为减少带宽、提高视频分辨率和帧率,就需要使用编码标准对视频编码后再传输,so做一个软编码器,我做过基于H.265的编码(有兴趣百度Lib265),这里可以使用H.264(资料较多)其实原理很简单,涉及到摄像头驱动和编码库。还有上位机解码软件。

Linux网络服务器可以使用开源的mjpg-streamer。(可以参照国嵌高级项目班视频)

 

2.6 移动图像监控系统

      类似2.4, 例如国嵌高级项目班中就有介绍,多了一个入侵检测。使用摄像头抓取图像,通过Motion库动态监控比对,一旦出现和前一个图像较大变化(如家中进来一个人),则立即拍照将照片传到上位机,并报警等联动。

    后面还包括安全文件传输系统,嵌入式MP3两个都是国嵌教程里的项目,后面都有链接,我也是以前学习时候在网上找的,如有侵权等问题请告知

       另外:视频图像做好了,就可以做很多应用,如现在比较牛的机器视觉,无损检测、缺陷检测等等。

 

2.7 基于TCP/IP的安全文件传输系统(TLS/SSL)

    其实就是把Socket包通过OpenSSL的工具加密一下(TLS/SSL),再发送,然后接受端再解密。里面用到了线程池,在企业项目会经常用到。

2.8 嵌入式MP3播放器

2.9 基于Qt的新能源汽车电池管理系统

    如题,使用Qt作为GUI显示,实现对电池容量显示和管理操作。较简单,不过可扩展性强,大到汽车管理,再大一点还可以上升到车联网。

2.10 嵌入式车载导航定位系统 Qt+GPS+Baidu Map

    GPS采集经纬度数据通过GPRS、WiFi无线传输到服务器上,并借助Baidu、Google提供的API进行精确定位。(还是那句话,借鉴网上现有的,自己开发难度Huge)

2.11 无人机

好吧,不得不又谈四轴了,现在无人机导航送快递、监控交通可谓前景广大,有兴趣创客可以做一个,网上各类资料,实现不难,但主要是烧钱….烧钱….钱…

Ps:买就要买好的模块,特别是图传和电调!,要么一摔就….别问我怎么知道的!

2.12 嵌入式VR、AR

VR/AR实际没接触过,不过很高大上的样子,最近好多大牛公司在搞虚拟现实。感觉还是嵌入式图像处理+全景映象的应用吧,有兴趣可以看看Google的产品。

2.13嵌入式结合AI、Machine Learning

此类课题必火!本质其实就是将机器学习、人工智能等算法,应用在嵌入式领域。AI领域将是嵌入式工程师的又一择业选择!未来必将处处AI,且处处嵌入式AI(如现在市面各类AI电器)。

因为AI涉及到N多机器学习类算法,学习过程也能极大提高嵌入式er的算法能力(算法一般是广大嵌入式er的一块短板),网上也有各种大神编译好的算法模型可以借鉴并直接使用,不过在学习阶段建议自己从无到有搭建算法模型、找数据集训练、交叉验证最终移植发布,有可能自己搭的模型效果不咋地,但这个过程我觉着还是能学到不少AI的思想。。。

本人这方面还是纯种小白,目前正在努力学习,找到好的嵌入式AI资料再第一时间奉上。(前期可以看看吴恩达的视频)

附机器学习算法地图:

 


3、嵌入式Android相关

嵌入式Android开发,就相当于自己定制各种功能的手机一样,因为Android系统发布就是面向移动端设备的,Android系统移植后也保留大量移动设备应用。因为Android系统基于Linux内核,所以底层还是Linux的东西,但应用层就完全不一样了,要在之前的基础上开始学Java、JNI、Android编程,相关嵌入式资料也没有Linux多,所以想开发还是有一些门槛的。

要说明的是:上述嵌入式Linux的项目,用嵌入式Android一样开发,只不过平台不一样,用的Linux内核不太一样而已,这时候如果真心想学,可以在上面项目做完后的基础上,将你的项目移植到Android平台。这里要注意使用的Linux内核版本,缺少什么就补什么,如驱动、库文件等等,然后重新编译移植内核

Android系统架构

 推荐硬件平台树莓派、友善之臂、飞凌等开发板,这里一般的处理器就不行了,ARM11以下可能连安卓2.0系统都带不动,So推荐使用Cortex-A9四核处理器或以上,否则系统卡顿…顿….

 推荐软件平台嵌入式Android2.3以上系统,宿主(PC)机最好不要用虚拟机,我用真实Ubuntu,i5+8G内存的主机编译Android5.0.2系统都编译了8个多小时,推荐使用开发板厂家提供的已经编译好的版本,不要重新一点点编译;Bootloader和上章一样,Linux内核3.0以上;人机界面直接用Android自带的(嵌入式Android优势)。

3.1 物联网智能控制系统:家居、农业、医疗

同上文一样,只不过网关那一层换成Android平台,个人感觉这个还是很有搞头的,毕竟Android用户群这么大,大家跟熟悉,操作使用更方便。

这里说到了 ,类似上章的题目,都可以把Linux平台转到Android平台,所以这里关于上面提到的题目就不再赘述。

3.2 嵌入式家庭保健系统

借助Android良好的人际交互,开发集成智能心率计、血压计等检查项目的嵌入式系统。

3.3 智能电视TV、AR/VR眼镜

就是家里用的互联网电视机顶盒,例如小米、乐视盒子,结合AR技术

需要支持HDMI音视频输出、VGA输出、AV音视频输出、支持网口与WIFi、支持USB设备(鼠标键盘)、支持红外设备(遥控器)等。

3.4 自己定制的平板电脑、手机等

从底层或者上层应用定制自己的移动设备,比如说更改开机界面为你的果照。。


4、裸机开发

“裸奔”挺难的,因为不使用操作系统,不光要整天和芯片datasheet打交道,还要深入处理器架构以及各类存储机制。其实严格意义来讲,我们之前搞单片机也是属于裸机开发。

如果是大神中的大神,上述的一些题目完全也可以用裸机开发出来,我没有奔过,不敢妄自评测,所以只提供几个小题目。

4.1 裸机实现串口通信

4.2 裸机实现DMA方式SD卡读写

4.3 裸机是实现NANDFlash、EEPROM的操作(擦除、读写)


5、相关资料分享

福利来也

注:这些都是我学习嵌入式时候精心整理的资料,其中也有购买或在网上找的资源,如有侵权等问题请告知删除

链接:http://pan.baidu.com/s/1b0QLOy 密码: 

链接:http://pan.baidu.com/s/1cDsqp4 密码: (本文提到的很多项目源码和视频)

链接:http://pan.baidu.com/s/1dFmNHxZ 密码: 

链接:http://pan.baidu.com/s/1gfFPTIV 密码: 

 

PS:一直审核不过,考虑或许有不少涉及版权,就把链接密码去了,所以需要资料的留言邮箱或者email我吧~,

New:由于小伙伴们太多啦,我做了个Python脚本,可以自动发送资料到新留言中的邮箱,注意要留下标准邮箱格式哦。。(加关注后自动回复更快哦,当然不关注也默认会定时3天发送一次哈~)。。

感觉有用请动动手指给文章点个赞啦~~

 


博主热门文章推荐:

一篇读懂系列:

LoRa系列:

网络安全系列:

嵌入式开发系列:

 


友情赞助:

如果你觉得博主的文章对你那么一点小帮助,恰巧你又有想打赏博主的小冲动,那么事不宜迟,赶紧扫一扫,小额地赞助下,攒个奶粉钱,也是让博主有动力继续努力,写出更好的文章^-^,求赞助哦~~。

 

    1. 支付宝                2. 微信

                                 

 

 

展开阅读全文

没有更多推荐了,返回首页