DesignSpark Electrical Logolinkedin
菜单 搜寻
提问问题

兼容Arduino的Adafruit Adalogger

用于低成本数据记录的ARM Cortex-M0

Adafruit Feather 是一系列兼容Arduino及设计为轻巧而有灵活性的开发板。它们都有相同的大小当中包括LED矩阵显示屏,Wi-Fi和LoRa模组等。关于Adafruit Feather的介紹可以在 Adafruit 网站上找到。

在这篇文章,我们会了解一下 Adalogger  ,一个整合了USB,microSD卡插座和支持LiPo电池充电的数据记录器! 在连接到Adafruit的accelerometer board和载入一些数据前,我们会先把它在Arduino IDE上运行。

Feather板上

注意Adalogger有两个版本:一个是使用ATSAMD21G18 ARM Cortex-M0微控制器,另一个是使用ATmega32u4。 在这篇文章,我们将使用Cortex-M0版本。

在连接任何额外的外设之前,先使用Arduino IDE,这样我们可以测试一些演示代码(在Arduino中称为“sketch”)。

启动最新版本的IDE(编写本文时为1.6.13),我们需要在添加一个URL到”Additional Boards Manager”,然后才能连接到板。在”Preferences”菜单中,找到”Additional Boards Manager”选项,并添加以下URL:

https://adafruit.github.io/arduino-board-index/package_adafruit_index.json

单击“OK”保存。 接下来到 Tools菜单,然后选 Board > Boards Manager。 首先,向下滚动到Arduino选项中的Arduino SAMD板(32位ARM Cortex-M0 +),并安装最新版本(编写时为1.6.9)。在Boards Manager中 ,到Adafruit选项中选择Adafruit SAMD Boards ,并安装最新版本(编写时为1.0.13)。 在这之后,最好退出并重新启动Arduino IDE尽管不是绝对必要。如果您正在运行Windows,您需要从Adafruit下载并安装其他驱动程序,确保您在安装过程中选择“Feather M0”。

现在我们可以使用micro USB線连接Adalogger到我们的电脑。 电路板自动切换到USB供电,因此无需轻触开关或将跳线设置到正确的引脚。 计算机将识别设备并创建COM端口。

在 Tools> Ports的下拉菜单应显示Adafruit Feather M0被分配了一个COM端口。点选它,您就可以将示例sketch上传到开发板了。 在 Files > Examples > Basics > 中点选Blink,这是开始的最好地方。

打开sketch并尝试将其上传到电路板。 如果上述步骤成功完成并且一切正常,您应该看到板上的红色LED在闪烁。

将数据记录到SD

现在我们可以上传sketch到Adalogger,尝试写一些数据到SD卡。 首先使用FAT文件系统格式化SD卡,我使用这里找到的格式化工具。

我们将使用Arduino IDE內的sketch示例来尝试讀取卡的信息(并且是一个很好的基本测试)。 在 File> Examples> SD> CardInfo。 将sketch上传到Adalogger,然后打开串行控制台(单击IDE右上角的 “放大镜”图标)。 您应该看到类似以下的屏幕截图:

现在我们可以尝试写一些数据到卡。 再次,在IDE中有一个sketch示例来做,但是 GitHub上有一个更简单方法可用在Adafruit的。 我取这个代码,并修改它来读取和记录连接到Adalogger的LiPo电池电压。 这个功能是内置的,这意味着我们不必担心我们自己的布线错误 - 只是代码能否運行。

Sketch示例可以在这里找到。

我们可以看到电压被读取并显示到串行控制台中。为了检查数据是否正在写入文件,我关闭了Adalogger,移除SD卡并将其放入电脑,并打开txt文件。有几个txt文件,但每个是空白的,原来没有任何数据记录!

再仔细阅读Adafruit的文档 ,显示实际上数据存储在缓冲区buffer中,并且只会每50个数据点才写入文件。 也许我没有在测试期间运行足够长时间作记录至数据保存! 所以我做了一个几分钟长的测试,然后再次检查。 我还没有数据,所以为了强制每个数据点也保存下来,我添加了一行代码:

logfile.flush();

这解决了这个问题,虽然Adafruit文档提到这将导致Adalogger使用多大约3倍的電,所以这不是理想的低功耗应用。

记录更有趣的数据

Adafruit系列包括许多可以安装在小巧方便分线板的传感器和输入设备,使创客更容易进行原型开发,尤其是使用在Raspberry Pi和Arduino等平台。

我们现在将连接这样的模块,一个3轴加速度计板,通过I2C与Adalogger通信,并开始记录我们获得的值。 很简单就可以连接两个板:在焊接提供的插头引脚后,我们使用了四条母对母跳线,连接Vcc,GND,SCL和SDA。

接下来,我设计了一块简单的安装板并用激光切割出来,将板和电池固定在一起。 这有助于保持整洁,并提供额外的保护,防止台上的杂散线或金属物体接触板下侧的针脚。

与所有Adafruit产品一样,加速度计板附带了参考文档和源码帮助您设计开发。 我需要在Adafruit GitHub下载并安装两个库:在这里 和 这里,然后尝试从传感器中获取一些数据。

值得注意的是这些库对于模块的价值和重要性。没有它们,使用这些传感器会更困难,尤其是对于那些正在学习或没有电子设计经验的人。即使我们有模块,但没有库的话,我们则需要把从传感器得到的数字作进一步的计算,以获得更有用或敏感的数据。 Adafruit努力构建他们的库,使他们的代码提供SI单位的数据,代表我们可以专注于项目上!

有关如何安装库的更多信息,请参见 此处

在安装好这些库和重新启动IDE后(再次,确保库正确安装的好习惯),我上传示例sketch(在 File> Examples> Adafruit MMA8451 Library> MMA8451 demo)到Adalogger测试一切是否正常。

然后,我简单地整理加速度示例sketch的一部分到我们现有的数据记录sketch,很快就有数据从加速度计记录到SD卡。

 

最后的代码在 这里

总结

Adafruit的Arduino兼容板系列不断扩大并令人印象深刻,它的模块和分线板的系列也很廣。 虽然它们是针对创客和教育市场,但它们对任何想要快速制作原型和构建有趣项目的人都很有用。

公开设计(Adafruit公开其大部分产品的电路板布局和原理图),配合文档和软件,为用户带来了无与伦比的体验,而活跃的在线社区则填补了空白。Adafruit有大量的产品,世界各地的人都会使用,让创客和电子项目的开发变得更容易。

maker, hacker, doer

23 Dec 2016, 11:47