Выбрать главу

эта информация пригодится нам в дальнейшем при настройке программы для Arduino.

- 318 -

Рис. 14.6. Добавление устройства в Xively

Установка библиотек Xively и HTTPClient

Xively предоставляет для Arduino удобную библиотеку, облегчающую доступ через Интернет. Библиотеки Xively и HttpClient связаны друг с другом, поэтому их необходимо скачать с сайта GitHub. Посетите следующие две ссылки:

https://github.com/xively/xively-Arduino и https://github.com/amcewen/HttpClient и нажмите кнопку Download ZIP для скачивания архивов. Ссылки для скачивания библиотек можно найти на веб-странице http://www.exploringarduino.com/content/ch14.

Скачав файлы, выполните следующие действия:

1. Распакуйте файлы и переименуйте папки библиотек так, чтобы они не содержали символа тире (GitHub добавляет тире к именам папок автоматически). Я рекомендую переименовать папку HttpClient-master в HttpClient, а папку XivelyArduino-master в xively.

2. Переместите эти папки в каталог библиотек Arduino, как было описано в главе 12.

3. Откройте Arduino IDE (если программа была открыта при копировании библиотек, необходима перезагрузка компьютера) и перейдите в меню Файл -> При

- 319 -

меры. В списке должны появиться папки HttpClient и xively. Значит, библиотеки были успешно установлены.

Для первого эксперимента с Xively рассмотрим пример публикации в Сети состояния одного аналогового датчика. В Arduino IDE откроем пример DatastreamUpload из папки xively. Так как мы будем модифицировать код примера, создадим новый проект, используя в меню Файл опцию Сохранить как. В примере идет передача аналогового значения датчика, подсоединенного к контакту 2:

// Analog pin which we're monitoring (0 and 1 are used Ьу the

// Ethernet shield)

int sensorPin = 2;

В следующем разделе подключим аналоговый датчик к плате Arduino с установленным адаптером Ethemet.

Подключение к плате Arduino

Подсоединим датчик к аналоговому контакту 2 платы Arduino. Пример иллюстрирует чтение аналогового входа 2 и отправку данных в ваш аккаунт на Xively. Возьмем фоторезистор и резистор номиналом 10 кОм и подключим их к аналоговому входу 2 в качестве делителя напряжения (рис. 14.7), как вы это делали в главе 3.

Затем подключим плату Arduino к компьютеру и к Сети.

Рис. 14.7. Подключение фоторезистора к плате Arduino с установленным адаптером Ethernet

- 320 -

Настройка Xively и выполнение программы

Вы уже установили соответствующие библиотеки и открыли проект с примером.

Его нужно настроить, скомпилировать и запустить на вашей плате Arduino. Сначала настроим программу в соответствии с параметрами устройства в нашем аккаунте Xively. Вам нужно изменить значение трех параметров: MAC-адрес вашего адаптера Ethemet, Xively API key и Feed ID. MAC-адрес будет таким же, как и в предыдущих примерах. xively API key и Feed ID можно найти в вашем аккаунте Xively в разделе API Keys (рис. 14.8).

Рис. 14.8. Параметры Xi veli API key и Feed ID

В этом разделе вы найдете Feed ID (первый параметр) и Xively API key (второй параметр) для вставки в код программы. Далее приведены строки, которые нужно обновить соответствующими значениями.

Замените MAC-адрес:

// MAC-адрес вашего адаптера Ethernet

byte mac[] = { 0xDE, 0xAD, 0xВЕ, 0xEF, 0xFE, 0xED };

Замените Xively API Кеу своим значением:

// Ваш Xively API key

char xivelyKey[] = "YOUR_XIVELY_API_KEY";

Замените Feed ID (15552 в примере) своим значением:

// Feed ID

XivelyFeed feed(15552, datastreams, 1 /* номер потока */);

В листинге 14.3 приведен полный код программы.

Листинг 14.3. Загрузка потока данных в Xively - xively.ino

#include <SPI.h>

#include <Ethernet.h>

#include <HttpClient.h>

#include <Xively.h>

// MAC-адрес Ethernet-адаптера

byte mac[] = { 0x90, 0xА2, 0xDA, 0x00, 0x4A, 0xE0 };

- 321 -

// Ваш Xively АР! key

char xivelyKey[] = "qkjXSloUKqbCG-hqh3fw4WisdvOSAKx4ZXZYSWhGUWdxcz0g";

// Аналоговый контакт для подключения датчика

int sensorPin = 2;

// Строка для идентификаторов потока

char sensorId[] = "sensor_reading";

XivelyDatastrearn datastrearns[] = {

XivelyDatastrearn(sensorId, strlen(sensorId), DATASTREAM_FLOAT),

};

// Feed ID

XivelyFeed feed(1242622121, datastrearns, 1 /* number of datastrearns */);

EthernetClient client;

XivelyClient xivelyclient(client);

void setup()

{

// Запуск последовательного порта

Serial.begin(9600);

Serial.println("Starting single datastrearn upload to Xively... ");

Serial.println();

while (Ethernet.begin(rnac) != 1)

{

Serial.println("Error getting IP address via DHCP, trying again... ");

delay(15000);

}

}

void loop()

{

int sensorValue = analogRead(sensorPin);

datastrearns[OJ.setFloat(sensorValue);

Serial.print("Read sensor value ");

Serial.println(datastrearns[O).getFloat());

Serial.println("Uploading it to Xively");

int ret = xivelyclient.put(feed, xivelyKey);

Serial.print("xivelyclient.put returned ");

Serial.println(ret);

Serial.println();

delay(15000);

}

Загрузите программу в плату Arduino, и все будет готово к передаче данных. При первом подключении Arduino сервер Xively автоматически добавляет выдачу данных на веб-странице, открытой вами ранее.