代码之家  ›  专栏  ›  技术社区  ›  Max Larionov

Arduino无人机项目

  •  0
  • Max Larionov  · 技术社区  · 8 年前

    我正在做一个无人机项目,目前正在选择一个板来使用。是否可以使用Arduino Nano满足以下所有需求:

    • 陀螺仪和加速计
    • 气压计(作为高度表)
    • 数字磁力计
    • WiFi(发送遥测数据进行处理)
    • GPS模块
    • 4台电机(当然)

    附笔:

    1. 我对阿杜伊诺一无所知。然而,我有很好的ASM,C/C++,编程背景,我曾经设计过模拟电路。
    2. 我想避免使用现成的飞行控制器。
    3 回复  |  直到 8 年前
        1
  •  2
  •   Ben    8 年前

    如果使用IC传感器,引脚数不应该是太大的问题,它们只会共享相同的两个引脚(SCL、SDA)。

    我同意RAM可能是一个限制,处理能力(一个arduino uno的30 MIPS)应该足够。

    在一个阿尔杜诺大型项目上,APM项目多年来取得了巨大成功。

    我相信有可能用Arduino nano和几个IC传感器+GPS制作一个非常简单的无人机飞行控制器。

    但即使使用更先进的微控制器,这也不是一项微不足道的任务。

    ***如果您仍然想尝试这个实验,请查看openlrs项目: https://code.google.com/p/openlrs/ 它相当古老(也有几个衍生项目),但它运行在类似于arduino uno(atmega328)的硬件上。它提供RC控制,以及带有ic陀螺仪、加速度计(基于wii遥控器)和气压计的四飞行控制器。

    它还解析来自GPS的数据,但它不提供自主导航,但应该可以在不需要太多额外工作的情况下添加它。

    编辑:关于可用RAM。

    我明白,乍一看,2kb的RAM似乎是一个非常小的量。其中一部分已经被Arduino使用,例如,串行库使用一些RAM提供了两个64字节的FIFO。Wire(IC)库也是如此,尽管数量较小。它还将一些RAM用于堆栈和临时变量,甚至用于诸如浮点运算之类的简单任务。假设总共使用500字节。

    但实际上需要多少RAM? -它将有几个PID调节器,假设每个调节器将使用10个浮点参数来存储PID参数、电流值等。因此,它为每个调节器提供40个字节,假设我们需要10个调节器。我们应该需要更少,但让我们举个例子。这是400字节。 -然后它需要解析GPS消息。GPS消息最大为80字节。让我们为GPS解析提供一个80字节的缓冲区,即使可以在不将其存储在缓冲区中的情况下“实时”执行大部分解析。 -让我们为GPS和传感器数据保留一些空间,300字节,这看起来很慷慨,因为我们不需要将它们存储在浮动中。但我们可以把当前的GPS坐标、海拔高度、卫星数量、俯仰、滚转等输入其中 -然后是一些应用数据的地方,如家庭GPS坐标、当前模式、杆位置、伺服值等。

    剩下的主要是计算,从当前的GPS坐标和目标坐标到目标高度、航向等,然后将PID输入计算出的俯仰和滚转。但这不需要额外的RAM。

    所以我想说,可以用1280字节做一个非常简单的飞行控制器。如果我太低或忘记了某些方面,仍有700多字节可用。

    当然,并不是说这很容易做到,每个方面都必须优化,但这看起来并不是不可能的。

        2
  •  2
  •   dda    8 年前

    在Nano上实现所有这些都是一个技巧。我建议你看看 http://ardupilot.com/ 他们已经围绕ARM芯片(与Arduino相同)建立了很多很酷的想法,而且那里也有一些非常活跃的社区。

        3
  •  1
  •   dda    8 年前

    即使你没有用完引脚(你可能会用完),当你为电机和GPS编写代码时,你的RAM也会用完。

    这甚至还没有达到CPU速度,这远远不够。正如在另一个答案中提到的,使用Cortex M-x CPU会更好。

    可以说,你可以使用几个Nano,每个任务一个,但把它们链接在一起会很混乱。。。