эта информация пригодится нам в дальнейшем при настройке программы для Arduino.
- 318 -
Рис. 14.6. Добавление устройства в Xively
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.
Подсоединим датчик к аналоговому контакту 2 платы Arduino. Пример иллюстрирует чтение аналогового входа 2 и отправку данных в ваш аккаунт на Xively. Возьмем фоторезистор и резистор номиналом 10 кОм и подключим их к аналоговому входу 2 в качестве делителя напряжения (рис. 14.7), как вы это делали в главе 3.
Затем подключим плату Arduino к компьютеру и к Сети.
Рис. 14.7. Подключение фоторезистора к плате Arduino с установленным адаптером Ethernet
- 320 -
Вы уже установили соответствующие библиотеки и открыли проект с примером.
Его нужно настроить, скомпилировать и запустить на вашей плате 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 автоматически добавляет выдачу данных на веб-странице, открытой вами ранее.