Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » 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], если она активна).

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

    Скетч для измерения сопротивления, и что с ним можно сделать

    Термостат для вентилятора

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

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

      • smilesmilesxaxaokdontknowyahoonea
        bossscratchfoolyesyes-yesaggressivesecret
        sorrydancedance2dance3pardonhelpdrinks
        stopfriendsgoodgoodgoodwhistleswoontongue
        smokeclappingcraydeclarederisivedon-t_mentiondownload
        heatirefullaugh1mdameetingmoskingnegative
        not_ipopcornpunishreadscarescaressearch
        tauntthank_youthisto_clueumnikacuteagree
        badbeeeblack_eyeblum3blushboastboredom
        censoredpleasantrysecret2threatenvictoryyusun_bespectacled
        shokrespektlolprevedwelcomekrutoyya_za
        ya_dobryihelperne_huliganne_othodifludbanclose
    7 комментариев
    R555
    ino53, удивительно, что мы встретились заочно, читая статью не про усилки и БП. Хотя ничего удивительного. А про год я догадался давно. Я 67, но это не суть важно.
    Кто не ошибается, тот не делает ничего.
    tormozedison
    Спасибо, буду знать про хорошую вещь.
    ino53
    Парни, мой ник - инициалы и год рождения, 1953. У меня в трудовой записано 42 года инженерного стажа, про любительский не знаю - батька ( не Лукашенко, нам цыган не батька), говорил, что паяльник я начал хватать раньше чем говорить. Я ничего не понял из написанного, но это шаг дальше, молодцы.
    Eig Автор
    Я так и делаю. В репе http://arduino.esp8266.com/stable/package_esp8266com_index.json есть поддержка этих плат.
    tormozedison
    И можно программировать, пользуясь одним Arduino IDE?
    Eig Автор
    Ну лично я заказывал год назад две платы Wemos D1 R2 v2.1.0 (работают с драйвером cp210x). И две Wemos d1 mini полгода назад. Одна из D1 R2 пришла с отвалившимся резистором из цепи питания от 12 вольт. Ну, я посмотрел схему, нашел резистор, припаял, все заработало. В остальном каких-то проблем я пока не заметил. По популярности это примерно как NodeMCU, странно что не слышали.
    tormozedison
    Узнал о Wemos из вашей статьи, цена и возможности привлекательные, но что с долговечностью?

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


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

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

    Войти

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

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

    Онлайн чат

    Опрос
    А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

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

    Все комментарии
    Новые самоделки на почту

    Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.