5 заметок с тегом

galileo

Wyliodrin: все что вы хотели знать

6 декабря 2015, 21:57

Wyliodrin — это веб IDE для программирования embedded устройств. Она удобна тем, что поддерживает огромное количество языков программирования C, C/C++, Java, Pascal, Shell Script, Perl, PHP, Objective-C, C#, Python, Javascript, а также программирование с помощью блоков node-red и scratch.
Список поддерживаемых плат тоже впечатляет, это и платы от Intel, Edison и Galileo, Raspberry Pi, Beaglebone Black, Arduino.
Все эксперименты я проводил на Intel Galileo gen 2, опишу что из этого вышло.

Настройка платы

  • Регистрируемся на wyliodrin.com;
  • В личном кабинете добавляем новую плату:
  • Скачиваем образ для SD карты;
  • Распаковываем образ и записываем на SD карту, по инструкции из прошлой статьи;
  • Загружаем файл wyliodrin.json из личного кабинета:
  • Подключаем SD карту к компьютеру и записываем в корень файл wyliodrin.json:
  • Вставляем карту в Galileo, подключаем питание и патчкорд, ждем загрузку системы. В личном кабинете напротив добавленной платы должен появиться статус online:
  • В выпадающем меню выбираем пункты меню Extra Libraries и Update Streams для обновления библиотек, также рекомендуется сделать Update Image, но у меня после этого плата не появлялась онлайн:

После этих действий плата готова к программированию.

Моргаем светодиодом

Как я уже писал выше, нам доступно большое количество языков программирования.
Рассмотрим 2 примера, один на языке С, другой на языке визуального программирования (scratch). В обоих случаях будем моргать бортовым светодиодом подключенным на 13 пин платы.
Приложения создаются очень просто, необходимо нажать кнопку Create new application и в списке Programming Language выбрать New Project под соответствующим заголовком языка или выбрать готовый пример.

Пример на C

Пример на C выглядит похожим на скетчи для Arduino написанные на wiring.

#include <stdio.h>
#include <Wyliodrin.h>

// define the pin number that has the LED connected
#define LED_PIN 13

int main()
{
    printf ("Led on pin %d should blink\n", LED_PIN);

    // Setup the pin in output mode, so that we can write a value on it
    pinMode(LED_PIN, OUTPUT);

    printf ("Press the Stop button to stop\n");
    // Loop forever until, we press stop
    while(1)
    {
        // Write the value 1 (HIGH) on the pin so that the LED turns on
        digitalWrite(LED_PIN, HIGH);
        // wait 500 ms
        delay(500);
        // Write the value 0 (LOW) on the pin so that the LED turns off
        digitalWrite(LED_PIN, LOW);
        // wait 500 ms
        delay(500);
    }
    return 0;
}

Необходимо только указать LED_PIN 13 и можно запускать нажатием на кнопку:

После загрузки и компиляции вы должны увидеть сообщение:

./Led_Blink_-_C                                                                     
Led on pin 13 should blink                                                          
Press the Stop button to stop

И если посмотреть на плату, то светодиод моргает каждые 500 мс. Остановить приложение можно кнопкой Stop.

Пример визуального программирования

Аналогичное поведение светодиода будет выглядеть следующим образом:

В свойствах проекта можно указать в какой язык транслировать приложение:

На языке Python это будет выглядеть следующим образом:

from wyliodrin import *
from time import *

pinMode (13, 1)

print('Led on pin 13 should blink')
print('Press the Stop button to stop')
while True:
  digitalWrite (13, 1)
  sleep ((500)/1000.0)
  digitalWrite (13, 0)
  sleep ((500)/1000.0)

Запускается приложение аналогично.

Не все примеры работают как хотелось бы. Я не смог запустить ни один пример на node.js, надеюсь в будущем поправят. Каждый в wyliodrin сможет найти что то интересное для себя. Подключайтесь и экспериментируйте.

Intel Galileo 2: настройка Wi-Fi

29 июня 2015, 19:22

Сегодня покажу как просто настроить беспроводное подключение на Intel Galileo.
В образе ОС от Intel уже включены драйверы для некоторых Mini PCI-E Wi-Fi адаптеров, и вот их список. Чтобы не усложнять себе задачу, был приобретен адаптер Intel® Centrino® Wireless-N 135, но к нему еще необходима железка удлиняющая адаптер для полного размера. А так же еще потребуются кабели U.FL — RP-SMA и 2 антенны, как от домашнего роутера.
Как установить образ, я уже писал в прошлой статье, поэтому сразу перейдем к настройке беспроводной сети.

Настройка беспроводной сети

Подключаемся к Galileo пользователем root.
Настраивать будем с помощью connmanctl. Запускаем командой:

# connmanctl

Включаем беспроводной интерфейс командой:

connmanctl> enable wifi
Enabled wifi

Просканируем сети командой:

connmanctl> scan wifi
Scan completed for wifi

Просмотрим список всех найденных сетей:

