Андрей Смирнов
Время чтения: ~18 мин.
Просмотров: 0

Самый простой способ как сделать своими руками настоящий сотовый телефон

Связка смартфона Andoid и Arduino предоставляет огромные возможности для создания современных проектов, упрощая удаленное программирование, управление и синхронизацию данных. Мобильные приложения на смартфоне дают взаимодействовать с реальным физическим миром из любой точки земли с помощью привычных всем гаджетов. Представляем вам обзор Android приложений для работы с Arduino. Для простоты мы выбрали несколько видов приложений, предназначенных для работы с ардуино: приложения, позволяющие создавать скетчи, справочники и Bluetooth/Wi-fi-контроллеры.

ArduinoDroid

ArduinoDroid.png
ArduinoDroid

ArduinoDroid – это бесплатное приложение, которое позволяет редактировать, компилировать и загружать эскизы к вашей плате Arduino прямо с телефона или планшета Android. Отличительной чертой этой программы является то, что в нее можно загружать уже готовый запрограммированный код или создавать новый. В случае с неполадками или сбоями программы, открытый код можно всегда отредактировать.

В настоящее время поддерживаются только платы Arduino Uno R3 и платы на базе FTDI (Duemilanove, Diecimila), но планируется поддержка Mega, Due и Nano. Другие функции, которые необходимо реализовать, включают расширенную настраиваемую подсветку синтаксиса, интеллектуальные подсказки кода (автозаполнение) и интеграцию сторонних приложений (руководства, запросы на компиляцию эскизов).

Стоит отметить то, что с помощью этого приложения начинают все осваивать ардуино, к тому же клон-плата Arduino и USB кабель OTG обойдутся всего в пару долларов.

Рейтинг на Google Play: 4.1 из 5

Количество скачиваний: более 500.000

Bluino Loader – Arduino IDE

Bluino-Loader-Arduino-IDE.png
Bluino Loader – Arduino IDE

Bluino Loader – это программное обеспечение для ардино (Arduino IDE), которое позволяет быстро и легко компилировать ваш код для создания файла и загружать его на плату ардуино через USB OTG.

Рейтинг на Google Play: 4.1 из 5

Количество скачиваний: более 50.000

Arduino Bluetooth Control

Приложение ABC – это простое приложение, которое предназначено для того, чтобы контролировать контакты Arduino, и иметь доступ основным функциям управления. Arduino Bluetooth Control используется для управления и/или мониторинга контактов Arduino через Bluetooth. Приложение является автономным, и вся инициализация выполняется из Arduino. Важно понимать, что приложение предназначено именно для контактов ардуино, а не для управления.

Работа приложения осуществляется при помощи нескольких инструментов:

  1. Metrics – этот инструмент осуществляет передачу данных с устройства ардуино, которые передают сигнал на телефон о сбоях или об изменениях значений. После того как кнопка сигнализации срабатывает, на телефон поступает уведомление о приостановки работы. Также есть функция встряхивания, при помощи которой отправлять данные путем встряхивания телефона.
  2. Кнопки со стрелками – здесь работа осуществляется кнопками, которые полностью регулируют отправку данных на плату.
  3. Терминал – стандартный терминал, получающий и отправляющий данные на плату с отметками времени.
  4. Кнопки – в горизонтальной ориентации доступно 6 полностью функционированных кнопок для отправки данных на системную плату ардуино.
  5. Accelometer – используются команды при помощи жестов. Ваш смартфон может стать рулем для управления вашим роботом.
  6. Голосовое управление – если вы когда-либо хотели пообщаться с роботами, то этот инструмент для вас. При помощи голосовой связи можно создавать собственные команды и использовать их для управления ардуино.

Рейтинг на Google Play: 4.2 из 5

Количество скачиваний: более 50.000

Arduino Bluetooth Controller

