上周,我的美味怪兽(Monstera Deliciosa)--一种可爱的热带室内植物--开始发推特了。这是关于这个博客骨架的两篇文章中的第一篇,展示了我是如何帮助它在互联网上发出自己的声音的。首先,我们将看看读取我的植物思想所需的硬件和代码;第二部分将看看这些思想是如何向世界传播的。这些帖子应该是有意义的,即使你以前从未玩过硬件,所以如果你有问题,请@Me(@SaraBee)!
一个月前,我在买一台便宜的土壤水分测定仪,以帮助我照顾我日益壮大的植物大军。在我的搜索结果中,我找到了我正在寻找的简单机械传感器的匹配结果,但也有一些廉价的硬件传感器,例如与Arduinos一起使用的项目。当然,我的第一个想法是:“我的工厂需要连接到互联网。”
在研究购买哪种传感器时,我发现有两种类型可供选择:电阻型和电容型。电阻式传感器的工作原理是通过测量土壤的导电性,通过让电流通过土壤,如果你还记得高中科学课,你可能记得某种电离的东西,某种电离的东西(这就是我现在所在的地方)--基本上,电与水和金属产生化学反应,随着时间的推移,铜从传感器中移除,最终导致传感器停止工作。另一方面,电容式传感器没有暴露的电极,因此随着时间的推移不会因电解而失效。我真的很喜欢这段视频,它深入了解了每种传感器的工作方式,并演示了电阻式传感器的这种特殊故障模式。不用说,我是电容式的,因为我计划把传感器放在原地很长一段时间。
传感器本身并不能真正帮助我,它所能做的就是输出模拟值(比如273、418或550),以供其他设备读取。我已经将RaspberryPI设置为一台始终在线的Linux服务器,用作mydev box,所以最初我对将传感器直接连接到RPI的GPIO引脚(通用输入/输出引脚,用于传感器和其他设备)很感兴趣。有一个小问题:RPI的GPIO引脚只适用于数字输入和输出,而不是像我的传感器的输出那样的模拟。如果我把传感器直接插到我的RPI上,它就不能理解信号了。
我的第一个想法是在两个被称为ADC的模数转换器之间使用一个小而便宜的元件,它可以将传感器的信号转换成我的RPI可以使用的东西。当我买传感器的时候,我买了两个这样的东西,并且把它们的插头插针焊接在上面,这样我就可以把它们放在面包板上,然后才意识到它们是两个都是笨蛋。真扫兴!
然而,并没有失去一切。在我的五金玩具垃圾箱里有一台ArduinoUno,它非常适合这个项目,原因有很多。首先,Arduinosdo内置了模拟连接,这意味着我不需要任何外部组件,我可以直接将传感器插入Arduino。其次,虽然Arduino Uno没有办法连接到互联网本身,但它确实有一个USB端口(稍后将详细介绍)。
Arduinos运行名为Sketch的小代码片段,这些代码会被修补工(即我)闪存到板载内存中,并且只要电路板接通电源,这些代码就可以持续运行。我将传感器插入Arduino的第一个模拟引脚(编号0),因此每隔100ms读取一次其输出并将其写入串口的示意图如下所示:
Void setup(){Serial.egin(9600);//打开串口,设置波特率为9600bps}void loop(){int val;val=alogRead(0);//将传感器连接到Analog 0 Serial.println(Val);//将值打印到串口延迟(100);}
这一系列业务可能还不太合理。什么是串口,为什么素描要写在上面?串行通信是两台计算机(或组件或电路)相互通信的一种简单方式,一次一位。波特率是指每秒发送的比特数,双方需要达成一致,以便各自知道如何从对方接收比特数。我发现SparkFun上的这篇文章非常深入地探讨了这一切是如何运作的。以My Arduino为例,串口输入和输出可以通过管脚(比如传感器的连接方式)或者通过USB(记住,USB是通用串行总线的缩写)方便地完成。
通过USB将Arduino插入我的Raspberry Pi,就可以将信号从MyPLANT传输到Linux平台,这为以代码形式使用数据提供了各种可能性。在第二部分中,我将讲述我是如何探索其中一种可能性的,把这个烂摊子和Twitter联系起来。