connmanctl> services
*AO Wired                ethernet_984fee017ff1_cable
    MyWiFi               wifi_00150096fd2f_4b65656e657469632d33343430_managed_psk
                         wifi_00150096fd2f_hidden_managed_none
    RT-WiFi_fc70         wifi_00150096fd2f_52542d576946695f66633730_managed_psk
    ROSTELECOM_2CB9      wifi_00150096fd2f_524f5354454c45434f4d5f32434239_managed_psk
    dlink 7              wifi_00150096fd2f_646c696e6bc2a037_managed_psk
    Rostelecom53         wifi_00150096fd2f_526f7374656c65636f6d3533_managed_psk
    lolita_Network       wifi_00150096fd2f_6c6f6c6974615f4e6574776f726b_managed_psk
    RT-WiFi_d1e8         wifi_00150096fd2f_52542d576946695f64316538_managed_psk
    Dom.ru(35)           wifi_00150096fd2f_446f6d2e727528333529_managed_psk

В появившемся списке сетей, необходима найти свою и запомнить сервисное имя.
После чего выходим из connman:

connmanctl> exit

Создадим файл конфигурации в /var/lib/connman/ и заполним необходимые параметры:

# cat << EOF > /var/lib/connman/wifi.config
> [service_wifi_00150096fd2f_4b65656e657469632d33343430_managed_psk]
> Type = wifi
> Securuty = psk
> Name = MyWiFi
> Passphrase = MyPassword
> EOF

В заголовок необходимо добавить сервисное имя своей сети, далее необходимо указать тип шифрования, имя и пароль сети.
После чего перезагружаем плату для принятия в силу всех изменений.
Проверим подключение:

# ifconfig
enp0s20f6 Link encap:Ethernet  HWaddr 98:4F:EE:01:7F:F1  
          inet6 addr: fe80::9a4f:eeff:fe01:7ff1/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:280 (280.0 B)
          Interrupt:51 Base address:0x4000 

enp0s20f6:avahi Link encap:Ethernet  HWaddr 98:4F:EE:01:7F:F1  
          inet addr:169.254.9.224  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          Interrupt:51 Base address:0x4000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:140 (140.0 B)  TX bytes:140 (140.0 B)

wlp1s0    Link encap:Ethernet  HWaddr 00:15:00:96:FD:2F  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::215:ff:fe96:fd2f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:139 errors:0 dropped:0 overruns:0 frame:0
          TX packets:129 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:26643 (26.0 KiB)  TX bytes:23252 (22.7 KiB)

Появившийся интерфейс wlp1s0 это и есть наше беспроводное подключение.

Используя беспроводной адаптер за $10 и немного своего времени, можно добавить немного универсальности Galileo. Теперь необязательно располагать плату рядом с роутером, а можно закинуть в дальний угол и заставить выполнять свои функции, а вот о них я и напишу в следующих статьях.

galileo   Intel   Wireless-N 135

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

Устанавливаем Debian на Intel Galileo

21 сентября 2014, 22:05

Недавно стал счастливым обладателем железки под названием Intel Galileo gen 2:

Подробные технические характеристики можно посмотреть по ссылке выше, от себя добавлю, что эта железка совмещает в себе преимущества Arduino по подключению периферии и Raspberry Pi по гибкости настройки софта.
Сегодня расскажу как установить Debian на Galileo и немного его настроить.

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

Первым делом необходимо обновить прошивку, иначе мы не сможем загрузиться с microSD карты.
Всю периферию, в том числе подключение к компьютеру производим после подключения питания на Galileo и выжидаем пару минут полного включения.

  • Для этого качаем Arduino IDE с сайта Intel,
  • Запускаем и выбираем свою версию Galileo в списке:
  • Далее выбираем порт (в разных ОС порт будет выглядеть по разному, в Mac OS это /dev/cu.usbmodemXXXXX):
  • Нажимаем Firmware Update:
  • И подтверждаем нажатием на ОК, теперь ни в коем случае не отключаем питание, во избежание получения кирпича:

Должно появиться окно с процессом обновления, после чего появиться сообщение об успешном обновлении.
Если все прошло без ошибок, то можно двигаться дальше и подготовить microSD карту.

Выбор дистрибутива

Тут каждый себе хозяин, можно установить официальный дистрибутив от intel, собрать самому или взять уже готовый образ Debian. Что я и сделал.

Установка и настройка

Раскажу как я устанавливал образ Debian v1.2, тот что по ссылке выше.
Скачиваем и записываем образ на флэшку, размер которой должен быть от 1 до 32 Гб. Как записать образ можно легко найти в интернете, в каждой ОС это делается по разному, по этому не описываю.
Вставляем флэшку и включаем питание, ждем полной загрузки (1-2 минуты), подключаем к роутеру, смотрим ip адрес и подключаемся по telnet.
Первым делом нужно настроить locale, не знаю почему автор образа это не сделал за нас, но тут нет ничего сложного. Ответ на этот вопрос можно найти тут.
Далее нужно расширить файловую систему на всю флешку, автор образа подробно расписывает этот шаг у себя в вики. Если соблюдать все шаги и ввести максимальный размер вашей карточки, когда у вас предложат:

End?  [944MB]? XXXMB

то все должно получиться.
Теперь можно обновить пакеты:

apt-get update && apt-get upgrade

и ставить все что вам захочется из репозитория и не только.
У меня в планах установить веб сервер, еще не определился какой, обвешать датчиками и мониторить их состояние внутри сети, а может, если выдержит нагрузку и пробросить в наружу.
Следите за статьями, дальше будет интереснее.

debian   galileo   linux