Начало работы с Arduino Yun Shield

Первые шаги по настройке Arduino Yun Shield

Примечание

Это устаревший продукт.

Быстрая настройка

Мы подготовили скетч первоначальной конфигурации, доступный в меню Examples -> Bridge -> YunFirstConfig, который позволяет легко настроить WiFi-соединение вашего Yun Shield.

Простая настройка для плат 101, Due, Leonardo и Zero

Этот скетч использует Serial Monitor вашей Arduino Software (IDE) для взаимодействия с вами, запрашивая необходимую информацию для конфигурации. Шилд использует аппаратный последовательный порт на контактах 0 и 1 для связи с платой. На Zero и Due используйте Native-порт для взаимодействия с платой. Подготовьте SSID (имя точки доступа) и ключ или парольную фразу для доступа к WiFi-сети. Предполагается, что ваша плата правильно настроена и вы уже установили шилд на неё. Загрузите скетч, а затем откройте Serial Monitor, нажав на значок лупы справа на панели значков. Вы увидите сообщение, как на скриншоте ниже.

EasySetup 1

Синий светодиод на шилде начнёт мигать через некоторое время; когда процесс сканирования завершится, скетч предложит все доступные точки доступа в пронумерованном списке. Время, необходимое для сканирования сети, зависит от количества точек доступа и силы их сигнала. Вы выбираете нужную точку доступа, вводя в поле ввода соответствующий номер. Не забудьте включить «NewLine» в Serial Monitor в качестве символа конца строки.

EasySetup 2

Выбор точки доступа запускает процесс подключения, и Yun Shield определит, является ли сеть открытой или защищённой. В последнем случае вам будет предложено ввести ключ. Плате необходимо дать имя и защитить паролем, чтобы обеспечить простое и безопасное подключение. Следуя этим шагам, ваш шилд будет готов к подключению к WiFi-сети, отключив режим точки доступа и инициируя доступ к выбранной WiFi-сети. В конце этого процесса скетч покажет IP-адрес, полученный от DHCP-сервера WiFi.

EasySetup 3

Если подключение не удалось, скетч сообщит об этом и предложит перезапустить всю процедуру путём сброса платы.

Стандартная настройка для плат UNO Rev3, Mega2560 Rev3

Эти платы не имеют второго аппаратного последовательного порта, поэтому не могут использоваться со скетчем простого подключения, описанным выше. Эти платы могут использовать Yun Shield, но с некоторыми ограничениями, перечисленными далее на странице.

Yun Shield имеет возможность работать как точка доступа, но также может подключаться к существующей сети. Эти инструкции проведут вас через процесс подключения Yun Shield к беспроводной сети. Yun Shield может подключаться к незашифрованным сетям, а также к сетям с поддержкой шифрования WEP, WPA и WPA2.

При первом включении платы, к которой подключён Yun Shield, он создаст WiFi-сеть с именем ArduinoYun-XXXXXXXXXXXX. Подключите ваш компьютер к этой сети.

После получения IP-адреса откройте веб-браузер и введите

http://arduino.local

или 192.168.240.1 в адресной строке. Через несколько мгновений появится веб-страница с запросом пароля. Введите arduino и нажмите кнопку Log In.

Yun101WebPassword

Вы увидите страницу с диагностической информацией о текущих сетевых подключениях. Первое — это ваш WiFi-интерфейс, второе — ваше Ethernet-подключение. Нажмите кнопку Configuration, чтобы продолжить.

Yun101WebDiagnostic

На новой странице вы настроите свой Yun Shield, дав ему уникальное имя и указав сеть, к которой хотите подключиться.

В поле Yun NAME дайте вашему шилду уникальное имя. Вы будете использовать его для обращения к нему в будущем.

Выберите пароль из 8 или более символов для вашего шилда. Если вы оставите это поле пустым, система сохранит пароль по умолчанию arduino.

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

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

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

Yun101WebConfig

Когда вы нажмёте кнопку Configure & Restart, шилд перезагрузится и присоединится к указанной сети. Точка доступа отключится через несколько мгновений.

YunRebooting

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

Сохранение конфигурации

Шилд имеет встроенную систему Linux на базе OpenWRT, которая предоставляет множество функций, включая хранилище. Это означает, что после настройки шилд сохраняет конфигурацию в своей памяти. Поэтому, если вы отсоедините шилд от одной платы и подключите к другой, конфигурация останется в памяти, и шилд автоматически подключится к последней использованной сети. После установки конфигурации шилд сохраняет её и ожидает подключения к сохранённой WiFi-сети, даже если она отсутствует или недоступна. Чтобы сбросить конфигурацию и снова войти в режим точки доступа, необходимо нажать кнопку Config-Reset не менее чем на 5 секунд.

