- Добавляем Wi-Fi к Arduino Uno (Андроид)
- Шаг 1. Схема сборки
- Шаг 2. Общение с модулем
- Шаг 3. Код проекта
- Шаг 4. Настройка платы
- Шаг 5. Объяснение кода
- Программирование и передача данных в «Ардуино» по «воздуху» с помощью ESP8266. Часть Третья. Здравствуй, «ANDROID»
- Основы взаимодействия Andriod и Arduino микроконтроллеров
- Где можно применить связь Андроида с Ардуино
- Приложения на Андроид для взаимодействия с Ардуино
- Основы приема-передачи данных
- Какие компонеты могут потребоваться для взаимодействия
- Настройка соединения
- Простейший пример
Добавляем Wi-Fi к Arduino Uno (Андроид)
Подключаем микроконтроллер к Интернету через ,модуль ESP8266 WiFi, который представляет собой полноценную сеть Wi-Fi.
Модуль WIFI ESP8266 представляет собой полноценную сеть Wi-Fi, к которой вы можете легко подключиться в качестве обслуживающего адаптера Wi-Fi, интерфейса беспроводного доступа в Интернет к любому микроконтроллеру на основе простой связи через последовательную связь или интерфейс UART.
Добавление этого модуля в Arduino UNO откроет нам новые и интересные проекты и возможности.
Шаг 1. Схема сборки
Соединение выходов лучше описано в таблице выше. Следуйте этим шагам:
- соедините красный провод к VIN(3.3V) к +3.3V питанию микроконтроллера
- соедините черный провод с землей
- соедините зеленый провод к TX модуля Wi-Fi и микроконтроллера
- соедините желтый провод к RX модуля Wi-Fi и микроконтроллера
ESP8266 строго рассчитан только на 3,3 В. Большее напряжение может разрушить модуль.
Подключите VIN к 3,3 В для включения питания, а также контакт ENABLE, чтобы включить модуль.
TX присоединен к RX, и это означает, что все что мы передаем в ESP8266 получит Arduino UNO. И наоборот, от RX к TX. При построении этой схемы мы теперь готовы к работе WI-FI с Arduino Uno (Ардуино Уно).
Шаг 2. Общение с модулем
Связь с ESP8266 осуществляется с помощью Attention команд или AT Commands. Проверьте таблицу AT-команд, прилагаемую для просмотра кодов.
Шаг 3. Код проекта
Скопировать или скачать код проекта вы можете ниже:
Сам код программы, скетч, для подключения Wi-Fi к Ардуино:
Шаг 4. Настройка платы
Нам нужно проделать некоторые действия для настройки платы:
- Загрузите образец эскиза, прикрепленный выше, в ваш Arduino Uno.
- Скачайте Telnet Client для Android.
- Подключите к вашему ESP8266 Wi-Fi
- После подключения получите IP-адрес
- Откройте клиент Telnet на телефоне Android.
- Создайте соединение, щелкнув соединение, добавьте IP-адрес и порт 80.
После подключения отправьте запрос:
Или включите встроенный светодиод, используя команду:
Или выключите встроенный светодиод, используя команду:
Или просто скажите:
Шаг 5. Объяснение кода
Весь наш запрос будет прочитан и проанализирован в функции loop()
Если вы хотите общаться с Arduino UNO или попросить что-то сделать, просто добавьте свое условие:
Я добавил некоторые функции для связи с ESP8266:
Теперь, когда вы знаете как общаться с ESP8266, вы можете сделать и изучить больше проектов. Увеличьте мощность этого модуля Wi-Fi и станьте полноценным изобретателем.
Источник
Программирование и передача данных в «Ардуино» по «воздуху» с помощью ESP8266. Часть Третья. Здравствуй, «ANDROID»
Предлагаю вам, уважаемые читатели GeekTimes, очередную статью из цикла по использованию микросхемы ESP8266 в качестве беспроводного моста для AVR микроконтроллеров, на примере аппаратной платформы Arduino Uno (Nano). В этот раз для полета на Луну управления платформой мы задействуем вместо компьютера устройство на базе «ANDROID». Ну, например, смартфон.
Подробности под катом:
Для нашей работы мы воспользуемся инструментарием, который был описан в предыдущей статье — беспроводным программатором BABUINO и модулем передачи кода и данных МPDE (module for programm and data exchange) прошиваемым в ESP8266.
Как выяснилось из откликов пользователей, сам программатор, в общем, пришелся ко двору и некоторые личности даже им успешно пользуются. Ну, в принципе, вещь действительно удобная; запустил приложение под виндой, выбрал hex файл из нужной папки и всё — через несколько секунд программка в нужном устройстве безо всяких проводов. Другое дело, что я зря с излишней горячностью нападал на пользователей софта ARDUINO, пишущих на Wiring C и пользующихся ARDUINO IDE с её скетчами и библиотеками. Безусловно, каждый делает как ему удобно — на ардуинском ли Wiring C или на С из AVR studio. Но в итоге, некоторые пользователи почему-то сразу решили, что программатор никак не совместим с ARDUINO софтом.
На самом деле, проблем с совместимостью, конечно же, никаких нет. Абсолютно также компилируете ваш скетч, где вам удобно до состояния hex файла и совершенно также просто отправляете его через беспроводной программатор на ваш Arduino UNO или NANO.
Обмен данными под софтом ARDUINO тоже никаких проблем не доставляет. Пишете волшебные строчки:
а дальше что-то типа:
receiveByte= Serial.read(); // чтение байта из буфера
Serial.write(receiveByte); // запись байта
И можете обмениваться байтовыми потоками по WI-FI совершенно спокойно. Ибо AVR микроконтроллер шлёт в ESP8266 и получает байты оттуда по последовательному порту UART, настроить работу с которым в Arduino может, как мы видим, любой гуманитарий.
Теперь же вернёмся к предмету настоящей статьи. Чтобы управлять роботележкой посредством смартфона, безусловно, необходимо написать для этого смартфона соответствующее приложение.
Я, как человек, месяц назад представлявший этот процесс крайне туманно, сейчас могу со всей ответственностью заявить, что дело в сущности это не сложное. Если конечно, у вас есть хоть какие-то начальные знания в области Java.
Ибо при написании Android приложений исходный код пишется на Java, а затем компилируется в стандартный байт-код Java с использованием традиционного инструментария Java. Затем с кодом происходят другие интересные вещи, но эти подробности нам здесь не нужны.
Вроде как, существуют еще возможности для написания приложений на С для отъявленных хардкорщиков ведущих счёт на наносекунды, а также где-то есть какой-то пакет для трансляции вашего кода с Питона, но здесь я ничего подсказать не могу, поскольку уже давно сделал правильный выбор.
Итак, Java и программный пакет Android Studio — интегрированная среда разработки (IDE) для работы с платформой Android основанная на программном обеспечении IntelliJ IDEA от компании JetBrains, официальное средство разработки Android приложений.
Если вы уже работаете с ПО от IntelliJ IDEA, то будете приятно удивлены знакомым интерфейсом.
С основами построения приложений я знакомился по книжке Б.Филлипса и К.Стюарта — «ANDROID» программирование для профессионалов». Как я понял, профессионалами авторы считают читателей, хотя бы немного знакомых с Java SE. Чего-то архи-сложного в этой книге я не нашел, а для наших целей вполне хватит и первого десятка глав книги, благо, что в ней все примеры кода приводятся при работе именно с вышеупомянутой Android Studio.
Отладку приложений можно проводить, как на программном эмуляторе, так и прямо на смартфоне, переключив его в «режим разработчика».
В предыдущей статье было описано управление тележкой через оконное приложение на Windows. То есть весь код для создания HTTP и UDP соединений, а также логика управления у нас уже по идее присутствует. Поэтому взяв на вооружение слоган компании Oracle «Написано в одном месте, работает везде» мы просто перекинем эти классы в новую программу уже для Android приложения. А вот GUI — графический интерфейс пользователя, по понятным причинам придется оставить там, где он был. Но с другой стороны, на Android всё делается очень похоже и довольно быстро, поэтому в накладе мы не останемся.
ТЫКАЕМ ПАЛЬЦЕМ В ЭКРАН
Итак создаем новый проект «FourWheelRobotControl» в Android Studio.
Это простое приложение и оно будет состоять из активности (activity)
Его писать ручками не надо, он генерится автоматически после ваших творений в редакторе.
Теперь просто перенесём два класса из программы приведенной в предыдущей статье:
Суть программы осталось той же. MainActivity сначала запускает HTTP и UDP клиенты, а затем ловит нажатия и отжатия экранных кнопок, отправляя код нажатия direction на формирование UDP пакета. А оттуда уже всё — «вперёд»,«назад»,«влево», «вправо» и при отжатии «стоп» уезжают по WI-FI на телегу.
Кроме всего этого, мы должны немного подредактировать файл так называемого манифеста, который опять же, в основном генерится сам.
Манифест (manifest) представляет собой файл XML с метаданными, описывающими ваше приложение для ОС Android. Файл манифеста всегда называется AndroidManifest.xml и располагается в каталоге app/manifest вашего проекта.
Правда там нам работы совсем немного.
запрещаем повороты экрана:
разрешаем работу в интернет:
И вот он весь полностью.
При запуске мы должны увидеть что-то вроде:
Вот в сущности и всё. Теперь тележкой можно управлять с мобильника. Приложение крайне простое, ибо демонстрационное, без каких-либо «свистелок и перделок», типа поиска телеги в домашней сети, коннекта, дисконнекта и прочих полезных фич, облегчающих жизнь, но затрудняющих понимание кода.
С другой стороны, управление при помощи экранных кнопок это то же самое,
«как пить просто водку, даже из горлышка — в этом нет ничего, кроме томления духа и суеты».
И Веня Ерофеев в этом был прав, безусловно.
Гораздо интереснее, к примеру, рулить телегой при помощи штатных акселерометров того же смартфона.
Причём реализуется сия фича тоже крайне просто, через, так называемые интенты. Правда, создавать свои интенты сложнее, чем пользоваться готовыми. К счастью, пользоваться готовыми никто не запрещает.
АКСЕЛЕРОМЕТР В МАССЫ
Поэтому наш код в MainActivity (и только в нём) изменится минимально.
Добавим переменные для акселерометра:
Получим сам датчик от системы и зарегистрируем его как слушатель.
Имплементируем сам интерфейс слушателя:
И пропишем четыре обязательных метода из которых воспользуемся только последним. Методом, отрабатывающим при изменении показаний акселерометра. Вообще-то, я хотел акселерометр сам опрашивать, как обычную периферию с периодом около 100 мс, так как было подозрение (из-за названия onChanged), что метод отрабатывает слишком часто. Но там всё private и фиг за интерфейсы проберёшься.
Программа выводит показания датчиков по двум осям на экран смартфона. Вместо третьей оси, которая не используется, выводится переменная направления «direction». И эти же данные бегут в виде байтового потока на тележку. Правда, из-за того, что поток чисто байтовый, определить, где команда «вперед» или «стоп» было бы затруднительно. Поэтому я поступил просто: каждому направлению и углу наклона соответствует свой диапазон чисел. Грубо говоря 1-20 это «вперёд» с соответствующей скоростью, 21-40 это «назад» и так далее. Конечно, можно было бы передавать по UDP чисто данные, а сами управляющие команды задавать через TCP протокол и это было бы безусловно правильнее. Но для это надо редактировать программу на самой ESP8266, чего мне пока не хочется.
Итак, телега катается по квартире, чутко реагируя на наклоны моего GalaxyS7, но и это как говаривал небезызвестный Веня ещё не то.
«Теперь же я предлагаю вам последнее и наилучшее. «Венец трудов, превыше всех наград», как сказал поэт. Короче, я предлагаю вам коктейль «Сучий потрох», напиток, затмевающий все. Это уже не напиток — это музыка сфер. „
В наш век Сири и Алексы, чего-то там вертеть руками? Пусть слушается голосового управления!
А ТЕПЕРЬ СЛУШАЙ МЕНЯ!
На самом деле работать с распознаванием и синтезом речи в Android очень просто. Все сложные вычисления скрыты от нас в довольно элегантную библиотеку с простым API. Вы сможете осилить этот урок, даже если имеете весьма поверхностные знания о программировании для Android.
На самом деле же, у меня всё получилось довольно коряво, но скорее всего потому, что я использовал самый простой вариант, а как следует в данном API не копался. Делается всё тоже через интенты, при помощи которых мы обращаемся к голосовому движку Гугл, а именно к его функции распознавания речи. Поэтому потребуется рабочий Интернет.
Опять меняется лишь MainActivity.java, хотя я еще немного изменил и сам макет (четыре кнопки теперь там вовсе ни к чему, хватит и одной).
В MainActivity.java добавилось следующее:
Тот самый интент:
И то, что он возвращает:
А возвращает он массив похожих слов, причем в довольно “мусорной форме», со всякими скобочками и запятыми. И вам лишь остается выбрать слово похожее на то, которое вы сказали. Ну и соответственно, если попалось слово «вперёд», то едем вперёд, если «направо» то направо и так далее. Конечно, надо учитывать, где через «Ё», где запятая лишняя прицепится (скобочки-то я отрезал, а вот на запятые сил уже не хватило).
Ну и до кучи макет c одной кнопкой
Самое удивительное, что действительно ездиет и слушается голоса (как правило). Но, конечно, интерфейс тормозной; пока скажете, пока распознается и вернётся; короче скорость движения выбирайте заранее небольшую или помещение наоборот поширше.
На этом на сегодня всё, буду рад, если понравилось.
Источник
Основы взаимодействия Andriod и Arduino микроконтроллеров
Уже достаточно давно Гугл позволила связывать устройства на Адроиде через usb с различными микроконтроллерами, открыв API. Теперь могут ликовать все, кто занимается созданием разнообразных проектов на Ардуино, ведь теперь значительно проще будет провести отладку системы Аndroid Аrduino и, в принципе, отрегулировать их взаимодействие.
Мы уже начали знакомить читателей с возможностями связки микроконтроллера и смартфона — см. Управление устройствами со смартфона для чайников.
Но и до этого различные модули позволяли спокойно взаимодействовать Андроид и Ардуино. Давайте же разберёмся, каким образом можно реализовать проект, который будет управляться со смартфона, и что для этого потребуется.
Где можно применить связь Андроида с Ардуино
В первую очередь, необходимо задуматься о том, как применять возможность передачи сигнала с Андроид на Ардуино. Ведь прежде, чем изучать какие-то материалы, каждый здравый человек должен понимать, к чему это его приведёт в итоге. Даже если речь идёт про хобби. И действительно, возможность управления техникой с вашего смартфона уже давно перестала восприниматься, как нечто неординарное. Сейчас в большинстве телевизоров, холодильников и даже пылесосов, которые приобретаются средним классом, есть возможность передачи данных на смартфон.
Такое решение позволяет значительно упростить жизнь обывателя, ведь для того же телевизора нет необходимости постоянно покупать батарейки в пульт и искать его, если потеряется. Мы всё ближе к заветным умным домам, но некоторые предпочитают не покупать подобную технику, а самостоятельно её сконструировать.
В таком случае, связку Андроид Ардуино стоит расценивать в двух вариациях:
- Удалённое управление каким-либо устройством с помощью смартфона. Ещё его называют связью смартфон-МК. Всё та же техника, например, раздвижные жалюзи или освещение в комнате, которое будет выключаться по одному клику. Если вы захотите сделать последнее, то даже нет необходимости менять проводку или докупать специальные смарт-лампы, которые могут выгореть спустя месяц. Достаточно приобрести небольшой микроконтроллер Ардуино, модуль связи по беспровобному интернету или блютуз и изоленту. После чего достаточно будет спаять простейшую схему, которая замыкается в случае, если подаётся сигнал на МК.
Сигнал этот будет подаваться с вашего телефона, замыкать контакты, и свет начнет гореть. Чтобы не было проблем и для дополнительной безопасности вашего жилища, можно написать скрипт, способный автоматически размыкать цепь, если устройство управления удаляется из поля видимости. Обычные выключатели всё так же будут работать, но только, когда цепь замкнута. - Передача данных для информирования или связь МК-Смартфон. Здесь вы уже не управляете какой-то техникой, а скорее наоборот, различная техника позволяет получить определённые данные на ваш смартфон. Первое, что приходит на ум и простейшее применение, – датчик движения. Данный модуль имеется в стандартных датчиках для МК Ардуино, купить его не составит проблем, как и вмонтировать в проход. Затем останется написать код, подобие которого уже есть на многих англоязычных форумах, отправляющий СМСку или сообщение в социальных сетях, а также специальной утилите, если кто-то пересечет инфракрасный луч.
Можно создать и более сложные и автоматизированные системы, которые будут передавать не только медиа-информацию о вашей квартире, но и сообщать, если в домашней оранжерее созреют овощи или фрукты. Всё зависит исключительно от фантазии самого инженера, но основа технологии всё та же – передача данных с одного устройства на другое.
Вот вы выбрали подходящий проект и взялись за его реализацию. Модули и МК уже заказаны, а пока они идут, можно заняться и разработкой ПО. Ведь голый Андроид не взаимодействует с Ардуино при помощи магии.
Приложения на Андроид для взаимодействия с Ардуино
Разрабатывать утилиту мы будем не с нуля, ведь это не базис по программирования на java. Проще всего воспользоваться готовыми движками и средами с пользовательским интерфейсом, где вам, буквально, останется дописать 1-2 строчки кода, для расположенной кнопки, чтобы та заработала. Естественно, подобный подход значительно ограничивает функционал конечного продукта и неизбежно ущемляет творческий подход, но будет полезен для тех, кто хочет быстро реализовать простой проект без лишних проблем.
Для начала рассмотрим три базовых файла, которые вы встретите при проектировании программы:
- MainActivity.java – это весь код приложения на одноимённом языке, все функции и методы, которые вы записываете, сохраняются сюда.
- Activity_main.xml – макет, как несложно догадаться из расширения файла. Сюда сохраняется расположение кнопок, текста и прочих интерактивных компонентов, которые затем оживляются уже в коде.
- AndroidManifest.xml – этот файл также относится к макетам, но немного в другой сфере. Он определяет основные параметры для запуска приложения и разрешения, которые тому будут необходимы. В нашем случае это необходимость включить Bluetooth, ведь через него мы будем связываться с МК. Если вы делаете датчик, который должен отсылать информацию на большое расстояние, то, соответственно, необходимо включить и проверить работу беспроводного или мобильного интернета.
Основы приема-передачи данных
Чтобы понимать, как ваш будущий проект вообще будет работать, стоило бы изучить базовую физику электромагнитных полей. Но чтобы не перегружать лишней информацией, достаточно усвоить, что на сегодняшний день передача данных происходит тремя основными путями:
- Через usb-кабель, что подходит далеко не везде, но хороший вариант, дабы настроить проект.
- Через блютуз и смежные протоколы, например, в последнее время стало популярным использовать NTFS для управления умными устройствами. Но, так как мы говорим о проекте на МК Ардуино, то остановимся именно на блютуз.
- Через беспроводной интернет. Здесь ничего нового, по сути, ваш мобильный или микроконтроллер выступает сервером, принимающим и обрабатывающим полученные данные, а затем производящим вычисления или действия и отправляющим ответ.
Это основные способы передачи и приёма информации, вам остаётся выбрать подходящий. Для проектов, которые не будут использоваться на больших расстояниях, оптимальным вариантом по объемам кода и простоте настройки является блютуз.
Какие компонеты могут потребоваться для взаимодействия
Выше мы уже упоминали, что для проекта на Ардуино, который предполагает использование одного из методов передачи данных на расстоянии, необходимо приобрести дополнительные модули. Опять же, лучшим выбором будет блютуз. Данный модуль позволяет принимать и отправлять сигналы определённой частоты, которые улавливаются большей частью смартфонов, а соответственно, никаких проблем не должно возникнуть. Вы можете выбрать как одно из устройств, представленных в основной линейке Ардуино, так и китайские аналоги, что будет значительно дешевле.
Один из модулей, который можно взять — это Bluetooth Bee, который можно купить во многих магазинах, от DFRobot.
Всё зависит от конкретной системы и необходимой в ней «Пропускной способности». Ведь если это будет камера видеонаблюдения, то поток данных должен передаваться непрерывно и в большом количестве. А для простого датчика движения достаточно самого дешевого вай-фай модуля. Так же и с автоматизированными устройствами для умного дома.
Отталкивайтесь, при выборе каждого компонента, от своих потребностей и того, что вы собираетесь реализовывать в проекте, и не переплачивайте за те возможности, которые вам не потребуются.
Настройка соединения
Итак, вот вы создали и уже установили на смартфон приложение или его готовый аналог для управления вашим микроконтроллером с Ардуино, далее необходимо:
- Включить сам блютуз модуль в системе, запитав его от сети или аккумулятора.
- Запустить приложение на телефоне и найти нужное устройство.
- Подсоединиться к блютуз модулю с помощью дефоултного пароля или того, что вы задали при перепрошивке Ардуино.
- Отдать первые команды и проследить, как на них отреагирует система.
Здесь стоит сказать, что приложений под Ардуино в Google Play много, в следующем материале мы покажем 7 из них.
Простейший пример
Чтобы вы понимали, как примерно должен функционировать готовый проект, приведём пример с помощью всё той же надстройки на ваш светильник.
Самый простой урок по шагам смотрите по ссылке — см. Управление устройствами со смартфона для чайников. Логика по шагам такая:
- Вы подсоединяетесь к системе через смартфон.
- Нажимаете одну кнопку, и цепь размыкается или замыкается.
- Появляется или исчезает свет.
- Нажимаете кнопку на смартфоне ещё раз, и происходит обратный эффект.
Естественно, для этого необходимо изначально замкнуть цепь, включив лампочку с помощью настенного переключателя. Но это лишь условный пример того, что можно реализовать с помощью данной технологии.
В ближайших уроках мы более подробно остановимся на взаимодействии смартфонов и микроконтроллеров, сделаем вместе с вами несколько полезных уроков.
Источник