Статьи

IoT Project: интегрируйте Arduino с Yahoo!

Этот проект IoT исследует, как интегрировать Arduino с Yahoo! Погода. Интернет вещей (проект IoT) — следующая большая вещь в ближайшей функции . Эта технология быстро развивается, и есть много объектов, которые начинают общаться друг с другом через Интернет. Платформы прототипирования, такие как Arduino и Raspberry PI, поддерживают эти инновации и помогают многим разработчикам создавать интересные проекты Интернета вещей. Одним из столпов этой новой технологии являются облачные платформы IoT, которые помогают разработчикам создавать проекты Интернета вещей . Temboo — это очень полезная платформа для создания отличного IoT-проекта . Чтобы изучить, как разработать проект на основе IoT, мы подключим Arduino с Ethernet-щитом к Yahoo! Информация о погоде, используя эту информацию, этот проект IoT управляет светодиодом RGB, меняющим свой цвет. В других статьях о проекте IoT мы исследовали, как внешние события, измеряемые датчиками, подключенными к Arduino, могут инициировать действия на платформе Temboo, такие как отправка сообщений и так далее. В этом примере проекта Интернета вещей используется другой подход: данные, извлеченные из внешнего источника (например, Yahoo! Weather), могут контролировать и оказывать влияние на устройства, подключенные к плате макетирования.

Настройка проекта IoT: начало работы с RGB Led

Прежде чем копаться в деталях платформы Temboo , полезно создать простой эскиз для управления светодиодом RGB. Arduino управляет этим типом светодиода с помощью ШИМ (широтно-импульсной модуляции), чтобы можно было изменить значение трех основных цветов (красный, зеленый, синий).
На рисунке ниже показан простой эскиз:

Обратите внимание, что на картинке выше она представлена ​​Arduino Uno просто для простоты. В этом проекте IoT используется Arduino MRK1000 .
Недавно Temboo изменило способ использования плат для подключения. Вместо Arduino UNO вы можете использовать одну из совместимых плат, которые используют Yun или Wifi101.
В этом уроке мы будем использовать MKR1000, потому что он поддерживает SSL-соединение, функция, необходимая для Temboo.

Код очень прост: на плате есть несколько выводов ШИМ, которые можно использовать для этой цели, в этом эскизе используются выводы 3, 6, 5.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
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, как показано ниже:

YAHOO! Подробности

Важно: Если вы получаете только температуру погоды, вы можете использовать название города вместо woeid, чтобы пропустить этот пункт. Если вы хотите получить информацию о погоде, вы можете прочитать этот параграф, чтобы получить горе.

Если вы новичок в 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":"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) находится сверху, поэтому достаточно скопировать и вставить это значение.

Второй метод: веб-сайт

Если вы не хотите тратить свое время, используя метод 1, и вы ищете быстрый способ получить woeid, вы можете использовать этот веб-сайт: woeid lookup

Вставив название города и нажав на поиск, вы увидите список ошибок.

Интегрируйте Arduino с Temboo

Temboo — это отличная платформа, которая использует Choreos для предоставления сервисов разработчикам. Хореоны полезны при построении системы интернета вещей . Чтобы получить информацию о погоде, мы должны использовать Yahoo! Прогноз погоды, а затем GetTempera . В этом случае проект использует температуру для управления светодиодом RGB , но вы можете использовать любые другие параметры.
Теперь все очень просто, просто вставьте название города, которое вам нравится, и нажмите на кнопку бежать, чтобы получить информацию о погоде:

Есть некоторые другие дополнительные параметры, которые вы должны учитывать как единицу измерения температуры. Прежде чем получить код для использования в своем эскизе, важно выбрать правильную платформу и Wi-Fi:

После нажатия кнопки «Выполнить» вы получаете код приложения Интернета вещей, который необходимо скопировать и вставить в эскиз. MKR1000 готов получить информацию о погоде, если вы запустите пример, который вы получите в результате:

Как видите, исходный код доступен для использования в скетче.

Управление RGB Led с использованием температуры

Теперь, когда у нас есть все части в руках, мы должны смешать их, чтобы все заработало. Эскиз с ранее скопированным кодом Temboo необходимо изменить, чтобы возвращаемый результат использовался для изменения цвета светодиода RGB.
Давайте немного изменим код, чтобы получить только значение температуры. Обратите внимание, что есть необходимость немного очистить строку перед ее преобразованием в целое число.

Наконец, вы можете реализовать свои правила для преобразования целочисленного значения в цвет 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
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. Этот проект IoT был полезен для экспериментов с использованием облачной платформы и ее подключения к плате макетирования. Вы можете использовать идею, стоящую за этим проектом IoT, и расширить ее для управления другими периферийными устройствами.

Что вы будете создавать с помощью Temboo? Дай мне знать…..

Ссылка: IoT Project: интегрируйте Arduino с Yahoo! using Temboo — Обновлено от нашего партнера JCG Франческо Аццолы в блоге Surviving с Android .