Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Android приложения (разработка и готовые решения)", создана пользователем alexhi, 1 дек 2014.

  1. alexhi

    alexhi Читатель

    Сообщения:
    77
    Симпатии:
    15
    Решил поделиться своими приложениями под Андроид для тестирования и управления модулем 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 клиента с возможностью записи макросов. Прогу делал под недавний проект, если не сложно отпишитесь что и как.
    Внешний вид:
    [​IMG]

    Рассмотрим применение программ относительно к моей задачи которую я недавно решал.
    (Прошивка с 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))

    { unsigned char buf[8]="!TEMP";
    temp_read();
    if(subzero) buf[5]='-';
    else
    buf[5]='+';

    if(temp < 10) buf[6]='0';
    else
    buf[6]=(48+((temp/10)%10));

    if(temp < 1) buf[7]='0';
    else
    buf[7]=(48+(temp%10));
    // buf[8]='\r';

    send_udp1(buf,8);

    }
    else
    ;
    //====================================
    if(!memcmp_P(uart_rx_buf, PSTR("SetR0"),5))
    {
    printf_P(PSTR("AT+CIPSEND=9\r\n"));
    _delay_ms(200);
    printf_P(PSTR("!LEDOFF\r\n"));
    LEDOFF;
    }
    В качестве "макетки" контроллера использовал MK8900
    http://masterkit.ru/shop/smarthome/smarthouse/1200515
    (была под рукой,от предыдущей разработки)
    Конечно могут быть использованы и разные "клоны" Ардуино.
    После того как все отладил на TermUDP,то написал уже нужную программу под Андроид с "бантиками" и развел плату.
     

    Вложения:

    • TermUDP.zip
      Размер файла:
      232,2 КБ
      Просмотров:
      91
    Victor нравится это.
  2. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    Т.е. все эти программы нужны для конфигурации сетевых настроек модуля ESP8266 с целью открытия канала UDP или TCP для трансляции потока в UART?

    Лучшим решением будет создание простого Веб сервера на самом модуле ESP8266. При первом включении он должен работать в режиме AP со стандартным паролем. Далее, соединившись с модулем по WIFi, в браузере устанавливаете сетевые настройки, шлюз UART и скорость UART. AT команды и прочее ПО при таком подходе вообще не нужны.
     
    hav0k нравится это.
  3. alexhi

    alexhi Читатель

    Сообщения:
    77
    Симпатии:
    15
    Не совсем так. Например мы имеем модуль с прошивкой который управляется AT-командами и хотим что бы он например по команде от компа или смартфона он включал выключал лампочку :) и получал температуру например. Для этого мы должны будем по любому прицепить к модулю микроконтроллер(или Ардуино) который будет принимать команды и отрабатывать их.Он же может и заняться сетевыми настройками.Но вот c отображением результатов и управлением могут быть разные подходы.Можно как предлагаете вы (как обычно в роутерах) делаем HTML страницу,скрипты и дергаем ногами. На компе это проходит нормально,а вот на маленьком экране броузера смартфона плохо.Там IP в строке набрать и то проблема, рефреш после запуска скрипта тоже не гут (можно конечно AJAX,но тоже гемор).Да и долго это. Я говорю про второй подход пишем на Андроид программу с нормальными большими кнопками и буквами подцепляемся к модулю например по TCP/UDP и рулим командами. Да и удобно мобильник всегда включен и с собой. Вот пример программы под этот модуль , по UDP включаю/выключаю реле и получаю температуру.Программы которые привел выше как раз для этой цели(отладка)
    Вот например внешний вид этой проги для модуля esp8266: (видио как работает сделаю попозже,если будет интересно)
    [​IMG]
    Cейчас реализовано следующее:
    -Настройка на IP модуля
    -Получение текущего состояния лампочки
    -Вкл/выкл лампочки по нажатию GPIO2
    -Вкл/выкл голосом (offline JB)
    -При замыкании ноги GPIO0 говорит голосом "открыта дверь"
    -получение Температуры с DS18B20

    PS. Но конечно подходы могут быть разные,можно конечно и через HTML страничку.Как говориться на любителя.
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    Это больше походит под Iot. Там и график строится, на сервере, о включении лампочки и температуре, но не очень информативный и “мало точек”, т.е. “многа букав”, а информации никакой. Но кое как можно узнать, когда модуль выпал из сети. С текущей прошивкой это у него основная задача – глючить и отваливаться от инет сети… Возможно накопленную инфу с сервера можно "разпарсить" и на Андроиде, я в эти серверы Iot не лез пока глубоко... https://xively.com/whats_xively/

    Для данной задачи - включать лампочку и снимать несколько показаний датчиков, второй камень не к месту. Не понятна его цель. Один раз в своей жизни установить по AT конфигурацию?
     
    Последнее редактирование: 3 дек 2014
  5. alexhi

    alexhi Читатель

    Сообщения:
    77
    Симпатии:
    15
    Для данной задачи - включать лампочку и снимать несколько показаний датчиков, второй камень не к месту. Не понятна его цель.

    Да, для данной задачи можно конечно использовать те два GPIO которые есть на модуле, а если например больше ног нужно?(извращаться с регистрами :) или заказчику еще что то придет в голову прицепить?
    А тут есть копеечный проц с кучей ног и управляй чем хочешь, тот же STM32F0 стоит меньше бакса.
    И второе, если обходиться без внешнего проца ,то придется или в прошивку под модуль добавлять свои процедуры работы с переферией(тот же uLan для DS18b20) или использовать вариант прошивки с LUA.
    Непонятно что правильно. Не зря на том же esp8266.com целая ветка для связки модуля с Arduino.Значит имеет право на жизнь и такое решение.Не стал бы их осуждать за это. Тем более что есть уже куча готовых библиотек под это дело. Такой подход кстати часто используется и для BT модулей. Опять же как писал выше,любое решение на любителя.
     
  6. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.209
    Симпатии:
    386
    Для себя, друзей и для дома - вполне удобно с ардуино или еще с чем-нибудь. Для готовых коммерческий решений - наверное лучше обойтись только модулем. И вообще, хоть десктоп к ESP8266 прикрутите, лишь бы вам самим нравилось или было полезным. Мое мнение таково, что каждый имеет право на свое мнение.
     
  7. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
    Заказчику? :) С ПО данного модуля от Espressif до этого далеко...
    Если "мало ножек", а надо управлять реле, клапанами или лампочками (на 24В) то ставите что-то типа MC33996 (с ней уже проверена работоспособность модуля) и получаете контролируемые 16 выходных ключей...
     
    Последнее редактирование: 4 дек 2014
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.391
    Симпатии:
    1.271
  9. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.209
    Симпатии:
    386
    NetIO - класс. А есть бесплатные аналоги?
     
  10. Vasiks

    Vasiks Новичок

    Сообщения:
    34
    Симпатии:
    3
    Есть. OpenRemote.
    Но:
    1. Нужен контроллер. Это софт серверной части. То есть требуется постоянно запущенный сервер, работает на ява, кросплатформенная штука. Клиент ставится на разные платформы.
    2. В халявной версии урезан функционал. Не очень удобно пользоваться, но сделать можно много чего.
    Пользуюсь, в принципе нравится. О NetIO только услышал, буду изучать.
     
    Victor нравится это.
  11. Vasiks

    Vasiks Новичок

    Сообщения:
    34
    Симпатии:
    3
  12. FGX

    FGX Читатель

    Сообщения:
    100
    Симпатии:
    9
    Добрый день. Найти исходник можно вот этого Управление по TCP (TCP клиент) ?
     
    RUST нравится это.

Поделиться этой страницей