AcmeIot-1-基于Nuttx和ESP32的ROS节点
作为一个程序爱好者,而不是作为工作者,首要的精神是什么呢,应该是生命不熄,折腾不止吧。这个系列我们捣鼓一些有意思可能又没啥用的东西。
前面的分享 Uav开发杂记-2-无人机的RTOS 中提到了很多的RTOS,可以发现我最喜欢的还是Nuttx,这个系列我们基于Nuttx搞一些有意思的东西,同时分享一些关于Nuttx与Iot相关的知识。
玩Iot首先需要一款硬件,自己设计是最好的了,不过比较费时费力,我们就在网上选一款吧,对这款硬件的要求还是要明确的:
小巧精致
带屏幕
能wifi联网
stm32的开发板大多比较大,接口丰富,入门学习比较好,不过太板砖啦,而且不直接支持wifi,stm32这一年价格飞涨,还是选一款国产芯片吧。
esp32就成为一个首选啦,乐鑫推出的国产mcu具有非常强大的功能,稍微列一下它的参数
32-bit MCU & 2.4 GHz Wi-Fi & Bluetooth/Bluetooth LE
Xtensa 双核 32位 LX6 微处理器,支持高达 240 MHz 的时钟频率
448 KB ROM、520 KB SRAM、16 KB RTC SRAM、4 MB SPI flash
wifi和蓝牙支持
外设包括电容式触摸传感器,霍尔传感器,SD 卡接口,以太网,高速 SPI,UART,I2S 和 I2C
非常强大的配置,如果io资源再丰富一些可以搞飞控了,还要啥stm32呀。
硬件强大也要配上完善的软件资源才能玩的溜吧,esp32提供了非常完善的软件框架esp-idf,包含的软件包可以满足基本所有的Iot应用,它基于freertos内核。
不过为了发挥生命不熄,折腾不止的精神,我们能不能不使用esp-idf提供的现有的软件框架去玩这一款芯片呢,基于Nuttx去开发。
之前有提到乐鑫现在也是Nuttx的主要贡献者之一,为Nuttx提供了esp32的bsp和board支持,基于这个我们就可以在Nuttx上开发esp32啦。
PX4基于Nuttx系统,主要使用了Nuttx的任务管理、文件系统、bsp功能,实际上Nuttx还有强大的网络软件栈、设备驱动、图形UI支持,这里我们去发掘Nuttx的更多应用。
Nuttx支持第三方的图形库LVGL,可以提供非常美观和友好的UI图形支持,NXP提供了GUI Guider这个UI设计器,可以方便的为LVGL设计UI界面。
这里我们搭建了esp32+nuttx+LVGL的环境,可以写出一个 hello 的应用了,只写一个这样的应用不是一件好玩的事情吧。
结合无人机和ROS的应用,将esp32作为ros的节点,做一个ros的显示控制mini终端是一件很有意思的事情吧。
以下是简单的界面效果:
这个演示还比较有限,没有演示ros数据显示与控制的效果,会在这个后面的分享中完善,并且逐步分享Nuttx的相关知识,可以认为这是一个持续推进的业余项目吧。欢迎大家持续关注。
如果要说做这个有什么应用价值,我也不知道有什么应用需求,只是觉得能做它,并且还蛮有趣的吧。大家觉得呢?