Arduino Bluetooth Controller – это простое и интуитивно понятное приложение для управления arduino через bluetooth с android. Работа приложения осуществляется в 4-х различных режимах:

  1. Режим контроллера: здесь приложение осуществляет демонстрацию интерфейса в виде игрового контроллера. Управление робота осуществляется при помощи экранных кнопок, что упрощает работу с ардуино.
  2. Режим переключения: переключение осуществляется при помощи одной кнопки, которая предназначена для удаленного доступа к переключателю.
  3. Режим диммера: в этом режиме доступна функция отправления значения в Arduino, которая позволяет удаленно регулировать яркость или скорость.
  4. Режим терминала: возможность отправлять индивидуальные команды для декодирования команд в самом ардуино.

Рейтинг на Google Play: 4.5 из 5

Количество скачиваний: более 100.000

Bluetooth Controller 8 Lamp

Bluetooth-Controller-8-Lamp.jpg
Bluetooth Controller 8 Lamp

Приложение создано при помощи модулей Bluetooth HC-05, HC-06 и HC-07. Контроль 8 каналов позволяет быстро и удобно отрегулировать работу ардуино. В интерфейсе предоставлено 8 кнопок, которые соответствуют каждой лампе.

Рейтинг на Google Play: 4.3 из 5

Количество скачиваний: более 50.000

BT Voice Control for Arduino

С помощью этого приложения можно отправлять и получать данные с таких устройств, как ультразвуковой датчик, подключенный к Arduino через Bluetooth. Для подключения устройства Arduino к мобильному телефону через Bluetooth был использован модуль HC-05. После подключения ультразвуковой датчик будет передавать расстояние до ближайшего объекта, и это будет отображаться на мобильном телефоне в этом приложении.

Arduino был запрограммирован на список распознаваемых команд, таких как «Вперед», «Назад», «Влево», «Вправо» и «Стоп». Важно знать, что ультразвуковой датчик отправляет расстояние до ближайшего объекта в Arduino, а затем отправляет его в приложение с помощью модуля Bluetooth HC-05.

Рейтинг на Google Play: 4.4 из 5

Количество скачиваний: более 10.000

RemoteXY: Arduino Control

RemoteXY Arduino control

Осуществление управления это ардуино адроид приложения проходит через Bluetooth, Wi-Fi или интернет. Приложение позволяет пользователю сделать свой индивидуальный графический интерфейс, посетив его сайт http://remotexy.com. Удобное создание кнопок, переключателей и полная регулировка ардуино не даст отойти ни на шаг. Также доступно подключение через облачный сервер, что дает преимущество перед другими приложениями.

Рейтинг на Google Play: 4.1 из 5

Количество скачиваний: более 50.000

Virtuino

Virtuino

Virtuino – это бесплатное приложение из подкатегории System Maintenance, входящей в категорию System Utilities. Оно разрешает совмещать проекты в единое целое, что позволяет управлять более одной платы одновременно через Bluetooth или Wi-fi.

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

Рейтинг на Google Play: 4.9 из 5

Количество скачиваний: более 50.000

Blynk

Blynk

Это уникальное приложение c прекрасным дизайном разрешает разрабатывать проекты, которые напрямую имеют доступ к триггеру событий на плате ардуино. Однако, важно знать, что для работы в приложении необходимо интернет-подключение, иначе работа попросту невозможна. Независимо от того, подключен ли ваш Arduino или к Интернету через Wi-Fi, Ethernet или этот новый чип ESP8266, Blynk выведет вас в интернет и будет готов к работе.

Настройка занимает около 5 минут, после чего вы можете приступить к реализации своих проектов. Также программа поддерживает аппаратное обеспечение по вашему выбору.

Рейтинг на Google Play: 4.6 из 5

Количество скачиваний: более 500.000

IoT Wi-Fi контроллер

Этот Wi-Fi контроллер содержит интерфейс, который показывает конфигурацию каждого ввода-вывода Arduino. Возможность переключать значения GPIO в реальном времени, а также показ значений АЦП позволят легко управлять вашим гаджетом.

