我正在做一个无人机项目,目前正在选择一个可以使用的董事会。是否可以使用Arduino Nano来满足以下所有需求:
P.S:
发布于 2016-01-07 16:25:02
管脚计数不应该是一个太大的问题,如果使用一平方米C传感器,他们将简单地共享相同的两个引脚(SCL,SDA)。
我同意RAM可能是一个限制,处理能力( arduino uno的30 MIPS )应该是足够的。
在arduino超级跑车上,APM项目运行了多年,取得了巨大的成功。
我相信这是有可能做一个非常简化的无人机飞行控制器与Arduino纳米和几个I S C传感器+全球定位系统。
但即使有了更先进的微控制器,这也不是一项琐碎的任务。
*如果你还想尝试这个实验,请看openlrs项目:https://code.google.com/p/openlrs/。它很古老(也有几个派生项目),但它运行在类似于arduino uno (atmega328)的硬件上。它提供RC控制和四飞控制器,包括I S.c陀螺仪、加速度计(基于wii遥控器)和气压计。
它也解析来自GPS的数据,但是afaik它不提供自主导航,但是应该可以添加它而不需要太多额外的工作。
编辑:关于可用的RAM。
我知道,乍一看,2kb的RAM似乎是一个非常小的数量。其中一部分已经被Arduino使用,例如,串行库使用一些RAM提供了两个64字节的FIFO。电线(I平方公里C)库也是如此,尽管数量较少。它还为堆栈和临时变量使用一些RAM,甚至用于浮点操作等简单任务。比如说,它总共将使用500个字节。
但是真正需要多少内存呢?-它会有几个PID调节器,假设每个调节器使用10个浮动参数来存储PID参数、当前值等。所以它给每个调节器40个字节,假设我们需要10个调节器。我们应该少一点,但让我们以这个例子为例。这是400个字节。-Then它需要解析GPS消息。GPS消息最多为80个字节。让我们允许一个80字节的缓冲区用于GPS解析,即使不需要将其存储在缓冲区中,也可以执行大部分的“动态”解析。-让我们为GPS和传感器数据留出一些空间,300字节,这似乎很慷慨,因为我们不需要将它们存储在浮标中。但是,我们可以把当前的全球定位系统坐标、高度、卫星数目、俯仰、滚动等作为应用数据的一个地方,例如家庭全球定位系统坐标、电流模式、粘贴位置、伺服值等。
其余的主要是计算,从当前的GPS坐标和目标坐标到目标高度、航向等,然后将PID输入到计算的俯仰和滚动。但这不需要额外的RAM。
所以我想说,用1280字节做一个非常简单的飞行控制器是可能的。如果我太低或者忘记了一些方面,仍然有超过700个字节可用。
当然不是说这很容易做,每个方面都必须优化,但这看起来并不是不可能的。
发布于 2016-01-07 07:30:11
这将是一个诡计,使所有这些工作在一个纳米。我建议你看看http://ardupilot.com/,他们在ARM芯片上建立了很多很酷的想法(和Arduino一样),那里也有一些非常活跃的社区。
发布于 2016-01-07 10:29:18
即使你没有用完引脚(而且你可能会),当你为马达和GPS编写代码时,你就会耗尽内存。
这甚至没有进入CPU的速度,这还远远不够。正如在另一个答案中提到的,使用Cortex M会更好。
可以说,你可以用几个Nano,每个任务一个,但是把它们链接在一起会很混乱……
https://stackoverflow.com/questions/34649404
复制相似问题