在Arduino -物联网操作系统上搭建RIOT-OS
扫描二维码
随时随地手机看文章
当我们谈论嵌入式项目时,首先想到的是Arduino。但为什么是Arduino?因为Arduino是一个单核微控制器,在市场上价格很低。此外,还有各种支持的传感器/执行器板可用,我们可以将其用作即插即用。在IoTDesignPro,我们也用Arduino构建了许多物联网项目,如果你感兴趣的话可以看看。
但是当涉及到具有时间复杂性的应用程序时,我们必须实时执行多个任务,我们开始怀疑。Arduino适合这个项目吗?还是我们应该改变它?我们该怎么办?在这里,RIOT是一个救援。
你可能会想什么是RIOT?好吧,RIOT并不是一个复杂的东西,事实上,它是一个嵌入式系统的实时操作系统,附带了各种库,帮助我们完成物联网操作。简而言之,我们称RIOT-OS为“物联网的友好操作系统”。我们已经介绍了关于“在嵌入式设备中使用什么以及如何使用RIOT-OS”的教程,在那里我们可以了解更多关于RIOT-OS的信息。
在本教程中,我们将开始使用Arduino和RIOT-OS,并在Arduino上设置RIOT-OS。我们将使用RIOT-OS在Arduino上演示LED闪烁操作到另一个任务。
组件的要求
1.Arduino Uno/Nano(我使用Arduino Nano)
2.LED(我用红色LED)
3.220Ω电阻
4.电路试验板
5.跳线
6.最新发布的RIOT-OS SDK
7.任何支持C Makefile项目的IDE。
8.USB电缆
9.我使用Ubuntu 16.04来开发这个应用程序。(RIOT-OS目前支持Linux/MAC-OS)
LED与Arduino Nano的硬件连接
设置的完整连接图如下所示。您只需要按照图中所示进行连接,就可以看到LED闪烁。
代码的解释
在这个项目中,我们使用RIOT-OS从一个独立的线程中使LED以1秒的间隔闪烁。
下面提到的那些库包含在代码的开头。
接下来,定义一个名为“EXTERNAL_LED”的“#define”变量,用于访问与Arduino-Nano GPIO-A5连接的LED。但在RIOT OS中,所有模块引脚都与其PORT & PIN进行映射。如果微控制器的端口被称为“PORT-A, PORT-B, PORT-C”,.....或“PA, PB, PC, .....”或“P0, P1, P2, .....”,那么在RIOT OS中,这些端口被分配了类似“0,1,2,.....”的数字等等。因此,当我们需要访问与atmega328p引脚“PC5”映射的GPIO-A5时,我们需要调用GPIO_PIN(PORT, pin)函数,其中端口=0,引脚=5。
现在,为一个任务创建一个堆栈,并实现任务函数,以1秒的间隔独立完成Led闪烁过程。
在main()循环中,我们使用thread_create()函数创建线程。
测试和调试RIOT通信过程
一旦电路和代码完成,我们在这些命令的帮助下构建和测试代码。
所以,在这种情况下,我们使用Ubuntu 20.04.2 LTS-64bit,为了创建开发环境,我们需要在设置RIOT OS之前安装先决条件。
在安装完所有需求之后,我们就可以设置RIOT-OS了。为此,我们需要创建一个工作区文件夹,用于下载和git clone最新版本的RIOT-OS。要做到这一点,请遵循以下步骤:
现在是时候为Arduino设置硬件工具链了。
安装完Arduino的RTOS-OS后,是时候编译代码了。对于构建/编译代码,我们需要调用make命令和BOARD参数。
在我们的例子中,我们使用Arduino-Nano开发板,所以板的值是“Arduino-Nano”。如果您使用不同的板,那么请检查路径[$HOME/riot_workspace/RIOT/boards]以获取支持的Arduino板列表。
为了将代码闪现到Arduino Nano中,我们需要调用flash命令。
在闪过代码之后,我们需要调用term命令来检查屏幕上的日志输出。
[注意:如果出现类似“ Permission denied: '/dev/ttyUSB0' ”的错误,那么调用这个命令来解决这个“ sudo chmod a+rw /dev/ttyUSB0 ”]
本文编译自iotdesignpro