Рейтинг на Google Play: 4.6 из 5

Количество скачиваний: более 5.000

Справочник по Arduino 2

Справочник по Arduino 2

Это одно из важных приложений для обучения в ардуино. Новым пользователям потребуется всего пару недель для освоения материала с этим приложением. Приложение доступно в оффлайн режиме, что позволяет изучать материал в любом месте без подключения к интернету. Включены такие категории как: операторы, данные, функции и некоторые библиотеки Arduino.

Рейтинг на Google Play: 4.7 из 5

Количество скачиваний: более 50.000

Платы Arduino и подобные микроконтроллеры делают творчество более доступным, чем когда либо, пишут MUD. Вне зависимости от целей использования – для автоматизации вашего дома или контроля светодиодных лент, или даже для защиты вашей собственности, эти удивительные маленькие технические устройства являются сердцевиной большинства электронных девайсов формата «сделай сам».

Если вам необходимо дать команду вашему Arduino изменить положение перемычек контакта (например, включить свет), то Arduino потребует от пользователя нажать на физическую кнопку или применить сенсор. Для многих проектов использование силы давления человеческого пальца или аналогичных методов управления устройствами вполне приемлемо, но что необходимо применить, если вам захотелось только собрать схему с возможностью дистанционного доступа?

Данная статья дает краткое описание шести способов соединения вашего устройства на платформе Android с любой совместимой платой Arduino.

1. ArduinoDroid позволяет создавать скетчи

Первое устройство в нашем списке — ArduinoDroid. Это приложение работает через USB On The Go (OTG), соединяющее ваше мобильное устройство с Arduino через USB кабель. Одно из преимуществ USB кабеля – это отсутствие необходимости соединения с интернетом или Bluetooth для функционирования устройства.

Приложение является полнофункциональным IDE, которое предоставляет пользователю возможность написания кода на смартфоне, сделать загрузку ранее написанных скетчей, которые хранятся в Dropbox или Google drive и затем начать процесс компиляции.

Преимущества использования приложения ArduinoDroid очевидны. Наличие под рукой IDE позволяет оперативно вносить изменения в поля, а процесс прикрепления устройства  Android является менее сложным и трудоемким, чем попытки сбалансировать громоздкий ноутбук на руках!

Явный недостаток приложения ArduinoDroid заключается в том, что написание кода на вашем девайсе может быть не очень комфортным занятием, особенно если вы будете использовать для этих целей смартфон. Вместе с тем, это слабое место приложения не является столь ярко выраженным, когда на одной чаше весов – удобство иметь под рукой ультра-портативный способ программирования на вашей плате без необходимости наличия интернет соединения, а на другой чаше весов – не слишком комфортный метод написания кода.

С другой стороны, наличие ArduinoDroid является недорогим способом обучения основам Arduino, поскольку клон платы Arduino и USB On The Go стоят несколько долларов. Для тех, кому редко доступен компьютер, приложение ArduinoDroid является отличной альтернативой!

2. Arduino Bluetooth Controller

Следующая программа в нашем списке – удачно названный Контроллер Arduino  Bluetooth. Это приложение имеет большую значимость относительно триггеров на изменения в загруженных скетчах, и меньшую значимость для программирования Arduino. Контроллер Arduino по Bluetooth посылает данные на вашу плату по Bluetooth, что дает вам возможность послать серийные данные нажатием кнопки. Вам потребуется модуль Bluetooth для вашей платы, хотя модуль HC-06 широко используется и доступен всего лишь за $3.

Заслуживает упоминания тот факт, что программа загружается на английском языке, хотя на картинках Play Store указан итальянский язык!

3. Приложение Blynk для разработки проектов

