Esp8266 управление с андроида

esp8266 — Сообщество разработчиков

ESP8266 — Управляем со смартфона через Blynk

Еэспэшники — вливайтесь в ряды блинкеров!
Сегодня мы за 5 минут настроим управление ESP8266 с вашего смартфона (iOS или Android) с помощью нового облачного сервиса Blink. Видео и подробности под катом.


Установите приложение Blynk на смартфон

Зарегистрируйтесь в приложении и создайте новый проект.

Создание нового проекта в Blynk

Введите название проекта, например ESP8266. В поле Hardware Model выберите ESP8266. (надеюсь, что вы заметите впечатляющий список поддерживаемого оборудования) Автоматически сгенерированный Auth Token отправьте на свой почтовый ящик.

После нажатия на кнопку Create вам станет доступно пустое поле для проектирования UI вашей панели управления ESP8266.

Пустой проект Blynk

Жмете на плюсик вверху справа — появится панель инструментов Widget Box для добавления виджетов на вашу панель управления. Стоит заметить, что список виджетов еще будет пополняться.

Для пробы выберем тип виджета Button — этот виджет сразу добавится на вашу панель. Отредактируйте его одним прикосновением. Название можно не заполнять, чуть правее можно выбрать цвет индикатора, в поле OUTPUT PIN выберите справа Digital, а слева любой свободный пин GPIO. Ниже переключите тип кнопки на Switch.

На моей отладочной плате к светодиодам разведено 10 GPIO — я все их подключу к панели Blynk.

Все, интерфейс готов, пока отложите смартфон в сторонку.

Если вы еще не знакомы с Arduino IDE для ESP8266 — почитайте здесь и здесь. Установите Arduino IDE, как описано здесь.

Далее установите библиотеку Blynk в Arduino IDE. В этом вам поможет официальная инструкция. Также можете взять библиотеку самую последнюю версию прямо из репозитария и установить вручную. Далее выбираем пример ESP8266_Standalone и прописываем в нем Auth Token, который мы получили по почте, SSID и пароль вашей WiFi сети. Компилируем и заливаем скетч в ESP8266.

Вот, собственно, и все.

Возвращаемся к нашему приложению на смартфоне, жмем маленький треугольничек, похожий на кнопку Play, в верхнем правом углу и переходим из режима редактирования проекта в режим управления ESP8266 и жмем созданные нами кнопочки и мигаем светодиодами, как на видео в начале статьи.

Замечания

1. Стоит отметить, что еще есть возможность использовать ESP8266 в качестве WiFi шилда для ардуино.

2. Облачный сервер Blynk — open source и может быть развернут в вашей локальной сети

P.S. Blynk на Kickstarter неплохо отработал — собрал почти 50k

  • Pasha Baiborodin — Founder and user experience design warrior
  • Dmytro Dumanskiy — Co-Founder and server side guru
  • Volodymyr Shymanskyy — embedded Yoda
  • Max Kareta — iOs ninja
  • Alex Kipar — Android samurai
  • Iryna Liashchuk — Communications princess

Не могу не сообщить, что создал этот суперклассный дизайн интерфейса Vitalii Kramar

Источник

Управляем esp8266 c android устройств

alexhi

Member

Решил поделиться своими приложениями под Андроид для тестирования и управления модулем esp8266 с Андроид. Они могут пригодиться когда комп по каким то причинам не очень удобно использовать или лень таскать как мне
Управление модулем esp8266 по COM порту AT-командами
Поддерживаются устройства и переходники USB-COM на чипах FT232RL(FTDI), CP2102(Silicon Lab), PL2303(PROLIFIC).
Андроид планшет должен иметь USB-HOST и версию не ниже 3.1. и разрешенные пермишены.
Если не работает,читаем что надо сделать.
https://play.google.com/store/apps/details?id=ru.shipov.termusb&hl=ru

Управление по TCP (TCP клиент)
Cоздаем на модуле TCP сервер подключаемся к модулю по WIFI сети и начинаем управлять модулем командами.
https://play.google.com/store/search?q=TermTCP&c=apps&hl=ru

Читайте также:  Делает скрины с андроида

Управление по UDP (UDP клиент)
Cоздаем на модуле UDP сервер подключаемся к модулю по WIFI сети и начинаем управлять модулем командами.
https://play.google.com/store/search?q=TermUDP&c=apps&hl=ru

Новая версия UDP клиента с возможностью записи макросов. Прогу делал под недавний проект, если не сложно отпишитесь что и как.
Внешний вид:

Рассмотрим применение программ относительно к моей задачи которую я недавно решал.
(Прошивка с AT командами и 9600 бод)
Нужно со смартфона по WIFI удаленно включать реле ,и получать данные о температуре с датчика DS18B20.
На uart порт модуля подключаю контроллер atmega168(c реле и ds18b20) и at командами создаю UDP сервер

Создаем мост UDP COM на модуле:
void init_wifi(void)
<

//настроим UDP сервер на порту 7777
printf_P(PSTR(«AT+RST\r\n»));
printf_P(PSTR(«AT+CIPMUX=1\r\n»));
_delay_ms(1000);
printf_P(PSTR(«AT+CIPSERVER=1,7777\r\n»));
_delay_ms(1000);
printf_P(PSTR(«AT+CIPMUX=0\r\n»));
_delay_ms(1000);
printf_P(PSTR(«AT+CIPSTART=\»UDP\»,\»192.168.0.255\»,7777\r\n»));
_delay_ms(1000);
printf_P(PSTR(«AT+CIFSR\r\n»));
_delay_ms(1000);

>
При этом создается мост между UDP портом 7777 модуля, и uart портом. Короче все что приходит по UDP попадает в контроллер, а что отсылается в uart отсылается по UDP.
Далее все просто посылаем команду с Андроид терминала TepmUDP «!GetC» и получаем ответ на Андроид с температурой: «!TEMP +28» или включаем реле «!SetR1» ответ реле «RELEON»

Вот как отрабатываются команды в контроллере:

//получить температуру
if(!memcmp_P(uart_rx_buf, PSTR(«GetC»),4))

Источник

Программирование и передача данных в «Ардуино» по «воздуху» с помощью 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 вашего проекта.

Правда там нам работы совсем немного.

запрещаем повороты экрана:

разрешаем работу в интернет:

И вот он весь полностью.

При запуске мы должны увидеть что-то вроде:

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

С другой стороны, управление при помощи экранных кнопок это то же самое,

«как пить просто водку, даже из горлышка — в этом нет ничего, кроме томления духа и суеты».

И Веня Ерофеев в этом был прав, безусловно.

Гораздо интереснее, к примеру, рулить телегой при помощи штатных акселерометров того же смартфона.

Читайте также:  Max cleaner для андроид 4pda

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

АКСЕЛЕРОМЕТР В МАССЫ

Поэтому наш код в MainActivity (и только в нём) изменится минимально.

Добавим переменные для акселерометра:

Получим сам датчик от системы и зарегистрируем его как слушатель.

Имплементируем сам интерфейс слушателя:

И пропишем четыре обязательных метода из которых воспользуемся только последним. Методом, отрабатывающим при изменении показаний акселерометра. Вообще-то, я хотел акселерометр сам опрашивать, как обычную периферию с периодом около 100 мс, так как было подозрение (из-за названия onChanged), что метод отрабатывает слишком часто. Но там всё private и фиг за интерфейсы проберёшься.

Программа выводит показания датчиков по двум осям на экран смартфона. Вместо третьей оси, которая не используется, выводится переменная направления «direction». И эти же данные бегут в виде байтового потока на тележку. Правда, из-за того, что поток чисто байтовый, определить, где команда «вперед» или «стоп» было бы затруднительно. Поэтому я поступил просто: каждому направлению и углу наклона соответствует свой диапазон чисел. Грубо говоря 1-20 это «вперёд» с соответствующей скоростью, 21-40 это «назад» и так далее. Конечно, можно было бы передавать по UDP чисто данные, а сами управляющие команды задавать через TCP протокол и это было бы безусловно правильнее. Но для это надо редактировать программу на самой ESP8266, чего мне пока не хочется.

Итак, телега катается по квартире, чутко реагируя на наклоны моего GalaxyS7, но и это как говаривал небезызвестный Веня ещё не то.

«Теперь же я предлагаю вам последнее и наилучшее. «Венец трудов, превыше всех наград», как сказал поэт. Короче, я предлагаю вам коктейль «Сучий потрох», напиток, затмевающий все. Это уже не напиток — это музыка сфер. „

В наш век Сири и Алексы, чего-то там вертеть руками? Пусть слушается голосового управления!

А ТЕПЕРЬ СЛУШАЙ МЕНЯ!

На самом деле работать с распознаванием и синтезом речи в Android очень просто. Все сложные вычисления скрыты от нас в довольно элегантную библиотеку с простым API. Вы сможете осилить этот урок, даже если имеете весьма поверхностные знания о программировании для Android.

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

Опять меняется лишь MainActivity.java, хотя я еще немного изменил и сам макет (четыре кнопки теперь там вовсе ни к чему, хватит и одной).

В MainActivity.java добавилось следующее:

Тот самый интент:

И то, что он возвращает:

А возвращает он массив похожих слов, причем в довольно “мусорной форме», со всякими скобочками и запятыми. И вам лишь остается выбрать слово похожее на то, которое вы сказали. Ну и соответственно, если попалось слово «вперёд», то едем вперёд, если «направо» то направо и так далее. Конечно, надо учитывать, где через «Ё», где запятая лишняя прицепится (скобочки-то я отрезал, а вот на запятые сил уже не хватило).

Ну и до кучи макет c одной кнопкой

Самое удивительное, что действительно ездиет и слушается голоса (как правило). Но, конечно, интерфейс тормозной; пока скажете, пока распознается и вернётся; короче скорость движения выбирайте заранее небольшую или помещение наоборот поширше.

На этом на сегодня всё, буду рад, если понравилось.

Источник

Оцените статью