如今,许多开发人员正在使用基于Arduino的项目。Arduino很容易上手,但是大多数这些Arduino开发人员都能在此方面更进一步。他们将其他们简单地视为小爱好和附带项目。在本系列文章中,我们想探讨如何将项目带入更专业的水平,以及像CLion这样的IDE如何帮助您做到这一点。
CLion最新试用版
如今,许多开发人员正在使用基于Arduino的项目。Arduino很容易上手,但是大多数这些Arduino开发人员都能在此方面更进一步。他们将其他们简单地视为小爱好和附带项目。在本系列文章中,我们想探讨如何将项目带入更专业的水平,以及像CLion这样的IDE如何帮助您做到这一点。
我们需要建立些什么/strong>
我们为项目设定了一个宏伟的目标。我们将建立一个电子气压计,该气压计可以测量大气压力并将其绘制在图表上,以预测接下来几个小时的天气状况。这比经典的晴雨表更有用,因为要跟踪的压力变化比绝对值更重要。该设备应使用电池供电,一次充电即可工作数周。
我们将从构建经典项目(DIY晴雨表)开始:
- Bosch BMP085气压传感器。我们将使用GY-65模块,尽管它可能会被BMP180(GY-68)取代。
- Arduino Uno开发板。我们使用DFRduino UNO R3,因为它的连接器色彩丰富colorful
- Waveshare 4.2英寸电子纸屏幕。
- 电线,USB电缆,几个塑料PCB支架,M3螺栓和螺母。
- 宜家塑料平板电脑支架,用于将所有原型零件固定在一起。
听起来很有趣吗我们开始吧!
从原型开始
电子装置
我们首先在数位板支架上钻几个孔,然后将所有零件安装在其上。固定Arduino板的螺栓之一也固定了传感器模块。

电子纸屏幕模块利用一个单向SPI接口(CS,MOSI,SCK),两个输入控制信 (RESET,DC)和一个BUSY输出信 。该模块与8线电缆一起发货,借助2.54mm边缘引脚接头连接至Arduino。为了最大程度地减少我们需要使用的接头连接器的数量,我们将显示电源线连接到Atmega8在线串行编程(ICSP)接头连接器的电源引脚。压力传感器使用I2C接口(SCA,SCL),并与标准FM跳线连接。
下表描述了所有连接:

现在是时候编写一些Arduino原型代码了。
使压力传感器在线
在官方的Arduino指南详细解释了Arduino的草图发展。因此,我们将简要地进行设置:
- 创建一个新项目并为其命名。
- 然后添加 Adafruit_BMP085 library with the Sketch -> Include Library… -> Manage Libraries… 项目菜单。
- 添加一些实际的代码。
- 之后,您可以连接Arduino,上传草图,并使用Arduino串行监视器验证其是否有效。
使屏幕在线
对于该项目,我使用了屏幕供应商WaveShare在GitHub上共享的代码,并添加了更多代码来启动和运行屏幕。您可以在此处签出最终的项目代码。现在开始运行!

Arduino草图
“ Sketch ”是Arduino用于程序的名称。这是上载到Arduino板上并在Arduino板上运行的代码单元。Arduino草图使用的语言是C和C ++。更准确地说,可以编写一组C / C ++函数,然后对其进行一些预处理,例如在添加一个或多个Arduino专用#include子句时。最后将结果直接传递给C / C ++编译器(avr-g ++)。您可以在官方文档中阅读有关Arduino构建过程的信息。
由于最终仅使用C ++,因此可以使用任何通用的C ++ IDE编写代码。使用Arduino以外的IDE确实需要一些手动步骤,您可以从官方的构建过程描述中提取这些步骤。但是,让我们看看您是否可以获得任何回 !
CLion如何提供帮助
如果您对嵌入式开发感兴趣,并且正在寻找一个可以尝试的项目,那么Arduino是一个不错的起点。它拥有一个庞大而热情的 区,丰富的基础架构以及数十种各种代码示例和库。非常适合希望在嵌入式世界中迈出第一步的人,或者想要实现一些简单想法的人。随着项目的发展,它开始需要更多的工作,更复杂的代码,更高的嵌入式处理器性能,更多的MCU内存以及更多的外围设备。在这一点上,IDE等开发工具对于保持我们的代码质量并帮助我们更高效地进行开发非常有用。让我们看一下CLion如何提供帮助。
CLion提供的另一个绝佳机会是调试代码的能力。它使您可以逐行跟踪代码执行,检查变量的值,观察外设寄存器的内容等。所有这些都可以在仿真器中完成,也可以在真实的MCU上完成,这取决于是否存在合适的仿真器以及MCU的调试功能是什么。
在接下来的专用教程中我们将学习如何在Windows上配置CLion,包括用于编译和调试的必要工具链。在我们的Arduino案例中,您将需要安装MinGW。
与世界分享您的项目
在发布到VCS时,不要忘记添加一个Readme.md文件,该文件可以让其他人知道项目的内容,并提供有关如何使用该项目的详细信息(需要进行哪些设置,使用哪种工具链,等等。)。CLion附带了Markdown支持,因此您可以轻松获得Readme.md文件的预览:

迁移到PlatformIO
PlatformIO.org是一个用于嵌入式开发的丰富生态系统,它支持各种目标硬件类型,编译器和框架,包括Arduino项目。
让我们看看如何在CLion中开始使用PlatformIO:
- 首先,您需要安装PlatformIO Core。
- 还有CLion的PlatformIO插件(“Settings/Preferences | Plugins”)。
现在我们准备创建一个新的PlatformIO项目,在本例中,我们将选择Arduino Uno。单击文件->新建项目,然后选择Arduino Uno作为目标以及项目位置。由于列表上有很多板子,因此您可以仅输入“ Uno”,然后使用箭头键浏览板子列表。为避免以后出现故障,我们建议您不要在该位置使用国际字符,特殊符 或空格。

现在是时候向我们的项目中添加一些代码了。将所有头文件从Arduino草图文件夹复制到项目的include文件夹,并将所有源文件和.ino文件从Arduino草图文件夹复制到项目的src文件夹。您可以删除空的main.c文件-我们不需要。
由于我们不依赖Arduino IDE进行与Arduino相关的预处理程序转换,因此我们需要手动执行一些其他步骤:
- 将草图转换为C ++。为此,您只需将主.ino文件重命名(Shift + F6)为.cpp即可。在这种情况下,CLion会相应地自动更新CMake文件。然后,您只需要重新加载CMake项目即可:CMake | 重新加载CMake项目。
- 打开arduino-barograph.cpp并将其添加#include <Arduino.h>到文件的开头。
您现在可以构建项目!让我们开始吧。
将电子设备连接到计算机,然后启动Platformio Upload运行配置。现在,固件已刷新到MCU,并且我们的设备可以再次工作。那很简单!
让我们退后一步,看看到目前为止我们已经实现了什么:
- 我们开始使用一些其他软件(PlatformIO,CLion)来获得更强大的嵌入式环境,并从C ++ IDE的生产力功能中受益。
- 由于采用了PlatformIO方法,因此可以轻松地将应用程序轻松迁移到许多其他硬件平台。
- 通过使用CLion中的VCS集成和Markdown支持,我们使项目生命周期的维护更加方便。
控制项目
PlatformIO确实很有帮助,但是如果您想完全控制项目并自定义构建步骤,该怎么办在,我们将项目转换为纯CMake项目。这将涉及使用CLion IDE,CMake构建系统,用于AVR的GCC工具链和avrdude刷新实用程序。
我们将继续使用Arduino库。可以从Microchip 站下载AVR工具链,从Savannah下载avrdude实用程序。
在CLion中,以以下方式配置工具链和CMake配置文件:


该项目本身的代码可以在GitHub上找到。手动复制到项目源的Arduino库与PlatformIO代码相同。随时克隆和使用它。但是,当涉及到CMakeLists.txt文件中的这些用户相关参数时,您应该小心:
- AVRDUDE位置
- Arduino COM端口名称
- 特殊构建目标FLASH。
一切设置正确后,您可以在CLion中触发Build操作(而不是Run!),它将尝试刷新Arduino:

让我们看看这与我们之前使用PlatformIO的设置相比如何:
- 我们需要注意更多设置,例如COM端口名称,avrdude位置等。
- 现在,我们可以完全控制构建过程,并可以根据需要进行调整。
- 该应用程序可以迁移到其他硬件平台(即使PlatformIO不支持的平台)。
未完待续…
本系列将继续。很快,我们将讨论通过使用另一个开发板并尝试利用其最佳功能来进一步推进该项目。敬请期待!并在评论中让我们知道您希望我们重点介绍嵌入式开发的哪些方面,尤其是Arduino。
JetBrain技术交流群现已开通,QQ搜索群 “786598704”或者扫描下方二维码即可加入

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!