2 заметки с тегом

IoT

IoT и Galileo Gen2: часть вторая

18 мая 2015, 22:55

В первой части мы рассмотрели как настроить среду разработки и подготовить плату Galileo для экспериментов. В этой статье будет рассмотрен пример состоящий из двух приложений, одно на Galileo и будет опрашивать температуру с датчика BMP085, а другое запущено на смартфоне будет отображать эту температуру на графике. За основу были взяты стандартные примеры но немного доработаны.

Приложение для Galileo

За основу был взят пример Local Temperature, в нем использовался датчик температуры Grove, но такого не оказалось в наличии и схема была собрана с датчиком BMP085.

В примере библиотека mraa была заменена модулем jsupm_bmpx8x. Для подключения других датчиков можно посмотреть примеры. Датчик BMP085 умеет измерять давление, температуру, высоту над уровнем моря, но в примере будем использовать только температуру.
В результате программа выглядит следующим образом:

//Load Barometer module
var bmpx8x = require('jsupm_bmpx8x');
// load this on i2c
var myBarometerObj = new bmpx8x.BMPX8X(0, bmpx8x.ADDR);
var pressure, temperature, altitude, sealevel;

/*
Function: startSensorWatch(socket)
Parameters: socket - client communication channel
Description: Read Temperature Sensor and send temperature in degrees every 60 seconds
*/
function startSensorWatch(socket) {
    'use strict';
    setInterval(function () {        
        //var pressure = myBarometerObj.getPressure();
        var temperature = myBarometerObj.getTemperature();
        //var altitude = myBarometerObj.getAltitude();
        //var sealevel = myBarometerObj.getSealevelPressure();
        console.log("Temperature: " + temperature);
        socket.emit("message", temperature);
    }, 60000);
}

//Create Socket.io server
var http = require('http');
var app = http.createServer(function (req, res) {
    'use strict';
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('<h1>Hello world from Intel IoT platform!</h1>');
}).listen(1337);
var io = require('socket.io')(app);

//Attach a 'connection' event handler to the server
io.on('connection', function (socket) {
    'use strict';
    console.log('a user connected');
    //Emits an event along with a message
    socket.emit('connected', 'Welcome');

    //Start watching Sensors connected to Galileo board
    startSensorWatch(socket);

    //Attach a 'disconnect' event handler to the socket
    socket.on('disconnect', function () {
        console.log('user disconnected');
    });
});

Полный пример можно взять на github.
Компилируем и загружаем приложение на Galileo.
У нас получилось приложение, которое считывает значение температуры с сенсора и передает его раз в минуту.

Приложение компаньон

Приложение компаньон для смартфона будет подключаться к Galileo и раз в минуту запрашивать значение температуры и рисовать график с помощью D3.js библиотеки. За основу было взято приложение, но немного модифицировано.
После адаптирования графика к сенсору BMP085 приложение стало выглядеть следующим образом:

Минимум усилий и мы получили кроссплатформенное приложение. Добавив к Galileo различной периферии и разместив это все в приложении компаньоне, можно построить свой умный дом с управлением через интернет.
В следующей статье про Galileo расскажу как установить на плату mini PCI Express Wi-Fi адаптер Intel® Centrino® Wireless-N 135, подписывайтесь, будет интересно.

galileo   Intel XDK   IoT   tutorial

IoT и Galileo Gen2: часть первая

20 апреля 2015, 23:24

Сегодня поговорим о IoT, что в переводе Интернет вещей. В последнее время этот термин очень тесно вошел в нашу жизнь. В этом цикле статей попробуем разобраться в этой проблеме.
В качестве подопытного будет выступать плата Galileo Gen2 от Intel с microSD на 8Gb и Mac.
В первой части рассмотрим установку необходимого программного обеспечения.

Подготовки Galileo

Обновление прошивки

Первое, что необходимо сделать — это обновить прошивку. Загружаем утилиту для обновления Firmware (для каждой ОС свой updater).
В утилите необходимо выбрать порт, к которому подключена плата и нажать Update Firmware:

Процесс обновления может занять до 5 минут, в процессе обновления не отключайте питание или провод usb, а также не нажимайте кнопки на плате. После успешного обновления вы должны увидеть соответствующее сообщение.

Подготовка microSD карты

Все действия описаны для Mac OSX.
Для работы с IoT нам потребуется записать на карту памяти Yocto образ.
Карта памяти должна быть от 4 до 32 Гб, также потребуется картридер.
Загружаем последний Yocto образ: http://iotdk.intel.com/images/iot-devkit-latest-mmcblkp0.direct.bz2.
Распаковываем архив:

bunzip2 iot-devkit-latest-mmcblkp0.direct.bz2

Форматируем microSD с помощью дисковой утилиты в MS DOS (FAT).
Запускаем утилиту для монтирования дисков и смотрим список дисков в системе:

diskutil list

В появившейся таблице находим строчку с картой памяти и в столбце IDENTIFIER запоминаем имя, например у меня это disk2.
Отмонтируем карту памяти:

diskutil unmountDisk disk2

С помощью утилиты dd запишем образ на карту памяти командой:

sudo dd bs=8m if=iot-devkit-version-mmcblkp0.direct of=/dev/disk2

Процес может занять довольно продолжительное время, при этом на экране ничего не отображается. По окончании процесса будет написано, что данные были записаны. У меня этот процесс занял около 15 минут.
Проверяем в менеджере файлов, что образ записался и извлекаем карту памяти:

diskutil eject disk2

Настройка Linux на Galileo

Вставляем карту памяти, подключаем LAN-кабель и питание. Приблизительно через минуту можно попробовать подключиться по ssh (в настройках роутера нужно посмотреть, какой IP адрес получила плата):

ssh root@192.168.1.2

Установим пароль для пользователя root:

passwd

Установим синхронизацию времени по NTP:

rdate www.nist.gov

Проверим текущее время командой:

timedatectl status

При необходимости установим свой временной пояс:

timedatectl set-timezone Europe/Moscow

Обновим библиотеки libmraa и upm:

echo "src maa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/intel-iotdk.conf
opkg update
opkg upgrade

Galileo готово для последующих экспериментов, можно проверить работоспособность на моргании светодиода. Для этого нам потребуется текстовый редактор nano. Загрузка и установка:

mkdir nano-src
cd nano-src
curl http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz >nano-2.2.6.tar.gz
tar zxvf nano-2.2.6.tar.gz
cd nano-2.2.6
./configure
make
make install

libmraa и светодиод

Попробуем с помощью C++ поморгать светодиодом. Создадим новый файл:

nano blink.cpp

И добавим следующее содержимое:

#include "mraa.h"

int main() {
    mraa_gpio_context gpio; 
    gpio = mraa_gpio_init(13);
    mraa_gpio_dir(gpio, MRAA_GPIO_OUT); 
    bool ledState=true;
    while(true){
        mraa_gpio_write(gpio, ledState?1:0); 
        ledState=!ledState;
        sleep(1);
    }
}

Скомпилируем:

g++  blink.cpp -lmraa -o blink

Запустим получившееся приложение:

./blink

После этого встроенный светодиод на плате начнет моргать.
Перейдем к следующему шагу.

Установка Intel XDK IoT Edition

Загружаем XDK для своей ОС на странице.
И устанавливаем согласно инструкции.
Среда разработки выглядит следующим образом:

Чтобы подключиться к плате, нужно в списке IoT Device выбрать свою плату, после чего появиться диалоговое окно с предложением ввести имя пользователя и пароль. Пользователь по умолчанию root, а пароль, тот что установили выше. Нажимаем Connect и ждем подключения, состояние его можно увидеть в нижнем окне.

Обновление xdk-daemon

Завершающим шагом будет обновление xdk демона.
На панели инструментов нажимаем кнопку с изображением шестеренки и выбираем Upgrade xdk-daemon on IoT device:

По завершении установки рабочее окружение готово для экспериментов.
Следующая статья будет как раз об этом.

galileo   Intel XDK   IoT   tutorial