Приложение Blynk является отличной разработкой для создания проектов. Гибкость и простота приложения обеспечивают интуитивный подход к триггеру событий на вашей плате. Работа с Blynk требует наличия соединения с интернетом, поскольку приложение использует свой собственный сервер. Вы можете использовать либо Wi-Fi, либо мобильные данные для обеспечения доступа к приложению Blynk, и эта возможность отлично подходит для смартфонов.

Одно из самых сильных мест приложения – это вариативность подключений к устройству. При наличии поддержки практически всех разработческих плат, вы можете соединиться с сервером на беспроводной основе, или используя ethernet и даже компьютер через USB. Сервис отлично документирован, а его интуитивное приложение обеспечивает простоту интеграции кастомизированного контроля над вашим проектом. Библиотека Blynk для Arduino IDE следит за всеми коммуникациями.

Если вы предпочитаете включать вашу кофемашину с использованием смартфона до того, как встали с постели рано утром, это приложение, действительно, для вас!

Blynk является не единственным сервисом в этой категории. Стоит обратить внимание и на такой исключительно кастомизированный сервис как Thinger.io и практически безлимитный, хотя и чрезвычайно трудный OpenHAB. Из этих трех сервисов Blynk является самым быстрым при запуске и работе, хотя в долгосрочной перспективе изучение OpenHAB является отличной идеей.

4. Коммуникация с нуля

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

Проблема обеспечения контроля над пакетом приложений решается просто через открытие USB связи и взаимообратную передачу серийных данных между приложениями и платой Arduino. Этот вариант обеспечения контроля является одним из лучших для знакомства с Android Studio и созданием приложений в целом.

Следует заметить, что при наличии методов и способов создания приложений для устройств на платформе Android без кода, заслуживает внимание и изучение основ кодирования программного обеспечения на Java.

5. Превратить ваш Arduino в сервер

Альтернативным способом обеспечения коммуникации с вашей платой является превращение ее в крошечный сервер. Ключевое преимущество такой трансформации платы в сервер является появление возможности коммуникации с платами с любого устройства, которое может осуществлять навигацию по IP адресу или отправлять веб-запрос. Это потребует прикрепления Ethernetshield к вашей плате к домашней сети.

Если у вас нет Ethernet shield, то аналогичный эффект может быть достигнут через Wi-Fi shield или через плату, соединенную с Wi-Fi, подобно NodeMCU.

Если код node.js является вашим джемом (jam), есть смысл взглянуть на проект arduino-android github. Еще раз повторим, что приложения для Android разработаны на основе открытого кода, и все, что необходимо сделать вам — это установить сервер node.js на выбранной вами Arduino плате.

6. Инфракрасный контроль

Если вы в поиске универсального инструмента коммуникации с вашим Arduino или вам хотелось бы сыграть роль легендарного секретного агента Макгайвер, то снимите инфракрасный приемник (ИТ) с вашей старой стереоустановки или VHS плеера и используете его для коммуникации с вашей Arduino платой!

Этот способ коммуникации потребует наличия на вашем устройстве Android  инфракрасного бластера. Эта специфичный метод коммуникации доступен для многих приложений, хотя из их числа Mi Remote controller является бесплатным и функционирует со многими другими домашними девайсами.

После загрузки приложений и начала их использования, вам необходимо создать простую схему для «обнаружения» инфракрасных сигналов.

Этот метод работает только в пределах линии видимости. Но этот способ беспроводной коммуникации с вашей платой является самым дешевым. Даже если вы не сможете использовать подержанные комплектующие, инфракрасный приемник стоит менее одного доллара. Для статичных девайсов, например потолочных светодиодных лент, использование инфракрасного контроля является отличным решением простой проблемы.

Добрый день! Недавно заинтересовался идеей создания «умного дома». Так как из необходимых компонентов в моем распоряжении пока что имеются только arduino и телефон на андроиде, решено было начать с создания пульта управления и связи его с остальной частью системы. Моё видение системы выглядит так:839a7efdc2b1cb80727b4830a6e2c3f2.jpg Думаю стоит совместить домашний и веб-серверы, прикупив статический айпишник, но на первое время сойдет и так. Начнем с простого – научимся удаленно управлять светодиодом и LCD-дисплеем.

