ESP8266:Примеры/Управление ESP8266 при помощи Android-приложения

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1837 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Управление ESP8266 при помощи Android-приложения[1]

В этой статье рассказывается, как создать Android-приложение (при помощи веб-сервиса MIT App Inventor), позволяющее дистанционно управлять GPIO-контактами ESP8266.

Для начала взгляните на это видео:

[Видео]

Необходимые компоненты

  • Один чип ESP8266
  • Один программатор FTDI
  • Два светодиода
  • Два резистора на 220 Ом
  • Одна макетная плата
  • Один смартфон на Android
ESP01v0 1.jpg

Загрузка на ESP8266 прошивки NodeMCU

Для этого руководства нам понадобится прошивка NodeMCU. О том, как загрузить ее на чип ESP8266, читайте тут.

Загрузка ESPlorer IDE

Рекомендую в данном случае воспользоваться программой EDPlorer IDE, написанной пользователем 4refr0nt. Она будет нужна для отправки команд на ESP8266. Чтобы загрузить и установить ESPlorer IDE, проделайте следующее:

  1. Кликните здесь, чтобы загрузить архив с ESPlorer IDE
  2. Распакуйте архив
  3. Перейдите в главную папку
  4. Запустите файл «ESPlorer.jar»
  5. Откройте ESPlorer IDE
Esplorer-start 2.png

Схема

Схема для этого проекта очень проста. Вам нужно лишь установить последовательную коммуникацию между программатором FTDI и чипом ESP8266.

Esp8266 pinout h-569x236 3.png

Программатор и ESP8266 нужно подключить друг к другу следующим образом:

  • Контакт RX на ESP8266 – к контакту TX на программаторе
  • Контакт TX – к контакту RX
  • Контакт CH_PD – к контакту 3.3V
  • Контакт VCC – к контакту 3.3V
  • Контакт GND – к контакту GND
ESP-ftdi 4.png

Загрузка кода

Теперь давайте при помощи ESPlorer IDE загрузим на ESP8266 файл Lua:

  1. Подключите к компьютеру программатор FTDI
  2. Выберите порт программатора FTDI (в моем случае это «COM8»)
  3. Нажмите кнопку «Open/Close»
  4. Выберите вкладку «NodeMCU+MicroPython»
  5. Создайте новый файл под названием «init.lua»
  6. Нажмите кнопку «Save to ESP»

Все элементы программы, необходимые для этих действий, подсвечены на картинке ниже красным цветом:

Esplorer tab 55.png

Код

При помощи ESPlorer IDE загрузите на ESP8266 код, показанный ниже. Ваш файл должен называться «ini.lua».

Обратите внимание на 5-ую строчку – она содержит данные о WiFi-сети. Вставьте туда данные, соответствующие вашей WiFi-сети.

  1. -- Автор – Руи Сантос (Rui Santos)
  2. -- Более подробно о проекте на: http://randomnerdtutorials.com
  3.  
  4. wifi.setmode(wifi.STATION)
  5. wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")
  6. print(wifi.sta.getip())
  7. led1 = 3
  8. led2 = 4
  9. gpio.mode(led1, gpio.OUTPUT)
  10. gpio.mode(led2, gpio.OUTPUT)
  11. srv=net.createServer(net.TCP)
  12. srv:listen(80,function(conn)
  13.     conn:on("receive", function(client,request)
  14.         local buf = "";
  15.         buf = buf.."HTTP/1.1 200 OK\n\n"
  16.         local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
  17.         if(method == nil)then
  18.             _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
  19.         end
  20.         local _GET = {}
  21.         if (vars ~= nil)then
  22.             for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
  23.                 _GET[k] = v
  24.             end
  25.         end
  26.        
  27.         if(_GET.pin == "ON1")then
  28.               gpio.write(led1, gpio.HIGH);
  29.         elseif(_GET.pin == "OFF1")then
  30.               gpio.write(led1, gpio.LOW);
  31.         elseif(_GET.pin == "ON2")then
  32.               gpio.write(led2, gpio.HIGH);
  33.         elseif(_GET.pin == "OFF2")then
  34.               gpio.write(led2, gpio.LOW);
  35.         end
  36.         client:send(buf);
  37.         client:close();
  38.         collectgarbage();
  39.     end)
  40. end)

Схема

Теперь воспользуйтесь схемой ниже, чтобы создать цепь для управления двумя светодиодами:

ESP-web-server bb.png

IP-адрес ESP8266

Перезапустившись, ESP8266 напечатает в мониторе порта свой IP-адрес. Запишите или запомните его – он вам еще пригодится.

В моем случае это «192.168.1.95». Если у вас возникла на этом этапе какая-то проблема, поищите ее решение в этой статье.

Создание Android-приложения в MIT App Inventor

MIT App Inventor – это веб-сервис, позволяющий при помощи метода «drag-n-drop» создавать простые, но полностью рабочие приложения для операционной системы Android.

Для начала давайте загрузим в MIT App Inventor уже готовый проект под названием «ESP8266 Controller»:

  1. Кликните здесь, чтобы скачать ZIP-архив, содержащий файл формата «*.aia».
  2. Распакуйте архив
  3. Откройте сайт MIT App Inventor
  4. Кликните на кнопку Create Apps в правом верхнем углу
  5. Кликните по кнопке Projects и выберите пункт Import project (.aia) from my computer...
  6. Выберите файл «ESP8266_Controller.aia» из скачанного ZIP-архива и нажмите OK
Aia-file-import.png

Импортировав файл «ESP8266_Controller.aia», вы сможете редактировать приложение, а также смотреть, как это приложение устроено.

Секция Designer

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

App-designed 1.jpg

Секция Blocks

Это секция отвечает за логику вашего приложения. В ней вы задаете, какие функции выполняют те или иные кнопки.

App-inventor-blocks 2.jpg

Закончив редактировать приложение, кликните по кнопке Build > App (save .apk to my computer). Затем загрузите полученный APK-файл на Android и установите его (подробнее об установке читайте в разделе ниже).

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

Установка приложения

  1. Кликните здесь, чтобы скачать ZIP-архив с APK-файлом
  2. Распакуйте архив
  3. Переместите APK-файл на Android-телефон
  4. Запустите APK-файл, чтобы установить приложение

Вот так приложение «ESP8266 Controller» будет выглядеть, когда вы его откроете:

App esp8266 controller 4.png

Настройка приложения выполняется очень просто. Кликните по кнопке «SET IP Address» (она находится внизу) и впишите свой IP-адрес (напомню, в моем случае это «192.168.1.95»).

Все готово!

Теперь вы можете управлять GPIO-контактами ESP8266, переключаясь в приложении между состояниями LOW и HIGH. Посмотреть на то, как этот проект работает вживую, можно в самом начале статьи.

См.также

Внешние ссылки

  1. randomnerdtutorials.com - ESP8266 Controlled with Android App (MIT App Inventor)