Начало работы с Arduino Yún

Arduino Yún - это устройство, не похожее ни на одну из моделей Ардуино. С точки зрения программирования, он очень похож на Arduino Leonardo, поскольку имеет такой же микроконтроллер (Atmel ATmega32U4), но в отличие от Leonardo, в нем также есть дополнительный процессор (Atheros AR9331), работающий под управлением Linux, с беспроводным стеком OpenWrt. Прошивка контроллера 32U4 через USB осуществляется точно так же, как и в Arduino Leonardo. А после того, как вы настроите Yún на работу в вашей сети WiFi, контроллер можно будет прошивать и через WiFi. 

Для подключения Arduino Yún к компьютеру понадобится USB-кабель с разъемом Micro-B. Через USB-кабель осуществляется не только питание, но и передача данных между устройством и компьютером. Для прошивки Arduino Yún, необходимо из меню Tools > Board в среде программирования Ардуино выбрать пункт Arduino Yún. Поддержка платы Yún реализована только в версии Arduino IDE 1.5.4 или позже.

Отличия от Arduino Leonardo

Помимо микросхемы 32U4, в Arduino Yún есть дополнительный процессор, Atheros AR9331, работающий под управлением специального дистрибутива Linux для встроенных систем - Linino, основанного на OpenWrt. В системе уже установлен Python 2.7.

Arduino Yún отличается от Leonardo физическими характеристиками, а также наличием множества разъемов. Например, на плате есть встроенный разъем для SD-карты, разъем Ethernet, коннектор USB-A для подключения внешних устройств (работает как хост). На плате Arduino Yun нет разъема питания; устройство запитывается от micro-USB.

На плате не встроенного стабилизатора напряжения на 5В. Поэтому, если напряжение, подаваемое на плату, больше 5В, то Arduino Yún может выйти из строя. Питание устройства можно осуществлять не только через micro-USB, но и через выводы Vin и 5V на плате. Однако производителем рекомендуется использовать интерфейс USB для питания платы всегда, когда это возможно.

Разъемы SD, Ethernet и USB-A физически не соединены с контроллером 32U4, они соединены с AR9331.

В Arduino Yún микроконтроллер 32U4 работает точно так же, как и в Leonardo, за исключением того, что вы не можете использовать в программе класс Serial1, поскольку соответствующий ему последовательный порт зарезервирован для взаимодействия с процессором AR9331.

В Arduino Yún есть встроенный WiFi-модуль, который позволяет ему соединяться с беспроводным роутером, либо работать в качестве точки доступа.

Все три процессора - 32u4, контроллер WiFi и AR9331 - имеют свою кнопку сброса на плате.

На плате есть несколько светодиодных индикаторов текущего состояния Yún - индикатор питания, индикатор соединения WLAN, индикатор соединения WAN и USB. Вывод 13 также соединен с одним из светодиодов.

Linino

Yún работает под управлением дистрибутива Linux (на базе OpenWrt) под названием Linino. Управлять системой можно как с командной строки, так и через веб-интерфейс, позволяющий изменять множество различных настроек. Этот интерфейс (под названием LuCi) дает доступ к большинству настроек, которые могут понадобиться для управления WiFi-модулем. 

Как зайти в веб-интерфейс - описано ниже.

Для установки дополнительного программного обеспечения на Linino, необходимо использовать линуксовый менеджер пакетов opkg. Дополнительную информацию о нем, а также перечень основных команд можно найти на странице: Менеджер пакетов Yún.

Взаимодействие с системой Linino осуществляется через командную строку, независимо от способа обращения к устройству (через библиотеку Arduino Bridge или через SSH). Если вы не знакомы с командной строкой, почитать об основах работы с ней можно здесь. Там же приведены примеры наиболее часто используемых программ.

Python

Вместе с дистрибутивом Linino в системе установлен Python 2.7, который позволяет вам писать программы и скрипты. Для получения дополнительной информации о Python, посетите страницу документации Python 2.7.

Если вы только начинаете работать с Python, вам помогут несколько отличных онлайн ресурсов. "Learn Python the Hard Way" охватывает все аспекты, необходимые для отладки и запуска своих скриптов.

Внешнее хранилище Yún

Для хранения данных не рекомендуется использовать встроенную энергонезависимую память Yún, поскольку у нее есть ограниченное число циклов записи.

