В данном обзоре указаны 10 распространенных приложений в управлении Ардуино с компьютера или телефона, которые легки в изучении и использовании. Arduino – это платформа, разработанная ввиду технологий современного программирования. Плата с USB разъемами для блока питания. При подключении к ПК, заряжается. Во внутренней системе есть кнопка для форматирования данных.
Главные составляющие:
- Бредбоард – соединяет платформу с устройством.
- Светодиод – индикатор, сигнализирует об управлении.
- Резистор — контролирует подачу электрического тока внутри платформы.
- Фоторезистор – реагирует на тип освещения.
- Транзистор – усиливает электрические сигналы и используется в сложных цепях.
Это было внутреннее описание. Далее переходим к обзору самого приложения. Компанией Google был создан новый интерфейс прикладного программирования под названием Arduino. Предназначается для связи Android устройства с USB. Открывает большие возможности в создании проектов и упрощает программирование и управление с экрана мобильного телефона. Помогает управлять синхронизацией данных.
Обзор возможностей Arduino:
- создание скетчей;
- их редактирование, компилирование и загрузка в плате;
- программирование и разработка кодов.
Работа производится со смартфона из любой части земного шара. В данном обзоре будут описаны программы, разработанные для удаленного пользования Ардуино, а именно Bluetooth и Wi-fi — контроллерами. Они просты в использовании и позволяют работать с любого гаджета. Проект Ардуино состоит из 3 этапов:
- написание кода;
- макетирование;
- прошивка.
Для программирования этих функций, требуется написать код, который можно удалять по необходимости, и прошить среду разработки. Это многоступенчатый процесс. В нем участвует несколько программ.
Arduino Bluetooth Controller
Эта программа работает в 3 основных положениях:
Контроллер. Приложение демонстрируется в облике play идентификатора и управляется кнопками переключения. Работает одной клавишей, основная функция которой – дистанционное управление.
Диммер. На расстоянии регулирует настройки яркости и скорости.
Терминал. Осуществление отправления директива для дешифрирования.
Установка приложения Arduino Bluetooth Controller сводит несколько устройств по воздушному каналу. Сообщения передаются по датчикам, контроллерам и обратно. Управляя смартфоном при помощи блютуз модулей, также возможно организовать беспроводное соединение целого проекта. Программирование такого типа доступно всем желающим и не требует особых усилий.
ArduinoDroid — Arduino IDE
Используется программистами как средство редактирования кодов и создания программ. Особенность – написанный скетч превращается в СС+, компилируется и грузится в Arduino. Отлично подходит для работы новичков в этой области. Приложением можно пользоваться бесплатно и в открытом доступе.
Первым шагом в использовании будет заливка скетча на микроконтроллер. Далее нажав кнопку «Загрузить» необходимо дождаться окончания загрузки. Мигающий светодиод означает, что все было сделано правильно. Все готово к написанию и использованию прошивок.
ArduinoDroid – легкий в использовании софт. Проводит редактирование, компилирование и загрузку кодов в плату с мобильного устройства или планшета. Так же рекомендуется проводить редактирование шифра или заливать готовый, если программа забанена..
Вместо вступления
Хочется сразу сказать, что в этой статье я не буду очень сильно углубляться в тонкости программирования, предполагается, что читающий имеет хотя-бы минимальные азы. Расскажу в целом как использовались ресурсы и о интересных моментах.
Предпосылки к созданию данного способа у меня возникли во время создания моего электромобиля: Жмяк сюда! Скажу сразу, что создавалось это всё больше из спортивного интереса, нежели для серьёзных практических работ, но тем не менее оно работает и может пригодится кому-либо.
RemoteXY: Arduino Control
Данная программа управления Ардуино, позволяет создать персональную панель. Дистанционное управление происходит через:
- Инет;
- Вай-Фай;
- Ик-порт;
- Блютуз.
На странице https://remotexy.com можно найти и скачать много интересных инструкций. К примеру, как создавать оригинальные клавиши и переключатели. Функционал адаптирован под новичка и не создаст проблем в использовании.
Управление ардуино с компьютера, а именно RemoteXY, возможно через облако. Это превозносит его перед аналогичными русскими софтами Arduino.
Принципиальная схема
Подключим Ethernet shield к материнской плате Ардуино. А электромагнитное реле уже к плате расширения. Используем питание 5 вольт и землю. А для управление реле возьмем 7 цифровой пин.
Принципиальная схема подключения Ethernet shield и реле
Приложение Blynk
Этакий разработчик идей, имеющий открытый вход к запуску на платформе Ардуино. Главное требование в использовании – наличие интернета: Wi-Fi или мобильный трафик. Только в этом случае Blynk будет готов к выполнению. Начать использование можно спустя несколько минут, после окончания настроек. Программой поддерживается АО по выбору пользователя.
Основные функции приложения Blynk заключаются в управлении устройствами при помощи удаления и добавления протоколов HTTP, а также запросов GET и POST. Значения параметров можно обновлять и получать. Запросы обновляются в самом приложении.
Вариативность – важная точка программы. Имея связь с работающими платформами, можно соединиться с сервером любым удобным способом. Данный инстинктивный портал обладает простотой в использовании над проектом. Библиотека постоянно обновляется для всех приложений Arduino Blynk.
Клиентов, желающих включать кофе машинку со своего смартфона, заинтересует это приложение. Это, пожалуй, единственный сервис с подобными возможностями. И не смотря на, то, что он практически безлимитный, является трудным Openhab. В сравнении с другими сервисами обладает быстрой скоростью при запуске.
Bluino Loader – Arduino IDE
ПО для компиляции кода в файл и загрузки его на платформу Ардуино через смартфон и USB OTG. Громоздкие кнопки и запутанные провода значительно усложняют работу над проектами. Для упрощенного контроля удаленным администрированием предоставляется графический идентификатор Bluino Loader IDE. Разрабатывает проекты, доступные триггеру. Подключается к всемирной паутине с помощью: Wi-Fi, Ethernet или через накопитель ESP8266. Когда необходимые процедуры будут выполнены и произойдет начало работы, приложение даст сигнал.
Настройка софта для создания проектов займет не более 5 минут. Матобеспечение настраивается по выбору пользователя. Простой и удобной софт. Для проверки заливают скетч в микроконтроллер и убеждаются в том, что все работает как надо. Мигающий диод подаст сигнал о правильности выполняемых действий. Далее приступают к прошивкам.
Программирование nRF24L01 для Arduino
Использовать эти модули с Arduino очень просто благодаря доступной готовой библиотеке, созданной maniacbug на GitHub. Нажмите на ссылку, чтобы загрузить библиотеку в виде zip-каталога, и добавьте её в Arduino IDE с помощью Скетч (Sketch) → Подключить библиотеку (Include Library) → Добавить ZIP библиотеку (Add .ZIP library). После добавления библиотеки мы можем начать программирование для проекта. Мы должны написать две программы, одна для передающей части, а другая для приемной части. Однако, как я уже говорил ранее, каждый модуль может работать как и передатчик, и приемник. Обе программы приведены в конце страницы, в коде передатчика будет закомментирован код приемника, а в программе приемника будет закомментирован код передатчика. Вы можете использовать его, если хотите, чтобы в вашем проекте модуль работал в обоих режимах. Работа программы описана ниже.
Как и во всех программах, мы начинаем с включения заголовочных файлов. Поскольку nRF использует протокол SPI, мы включили заголовочный файл SPI, а также библиотеку, которую только что загрузили. Библиотека servo используется для управления серводвигателем.
#include #include «RF24.h» #include
Далее идет важная строка, в которой мы указываем выводы CE и CS. На нашей принципиальной схеме CE подключен к выводу 7, а CS – к выводу 8.
RF24 myRadio (7, 8);
Все переменные, которые связаны с библиотекой RF, должны быть объявлены как составная структура. В данной программе переменная msg используется для отправки и получения данных от RF модуля.
struct package { int msg; }; typedef struct package Package; Package data;
Каждый RF модуль имеет уникальный адрес, используя который можно отправлять данные на соответствующее устройство. Поскольку у нас здесь только одна пара, мы устанавливаем адрес, равный нулю, как на передатчике, так и приемнике, но если у вас несколько модулей, вы можете установить ID на любую уникальную строку, состоящую из шести цифр.
byte addresses[][6] = {«0»};
Затем внутри функции void setup() мы инициализируем RF модуль и настраиваем его на работу в диапазоне 115, который свободен от шума, а также настраиваем модуль для работы в режиме минимального энергопотребления с минимальной скоростью 250 кбит/с.
void setup() { Serial.begin(9600); myRadio.begin(); myRadio.setChannel(115); // диапазон 115 выше WiFi сигналов myRadio.setPALevel(RF24_PA_MIN); // минимальная выходная мощность myRadio.setDataRate( RF24_250KBPS ) ; // минимальная скорость myservo.attach(6); Serial.print(«Setup Initialized»); delay(500); }
Функция void WriteData() записывает переданные ей данные. Как говорилось ранее, nRF имеет 6 различных каналов, в которые мы можем записывать и считывать данные, здесь мы использовали 0xF0F0F0F066 в качестве адреса для записи данных. В приемной части для получения данных мы должны использовать тот же адрес в функции ReadData().
void WriteData() { myRadio.stopListening(); // Остановить прием и начать передачу myRadio.openWritingPipe(0xF0F0F0F066);// Отправить данные на этот 40-разрядный адрес myRadio.write(&data, sizeof(data)); delay(300); }
Функция void WriteData() считывает данные и помещает их в переменную. Снова из 6 различных каналов, используя которые мы может считывать и записывать данные, здесь мы использовали 0xF0F0F0F066 в качестве адреса для чтения данных. Этот означает, что передатчик другого модуля записал что-то по этому адресу, и, следовательно, мы читаем это что-то с того же адреса.
void ReadData() { myRadio.openReadingPipe(1, 0xF0F0F0F0AA); // С какого канала считывать, 40-разрядный адрес myRadio.startListening(); // Остановить передачу и начать прием if ( myRadio.available()) { while (myRadio.available()) { myRadio.read( &data, sizeof(data) ); } Serial.println(data.text); } }
Помимо этих строк, в программе используются другие строки для считывания положения потенциометра и преобразования этого показания в значение в диапазоне от 0 до 180 с помощью функции map и отправки его на приемный модуль, где мы соответствующим образом управляем сервоприводом.
Arduino Bluetooth Control
Сокращенное название — ABC. Управляет и контролирует основные возможности API. Используется в мониторинге контактов через Bluetooth. Работает в автономном режиме. Приобщение к работе производит строго из Ардуино.
Инструменты, используемые в процессе:
- Metrics – передает показатели о сбоях и изменениях. Те, свою очередь, приходят на телефон в виде сообщения об остановке работы. Это подобие функции, где встряхнув гаджет можно отправить данные.
- Клавиши с указателями – служат для отправки информации.
- Терминал – варьирует информацией с временными показателями по назначению.
- Accelerometer – управление жестами. Смартфон превращается в механизм для регулирования машины.
- Голос – создает речевые команды. Доступно голосовое общение с роботом.
- Кнопки – функционируют 6 штук в горизонтальном положении. Используются для доставки информации на Arduino.
Управление проектами в дистанционном и удаленном виде стало частой необходимостью. ABC подходит для этих целей на 100%. UART (Serial) предназначается для беспроводного соединения Ардуино и PC. Данное подключение не нуждается в библиотеках и схемах.
Код
Код передающей части
/* Передает положение потенциометра через NRF24L01 с помощью Arduino * * Соединение выводов * CE — 7 MISO — 12 MOSI — 11 SCK — 13 CS — 8 POT — A7 */ #include #include «RF24.h» RF24 myRadio (7, 8); struct package { int msg = 0; }; byte addresses[][6] = {«0»}; typedef struct package Package; Package data; void setup() { Serial.begin(9600); myRadio.begin(); myRadio.setChannel(115); // Диапазон 115 находится выше WIFI myRadio.setPALevel(RF24_PA_MIN); // минимальная выходная мощность myRadio.setDataRate(RF24_250KBPS); // Минимальная скорость delay(500); Serial.print(«Setup Initialized»); } void loop() { int Read_ADC = analogRead(A7); char servo_value = map (Read_ADC, 0, 1024, 0,180); if (servo_value>1) data.msg = servo_value; WriteData(); delay(50); // ReadData(); //delay(200); } void WriteData() { myRadio.stopListening(); // Остановить прием и начать передачу myRadio.openWritingPipe( 0xF0F0F0F0AA); // Отправить данные на этот 40-разрядный адрес myRadio.write(&data, sizeof(data)); Serial.print(«\nSent:»); Serial.println(data.msg); delay(300); } void ReadData() { myRadio.openReadingPipe(1, 0xF0F0F0F066); // Какой канал считывать, 40-разрядный адрес myRadio.startListening(); // Остановить передачу и начать прием if (myRadio.available()) { while (myRadio.available()) { myRadio.read(&data, sizeof(data)); } Serial.print(«\nReceived:»); Serial.println(data.msg); } }
Код приемной части
/* CE — 7 MISO — 12 MOSI — 11 SCK — 13 CS — 8 POT — A7 Недавно тестировалось с Nano */ #include #include «RF24.h» #include Servo myservo; RF24 myRadio (7, 8); struct package { int msg; }; typedef struct package Package; Package data; byte addresses[][6] = {«0»}; void setup() { Serial.begin(9600); myRadio.begin(); myRadio.setChannel(115); // Диапазон 115 находится выше WIFI myRadio.setPALevel(RF24_PA_MIN); // минимальная выходная мощность myRadio.setDataRate(RF24_250KBPS); // Минимальная скорость myservo.attach(6); Serial.print(«Setup Initialized»); delay(500); } int Servo_value; int Pev_servo_value; void loop() { ReadData(); delay(50); Pev_servo_value = Servo_value; Servo_value = data.msg; while (Pev_servo_value< Servo_value) { myservo.write(Pev_servo_value); Pev_servo_value++; delay(2); } while (Pev_servo_value> Servo_value) { myservo.write(Pev_servo_value); Pev_servo_value—; delay(2); } //data.msg = «nothing to send»; //WriteData(); // delay(50); } void ReadData() { myRadio.openReadingPipe(1, 0xF0F0F0F0AA); // Какой канал считывать, 40-разрядный адрес myRadio.startListening(); // Остановить передачу и начать прием if ( myRadio.available()) { while (myRadio.available()) { myRadio.read(&data, sizeof(data)); } Serial.print(«\nReceived:»); Serial.println(data.msg); } } void WriteData() { myRadio.stopListening(); //Остановить прием и начать передачу myRadio.openWritingPipe(0xF0F0F0F066);//Отправить данные на этот 40-разрядный адрес myRadio.write(&data, sizeof(data)); Serial.print(«\nSent:»); Serial.println(data.msg); delay(300); }
BT Voice Control for Arduino
Главное предназначение данного софта – передача ультразвуковых сигналов сквозь преобразователи. Они соединены с платформой Arduino андроид благодаря Bluetooth порту. Главный модуль в работе — HC-05. Он передает интервал между объектами. Данные отображаются в смартфоне и на Hub диске портала, через это приложение.
BT Voice Control – это голосовое управление Ардуино. Владеет функцией распознавания команд: forward, back, left, right. Чувствительные датчики переадресовывают расстояние в объект Arduino. Далее при помощи модуля Bluetooth HC-05 направляет его в приложение. Программа сэкономит время, тратящееся на набор команд вручную.
Virtuino
Программа для Андроид, предназначенная для мониторинга сенсора. Управляет электро устройствами через Bluetooth, Wi-Fi или Интернет.
При помощи Виртуино создаются:
светодиоды;
кнопки;
переключатели;
дисплеи задач;
инструменты;
регуляторы.
Приложение способно совмещать несколько проектов в один. Управляет отличными платформами единовременно через Bluetooth и Wi-fi. Бесплатно в использовании. Относится к подкатегории System Maintenance. Есть возможность проектировать внутреннее оформление с разной визуализацией.
К ним относятся:
- светодиоды;
- переключатели;
- диаграммы;
- счетчики;
- аналоговые приборы.
Обучаться Virtuino можно по учебным пособиям и видео урокам с библиотечной поддержкой. Пока приложение работает в режиме английского языка.
На чем строится вся система и как реализовано в железе
Схема работы следующая: с сервера считываем файл, в котором лежат данные с помощью программы, запущенной на ПК/ноутбуке. Эта программа через USB отсылает данные на контроллер. Контроллер принимает данные и по ним выполняет действия. Схема с сервером привлекательна тем, что управлять схемой можно без приложения, просто зайдя на сайт с любого смартфона/планшета/пк/ноутбука в любой точке планеты, где есть доступ к интернету.
PS. Про серверную часть рассказано ниже.
В этой статье я буду управлять Arduino MEGA 2560 (китайским аналогом), но «за кулисами» схема спокойно сработала и с PIC16F877А, единственное что пришлось использовать — переходник USB-TTL:
Понятное дело программа для PIC несколько отличается от программы для Ардуино, ввиду разных типов МК, но принцип один и тот-же:
Принимаем через COM-порт данные, сравниваем их с внутренней таблицей команд и выполняем соответственное действие.
Схема изначально мне показалась очень простой, но было одно НО — небыло программы, которая читала бы файлик в интернете и отсылала данные в COM-порт. Соответственно такую программу пришлось написать. Программа писалась на VB6. Для чтения файла с сервера используется компонент VB6: Microsoft Internet Transfer Control 6.0. С его помощью просто читается текстовый файл на сервере в строковую переменную. После чтения эта строка отсылается в COM-порт с помощью компонента VB6: Microsoft Comm Control 6.0. Весь процесс чтения файла и отсылания строки читается в цикле с использования таймера. Интервал срабатывания таймера можно менять в конфиге программы, либо прямо во время работы. Кроме этого можно выбрать режим работы порта, его номер, режим работы интернет соединения и ссылку на читаемый файл.
Хочется сделать замечание, что при больших размерах файла и маленьких промежутках программа подвисает, но продолжает работать. Размер буфера моей программы 512 байт. Учитывая, что у моего МК буфер меньше, этого хватает.
Важный момент. Программа в МК не умеет парсить данные, она умеет читать только какой символ был передан на вход через последовательный порт. Без ошибок у меня получилось принимать латиницу (26 символов A-Z и 10 цифр 0-9). Итого 36 команд, если алгоритм доработать и ввести парсинг данных в МК, то передавать можно любые данные. Так же есть возможность «допилинга» ПО для двустороннего обмена данными.
Bluetooth Controller 8 Lamp
Платформа Arduino была создана в 2003 году. Всеобщего внимания она достигла, благодаря низкой цене, а также многомилионному сообществу, направленного на углубленное изучение программирования. Микропроцессоры и микроконтроллеры поставляются с платами. Самыми популярными считаются Arduino. Итальянские модели имеет много функций по расширению и исследованию встроенных Pro систем.
Bluetooth Controller 8 Lamp создан для регулировки функций Ардуино 8 канальным контроллером. Работает при помощи модулей Bluetooth HC-05, HC-06 и HC-07. 8 кнопочный интерфейс соответствует каждой лампочке.
Метод активен только в пределах видимости. В сравнении с другими беспроводными способами — этот самый дешевый. Комплектующие платы стоят менее 1 доллара. Для работы подходят даже подержанные варианты. Статичные девайсы, используя инфракрасный контроллер в потолочных светодиодных лентах, решают легко проблемы, возникшие в процессе.