Web-server

На веб-сервере создаем БД с двумя таблицами – leds и texts. Таблица leds содержит 2 поля – id и status. Она содержит одну запись с актуальным состоянием светодиода. Таблица texts содержит 2 поля – id и text. Она также содержит одну запись с текстом, который в данный момент отображается на LCD-дисплее. Теперь напишем пару скриптов, которые будем вызывать с телефона и передавать информацию для БД. Пишем на php. Скрипт led.php (управление светодиодом):

 $hostname = "localhost"; $username = "имя_пользователя"; $password = "пароль"; $database = "имя_бд";  $connect_DB = mysql_connect($hostname, $username, $password); //соединяемся с БД if (!$connect_DB) { //если не получилось соединиться     exit;        // закрыть скрипт }  mysql_select_db($database); //выбираем БД changeLED(); //вызываем функцию, меняющую состояние светодиода mysql_close($connect_DB); //закрываем соединение с БД  function changeLED() //меняем состояние светодиода { $query = "SELECT `status` FROM leds WHERE `id` = '1'"; //делаем запрос с БД к таблице leds (id = 1 - наш светодиод) $result = mysql_query($query); while ($_row = mysql_fetch_array($result,MYSQL_NUM)) //обходим выборку из результата запроса { //инвертируем состояние светодиода $st = (int)$_row[0]; if ($st == 0) $st = 1; else $st = 0; } $query = "UPDATE leds SET `status` = '$st' WHERE `id` = '1'"; //записываем инвертированное значение в БД $result = mysql_query($query); } 

Скрипт msg.php (управление LCD-дисплеем):

 $hostname = "localhost"; $username = "имя_пользователя"; $password = "пароль"; $database = "имя_бд";  $connect_DB = mysql_connect($hostname, $username, $password); //соединяемся с БД if (!$connect_DB) { //если не получилось соединиться     exit;        // закрыть скрипт }  mysql_select_db($database); //выбираем БД changeText(); //вызываем функцию, меняющую текст, отображжаемый на LCD-дисплее mysql_close($connect_DB); //закрываем соединение с БД  function changeText() { $st= $_GET["msg"]; //GET-параметр msg содержит текст, переданный с телефона $query = "UPDATE texts SET `text` = '$st' WHERE `id` = '1'"; //меняем соответствующее поле в таблице texts для записи с id = 1 (наш LCD-дисплей) $result = mysql_query($query); } 

Я думаю, что из комментариев ясно, как работают эти скрипты. Это все, что находится на веб-сервере. Теперь перейдем к домашнему серверу (или говоря проще, компьютеру, к которому подключен ардуино).

Домашний сервер

На нем будет постоянно работать программка (можно даже назвать ее – демон), посылающая запросы к БД и при изменении находящейся там информации, посылающая на COM-порт с ардуино соответствующую команду. Программку напишем на языке Processing:

