在科技飞速发展的今天,嵌入式系统作为连接物理世界与数字世界的桥梁,正逐步渗透到我们生活的每一个角落。从智能家居的温馨调控,到工业自动化的精准执行,再到物联网(IoT)的广泛应用,嵌入式技术以其独特的魅力和无限潜力。所以在工程学的学习中,掌握嵌入式开发技术无疑是一条必经之路,它能够引领我们深入探索技术的核心,为未来的创新奠定坚实基础。
嵌入式系统,简而言之,就是那些被设计用于执行特定任务,并嵌入到更大系统或设备中的计算机系统。它们通常具有体积小、功耗低、可靠性高、实时性强等特点,广泛应用于消费类电子产品、汽车电子、医疗设备、航空航天等多个领域。学习嵌入式开发,不仅能够让你亲手打造属于自己的智能设备,更能让你深入理解计算机科学与电子工程之间的紧密联系,为未来的职业发展奠定坚实的基础。今天这篇文章主要讲述一下与我们的课内学习以及项目制作关联最大的单片机嵌式开发。
单片机作为嵌入式系统的核心,其种类和开发环境随着技术的进步而不断更新迭代。目前,市场上常用的几款单片机包括Atmel AVR系列、STM32系列、PIC系列,51系列以及Arduino平台等。目前我们使用的最多的一个开发平台就是搭载了stm32系列核心处理器的开发板。但其实STM32开发的复杂性相对来说是比较高的,但他的一个最大的优势在于极强的信息处理能力,以及广泛的兼容性,超低的价格。但今天我主要与大家分享的是我目前使用最多的一个开发平台arduino。
很多人都会觉得arduino有点low,认为arduino是一个最入门级的嵌入式开发平台,确实因为arduino的绝大部分硬件都做了二级封装,所以自由度并不是很大。但其实我觉得真正想把这个开发环境学明白其实还是挺困难的,而且他的一个学习深度并不会比stm32系列要少多少。随着学习的深入,当然就会逐渐发现使用arduino也可以完成超级多的有趣的项目。,而且使用起来会比stm32要省事儿很多。
那我们就先看一下百度百科上是怎么介绍arduino的吧。
“Arduino,这个源自意大利的开源电子原型平台,自诞生以来便以其简单易用、功能强大、社区活跃等特点,吸引了全球数百万电子爱好者、设计师、工程师以及学生的关注。它打破了传统嵌入式开发的门槛,让没有编程和电子基础的人也能快速上手,创作出各种有趣的电子作品。Arduino的开发环境,也被称为Arduino IDE(集成开发环境),是一个基于Java的跨平台应用程序,支持Windows、macOS和Linux等操作系统。它提供了直观的图形界面、丰富的库函数和简单的编程方式,使得编写和上传代码到Arduino板变得异常简单。在Arduino IDE中,你可以通过拖拽或编写代码块来定义Arduino板的行为,如读取传感器数据、控制LED灯闪烁、驱动电机转动等。此外,Arduino IDE还支持代码调试、串口监视器等功能,帮助你更好地理解和调试你的项目。”
在百度百科介绍中,我们明显感受到Arduino开发环境最大的特点“使用简单”。Arduino IDE集成化开发环境不仅提供了丰富的衍生库,还极大地简化了开发流程。与其他开发环境相比,它无需深入编写底层代码,仅需调用库中的函数即可轻松实现I2C通讯、SPI通讯、激光雷达测距等功能。此外,网络上众多开发者不断贡献和扩展这些库,使得Arduino的开发库日益完善。所以Arduino开发系统简单可靠的特点,完美契合了我们大学生课外实践与创新的需求。因为我们更侧重于在现有技术基础上进行创新探索与二次开发,而非深陷底层逻辑的繁琐之中。通过有效利用开发系统中现成的库文件,我们能够高效完成大部分项目学习任务,显著节省时间成本。而且在创意设计与项目研究阶段,我们往往聚焦于功能的实现与验证,而非大规模量产的考量,因此STM32的超低价格优势在此阶段并未成为主导因素。因此直到如今我也依旧在大量的项目上使用Arduino开发平台。
Arduino包含了众多开发板型号,这些开发板不仅限于Arduino官方发布的系列,还包括了第三方开发板如ESP32等,它们各自具有独特的特点和优势,每种型号都针对不同的应用场景和需求进行了优化。官方开发版中比较常见的有Arduino Uno(基于ATmega328P单片机),Arduino Mega 2560(基于ATmega2560单片机),Arduino Nano,Arduino Yún。这些款开发板我都是使用过的,而且真的是非常的好用。就拿Arduino Nano来讲,他拥有14个数字输入或输出的引脚,6个模拟输入输出引脚。这个大部分项目都可以在他的基础上开发完成。而且它的体积非常的小巧,只有一个大拇指的体积。价格也是比较便宜。所以市面上很多学习类机器人都使用了这款开发板。甚至有一些5kg负载级别的机械狗或者是八足蜘蛛都用了这款开发版。但也正是因为这些开发板都使用了AVR处理器,货源并不是很稳定,导致他们的价格浮动会比较大。就拿我之前在高一时期做的攀爬机器人在这个项目来讲,核心驱动就是使用的mega 2560这块儿板子。当时是疫情期间,国内这边的新生产的AVR不来,全靠之前的库存来顶。所以这块儿板子也一直从疫情前的每块儿大概在30块钱左右飙升至98块钱这还是非官方的版本。但没办法,为了赶进度,我当时就是在价格最高的那段时间下单的。但也是这次的一个经历让我发现了一款宝藏处理器esp 32.
ESP32系列是在市场上最流行第三方开发板。ESP32是一款集成了Wi-Fi和蓝牙功能的微控制器,其性能远超Arduino Uno等基于AVR单片机的开发板。ESP32拥有丰富的外设接口和强大的处理能力,非常适合需要网络通信和复杂控制的应用场景。基本上我画的每一块儿板子上基本上都会使用个系列的Mcu作为核心处理器。主要原因倒不是因为它是国产的芯片(政治正确)。我觉得选择它的最核心的原因是他的算力真的非常强大。一大一小的双核架构,最高可拓展到32 mb的RAM基本上可以解决大部分的任务。甚至连一些小型的AI项目都可以跑起来。当然有一个原因也是因为esp32系列中很多处理器型号都做了一级的封装,晶振和PSRAM都在这个封装里面连好了。这样就可以使我们省去画外围电路这个复杂的步骤。把更多精力放在他的功能实现上。
因为想写的内容太多,我今后会专门一篇关于Esp 32文章,好好和大家聊一下这款宝藏处理器。
那在文章最后我想跟大家聊到底要去学习哪种开发平台,我的一个想法,如果大家是在之前从来没有接触过单片机,并且在未来会从事嵌入式硬件开发,那直接上stm32就行,一步到位。但如果是之前有接触过arduino的话,我觉得还是可以在进行深入学习一下,因为其实各大开发平台的一个底层原理都大差不差,把一个嵌入式平台学的十分透彻,在学习其他开发平台会非常的容易,基本上上手几天就能熟练运用了。当然去学习stm32更好的。那如果你是想着重发展互联网的话,我觉得去着重学习下esp 32是非常有必要的。