Вместо этого, для хранения данных (скриптов, веб-страниц и пр.) можно использовать внешнюю память, например карту памяти microSD или флеш-накопитель. Для считывания и записи информации на эти устройства через микроконтроллер 32U4, они должны содержать папку arduino в корне файловой системы.

Web-службы

В Linino используется REST для клиентов и серверов. REST - это аббревиатура "Representational State Transfer". Другими словами, это программная архитектура, которая позволяет представить различные аппаратные узлы Ардуино в видел URL'ов.

По умолчанию, доступ к REST API защищен паролем. Однако запрос пароля для доступа к веб-службам можно отменить. Для этого зайдите в панель настроек Arduino Yún, внизу страницы вы увидите переключатель режима доступа:

Описание концепций, лежащих в основе REST можно найти здесь.

Arduino Yún распознаются две конечные точки REST:

  • /arduino
  • /data

Все, что находится в URL после конечной точки, передается от веб-сервера в скетч, запущенный на микроконтроллере 32U4. Таким образом в своей программе можно создавать свой собственный API. Как работает этот механизм применительно к выводам общего назначения платы показано в примере Bridge ниже.

"/data" используется для обращения к внутреннему хранилищу параметров - ключ/значение. Для работы с хранилищем доступны следующие команды:

  • /put/KEY/VALUE : сохраняет указанное значение внутри хранилища
  • /get/KEY : возвращает значение запрашиваемого ключа в формате JSON
  • /get : возвращает весь список значений хранилища в формате JSON.
  • /delete : удаляет внутренне хранилище

Сброс процессоров (AR9331, WiFi и 32U4)

Для сброса процессора AR9331 и перезагрузки Linino, нажмите кнопку "YÚN RST", расположенную возле аналоговых входов и светодиодов платы.

Для сброса микроконтроллера 32U4 и перезапуска загруженной в Ардуино программы, дважды нажмите кнопку, расположенную за разъемом Ethernet.

Кнопка сброса модуля WiFi расположена возле разъема USB-A. После нажатия будет мигать светодиод WLAN.

Если вы перешли на другую локальную сеть и, соответственно, потеряли доступ к веб-интерфейсу для беспроводного управления Arduino Yún, то необходимо перезагрузить процессор AR9331 и сбросить сетевые настройки Ардуино, нажав и удерживая кнопку сброса WiFi не менее 5 секунд (но не более 30). Настройки WiFi будут сброшены и Arduino Yún запустит собственную WiFi-сеть с названием Arduino Yún-XXXXXXXXXXXX. Все остальные настройки и изменение останутся прежними.

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

Переназначение портов при сбросе

В составе устройства нет отдельной микросхемы, обслуживающей последовательную связь, поэтому используемые последовательные порты являются виртуальным - как в операционной системе ПК, так и на самом устройстве. При запуске загрузчика, 32U4 автоматически создает экземпляр класса для работы с последовательным интерфейсом, точно так же, как компьютер создает экземпляр драйвера последовательного порта при подключении Ардуино. В системе подключенная плата является экземпляром специального класса драйвера для работы с USB (Connected Device Class - CDC).

Такая организация приводит к тому, что при каждом сбросе платы, USB-соединение с компьютером будет разрываться и устанавливаться вновь. В системе устройство будет исчезать из списка доступных портов, соответственно последовательные порты будут перенумеровываться. Поэтому все программы, в которых был открыт порт Ардуино, потеряют соединение с устройством. Это одно из явных отличий Yun от Arduino Uno, в котором сброс микроконтроллера (ATmega328P) не приводит к разрыву USB-соединения (которое поддерживается дополнительным процессором ATmega8U2 или ATmega16U2). Эти отличия приводит к некоторым особенностям установки драйвера, процесса прошивки и взаимодействия с устройством, которые описаны ниже.

Отсутствие сброса при открытии последовательного порта

В отличие от Arduino Uno, Arduino Yun не перезапускает загруженный скетч при каждом открытии последовательного порта на компьютере. Это означает, что компьютер не получит данные, отправленные платой до открытия в операционной системе последовательного порта (в том числе и данные, отправляемые в блоке setup()).

Эта особенность справедлива и при работе с консолью (Console).

Такое изменение приводит к тому, что любые функции для работы с последовательным портом или консолью (такие, как print(), println(), write() и др.), написанные в блоке setup, не будут вызываться в момент открытия последовательного порта. Чтобы обойти эту проблему, можно программно проверять статус последовательного порта, например, так:

// пока последовательный порт не будет открыт - ничего не делаем:
   while (!Serial);

или так:

// пока консоль не будет открыта - ничего не делаем:
   while (!Console);

Установка драйверов для Arduino Yún

OSX

  • При первом подключении Yun к компьютеру Mac, автоматически запустится программа "Keyboard Setup Assistant". Т.к. для Yun настраивать здесь особо нечего, можно просто закрыть это окно, кликнув по красной кнопке в левом верхнем углу.

Windows

Теперь для Windows есть инсталлятор среды разработки и драйверов. 

  • Скачайте и запустите инсталлятор Arduino IDE версии 1.5.4 или позже.
  • Ознакомьтесь с лицензией и в случае согласия жмите кнопку "I agree".
  • По умолчанию для установки выбраны все доступные компоненты: среда разработки, драйвера и ярлыки.
  • Выберите папку, куда вы хотите установить IDE.
  • Установщик будет информировать вас о процессе распаковки и установки файлов.
  • Если вы выбрали опцию установки драйверов, то в процессе установки появится окно, требующее подтверждение этой операции.
  • После завершения установки, нажмите кнопку "Close".

Примечание: Arduino Yún использует службу Bonjour для "разворачивания" беспроводной сети. Этой службы по умолчанию нет в Windows, поэтому если до этого вы ее не устанавливали, нужно скачать и установить ее (скачать можно отсюда). Также необходимо удостоверится, что антивирусник не блокирует порт с номером 5353.

Linux

Под Linux установка драйверов не требуется вообще. (Проверено на Ubuntu 10.0.4).

Конфигурирование встроенного WiFi

Arduino Yún может работать не только в качестве точки доступа, но и подключаться к существующим беспроводным сетям. В данном разделе  приведены инструкции, как подключить Yun к WiFi-сети. Arduino Yún может работать как в зашифрованных (WEP, WPA, WPA2), так и незашифрованных сетях. 

После первого включения Yún, Ардуино создаст WiFi-сеть с названием ArduinoYun-XXXXXXXXXXXX. Подключитесь к этой сети с компьютера. 

Как только вам будет присвоен IP-адрес, откройте браузер и наберите в адресной строке: http://arduino.local или 192.168.240.1. Через мгновение появится веб-страница, запрашивающая у вас пароль. Введите "arduino" и щелкните по кнопки Log In.

Загрузится страница с системной информацией о текущих сетевых соединениях по интерфейсам WiFi и Ethernet. Для продолжения нажмите кнопку Configuration (Настройка).

На загрузившейся странице можно настроить Arduino Yún, присвоив ему уникальное имя и указав, к какой сети необходимо подключаться.

В поле Yún NAME впишите уникальное имя своего Arduino. Это имя вам понадобится в будущем при обращении к Ардуино.

Задайте пароль для Ардуино длиной не менее 8 символов. Если оставить это поле пустым, система оставит действующим пароль по умолчанию - arduino.

По желанию можно установить часовой пояс и страну. Рекомендуется задать эти настройки, т.к. это может облегчить процесс подключения к локальным WiFi-сетям. 

Введите имя той WiFi-сети, к которой желаете подключиться.

Выберите тип защиты и введите пароль сети.

После нажатия кнопки Configure & Restart (сохранить настройки и перезагрузиться), Arduino сбросит сам себя и подключится к заданной сети. Через несколько секунд созданная ранее WiFi-сеть Ардуино исчезнет. 

Теперь вы можете подключиться к той сети, которую указали в настройках Arduino Yún.

Прошивка 32U4 через WiFi

Когда Arduino Yún находится в той же сети, что и ваш компьютер, к нему можно подключиться и удаленно прошить через WiFi.

Для этого после конфигурирования Yún подключитесь к той сети, которую вы указали в настройках Ардуино. Откройте среду разработки Arduino IDE.

В меню Tools > Port вы должны увидеть запись с именем вашего Arduino и его IP-адресом. В меню Board выберите пункт Arduino Yún.

Откройте тестовую программу (File > Examples > 01Basics > Blink) и прошейте ее в Ардуино. Система попросит вас ввести пароль администратора - введите тот пароль, который вы указывали в конфигурациях Ардуино. 