import processing.serial.*; //библиотека для работы с COM-портом import de.bezier.data.sql.*; //библиотека для работы с БД MySQL  Serial port; MySQL dbconnection; int prevLEDState = 0; //предыдущее состояние светодиода String prevS = ""; //предыдущий текст, отпаврленный на LCD-дисплей  void setup() {   port = new Serial(this, "COM4", 9600); //инициализируем COM-порт 4 (на не прицеплена ардуина), скорость обмена - 9600 бод   port.bufferUntil('n');      String user     = "имя_пользователя";   String pass     = "пароль";   String database = "имя_бд";    dbconnection = new MySQL( this, "ваш_домен.ru", database, user, pass ); //соединяемся с БД   dbconnection.connect(); }  void draw() {   //следим за информацией о светодиоде в БД   dbconnection.query( "SELECT * FROM leds WHERE id = '1'" ); //делаем запрос к таблице leds   while (dbconnection.next()) //обходим выборку из результата запроса    {     int n = dbconnection.getInt("status"); //получаем значение из поля status     if (n != prevLEDState) //если оно изменилось по сравнению с предыдущем "тактом" работы программы, то посылаем команду на COM-порт         {           prevLEDState = n;           port.write('1'); //первый переданный символ будет означать код выполняемой операции: 1 - управление светодиодом, 2 - управление LCD-дисплеем           port.write(n);         }    }      //следим за информацией о LCD-дисплее в БД   dbconnection.query( "SELECT * FROM texts WHERE id = '1'" ); //делаем запрос к таблице texts   while (dbconnection.next())//обходим выборку из результата запроса     {       String s = dbconnection.getString("text"); //получаем значение из поля text       if (s != prevS)       {         prevS = s;         port.write('2');         port.write(s);               }     }      delay(50); //делаем задержку в 50 мс, чтобы не слать запросы непрерывно }

Пояснять этот код я тоже не стану, все и так понятно. Еще 1 важный момент. Чтобы программа с нашего компьютера могла обращаться к БД, расположенной на удаленном сервере, надо это разрешить. Вводим наш ip в список разрешенных:ff8b1b1efb4975ade7708dc4aa7159e0.jpg Далее по плану – приложение для телефона.

Приложение для телефона

Телефон у меня андроиде, для него и пишем. Не буду сильно вдаваться в подробности (очень хорошо как о установке среды программирования, так и о написании первого приложения написано вот в этой статье — ссылка). Внешний вид приложения выглядит довольно скромненько, но в данном случае это не главное:e44889347ac0e67e0f5d858aac06674c.jpg Приведу только отрывки кода программы под Android. Функция, вызывающая скрипт, управляющий светодиодом:

public void changeLED()     {     try     {     URL url1 = new URL("http://ваш_домен.ru/led.php");     HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();     try {          InputStream in = new BufferedInputStream(urlConnection.getInputStream());     }         finally {          urlConnection.disconnect();        }     }     catch (Exception e)     {     }          } 

Функция, отсылающая текст для отображения на LCD-дисплее:

public void submitMsg()     {     final EditText tt = (EditText) findViewById(R.id.editText1);     try     {     URL url1 = new URL("http://ваш_домен.ru/msg.php?msg="+tt.getText());     HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();     try {          InputStream in = new BufferedInputStream(urlConnection.getInputStream());     }         finally {          urlConnection.disconnect();        }     }     catch (Exception e)     {     }          }

Ну и главная функция, в которой происходит привязка обработчиков событий к кнопкам:

