该物联网项目探讨了如何将Arduino与Yahoo! 天气。 物联网(IoT项目)是近期功能中的下一件大事 。 这项技术发展Swift,并且有许多对象开始使用Internet互相交谈。 诸如Arduino和Raspberry PI之类的原型平台正在支持这些创新,并帮助许多开发人员创建有趣的物联网项目。 这项新兴技术的Struts之一是云IoT平台 ,可帮助开发人员构建物联网项目 。 Temboo是构建出色的物联网项目的非常有用的出色平台。 为了探索如何开发基于IoT的项目,我们将带以太网屏蔽的Arduino连接到Yahoo! 天气信息,此物联网项目使用此信息控制RGB led更改其颜色。 在有关物联网项目的其他文章中,我们探讨了由连接到Arduino的传感器测量的外部事件如何触发Temboo平台上的动作,例如发送消息等。 这个物联网项目示例使用了不同的方法:从外部源(例如Yahoo! Weather)检索的数据可以控制原型板连接的设备并对其产生影响。
设置物联网项目:RGB LED入门
在深入研究Temboo平台细节之前,创建一个简单的草图来控制RGB led很有用。 Arduino使用PWM(脉冲宽度调制)控制此led类型,以便可以更改三种基本颜色值(红色,绿色,蓝色)。
下图显示了简单的草图:
请注意,在上图中,为简单起见,它表示为Arduino Uno。 该物联网项目使用Arduino MRK1000 。
最近,Temboo改变了连接板的方式。 可以使用Yun或Wifi101的兼容板之一来代替Arduino UNO。 在本教程中,我们将使用MKR1000,因为它支持Temboo所需的SSL连接。
代码很简单:板上有一些可用于此目的的PWM引脚,在此草图中,使用的PWM引脚为3、6、5。
int delTime = 1000;
int redPin = 3;
int bluePin = 6;
int greenPin = 5;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(greenPin, OUTPUT);
}
void loop() {
String val = "120";Serial.print("Value " + val.toInt());
Serial.print("Value " + val.toInt());
analogWrite(redPin, 255);
analogWrite(bluePin, 0);
analogWrite(greenPin, 0);
delay(delTime);
}
运行示例,Arduino控制RGB Led,如下所示:
更详细
重要说明:如果仅获得天气温度,则可以使用城市名称而不是woeid,因此可以跳过此段。 如果您想获取天气信息,可以阅读此段以获取最新信息。
如果您不熟悉Yahoo! 天气,您必须知道要获取天气信息,雅虎使用Woeid。 这是分配给全球所有城市,地区的唯一标识符。 使用此参数,可以获得天气信息。 稍后您将看到,Temboo需要Woeid,因此有必要将城市名称转换为woeid。
有两种不同的方法:一种使用Yahoo! API和另一个简单得多。
API:WOEID
此方法要求您在Yahoo!上创建一个帐户。 并创建一个唯一的密钥。 使用Yahoo!可以轻松完成此操作。 开发人员网站。
一旦有了唯一的密钥,我们就可以轻松获得消息:
http://where.yahooapis.com/v1/places.q('City_Name')?appid=your:key&format=json
结果是这样的JSON数据:
{
"places":{
"place":[
{
"woeid":720187,
"placeTypeName":"Cittu00e0",
"placeTypeName attrs":{
"code":7
},
"name":"Perugia",
"country":"Italia",
"country attrs":{
"type":"Paese",
"code":"IT",
"woeid":23424853
},
"admin1":"Umbria",
"admin1 attrs":{
"type":"Regione",
"code":"",
"woeid":7153347
},
"admin2":"Perugia",
"admin2 attrs":{
"type":"Provincia",
"code":"IT-PG",
"woeid":12591817
},
"admin3":"Perugia",
"admin3 attrs":{
"type":"Comune",
"code":"",
"woeid":12676126
},
"locality1":"Perugia",
"locality1 attrs":{
"type":"Cittu00e0",
"woeid":720187
},
"locality2":"",
"postal":"",
"centroid":{
"latitude":43.103779,
"longitude":12.37542
},
"boundingBox":{
"southWest":{
"latitude":43.075531,
"longitude":12.32937
},
"northEast":{
"latitude":43.121311,
"longitude":12.41188
}
},
"areaRank":2,
"popRank":11,
"timezone":"Europe/Rome",
"timezone attrs":{
"type":"Fuso Orario",
"woeid":28350914
},
"uri":"http://where.yahooapis.com/v1/place/720187",
"lang":"it-it"
}
],
"start":0,
"count":1,
"total":3
}
}
woeid(720187)位于顶部,因此足以复制和粘贴此值。
第二种方法:网站
如果您不想使用一种方法浪费时间,并且正在寻找一种检索woeid的快速方法,则可以使用以下网站: woeid查找
插入城市名称并单击查找,结果将显示woeid列表。
将Arduino与Temboo集成
Temboo是一个很棒的平台,它使用Choreos将服务公开给开发板。 Choreos在构建物联网系统时很有用。 要获取天气信息,我们必须使用Yahoo!。 天气Choreos然后是GetTemperature 。 在这种情况下,项目使用温度来控制RGB Led ,但是您可以使用任何其他参数。
现在一切都变得非常简单,只需粘贴您喜欢的城市名称,然后单击运行即可获取天气信息:
还有一些其他可选参数,例如温度单位。 在获得要在草图中使用的代码很重要之前,请选择正确的平台和wifi:
单击运行后,您将获得必须复制并粘贴到草图中的物联网应用程序代码。 MKR1000准备好获取天气信息,如果运行示例,您将得到以下结果:
如您所见,源代码可在草图中使用。
使用温度控制RGB LED
现在我们已经掌握了所有内容,我们必须将它们混合在一起以使事情正常进行。 必须修改先前复制的带有Temboo代码的草图,以便使用返回的结果来更改RGB Led颜色。
让我们稍微修改一下代码,以便仅获得温度值。 请注意,在将行转换为整数之前,需要对其进行清理。
最后,您可以实现将整数值转换为RGB颜色的规则:
...
// Now let's countrol the led
int r = ( f1(temp, 20) * 5 ) % 255;
int g = ( f1(temp, 10) * 5) % 255;
int b = ( f2(temp, 5) * 5) % 255;
setRGBColor(r,g,b);
GetTemperatureChoreo.close();
....
然后添加RGB功能以控制led:
void setRGBColor(int red, int green, int blue) {
analogWrite(redPin, red);
analogWrite(bluePin, blue);
analogWrite(greenPin, green);
}
函数f1,f2非常简单:
int f1(int val, int threshold) {
if (val < threshold)
return 0;
return val;
}
int f2(int val, int threshold) {
if (val < threshold)
return abs(val);
return 0;
}
它们只是一个简单的规则,当然,您可以根据需要更改它们。
全做完了!!
在这个物联网项目中,我们将Arduino连接到Yahoo!。 使用Temboo家务的天气。 Arduino检索到的信息可控制RGB led。 这个物联网项目对于实验如何使用云平台并将其连接到原型板非常有用。 您可以使用此物联网项目背后的想法,并将其扩展以控制其他外围设备。
您将使用Temboo创建什么? 让我知道…..
翻译自: https://www.javacodegeeks.com/2017/08/iot-project-integrate-arduino-yahoo-using-temboo-updated.html