После завершения процесса прошивки, микроконтроллер 32U4 перезапустится и начнет выполнять загруженную программу. В данном случае на плате должен мигать светодиод, подключенный к 13 выводу.

Использование встроенного Ethernet

При подключении Yun к проводной сети через Ethernet-кабель, Ардуино попытается автоматически подключиться к сети через DHCP. При этом в меню Port плата будет отображаться точно так же, как и при подключении через WiFi.

Если вы хотите напрямую подключить Yun к своему компьютеру, необходимо либо настроить на нем статический IP-адрес, либо настроить DHCP-сервер.

Примечание: интерфейс ethernet - это eth1, а не eth0

Взаимодействие с Linino через Bridge

Библиотека Bridge позволяет Ардуино взаимодействовать с Linino. Существует несколько вспомогательных классов, предназначенных для взаимодействия двух описанных ниже компонентов. Наиболее полную информацию о них можно найти в справке по библиотеке Bridge.

Все основные модули Arduino Yun - WiFi, Ethernet, USB-хост и SD-карта - подключены к процессору AR9331. Библиотека Bridge позволяет работать с этими устройствами, запускать скрипты и взаимодействовать с различными веб-службами. 

Класс Console

Класс Console построен на базе библиотеки Bridge, и позволяет Arduino Yún отправлять на компьютер информацию так же, как и при последовательном соединении, только по беспроводному интерфейсу. Он создает защищенное соединение между Yún и вашим компьютером с помощью протокола SSH, и работает подобно Терминалу.

Прошейте ваш Yún следующей программой:

#include <Console.h>

const int ledPin = 13; // вывод, к которому подключен светодиод
int incomingByte;      // переменная для хранения поступающих по послед. интерфейсу данных

void setup() {
  // инициализируем последовательный интерфейс:
  Bridge.begin();
  Console.begin(); 

  while (!Console){
    ; // ожидаем открытия подключения и открытия порта Console.
  }
  Console.println("You're connected to the Console!!!!");
  // конфигурируем пин, к которому подключен светодиод, как выход:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // проверяем, не поступили ли на вход внешние данные:
  if (Console.available() > 0) {
    // считываем первый байт из входного буфера:
    incomingByte = Console.read();
    // если это код прописной буквы "H" (ASCII-код 72), то включаем светодиод:
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
    } 
    // если это код буквы "L" (ASCII-код 76) - выключаем светодиод:
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
    }
  }
}

Чтобы увидеть Терминал, выберите в меню Port пункт с именем и IP-адресом вашего Arduino. Устройство отображается в этом меню только в том, случае, если ваш компьютер находится в той же локальной сети, что и Arduino Yún. Если же Ардуино работает в другой сети, то в списке портов его не будет. Запустите программу Port Monitor. Система запросит у вас пароль от Arduino Yún.

Увидеть терминал можно также, открыв командную строку и набрав в ней:

ssh root@yourYunsName.local 'telnet localhost 6571'

Примечание: если вы работаете под Windows, необходимо установить эмулятор командной строки Linux. Одним из таких эмуляторов является программа PuTTY, в которой указанные выше команды надо вводить отдельно.

Теперь можно ввести 'H' для включения светодиода на 13 выводе, и 'L' - для выключения.

Класс Process

Методы класса Process позволяют Ардуино запускать на Linino "линуксовые" процессы.

В следующем примере показано, как Linino соединяется с удаленным сервером и с помощью утилиты curl скачивает определенный ASCII-текст. Скачанный текст выводится по последовательному интерфейсу.

#include <Process.h>

void setup() {
  // Инициализируем библиотеку Bridge
  Bridge.begin();

  // Инициализируем последовательный интерфейс
  Serial.begin(9600);

  // Ждем подключения прикладной программы Serial Monitor
  while (!Serial);

  // запускаем различные примеры процессов
  runCurl();
}

void loop() {
  // здесь ничего не делаем.
}

void runCurl() {
  // запускаем команду "curl" и возвращаем Arduino ascii-лого из сети
  // curl - это консольная утилита для передачи данных через различные Интернет-протоколы
  Process p;        // Создаем процесс и называем его "p"
  p.begin("curl");  // Процесс, который будет вызывать команду "curl"
  p.addParameter("http://arduino.cc/asciilogo.txt"); // Добавляем к "curl" URL страницы
  p.run();      // Запускаем процесс и ожидаем его завершения

  // Выводим логотип Ардуино через последовательный порт
  // выходные данные процесса можно считать с помощью потоков
  while (p.available()>0) {
    char c = p.read();
    Serial.print(c);
  }
  // Убеждаемся, что последний бит данных корректно отправлен.
  Serial.flush();
}

Использование Bridge для передачи информации между процессорами

Библиотека Bridge позволяет передавать информацию между двумя процессорами с использованием пары значений - ключ/параметр.

В этом примере показано, как с помощью библиотеки Bridge обращаться к цифровым и аналоговым выводам платы посредством REST-вызовов. Пример также демонстрирует, как можно создавать собственное API, если оформлять браузерные команды в REST-стиле.

Перед запуском этого примера, убедитесь, что ваш компьютер работает в той же сети, что и Arduino Yun.

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

Если запрос REST-пароля отключен, то для управления выводами в адресной строке браузера можно вводить следующие команды:

Для выполнения перечисленных команд можно использовать не только браузер, но и утилиту curl, к примеру.

Итак, в программу необходимо подключить библиотеки Bridge, YunServer и YunClient:

#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>

Создадим экземпляр класса сервера, который позволит Yun ожидать подключения клиентов.

YunServer server;

В блоке setup() проинициализируем последовательный интерфейс (для последующей отладки) и подадим высокий уровень на встроенный светодиод (на 13 пине) до тех пор, пока не стартует библиотека Bridge. Метод Bridge.begin() является блокирующим, и на его выполнение может уйти около 2 секунд. Как только Brdige запустился, выключаем светодиод:

void setup() {
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  digitalWrite(13, LOW);
  Bridge.begin();
  digitalWrite(13, HIGH);

Во второй части блока setup() заставим экземпляр YunServer прослушивать входящие соединения только с localhost'а. Все подключения к Linino будут передаваться микроконтроллеру 32U4 для анализа и дальнейших манипуляций с выводами платы. Подключения осуществляются на порт 5555. Запустим сервер командой server.begin():

server.listenOnLocalhost();
  server.begin();
}

В блоке loop() создадим экземпляр YunClient для обработки подключений. При подключении клиента - обработать все поступившие запросы в специальной функции (которая будет описана ниже) и закрыть соединение.

В конце блока loop() добавим небольшую задержку, чтобы сильно не нагружать процессор:

void loop() {
  YunClient client = server.accept();

  if (client) {
    process(client);
    client.stop();
  }

  delay(50); 
}

Создадим функцию под именем process, которая в качестве аргумента будет принимать объект YunClient. Внутри этой функции считывается поступившая от клиента команда и сохраняется в строковой переменной. Далее осуществляется разбор этой строки и анализ содержащихся в ней REST-команд (digital, analog или mode). В случае обнаружения REST-команды, поступившая от клиента информация передается соответствующей функции.

void process(YunClient client) {
  String command = client.readStringUntil('/');

  if (command == "digital") {
    digitalCommand(client);
  }
  if (command == "analog") {
    analogCommand(client);
  }
  if (command == "mode") {
    modeCommand(client);
  }
}

Создадим функцию для работы с цифровыми (digital) командами, поступившими от клиента, который является параметром этой функции. Внутри функции создадим несколько локальных переменных для хранения номера вывода и его состояния:

void digitalCommand(YunClient client) {
  int pin, value;

Далее займемся разбором запроса, поступившего от клиента, и попробуем отыскать номер вывода с помощью функции client.parseInt().

Если после номера вывода идет символ "/", значит, после него в URL'е должна быть указана 1 или 0. Это значение будет характеризовать состояние, в которое необходимо установить вывод - высокий уровень (HIGH) или низкий (LOW). Если в URL'е нет завершающего слэша "/", значит, необходимо просто считать состояние указанного вывода. 

pin = client.parseInt();

  if (client.read() == '/') {
    value = client.parseInt();
    digitalWrite(pin, value);
  } 
  else {
    value = digitalRead(pin);
  }

После этого отправляем клиенту текстовые сообщения и в хранилище данных обновляем значение ключа, соответствующего указанному выводу, той величиной, которая была задана клиентом.

Если отправляемое значение указать внутри конструкции F(), то оно будет выводиться с флеш-памяти. Это позволяет экономить свободно пространство в памяти SRAM, что особенно актуально при работе с длинными строками, характерными для URL'ов.

Имя ключа объединяет в себе номер вывода, а также его тип. Например, ключ D2 означает, что передаваемое значение относится к цифровому (Digital) выводу под номером 2. 

client.print(F("Pin D"));
  client.print(pin);
  client.print(F(" set to "));
  client.println(value);

  String key = "D";
  key += pin;
  Bridge.put(key, String(value));
}

Теперь таким же образом опишем функцию для работы с аналоговыми командами. Отличие будет заключаться в том, что при работе с аналоговыми входами Ардуино, в названии ключа будет фигурировать символ A вместо символа D:

void analogCommand(YunClient client) {
  int pin, value;

  pin = client.parseInt();

  if (client.read() == '/') {
    value = client.parseInt();
    analogWrite(pin, value);

    // информируем клиента о том, что произошло
    client.print(F("Pin D"));
    client.print(pin);
    client.print(F(" set to analog "));
    client.println(value);

    String key = "D";
    key += pin;
    Bridge.put(key, String(value));
  }
  else {
    value = analogRead(pin);

    client.print(F("Pin A"));
    client.print(pin);
    client.print(F(" reads analog "));
    client.println(value);

    String key = "A";
    key += pin;
    Bridge.put(key, String(value));
  }
}

Создадим еще одну функцию для изменения режима работы выводов: в качестве аргумента принимаем объект YunClient, создаем локальную переменную для хранения номера вывода и, подобно предыдущим функциям, извлекаем из поступившей команды номер вывода:

void modeCommand(YunClient client) {
  int pin;
  pin = client.parseInt();

Проверяем правильность URL'а:

if (client.read() != '/') {
    client.println(F("error"));
    return;
  }

Если URL введен правильно, сохраняем его в строку. Если режим задан строками input или output - изменяем режим работы указанного вывода и информируем об этом клиента. В противном случае - возвращаем ошибку.

String mode = client.readStringUntil('\r');

  if (mode == "input") {
    pinMode(pin, INPUT);
    // информируем клиента о том, что произошло
    client.print(F("Pin D"));
    client.print(pin);
    client.print(F(" configured as INPUT!"));
    return;
  }

  if (mode == "output") {
    pinMode(pin, OUTPUT);
    // информируем клиента о том, что произошло
    client.print(F("Pin D"));
    client.print(pin);
    client.print(F(" configured as OUTPUT!"));
    return;
  }

  client.print(F("error: invalid mode "));
  client.print(mode);
}

Более подробное описание этого примера можно найти здесь.

Подключение к интернет сервисам с помощью Temboo

Arduino Yún предоставляет пользователю ряд возможностей для работы в сети, но наиболее интересные вещи можно создавать при работе с онлайн-сервисами. Чтобы максимально упростить вам взаимодействие с этими службами, Arduino стали партнером Temboo. Temboo предоставляет доступ к более, чем 100 API различных сервисов через единый аккаунт, что позволяет вам объединять и всячески обрабатывать данные, поступающих с разных онлайн-платформ (например, с Twitter, Facebook, Foursquare и даже FedEx или PayPal).

В папке File > Examples > Bridge > Temboo содержится множнество примеров, которые помогут быстро освоить принципы работы Arduino Yún с облаком. Подробнее об интеграции Ардуино и Temboo можно узнать в рекомендациях по началу работы с Temboo.

Spacebrew

Spacebrew - это простой способ соединить между собой различные интерактивные вещи. Сервис работает по принципу клиента/сервера, для взаимодействия которых используется технология WebSockets. Он запускает на Yun пользовательский сервер на Python, облегчающий взаимодействие устройств между собой.

В программное обеспечение Ардуино включено множество примеров работы со Spacebrew для Yun. Подробнее о Spacebrew - см. документацию о проекте.

Установка дополнительного программного обеспечения на Linux

По умолчанию в дистрибутиве Linino для Arduino Yún уже установлено несколько программ, включая "curl" и "python". Однако, по желанию вы можете устанавливать и другие программы. В операционных системах Linux дополнительное программное обеспечение устанавливается с помощью инструмента под названием "package management system" (система управления пакетами). Для получения дополнительной информации, см. инструкции по работе с менеджером пакетов.

Что дальше?

Теперь, когда вы разобрались с основами работы Yun, можете копнуть глубже  в направлении библиотеки Bridge и примеров работы с библиотекой. Для получения дополнительной технической информации см. страницу с описанием устройства Arduino Yún