Видеоурок

Здесь вы можете найти видеоурок по конфигурации платы Yun, который почти идентичен описанному выше процессу.

Обслуживание

Конфигурация и данные, хранящиеся в Yun Shield, могут управляться следующим образом.

Сброс AR9331 и WiFi

Чтобы сбросить образ OpenWRT к состоянию по умолчанию, нажмите кнопку Config-Reset не менее чем на 30 секунд. Плата вернётся к исходным настройкам: как только что извлечённая из коробки или к последнему обновлению образа OpenWRT, который вы перепрошили ранее. Помимо прочего, это удаляет все установленные файлы и сетевые настройки.

Сброс пароля

Пароль веб-панели можно сбросить и изменить. Подключите Arduino Yun Shield к компьютеру USB-кабелем и загрузите скетч YunSerialTerminal. Его можно найти в примерах Bridge в Arduino IDE. Когда загрузка Yun Shield завершится, откройте Serial Monitor, выберите символ New Line в выпадающем меню и нажмите Enter. В Serial Monitor должно появиться что-то подобное:

Yun101SerialMonitor

Теперь вам нужно выполнить команду passwd для изменения пароля. Введите passwd в поле ввода Serial Monitor и нажмите Enter. Вам будет предложено ввести новый пароль и повторить его для подтверждения. При желании вы можете проигнорировать ошибку слабого пароля. Если оба введённых пароля совпадают, системный пароль будет изменён, и вы сможете получить доступ к веб-панели с новым паролем.

Программирование подключённой платы по WiFi

Специальное примечание для плат UNO Rev3, Mega2560 Rev3

Платы UNO Rev3 и Mega2560 Rev3 не имеют двух аппаратных последовательных портов, поэтому единственный доступный последовательный порт подключён к процессору Atheros. Это занимает последовательный порт ATmega 328P и делает программирование через USB невозможным. Тем не менее, этот шилд можно использовать с платой UNO со следующими оговорками:

  • плату с установленным шилдом нельзя программировать через USB

  • конфигурация шилда должна выполняться через процедуру Captive AP

  • скетчи можно загружать только через WiFi, используя Arduino Software (IDE), веб-интерфейс, или

  • скетчи, использующие последовательную связь с пользователем, должны использовать Console.print вместо Serial.print и доступ к Serial Monitor через WiFi. Как объяснено далее, Console требует включения своей библиотеки в скетч.

Для правильной работы необходимо установить перемычку на плате UNO, чтобы перевести чип 16U2 в правильное состояние с отключённым последовательным интерфейсом.

Ponticello UNO YUN

Пожалуйста, установите эту перемычку, чтобы платы UNO работали с Yun Shield.

Специальное примечание для плат Zero

Если вы используете плату Zero, убедитесь, что ядро SAMD, установленное в вашей IDE, обновлено до версии 1.6.6 или новее, и что загрузчик был обновлён соответствующим образом. Если вы хотите загрузить скетч на плату Zero по сети через Yun Shield, вам необходимо запитать плату от разъёма DC или через Programming USB порт.

Специальное примечание для плат DUE

Эту плату можно программировать удалённо, но способ её взаимодействия с шилдом Yun требует специальной процедуры, которая инициализируется функцией checkForRemoteSketchUpdate(). Как следует из названия, эта инструкция отвечает за проверку наличия нового скетча для загрузки на плату. Это необходимо только для Due, потому что перед загрузкой нового скетча нужно стереть флеш-память. То же действие выполняется автоматически при загрузке скетча через любой из USB-портов. Ознакомьтесь с примером RemoteDueBlink, включённым в библиотеку Bridge (Example -> Bridge -> RemoteDueBlink), который познакомит вас с использованием функции checkForRemoteSketchUpdate(). Сначала необходимо загрузить этот скетч через USB, а также помните, что любой удалённо загружаемый скетч должен содержать эту инструкцию для поддержки функциональности удалённой загрузки. Для включения функции удалённой загрузки необходимо установить ядро SAM версии 1.6.8 или выше. Чтобы обеспечить работу удалённой загрузки, необходимо запитать DUE от разъёма barrel jack или через Native USB порт.

Специальное примечание для плат 101

Эту плату можно программировать только при прямом USB-подключении; Arduino Software (IDE) может подключиться к IP-порту и открыть Serial Monitor. Невозможно программировать 101 через загрузку по WiFi или через веб-панель.

Программирование с помощью Arduino Software (IDE)

Когда ваш Yun Shield находится в той же сети, что и ваш компьютер, вы можете подключиться к нему по беспроводной сети для программирования платы Arduino, подключённой к нему.

После настройки Yun Shield подключитесь к сети, которую вы указали в параметрах конфигурации. Откройте Arduino Software (IDE). В меню Tools > Port вы должны увидеть запись с именем вашего Yun Shield и его IP-адресом.

Port WiFi IDE

Как обычно, в меню Board выберите тип вашей платы.

Чтобы протестировать функцию программирования, откройте пример Blink (File > Examples > 01Basics > Blink) и загрузите скетч на плату. Вам будет предложено ввести пароль администратора. Используйте тот, который вы ввели на экране конфигурации. Обычные сообщения должны появиться в нижней части окна IDE, подтверждая загрузку.

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

Программирование через веб-интерфейс

Откройте браузер и введите IP-адрес Yun Shield; войдите в шилд с вашим паролем и перейдите на главную панель.

Upload Sketch Web

Нижний прямоугольник позволяет выбрать файл «.hex» для загрузки и целевую плату (подключённую к шилду). Вы можете создать Hex-файл непосредственно из Arduino Software (IDE), используя меню Sketch -> Export Compiled Binary.

Hex File IDE

Это сохраняет в папке скетча два hex-файла. Если вы подключили плату с ядром AVR, используйте файл .hex, включающий загрузчик. Если вы подключили плату с ядром SAM или SAMD, используйте файл без загрузчика. После выбора правильного файла нажмите на панель Upload и следите за выводом, чтобы убедиться, что код был правильно запрограммирован на вашу плату.

Примечание

Программирование плат UNO через веб-интерфейс требует, чтобы ваш Yun Shield имел версию прошивки 1.6.2 или новее. Пожалуйста, проверьте руководство по обновлению и убедитесь, что у вас установлена последняя доступная версия.

Интерфейс и функции программирования

Образ OpenWRT

Yun Shield работает на дистрибутиве Linux под названием OpenWRT, основанном на OpenWrt. Хотя систему можно настроить из командной строки, существует веб-страница, которая позволяет настраивать множество различных доступных параметров. Интерфейс (называемый LuCi) предоставляет доступ к практически любым настройкам, необходимым для обслуживания WiFi-интерфейса. Вы уже использовали этот интерфейс, если настраивали плату через веб-браузер.

Для установки дополнительного программного обеспечения на OpenWRT необходимо использовать менеджер пакетов Linux opkg. Для получения дополнительной информации о менеджере и некоторых распространённых командах см. страницу менеджера пакетов Yun.

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

Предупреждение

Из-за постоянных улучшений и предложений от сообществ OpenWrt и Arduino, версия OpenWRT, установленная на вашем Yun Shield, может быть устаревшей. Пожалуйста, проверьте руководство по обновлению и убедитесь, что у вас установлена последняя доступная версия.

Python

Установка Python 2.7 включена в OpenWRT, с помощью которой вы можете писать приложения или скрипты. Для получения дополнительной информации о Python посетите страницы документации Python 2.7.

Если вы только начинаете знакомство с Python, в интернете есть множество отличных ресурсов. «Learn Python the Hard Way» охватит всё, что вам нужно знать, чтобы начать работу со своими собственными скриптами.

Веб-сервисы

OpenWRT использует REST для клиентов и серверов. REST — это аббревиатура от «Representational State Transfer». Это архитектура программного обеспечения, которая предоставляет доступ к различным частям оборудования Arduino через URL-адреса.

По умолчанию доступ к REST API защищён паролем. Можно изменить эту настройку для доступа к сервисам без пароля. Чтобы изменить эту настройку, войдите в панель конфигурации Yun Shield. В нижней части страницы вы увидите переключатели для изменения доступа.

YunRESTAccess

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

Три конечные точки REST, распознаваемые Yun Shield:

  • /arduino

  • /data

  • /mailbox

Директория «/arduino» не имеет предварительно настроенных элементов. Всё, что добавлено к URL после конечной точки, передаётся от веб-сервера к скетчу на микроконтроллере подключённой платы. Вы можете определить свои API внутри скетча. Смотрите пример Bridge, чтобы узнать, как это делается для доступа к контактам платы.

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

  • /put/KEY/VALUE : сохраняет значение в хранилище

  • /get/KEY : получает значение запрашиваемого ключа в формате JSON

  • /get : получает весь список хранилища в формате JSON

  • /delete : удаляет внутреннее хранилище

«mailbox» используется для добавления сообщений в очередь, называемую Mailbox. Очередь сообщений хранится внутри системы Linux и может быть прочитана микроконтроллером Arduino. Доступный REST-вызов:

  • «/mailbox/message»

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

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

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

Примечание

Ethernet-интерфейс — это eth1, а не eth0.

Связь с OpenWRT через Bridge

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

BridgeShieldBlockDiag

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

Console

Console, основанная на Bridge, позволяет отправлять информацию с Yun Shield на компьютер так же, как и через Serial Monitor, но по беспроводной сети. Она создаёт защищённое соединение между Yun Shield и вашим компьютером через SSH.

Загрузите следующий код на ваш Yun Shield:

#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);
    }
  }

  delay(100);
}

Чтобы увидеть Console, выберите имя и IP-адрес вашего Yun в меню Port. Yun Shield будет отображаться в меню портов, только если ваш компьютер находится в той же локальной сети, что и Yun. Если ваша плата находится в другой сети, вы не увидите её в меню портов. Откройте Port Monitor. Вам будет предложено ввести пароль Yun.

Вы также можете увидеть Console, открыв окно терминала и набрав:

ssh root@yourYunsName.local 'telnet localhost 6571'

а затем нажав Enter.

Примечание

Если вы используете Windows, вам необходимо установить эмулятор терминала. PuTTY — разумный выбор, но вам придётся вводить две команды выше отдельно.

Введите „H“, чтобы включить светодиод на контакте 13, и „L“, чтобы его выключить.

Process

Команды Process позволяют запускать процессы Linux на OpenWRT через Arduino.

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

#include <Process.h>

void setup() {
  // Инициализация Bridge
  Bridge.begin();

  // Инициализация Serial
  Serial.begin(9600);

  // Ожидание подключения Serial Monitor.
  while (!Serial);

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

void loop() {
  // Здесь ничего не происходит.
}

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

  // Вывод логотипа Arduino через Serial
  // Вывод процесса можно прочитать методами потока
  while (p.available()>0) {
    char c = p.read();
    Serial.print(c);
  }

  // Убедиться, что последние данные отправлены.
  Serial.flush();
}

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

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

Этот пример показывает, как использовать библиотеку Bridge для доступа к цифровым и аналоговым контактам платы через REST-вызовы. Он демонстрирует, как вы можете создать свой собственный API при использовании REST-вызовов через браузер.

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

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

Когда пароль REST отключён, вы можете использовать браузер со следующей структурой URL:

  • http://myArduinoYun.local/arduino/digital/13 : вызывает digitalRead(13);

  • http://myArduinoYun.local/arduino/digital/13/1 : вызывает digitalWrite(13,1);

  • http://myArduinoYun.local/arduino/analog/9/123 : analogWrite(9,123);

  • http://myArduinoYun.local/arduino/analog/2 : analogRead(2);

  • http://myArduinoYun.local/arduino/mode/13/input : pinMode(13, INPUT);

  • http://myArduinoYun.local/arduino/mode/13/output : pinMode(13, OUTPUT);

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

Вам нужно включить библиотеки Bridge, YunServer и YunClient:

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

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

YunServer server;

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

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

Во второй части setup() укажите экземпляру YunServer прослушивать входящие соединения только от localhost. Соединения, установленные с OpenWRT, будут переданы процессору 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) и передайте информацию соответствующей функции.

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. Если завершающего «/» нет, прочитайте значение с указанного контакта.

pin = client.parseInt();

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

  else {
    value = digitalRead(pin);
  }

Выведите значение клиенту и обновите ключ в хранилище данных текущим значением контакта.

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

Ключом будет контакт и тип. Например, D2 будет сохранён для цифрового контакта 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);
}

Более подробную информацию об этом примере можно найти на странице примера Bridge.

Установка дополнительного ПО на Linux

Yun Shield поставляется с несколькими предустановленными программами на OpenWRT, включая «curl» и «python». Вы можете установить другое программное обеспечение на Yun. На Linux-системах дополнительное ПО можно установить с помощью инструмента, называемого «системой управления пакетами». Для получения дополнительной информации обратитесь к руководству по менеджеру пакетов.

См. также

Теперь, когда вы освоили основы, вы можете углубиться с помощью библиотеки Bridge и примеров. Вы также можете посетить страницу продукта Yun Shield для получения дополнительной технической информации.