有学员问我:老师,用Arduino做东西,这算不算嵌入式开发,还是说这只能算是玩?今天和大家一起聊聊这个话题。
一、先说结论:算
Arduino当然是嵌入式开发。首先嵌入式开发本质是什么?就是用单片机去感知输入、控制输出,完成特定的功能。Arduino不就是这样,写代码,下载到板子上,控制LED闪烁、读取传感器数据、驱动电机转动,这不就是嵌入式开发干的事。
只不过Arduino把很多复杂的东西封装好了,不用一开始就去理解那些晦涩的数据手册。这就好比专业单反相机拍照是摄影,用手机拍照也是摄影。工具不同,但是本质是一样的。
二、那为什么有人觉得Arduino不算?
1.Arduino屏蔽了太多底层细节
传统单片机开发,需要知道怎么配置寄存器、怎么处理中断向量、怎么管理堆栈。这些都需要比较扎实的硬件知识。
Arduino把这些都封装好了。调用analogRead(),不用管ADC是怎么初始化的、用什么触发方式、怎么处理转换完成中断。对初学者很友好,但也让一些老开发者觉得不够底层。
2.Arduino生态丰富
网上很多都有现成的库。接个传感器,用个显示屏,连个WiFi,很多都可以直接找库。有人觉得这不叫开发,叫拼积木。我个人认为能善于利用现有资源快速实现产品原型,本身也是就是一种能力。
3.Arduino的IDE看起来不够专业
相比 Keil、IAR 这类专业级嵌入式开发 IDE,Arduino IDE 确实更轻量化、更简单。虽然新版已支持代码补全和基础调试,但功能深度、调试体验远不如专业工具,因此习惯了工业级开发环境的开发者会觉得它不够正式、不够专业。
三、工具没有高低,关键看怎么用
对于初学单片机,会用Arduino快速建立起我能做出来的信心。看自己写的代码让LED闪烁,让电机转动,成就感是很好的学习动力。等有了基础,可以继续往深处走,Arduino背后是怎么工作的?digitalWrite()到底执行了什么?为什么有些情况下直接用寄存器操作效率更高?理解了底层,再回头看Arduino,反而更清楚它的设计精妙之处。
四、Arduino在实际项目中到底行不行
很多人觉得Arduino只能做做小玩具,工业级产品还得用真正的嵌入式开发。
这个看法也不完全对。确实,很多工业产品因为成本、功耗、稳定性考虑,会选择更底层的开发方式。但是也有不少商业产品是基于Arduino开发的,尤其是在创客领域、快速原型验证阶段。比如一些环境监测设备、智能家居产品、教育机器人,直接用Arduino开发上市的也大有人在。Arduino的稳定性经过这么多年检验,是能满足很多场景的需求。
所以Arduino到底算不算嵌入式开发?算。能用更友好的方式进入嵌入式世界,并且没有改变嵌入式开发的本质,用软件控制硬件,解决实际问题。
就像自动挡汽车也是车一样,不能说只有开手动挡才算会开车。如果想成为真正的汽车工程师,早晚得把手动挡、发动机原理都弄明白。但是在那之前,先开着自动挡上路,看看风景,积累经验,没什么不好。
工具没有高低之分,关键在于想用它做什么,以及想在这个领域走多远。
评论区
登录后即可参与讨论
立即登录