Интернет вещей — следующая важная вещь в ближайшем будущем . Эта технология быстро развивается, и есть много объектов, которые начинают общаться друг с другом через Интернет. Платформы прототипирования, такие как Arduino и Raspberry PI, поддерживают эти инновации и помогают многим разработчикам создавать интересные IoT-проекты. Одним из столпов этой новой технологии являются облачные платформы IoT, которые помогают разработчикам создавать проекты Интернета вещей . Temboo — это очень полезная платформа для создания отличного IoT-проекта . Чтобы изучить мощные возможности Temboo, мы подключим Arduino с Ethernet-щитом к Yahoo! Информация о погоде , используя эту информацию, Arduino управляет светодиодом RGB, меняя свой цвет. В предыдущем проекте IoT мы изучали, как внешние события, измеряемые датчиками, подключенными к Arduino, могут инициировать действия на платформе Temboo, такие как отправка сообщений и так далее. В этом проекте используется другой подход: данные, полученные из внешнего источника (например, Yahoo! Weather), могут контролировать и оказывать влияние на устройства, подключенные к Arduino.
Начало работы с Arduino и RGB Led
Прежде чем углубляться в детали платформы Temboo, полезно создать простой эскиз Arduino для управления светодиодом RGB. Arduino управляет этим типом светодиода с помощью ШИМ (широтно-импульсной модуляции), чтобы можно было изменить значение трех основных цветов (красный, зеленый, синий).
На рисунке ниже показан простой эскиз:
Код очень прост: у Arduino есть несколько выводов ШИМ, которые можно использовать для этой цели, в этом эскизе используются выводы 3, 6, 5.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
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()); analogWrite(redPin, 255 ); analogWrite(bluePin, 0 ); analogWrite(greenPin, 0 ); delay(delTime); } |
Запустив пример, Arduino управляет светодиодом RGB, как показано ниже:
Yahoo! Подробности
Если вы новичок в Yahoo! Погода, вы должны знать, что для получения информации о погоде Yahoo использует Woeid. Это уникальный идентификатор, присваиваемый всем городам, районам мира. Используя этот параметр, можно получить информацию о погоде. Как вы увидите позже, Temboo требует Woeid, поэтому необходимо преобразовать название города в woeid.
Есть два разных метода: один использует Yahoo! API и еще один намного проще.
Yahoo! API: Woeid
Этот метод требует, чтобы вы создали учетную запись на Yahoo! и создать уникальный ключ. Это можно легко сделать с помощью Yahoo! сайт разработчика.
Как только уникальный ключ станет доступен, мы легко получим его:
1
|
http: //where.yahooapis.com/v1/places.q('City_Name')?appid=your:key&format=json |
В результате получаются данные в формате JSON:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
{ "places" :{ "place" :[ { "woeid" : 720187 , "placeTypeName" : "Citt\u00e0" , "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" : "Citt\u00e0" , "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 } } |
Wooed (720187) находится сверху, поэтому достаточно скопировать и вставить это значение.
Второй метод: веб-сайт
Если вы не хотите тратить свое время, используя первый метод, и вы ищете быстрый способ получить woeid, вы можете использовать этот сайт:
Вставив название города и нажав на поиск, вы увидите список ошибок.
Интегрируйте Arduino с Temboo
Temboo — отличная платформа, которая использует Choreos для предоставления сервисов Arduino или другим разработчикам. Чтобы получить информацию о погоде, мы должны использовать Yahoo! Прогноз погоды, а затем GetTempera . В этом случае проект использует температуру для управления светодиодом RGB , но вы можете использовать любые другие параметры.
Теперь все очень просто, просто вставьте горечавку, которую вы получили раньше, и нажмите на бег, чтобы получить информацию о погоде.
В этом примере используется woeid, но вы можете получить информацию о погоде, например, с помощью адреса. Во всяком случае, я предпочитаю горе, потому что это намного проще.
Есть несколько других необязательных параметров, которые вы должны учитывать, например, единицу измерения температуры и формат ответа:
После того, как вы нажали кнопку «Выполнить», вы получите код Arduino, который необходимо скопировать и вставить в свой эскиз. Arduino готов получить информацию о погоде, если вы запустите пример, который вы получите в результате:
Как видите, исходный код доступен для использования в скетче.
Управление RGB Led с использованием температуры
Теперь, когда у нас есть все части в руках, мы должны смешать их, чтобы все заработало.
Эскиз с ранее скопированным кодом Temboo необходимо изменить, чтобы возвращаемый результат использовался для изменения цвета светодиода RGB.
Давайте немного изменим код, чтобы получить только значение «Температура»:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
String line; String lines[ 4 ]; int counter = 0 ; while (GetTemperatureChoreo.available()) { char c = GetTemperatureChoreo.read(); if (c == '\r' || c == '\n' ) { Serial.println( "Line [" +line+ "]" ); lines[counter++] = line; line = "" ; } else line += c; } String tempLine; // Clean line for ( int i= 1 ; i < lines[ 3 ].length(); i++) { tempLine += lines[ 3 ].charAt(i); } int temp = tempLine.toInt(); Serial.println(temp); |
Обратите внимание, что есть необходимость немного очистить строку перед ее преобразованием в целое число. Наконец, вы можете реализовать свои правила для преобразования целочисленного значения в цвет RGB:
1
2
3
4
5
6
7
8
9
|
... // 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 для управления светодиодом:
1
2
3
4
5
|
void setRGBColor( int red, int green, int blue) { analogWrite(redPin, red); analogWrite(bluePin, blue); analogWrite(greenPin, green); } |
Функции f1,f2
очень просты:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
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.
Что вы будете создавать с помощью Temboo? Дай мне знать…..
Ссылка: | Интернет вещей: интегрируйте Arduino с Yahoo! Использование Temboo от нашего партнера JCG Франческо Аццолы в блоге Surviving с Android . |