Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Клиент для openweathermap.org на основе Wemos d1 mini

    Клиент для openweathermap.org на основе Wemos d1 mini


    Идея позаимствована из проекта ESP8266 Weather Display.

    Я решил довести ее до ума.
    Были поставлены следующие задачи:
    1. Обновить код, связанный с использованием новой версии библиотеки ArduinoJson.h.
    2. Переписать код, использовав вместо функции delay() функцию millis(). Понятно, что используя delay для задания паузы между сменой информации на дисплее, невозможно реализовать управление кнопками;
    3. Сделать загрузку скетчей по Wifi;
    4. Уйти от громоздкой Wemos D1 R2 на Wemos D1 mini;
    5. По возможности русифицировать дисплей;
    6. Использовать готовый корпус с отверстиями под кнопки для устройств на основе LCD1602;
    7. Использовать стандартные кнопки 6x6, распаянные на макетной плате. Добавить кнопки управления подсветкой, кнопку-карусель для смены отображаемых данных и кнопку форсированного обновления данных с сервера.


    Были использованы следующие компоненты:
    1. Корпус из ABS-пластика с набором крышек на кнопки;
    2. Нейлоновые стойки 6+5 мм папа M3 черные, 4 шт;
    3. Нейлоновые гайки M3 черные, 4 шт;
    4. Нейлоновые стойки 6+5 мм папа M2 белые, 3 шт;
    5. Нейлоновая стойка 6 мм мама белая, 1 шт;
    6. Нейлоновая стойка 8 мм мама белая, 1 шт;
    7. Нейлоновые стойки 10мм мама бел, 2 шт;
    8. LCD 1602(I2C), желтый;
    9. Wemos d1 mini;
    10. Wemos d1 DC-Power shield;
    11. Плата макетная распаечная 3x7;
    12. Кнопки 6x6 высотой 7 мм, 3шт;
    13. Провода Dupont 10см мама-мама, 4 шт;
    14. Провода 24 AWG черные и красные;
    15. Провода силиконовые 20 AWG синие и белые;
    16. Резисторы 5 кОм – 2шт, 10 кОм – 1 шт (какие попались под руку);
    17. Адаптер питания 9V 1A;
    18. Клей эпоксидный двухкомпонентный.


    У использованного корпуса есть несколько достоинств. Во-первых в него кроме дисплея прекрасно помещается по высоте стандартная распаечная макетная плата 3x7, с установленными на ней с двух сторон компонентами. Во-вторых на двух торцах у него есть прямоугольные отверстия для охлаждения. Оказалось, что перемычки между этими отверстиями прекрасно спиливаются мини-надфилями 3 и 4 мм. Если спилить пару перемычек и выпилить в корпусе небольшое прямоугольное отверстие, то в образовавшееся отверстие сложной геометрии прекрасно заходит разъем питания DC-005. Также сзади у данного корпуса есть большое квадратное отверстие, которое, по-видимому, предполагалось для установки батареек. Через него удобно что-то подключать внутри, не разбирая корпус. Впоследствии его можно просто закрыть стеклом или пластиком.

    Ход сборки:
    Сначала был сделан прототип на макетной плате.

    Затем доработан корпус напильником.

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




    В итоге лицевая сторона платы с кнопками, резисторами и проводами выглядит следующим образом:

    В итоге внутренности устройства выглядят так:

    В собранном виде устройство выглядит так:





    Преодоление сложностей:
    1. Я долго не мог понять, почему не работают кнопки, хотя мультиметр четко показывал 0 при отжатых кнопках и 4,6 – 5,0 В при нажатии (в зависимости от питания). Оказалось, что в устройствах Wemos/Lolin необходимо в качестве номеров пинов в скетче указывать номера GPIO. Например, D5 – это GPIO14. Значит, это 14-ый пин.
      const int buttonPin = 14;

    2. Чтобы показать погоду необходимо условие:
      currentMillis - previousMillis == weatherTime

      Строгое соответствие, потому что надо выполнить один раз.
      Чтобы сделать запрос на сервер, необходимо условие:
      currentMillis - previousMillis >= getDataTime

      Нестрогое соответствие, потому что выполняется до тех пор, пока не выставлен флаг «данные получены».
      На самом деле это неочевидно, и, чтобы это понять, потребовалось довольно много времени.
    3. Также пришлось помучиться с ответом сервера:
      String weather = root["weather"][0]["main"];
      String description = root["weather"][0]["description"];

      Ноль был совершенно неочевиден. Оказывается, в Москве две метеостанции, и вторая из них работает далеко не всегда (для получения данных от нее надо указать [1], если она активна).

    Репозиторий с кодом и библиотеками находится здесь.
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Система автополива для комнатных растений pumperino

    Тайник, открывающийся RFID меткой

    5.3
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    8.7
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    9.7
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 7.89 из 10 (голосов: 3 / История оценок)

    Добавить комментарий

    8 комментариев
    Гость Андрей #97190

    Попробовал повторить данный проект. Выдает ошибку при компиляции:

    In file included from C:\Users\User\Desktop\eigensinn-wemosweatherforecast-71c89bf417ea\wemosWea
    therForecast\wemosWeatherForecast.ino:6:

    c:\Users\User\Documents\Arduino\libraries\LCD_1602_RUS-master/LCD_1602_RU
    S.h:11:10: fatal error: LiquidCrystal_I2C.h: No such file or directory

       11 | #include <LiquidCrystal_I2C.h>

    При установке библиотеки LiquidCrystal_I2C выдает еще больше ошибок.

    R555 #37361
    ino53, удивительно, что мы встретились заочно, читая статью не про усилки и БП. Хотя ничего удивительного. А про год я догадался давно. Я 67, но это не суть важно.
    Кто не ошибается, тот не делает ничего.
    tormozedison #34448
    Спасибо, буду знать про хорошую вещь.
    ino53 #34440
    Парни, мой ник - инициалы и год рождения, 1953. У меня в трудовой записано 42 года инженерного стажа, про любительский не знаю - батька ( не Лукашенко, нам цыган не батька), говорил, что паяльник я начал хватать раньше чем говорить. Я ничего не понял из написанного, но это шаг дальше, молодцы.
    Eig #34421 Автор
    Я так и делаю. В репе http://arduino.esp8266.com/stable/package_esp8266com_index.json есть поддержка этих плат.
    tormozedison #34420
    И можно программировать, пользуясь одним Arduino IDE?
    Eig #34419 Автор
    Ну лично я заказывал год назад две платы Wemos D1 R2 v2.1.0 (работают с драйвером cp210x). И две Wemos d1 mini полгода назад. Одна из D1 R2 пришла с отвалившимся резистором из цепи питания от 12 вольт. Ну, я посмотрел схему, нашел резистор, припаял, все заработало. В остальном каких-то проблем я пока не заметил. По популярности это примерно как NodeMCU, странно что не слышали.
    tormozedison #34415
    Узнал о Wemos из вашей статьи, цена и возможности привлекательные, но что с долговечностью?

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии