Arduino Yun shield

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ответить
stellhawk
Сообщения: 264
Зарегистрирован: Чт ноя 08, 2018 5:51 am
Благодарил (а): 10 раз
Поблагодарили: 83 раза

Arduino Yun shield

Сообщение stellhawk » Чт апр 08, 2021 7:10 am

Очень интересная железка.
в основном представлена на алиэкспресс в виде 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);
  }
}
2. Хранилище ключ- значение (internal key/value storage)
необходимость работы с ним сомнительна -пользоваться или нет решайте сами
по ссылке 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
Вложения
Yun-Shield-V1-6-Linux-WiFi-Ethernet-USB-Project.jpg_q50 (1).jpg
Yun-Shield-V1-6-Linux-WiFi-Ethernet-USB-Project.jpg_q50 (1).jpg (27.71 КБ) 1118 просмотров
Yun-Shield-V1-6-Linux-WiFi-Ethernet-USB-Project.jpg_q50.jpg
Yun-Shield-V1-6-Linux-WiFi-Ethernet-USB-Project.jpg_q50.jpg (28.71 КБ) 1118 просмотров
Ответить