硬件历险记:第2部分-跌跌撞撞

这是我的Arduino项目系列的第二部分。 本系列的目的是记录我在第一个硬件项目中所学的内容-思想过程和发现,并强迫我真正理解和记住我所学的所有知识。

在终于开始我的Arduino项目(阅读:数月的拖延)并实际上从力敏电阻(FSR)获取数据后,我决心保持发展势头。

警告 :动力不足的一面是,在过去的两周中,我完成了许多令人惊讶的工作,这意味着这篇文章是lo脚的。

我认为有三个潜在的“下一步”(不分先后):

  1. 将加速度计连接到电路,并通过Arduino IDE获取数据
  2. 从FSR获取数据到浏览器并播放!
  3. 将其他两个FSR附加到Arduino Beetle。

我决定从加速度计入手,因为我对自己新发现的电路构建技能感到非常满意。

加速度计

什么是加速度计?

加速度计测量物体速度的变化率(即加速度)。 我购买了DFRobot Gravity LIS2DH(v 1.0) ,它是一个三轴加速度计,这意味着它可以测量x,y和z轴上的速度变化。 该信息对于测量脚的运动应该是有用的。

我找到了这篇文章,下面的图表显示了如何将Gravity附加到要挖掘的其他Arduino。 本文提供了说明,图表和示例代码(hurrah!)。 我想将Gravity添加到Arduino派对将非常容易! 不到一个小时的工作,我会得到数据! 容易。

我错了。 大错特错。

首先,我很懒惰/便宜,不想出去买更多的电线,所以试图用导电线伪造它。 不要那样做 我所做的只是浪费我的导电线而变得目不转睛。

克服困难之后,我去商店买了电线,并学习了如何剪断电线。 我还学习了如何将库导入Arduino代码。 我按照上述说明再次尝试,但仍然无法正常工作。 但是这次我很高兴,因为至少我在Arduino IDE中收到了一条实际的错误消息(而不是一团糟)。 进展!

在接下来的两周中,我转到了项目的数据可视化方面(如下),但一直回到Gravity,并想知道以下几点:

  • 为何上图中连接Gravity的SCL和SDA端口与Arduino的模拟引脚的电线交叉
  • SCLSDA是什么意思?
  • 问题是硬件还是软件? 我剥离了FSR电路,看是否有作用。 它没。 我遍历了Arduino代码并意识到它失败了,因为加速度计没有初始化…我什至试图读取用C编写的底层库。这很令人满足,但我仍然无法解决问题。
  • Arduino代码如何知道在哪里寻找加速度计数据? 该代码没有像FSR代码那样指定引脚(例如A0)。 加速度计具有魔力吗?
  • 示例代码中的默认错误是no I2C devices found 。 那是什么意思
  • 引力是否还亮着(没有光)? 我是否没有意识到就打破了它? 我是否真的因导电线故障而使其短路?
  • 为什么没有关于Arduino Beetle和Gravity的任何在线资源?
  • 为什么所有有关Arduino Uno(或Raspberry Pi)的Gravity的在线资源?
  • 我为什么不只使用Arduino Uno ????

快进了两个星期后,我终于与卢克谈了谈,通过讨论和进一步搜索,卢克向我解释了两件重要的事情:

  1. Arduino Beetle的底面不仅是基础,还包含各种其他功能! 例如,用于SCL和SDA的端口。 即与重力相同的标签。 巧合..?
  2. 图中A4和A5模拟引脚的放置不仅是随机的,这些引脚实际上还具有其他功能,而不仅仅是获取模拟输入/输出。 在Arduino Uno中,这些特定的引脚还具有接收SCL和SDA信息的能力(稍后再介绍)! 谁知道? 我的意思是,如果我正确地阅读了表格,我可以知道,但是我不知道自己在读什么。

这些发现揭示了为什么它不起作用,但是还有另一个问题。 Arduino Beetle的底侧没有孔,您可以将导线环通以创建具有SCL和SDA端口的电路,这意味着您需要将其焊接在一起以创建电路,或者可以执行我的工作并对其进行测试通过用拇指握住它,然后像这样摇动整个东西来工作:

加速度计的娱乐时间

看,好玩!

我打算继续这样做,直到准备好将整个项目焊接在一起,同时做一些拇指的事情来测试我的代码,但是Luke乐意为我焊接这两根电线。 显然,我有可能会因握住并摇晃Arduino / Gravity电路而破坏某些东西,因此他基本上没收了它。

获得的经验

  • 不要懒惰,用导电线代替电线
  • 如何使用YouTube和一把剪刀剪线和剥线(请参阅下文)
  • 如何将库导入Arduino
  • 实际上,Arduino甲壳虫还有另一面!
  • 我真的不知道我不知道! 我不知道Arduino Uno中的模拟引脚具有特殊功能或I2C是什么。 如果我知道这些事情之一,那么我可以更快地解决这个问题! 如果您不知道正确的搜索词,Google不会为您提供帮助。
  • 在自学硬件时,请购买经过反复测试和测试的硬件。 确保有可用资源! 我很难知道Arduino Beetle和Gravity是否不兼容,这是电路问题还是代码。 我以为的问题,但不知道如何解决

关于电线的随机事实

  • 颜色没有任何意义! 绝缘电线的颜色纯粹是为了使它们彼此区分,因此您可以用眼睛更轻松地跟随电线。 但是您可以使用单色,而仅使用黑色或白色……但是您可能最终会讨厌自己。
  • 您可以购买预先切割,裸露金属销的线材,也可以在线轴上购买线轴,这种线束价格便宜,长度可定制,但是您必须自己切割。
  • 切割和剥线真的很容易。 我学会了使用此YouTube视频。 剪刀更整齐,但钳子更快。 我现在在背包里背着钳子,感觉像个坏蛋。

I2C,SCL,SDA…WTF?

我不会尝试让所有理查德·费曼都来尝试解释这个问题。 我要说的是I2C(读作“ I-squared-C”)是一种串行通信协议,用于发送/接收SCL和SDA信号。 SDA代表串行数据,是用于在设备之间发送和接收数据的线路。 SCL代表串行时钟,它携带时钟信号,该信号使设备之间进行的所有数据传输同步。

在Gravity的上下文中,I2C是一种串行协议,它使加速度计可以将数个数据(即xyz值)一个接一个地(即“串行”)发送到Arduino。 这与发送随时间变化的单个值(电压)(如模拟引脚)相反,是连续发生的。

有关更多信息,这可能很有用。

磁力计?

在我对重力的困惑中,卢克借给我了另一种加速度计,它也内置了磁力计传感器。 他建议我使用磁力计传感器获取有关运动方向的更有意义的信息。 我在网上看了一下,现在我在想也许应该添加那个陀螺仪。 但是第一步是弄清楚他们在我的项目中将实际做什么……