我正在研究无人机项目,目前正在选择使用的电路板。是否可以使用 Arduino的 </跨度> 纳米满足所有需求:
陀螺仪和加速度计气压计(作为高度计)数字…磁力计WiFi(发送遥测进行处理)GPS模块4台电机(当然)
P.S:
我什么都不知道 Arduino的 </跨度> 。但是我有一个很好的ASM,C / C ++,编程背景,我曾经设计模拟电路。我想避免使用现成的飞行控制器。
…
即使你没有耗尽引脚(你可能会这样做),当你为电机和GPS编写代码时,你的RAM也会耗尽。
而这甚至没有进入CPU速度,这远远不够。正如另一个答案中所提到的,使用Cortex M-x CPU会更好。
可以说,你可以使用一些Nanos,每个任务一个,但将它们链接在一起将是一个很好的混乱......
如果使用I²C传感器,引脚数不应该是一个问题,它们只会共享相同的两个引脚(SCL,SDA)。
我同意RAM可能是一个限制,处理能力(arduino uno的30 MIPS)应该足够了。
在arduino mega上,APM项目运行了多年,取得了巨大的成功。
我相信可以使用Arduino nano和几个I²C传感器+ GPS做一个非常简化的无人机飞行控制器。
但即使使用更先进的微控制器,这也不是一项微不足道的任务。
***如果您仍想尝试实验,请查看openlrs项目: https://code.google.com/p/openlrs/ 。它已经很老了(也有几个衍生项目),但它运行在类似于arduino uno(atmega328)的硬件上。它提供RC控制,带有i²c陀螺仪,加速度计(基于wii遥控器)和气压计的四路飞行控制器。
它还解析来自GPS的数据,但是它不提供自主导航,但应该可以在没有太多额外工作的情况下添加它。
编辑:关于可用的RAM。
据我所知,乍一看2kb的内存似乎非常少。其中一部分已被Arduino使用,例如串行库使用一些RAM提供两个64字节FIFO。对于Wire(I²C)库来说,虽然数量较少。它还使用一些RAM用于堆栈和临时变量,即使对于诸如浮点运算之类的简单任务也是如此。让我们说它总共将使用500个字节。
但是真的需要多少RAM呢? - 它将有一些PID调节器,假设每个将使用10个浮点参数来存储PID参数,电流值等。因此它为每个调节器提供40个字节,并且假设我们需要10个调节器。我们应该少花钱,但让我们举个例子。这是400字节。 - 然后它需要解析GPS消息。 GPS消息最多80个字节。让我们允许80字节的缓冲区用于GPS解析,即使可以“在运行中”进行大部分解析而不将其存储在缓冲区中。 - 让我们为GPS和传感器数据保留一些空间,300字节似乎很慷慨,因为我们不需要将它们存储在花车中。但我们可以在其中输入当前的GPS坐标,高度,卫星数量,俯仰,滚动等 - 然后是应用数据的某个位置,例如家庭GPS坐标,当前模式,操纵杆位置,伺服值等。
其余的主要是计算,从当前的GPS坐标和目标坐标到目标高度,航向等。然后将PID输入到计算的俯仰和滚转。但这不需要额外的RAM。
所以我想说使用1280字节做一个非常简单的飞行控制器是可能的。如果我太低或忘记某些方面,仍然有超过700字节可用。
当然不是说它很容易做,每个方面都必须进行优化,但看起来并不是不可能的。