亲爱的观众朋友们,大家早上中午晚上午夜好,欢迎收看装电视台天气预报节目,今天天气预报的主要内容有:教大家DIY一个天气监测仪……
一本正经的胡说八道之后,硬创邦的又一个DIY教程来啦,今天的教程确实是一个天气监测仪,这个自制的监测仪可以监测你所在地点目前的天气状况、碳排放量、噪音和污染水平等等数据,还能把这些数据发布到Twitter上,与全世界分享你所在地的天气状况。
这款监测仪名为TWIST(Tweeting Weather IoT Station aka TWIST),它算是一个DIY物联网物件,处理器用了Intel Edison的开发板,可与多种传感器兼容,所有的代码和设计文件都是开源的,这就意味着,任何人都可以通过共享代码和原理图添加不同的传感器来改造一个功能更强大的仪器。
好了,废话不多说,开始教程。
带有Arduino接口的Intel Edison开发板
MQ-2传感器(用于感应可燃气体和烟雾)
YL-83传感器(降雨量传感器)
SL-HS-220传感器(可监测温度和湿度等数据)
32K和4.7K电阻
板材木料
3×1" 带螺母的长螺钉
在这里提供一个电路图供大家参考
电力供应
整个系统由一个5V 1A的电源供电,传感器的电力大约为200毫安,Edison开发板需要500毫安,由于所需的总电流小于1A,所以1A的电源应该能让整个系统工作的很好,在Edison开发板上的绿色LED等能够显示电源的连接。
处理板
在TWIST上运行的处理器是一个借了Arduino接口的Edison开发板,这使得它更容易读取传感器的数字和模拟信号,Edison内置有WiFi连接,可以直接连到Twitter服务器,不需要任何额外的硬件。
传感器
这套系统的最基本设置有四个传感器:温度、湿度、烟雾、可燃气体,这些传感器直接连接到Edison上,另外也可额外添加风力、噪音等传感器,每个传感器都由电源处直接供电。这些传感器都是相对比较灵敏的传感器。
具体的安装电路图参考可以下载这个电路图。
TWIST的外壳是由两块木板制成的,我们这里使用的是1/4" 的胶合板,要保证两块板材的螺母连接部分十分吻合,此外触感器的连线也需要在板上打孔,所以我们建议如果有条件的话,外壳板的制作使用激光切割,附上激光切割机的控制文件。
在木板上找到传感器匹配的孔和切口,并用螺丝或胶水固定。
在另一面固定Edison,连接到雨水传感器上,如果安装了太阳能输入端口或蜂鸣器也可以安装到这个板上。
先上图:
按照模拟电路图将两板上的所有传感器线路都连接到Edison上。
想要将天气监测仪和Twitter连接,需要获得Twitter认证令牌才行,你可以在Twitter的开发者网页获取,今天的教程使用的是NeoCat设置的,点击连接,进入网站,按照上面的教程获取Twitter访问认证令牌就可以了。
不过,需要注意的是,在NeoCat设置的Twitter不能发的太过频繁,如果需要频繁的发送天气状况,就需要自己建立一个服务器。
附:
接下来需要在开发板中输入一些Arduino代码。
设置发送Twitter间隔时间,每三个小时发送一次推文:
tweetMessage();
delay(10800000);
从传感器中读取的数据大多都是 'int' 和 'float' 类型,如果想要用Twitter发送,就需要把他们转换成 'String' ,代码如下:
char *dtostrf (double val, signed char width, unsigned char prec, char *sout) {
char fmt[100];
sprintf(fmt, "%%%d.%df", width, prec);
sprintf(sout, fmt, val);
return sout;
}
Twitter认证令牌设置,需要在NeoCat网站上创新Twitter认证,就需要将令牌代码输入进去:
void tweetMessage() {
Twitter twitter(" ENTER TWITTER TOKEN HERE ");
在推文上发传感器监测到的值:
humidity();
float humid;
//Twitter message
String stringMsg = "Humidity:";
char tmp[10];
dtostrf(humid, 1, 2, tmp);
stringMsg += tmp;
stringMsg += "%RH";
气象站的位置和标记,在Twitter上显示当地地点或标签,如#iotweatherstn:
stringMsg + =“#Mumbai #Bandra #iotweatherstn”;
推文的140字限制:
char msg[140];
stringMsg.toCharArray(msg, 140);
消息和连接的故障排查,这段代码可以监测文本的运行,以帮助用户检查数据和推文的状态:
//Tweet that sucker!<br> if (twitter.post(msg))
{
int status = twitter.wait();
if (status == 200)
{
Serial.println("OK.");
Serial.println("Message Tweeted");
}
else
{ //Connection Test
Serial.print("failed : code ");
Serial.println("Message not Tweeted");
Serial.println(status);
}
}
else
{ Serial.println("connection failed.");
Serial.println("Message not Tweeted");
}
<br>
代码中所有的数据都需要将传感器的模拟信号转换为数字信号才可以,这些代码也可在资源库中下载,点击链接。
利用上述库中的代码监测传感器的运行状态,就大功告成了。利用这个你就可以开一个专门告知天气的无聊营销号了,不过,Twitter怎么才能上,自己研究吧。
今天的教程结束了,BTW,敢不敢关注硬创邦?!!