public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                  final Button btn1 = (Button) findViewById(R.id.button1);          btn1.setOnClickListener(new Button.OnClickListener() {              public void onClick(View v) // клик на кнопку             {             changeLED();             }         });                  final Button btn2 = (Button) findViewById(R.id.button2);         btn2.setOnClickListener(new Button.OnClickListener() {              public void onClick(View v) // клик на кнопку             {             submitMsg();             }         });              }

И еще один важный момент – добавить разрешение приложению на выход в интернет. Для этого в файл AndroidManifest.xml (он находится в директории нашего андроид-приложения) надо добавить строчку:

Экспортируем наше приложение в файл APK и устанавливаем на телефон. Пульт управления умным домом готов!

Arduino

Ну и наконец последнее, но не по значению – подключение ардуино и ее прошивка. Схема подключения LCD-экрана и светодиода к Arduino Uno выглядит следующим образом:c4ea90c786677843192a2bf9b814bd1b.jpg Резистор берем на 220 Ом. Более подробно про подключение LCD-экрана можно прочитать здесь — ссылка А вот как это все выглядит в реальности:9496ed07154561618d2cd5c5740df5f9.jpg Правда красиво? Задача ардуино состоит в прослушивании того, что программа-демон на домашнем сервере посылает на COM-порт, к которому и подключена ардуино (хотя фактически подключение идет по USB-кабелю, но компьютер распознает его как последовательный порт). После получения каких-либо данных с компьютера, контроллер по первому символу переданной информации распознает код команды (т.е. чем сейчас предстоит управлять – LCD-дисплеем или светодиодом). Далее в зависимости от кода и следующей за ним информации выполняется либо включение/выключение светодиода, либо вывод на дисплей переданного сообщения. Итак, вот собственно код:

#include  //встроенная библиотека для работы с LCD-дисплеем  boolean isExecuting = false; //переменная, отражающая, что уже идет выполнение какой-то команды //Cразу поясню, для чего это нужно. За каждый "такт" цикла loop ардуино считывает с COM-порта код одного символа. //Поэтому строка будет передаваться за несколько тактов. При этом перед каждой из двух возможных команд (смена состояния светодиода и передача текста на дисплей) //передается код этой команды (1 и 2 соответственно). Чтобы отделить коды команд от передаваемой далее информации (состояния светодиода или текста для дисплея), //используется эта переменная.  LiquidCrystal lcd(4,5,10,11,12,13); //инициализация дисплея  int ledPin = 8; //номер пина ардуино, на к которому подсоединен светодиод int prevLEDStatus = 0; //предыдущий статус светодиода (вкл/выкл) int newLEDStatus = 0; //новый статус светодиода int cmd = 0; //код выполняемой команды  void setup() {   Serial.begin(9600); //инициализация COM-порта (9600 - скорость обмена в бодах)   pinMode(ledPin,OUTPUT); //инициализация 8-го пина ардуино как выхода   lcd.begin(20,4); //инициализация LCD-дисплея (4 строки по 20 символов) }  void loop() {   if (Serial.available() > 0) //если на COM-порт пришла какая-то информация     {       if (isExecuting == false) //если в данный момент не идет выполнение никакой команды         {           cmd = Serial.read() - '0'; //считываем код выполняемой команды           isExecuting = true; //теперь переменная показывает, что началось выполнение команды         }              if (cmd == 1) //управление светодиодом        {          newLEDStatus = (int) Serial.read(); //считываем новый статус светодиода          if (newLEDStatus != prevLEDStatus) //если он изменился по сравнению с текущим статусом, то меняем текущий статус           {             digitalWrite(ledPin,newLEDStatus);              prevLEDStatus = newLEDStatus;           }        }       else //управление дисплеем        {          if (isExecuting == false) //если в данный момент не идет выполнение никакой команды           {             lcd.clear(); //очищаем экран           }          else           {             lcd.print((char)Serial.read()); //выводим символ на дисплей           }        }     }  else //если на COM-порт не пришла никакая информация    {      delay(50); //делаем задержку в 50 мс      if (Serial.available() <= 0) //если информации по-прежнему нет        isExecuting = false; //считаем, что никакая команда не выполняется    }      }

Я думаю, пояснений он не требует, так как я очень подробно все расписал в комментариях. Единственное, что стоит отметить, так это некоторые ограничения на передаваемые для вывода на дисплей строки. Они не должны содержать пробелов (это ограничение накладывается несовершенством моего алгоритма) и не должны содержать кириллицы (т.к. она поддерживается не всеми дисплеями, а если и поддерживается, то требует передачи кодов символов в своей собственной кодировке, преобразовывать символы в которую нет никакого желания).

Заключение

Ну вот и все. Оказалось, что это довольно просто. Видео того как все работает: И напоследок приведу ссылки на ресурсы, которые использовал: Очень хорошие уроки по ардуино — ссылка Ссылка на среду Processing — ссылка Еще раз ссылка на статью по созданию первого приложения на Android – ссылка Успехов всем!Используемые источники:

  • https://arduinomaster.ru/projects/android-arduino-prilozheniya/
  • https://8d9.ru/shest-prostyx-sposobov-prisoedinit-arduino-k-android
  • https://habr.com/post/137155/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации