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

Вопрос Удобное хранение и редактирование пользовательских настроек NodeMCU

Тема в разделе "Раздел для начинающих", создана пользователем WhiteCharmer, 23 окт 2019.

  1. WhiteCharmer

    WhiteCharmer Новичок

    Сообщения:
    9
    Симпатии:
    0
    Доброго времени суток всем! Собираю несколько переносных светильников для фотосъемки на безе NodeMCU, мосфетов и светодиодов. Управление осуществляется посредством HTTP-запросов через встроенный Wi-Fi. Все хорошо, пока я нахожусь у себя дома - я прописал прямо в коде данные для своей сети, присвоил через роутер устройству IP-адрес. Шлю на него запросы - все успешно отрабатывает. Но, по задумке, устройство должно быть переносным. А это значит, что нужно как-то дать возможность удобно перезаписывать данные Wi-Fi сети. А еще устройств может быть несколько, так что было бы здорово иметь какой-то переключатель, чтобы установить режим Wi-Fi - клиент или точка доступа. Смысл: переводим одно устройство в точку доступа, конектим остальные устройства и мобилу к ней и с мобилы шлем на нужные адреса управляющие запросы. Таким образом можно использовать светильники хоть на улице и управлять всеми с одного телефона.
    Теперь, собственно, вопрос: если переключение режимов работы сети можно реализовать перемычкой, то как можно сделать удобное редактирование настроек (для начала имя/пароль Wi-Fi)? Первое, что приходил мне в голову: добавить к устройствам SD-карточку, а на ней записать файл settings.ini, где указать нужные настройки в виде пары ключ=значение, а при запуске устройства, соответственно, их считывать. Но, имхо, выделять целую SD-карточку под пару килобайт настроек - это как-то слишком. Может, есть еще какие-то варианты, как передать параметры прошивке, не редактируя непосредственно код?
    ЗЫ: Код C++, Arduino IDE
     
  2. nikolz

    nikolz Гуру

    Сообщения:
    5.092
    Симпатии:
    465
    Вам надо сделать точку доступа на мобиле
    И все ваши устройства будут коннектится к ней
    ничего перестраивать не надо
    Свою сеть будете носить с собой.
     
  3. enjoynering

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

    Сообщения:
    580
    Симпатии:
    58
    имхо HTTP запросы слишком жирно (там до кучи передается вместе с вашим 1 байтом). переводим одно устройство в точку доступа она общается с вами с помощью HTTP запросов, а дальше всем раздает остальным по esp-now протоколу

    пример - ESP-NOW-TX-RX

    SD-карточка не нужна, смотрите в сторону встроенной файловой системы SPIFFS или недавно включенной в Arduino ESP8266 Framework новой файловой системы LittleFS. хорошие уроки по SPIFFS есть на канале комрада Третьякова - ESP8266 Плагин для загрузки Файловой системы
     
  4. WhiteCharmer

    WhiteCharmer Новичок

    Сообщения:
    9
    Симпатии:
    0
    @nikolz это первое, о чем я подумал. Вариант рабочий, но, опять-таки, не универсальный. Ко мне уже обратились пара знакомых фотографов с просьбой устроить им подобное освещение, при этом они вообще ничего не понимают в технике. Делать прошивку для каждого из них не очень хочется, плюс в любой момент можно сменить данные Wi-Fi на мобиле (или просто купить новую мобилу). Хочется такого устройства, чтобы в любой момент запустить в массовое производство :)
    @enjoynering благодарю за наводки! Не слышал ранее про esp-now протокол. Сам веб-разработчиком тружусь (ПоХаПе, вот это вот все :)) и немного линукс-админом. Привык к HTTP-запросам и даже и не думал про другое :) Пошел, так сказать, RTFM. Похоже, это, что надо.
     
  5. nikolz

    nikolz Гуру

    Сообщения:
    5.092
    Симпатии:
    465
    Не совсем понятно, зачем Вам вообще тогда HTTP запросы .
    Расскажите, что вы, а тем более ваши знакомые фотографы, будете перенастраивать , если в этом они ни бум бум.
    На ESP-NOW да еще совместно с Wifi Вы самостоятельно не сделаете.
     
  6. enjoynering

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

    Сообщения:
    580
    Симпатии:
    58
    ну тогда вам будет легко написать html, js и css и json для вебморды. дальше разобраться в esp-now, как закидывать вебморду на SPIFFS, как парсить ответы JSON с помощью ArduinoJson и как сохранять распарсенное на SPIFFS.
     
  7. enjoynering

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

    Сообщения:
    580
    Симпатии:
    58
    вы сейчас себе цену набиваете?

    все работает. просто сервер и ESP-NOW должны быть на одном канале, а именно 1.

    Код (Text):
    1. WiFi.softAP(ssid, password, channel);

    подробности тут.
     
  8. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    с ограничением в 3 внешних светильника/светодиода? AP ESP не держит много клиентов.
    Вообще такие задачи решаются на модулях Bluetooth Low Energy, т.к. жрут по минимуму в простое/ожидании и подключаются к смарту десятками... На некоторых модулях BLE c али есть готовая прошивка с R,G,B и W каналом управления для светильников с помощью PWM (плавность/яркость более 10 бит). Примеры программы (исходники) управления на Android прилагаются. Цена модуля до 100 рупь.
    Так-же есть готовые (прошитые модули) сразу в RGB лампочке:
    321.09руб. 35% СКИДКА|Новый Smart реветь Беспроводной Bluetooth 4,0 RGB лампа 15 W светодиодный Магия RGBW RGBWW лампа для дома E27 B22 изменение цвета на приложение IOS/Android-in Светодиодные лампы и трубки from Лампы и освещение on AliExpress - 11.11_Double 11_Singles' Day
     
  9. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    Пример модуля:
    83.23руб. 7% СКИДКА|JDY 10 BLE Bluetooth 4,0 Uart прозрачная коробка передач совместима с модулем Bluetooth CC2541-in Сменные детали и аксессуары from Бытовая электроника on AliExpress - 11.11_Double 11_Singles' Day
    Пример программы:
    Screenshot_20190923-122611484.jpg Screenshot_20190923-131150276.jpg
    В примере всего один модуль, но их может быть дцать штук и разбиваются на группы, правда типа "спальня", "ванна", и т.д. :) Но есть её исходники от производителя чипов BLE...
     
  10. nikolz

    nikolz Гуру

    Сообщения:
    5.092
    Симпатии:
    465
    Не угадали.
    Вы сами то делали?
    Предположу что нет.
    Я делал,
    а вот в инете Вы не найдете готового проекта.
    --------------------------
    Речь идет о ESP8266, а Вы цитируете про ESP32.
    -----------------------
    Сначала сделайте, потом советуйте.
     
  11. enjoynering

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

    Сообщения:
    580
    Симпатии:
    58
    сам не делал. а какие там подводные камни?
     
  12. WhiteCharmer

    WhiteCharmer Новичок

    Сообщения:
    9
    Симпатии:
    0
    А вот этого я не знал, благодарю! Существенные ограничения :(
    Пока тоже пришел к такому же решению. У товарища Гайвера похожий проект есть. Заказал bluetooth-модули у китайцев, жду доставки.
    У меня дома стоят подобные, только с Wi-Fi и управляются через специальный Wi-Fi контроллер (аналог philips hue, как я понял). А вот с Bluetooth раньше не встречал. В сети есть реализация API Philips HUE на Python - запустил его себе на Raspbery Pi и вывел веб-морду для управления. Хотел еще яркостью управлять по датчику освещенности и включать свет автоматом по датчику движения, да как-то все руки не доходят :rolleyes:
    Я поступил немного по-другому: нарисовал вебморду на bootstrap 4, оптимизированную для мобил. Затем создал в Android Studio проект, где одним единственным контролом является Web View. В него же (проект) залил html/js/css файлы веб-морды и прописал в Web View ее открытие при старте. В итоге получил готовый APK. Единственное, пока не получилось сделать автоматический поиск устройств, приходится вручную их IP вводить.
    Например, снимаем в студии. В студии есть Wi-Fi роутер. Подключаем весь свет к нему, для этого нужно указать ESP имя и пароль сети студии. Далее, выезжаем на природу и снимаем там. Wi-Fi сети нет. Либо раздаем с мобилы, либо переводим одно из устройств в AP (что не вариант из-за ограничений, как мне указали выше). Нужно снова указать данные сети, к которой подключаться.
    Возможно и незачем. Повторюсь - я по работе постоянно с ними сталкиваюсь, вот просто и взял то, что мне известно и понятно.
    Ну так для этого же и есть форумы и сообщества, разве нет? Вон мне сколько полезной инфы накидали за эти пару дней
     
  13. enjoynering

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

    Сообщения:
    580
    Симпатии:
    58
    Если хотите на синезубе делать, то надо брать nRF52, у Arduino под него есть фреймворк
     
  14. enjoynering

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

    Сообщения:
    580
    Симпатии:
    58
    А как вы рисуете морду в bootstrap?
     
  15. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    В чем причина, что надо брать обязательно(?) nRF52? (по тому что самый дорогой чип?)
    Под Arduino у него нет полной поддержки. Реализовано всего до 1% поддержки внутренних аппаратных контроллеров старших чипов nRF52 :p
    По тому без разницы какой чип BLE брать - на все есть SDK и все они пока проприетарные (закрытые стеки ВТ и т.д.).
     
  16. WhiteCharmer

    WhiteCharmer Новичок

    Сообщения:
    9
    Симпатии:
    0
    Я не очень силен в верстке, так что bootstrap беру чисто из-за его CSS-сетки, на базе которой можно быстренььько накидать адаптивную разметку, которая будет нормально отображаться как на мобилах, так и планшетах с разными размерами экрана. Ну а сами запросы - обычный AJAX из JS'а
     
  17. enjoynering

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

    Сообщения:
    580
    Симпатии:
    58
    Вот как раз и интересна технология быстрого накидывания сетки
     
  18. WhiteCharmer

    WhiteCharmer Новичок

    Сообщения:
    9
    Симпатии:
    0
    Доброго времени суток! Прошу прощения за столь долгое отсутствие - учил матчасть :) В итоге последовал совету и отказался от Wi-Fi в пользу Bluetooth на модуле HC-05. Сделал пробную "светопалку" на RGB-ленте, а вот пример моего приложения на JAVA для управления ей:
    Charmer/NeoLight-Android-Controller
    Там, как раз, фронт реализован на HTML+CSS+JS (Bootstrap 4 плюс пара JS-библиотек для красивостей и удобностей) и завернут в WebView. На JAVA я писал последний раз еще в институте (а это около 7 лет назад :rolleyes:), так что с разработкой сего дела возникли некоторые затруднения, которые я постарался кратенько описать readme. Можете глянуть там, как реализована 12-колоночная сетка (div с классами "row" и "col-X").
     
  19. enjoynering

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

    Сообщения:
    580
    Симпатии:
    58
    Спасибо.
     

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