в основном представлена на алиэкспресс в виде dragino Yun Shield v1.1.6
Processor: 400MHz, 24K MIPS
Flash: 16MBytes
RAM: 64MBytes
Power Input: 4.75v ~ 23v via Arduino VIN pin
1 x 10M/100M RJ45 connector
150M WiFi 802.11 b/g/n
External Antenna via I-Pex connector
1 x USB 2.0 host connector, used for USB storage or 3G connection
1 x Reset button
Compatible with 3.3v or 5v I/O Arduino.
На борту имеет линукс:
Open source Linux (OpenWrt) onboard
Совместимость с Arduinо Leonardo, Uno , Duemilanove, Diecimila, Mega 2560
сильно в подробности не полезу вот тут есть статья:
http://wiki.amperka.ru/%D0%BF%D1%80%D0% ... rduino-yun
Главное что надо понимать при работе с Yun - это замена полноценного компьютера и с ардуино вы работаете по сути через Serial port.
Настройку железки смотрите в инете. полно статей по этому поводу тем более учитывая что на борту OpenWrt
Настройка арудино студии:
Идем в Менеджер плат(Boards manger) ищем по слову Yun-находим нудный пакет ставим. перегружаем ардуино студио.
Tools->Port-> появится должны платы доступные через сеть.
Tools->Board выбираем ту плату которая подключена (например 2560)
работает с ардуино студио как обычно.
Второй метод заливки прошивки. через OpenWrt там есть специальная страница -компилируем скетч и заливаем через веб-морду.
Программирование:
https://www.arduino.cc/en/Reference/YunBridgeLibrary
В первую очередь лучше ознакомится с примерами:
ArduinoStudio -> File->Exaples->Bridge
на мой взгляд самый интересный там Bridge.ino/
разберем его подробнее
1.Сервер для общения с внешним миром
вся работа с ним доступна по
http://Yun_IP/arduino/*
Код: Выделить всё
YunServer server;
void setup() {
// включаем Сервер на localhost -доступность извне не важна, потому что к нему подключается только сам yun shiled а через него мы уже общаемся с внешним миром
server.listenOnLocalhost();
server.begin();
}
void loop() {
// В основном цикле ждем подключение клиента к серверу
BridgeClient client = server.accept();
//если клиент подключился, то передаем клиента в функцию process()
if (client) {
process(client);
client.stop();
}
}
2.
void process(BridgeClient client) {
/* client.read... возвращает строку вызова от клиента например
если адресная строка http://Yun_IP/arduino/digital/13/1
то в client.read... возвращает часть касающуюся "digital/13/1"
команда readStringUntil('/') читай строку "digital/13/1" до тех пока не встретишь "/"
*/
String command = client.readStringUntil('/');
// Если в начале адресной строки написано "digital" выполни функцию digitalCommand()
if (command == "digital") {
digitalCommand(client);
}
}
void digitalCommand(BridgeClient client) {
/*Тут важный момент:
так как уже выполнена команда client.readStringUntil('/');
то сюда уже попадает только "13/1"
parseInt() - найти и число типа int в строке
соответственно вернет pin=13
*/
pin = client.parseInt();
/*
client.read() -читает 1 символ из оставшейся строки "/1"
если этот символ "/" то выполни команду digitalWrite()
иначе выполни команду digitalRead
*/
if (client.read() == '/') {
value = client.parseInt();
digitalWrite(pin, value);
} else {
value = digitalRead(pin);
}
}
необходимость работы с ним сомнительна -пользоваться или нет решайте сами
по ссылке http://Yun_IP/data/*
доступно хранилище
/put/KEY/VALUE : stores a value inside the storage
/get/KEY : obtains the value of the requested key in JSON
/get : obtains the entire storage list in JSON.
/delete : deletes the internal storage
есть скрипт который из php или питона работает с этим хранилищем:
https://github.com/arduino/YunBridge/tr ... bridge/php
подчерпнуть как рабоать с этим всем в устройствах реализованных мною:
https://github.com/stell-hawk/yun-relay-32-32 - реле 32 входа 32 выхода.
Там можно найти: чтение в порт, запись из порта, реакция на изменение порта.
Вызов страницы мажордомо для обработки события. получение данных извне для манипуляции с портом.
Чтение данных из конфига находящегося на Yun, запись данных в файл.
https://github.com/stell-hawk/arduino-y ... warm-floor
Там можно найти: работа с датчикам ds1820 ,запись логов, стирание логов,
чтение переменных из файла, запись значения переменной в файл.
вывод на страничку значений датчиков, вывод на страницу значения переменных.
изменение переменной запросом типа: "/values/SUM_D_T/1.5"
работа с Process time
отсылка данных во внешний скрипт
полезная информация в интернете
https://wiki.dragino.com/index.php?title=Yun_Shield
https://www.geeetech.com/wiki/index.php ... Yun_Shield
https://www.arduino.cc/en/Guide/ArduinoYunShield
https://www.arduino.cc/en/Reference/YunBridgeLibrary
https://habr.com/ru/post/193330/
https://github.com/dragino/Arduino-Profile-Examples