Оглавление:
- Шаг 1. Что вам понадобится:
- Шаг 2: Инструменты:
- Шаг 3: Сделайте ремни безопасности:
- Шаг 4: Совет:
- Шаг 5: Соедините все вместе:
- Шаг 6: Как получить ключ OpenWeatherMap
- Шаг 7: Как получить ключ OpenWeatherMap, подписаться
- Шаг 8: Как получить ключ OpenWeatherMap, получить ключ API
- Шаг 9: Как получить ключ OpenWeatherMap, зарегистрироваться
- Шаг 10: Как получить ключ OpenWeatherMap, создать учетную запись
- Шаг 11: Настройте IDE Arduino:
- Шаг 12: Выберите свою доску:
- Шаг 13: Выберите последовательный порт:
- Шаг 14: WeatherStation.ino
- Шаг 15: отредактируйте WeatherStation.ino
- Шаг 16. Загрузите код в ESP8266
- Шаг 17: Как просмотреть веб-сайт с данными о погоде
- Шаг 18: Поздравляем, все готово
Видео: Еще одна метеостанция (Y.A.W.S.): 18 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Этот проект - мой взгляд на неизменно популярную метеостанцию. Мой основан на ESP8266, OLED-дисплее с диагональю 0,96 дюйма и матрице датчиков окружающей среды BME280. Метеостанции кажутся очень популярным проектом. Mine отличается от других тем, что использует матрицу датчиков BME280 вместо популярного датчика температуры и влажности DHT22. BME280 имеет датчик температуры, влажности и давления воздуха. Он также использует интерфейс I2C. Используемый OLED-дисплей с диагональю 0,96 дюйма также соответствует стандарту I2C. Его можно приобрести как с I2C, так и с SPI, либо с обоими. Я выбрал версию I2C, чтобы упростить разводку. И с OLED-дисплеем, и с BME280, использующими I2C и 3,3 В, было очень легко сделать Y-образный кабель для подключения обоих устройств к ESP8266. При разработке этого проекта я наткнулся на несколько проектов метеостанций в Интернете, в которых используется ESP8266, тот же OLED-дисплей и BME280. Так что это не оригинальная идея, но оригинальная реализация.
BME280 предоставляет данные внутренней среды. Информацию о погоде за пределами города можно получить с OpenWeatherMap.org. Вам нужно будет зарегистрироваться на OpenWeatherMap.org, чтобы получить ключ для доступа к данным о погоде. Они предлагают бесплатную услугу, чем я и воспользовался. См. Шаг Как получить ключ OpenWeatherMap для получения инструкций по получению ключа.
Сервер времени NTP используется для получения времени суток и дня недели.
Данные о погоде, времени и окружающей среде отображаются на OLED-дисплее. У каждой части информации есть свой отформатированный экран. Перед переключением на другой экраны отображаются в течение пяти секунд. OpenWeatherMap.org открывается каждые пятнадцать минут для обновления информации о погоде. BME280 считывается каждые пятьдесят пять секунд. Шрифт, используемый на каждом экране, автоматически настраивается для отображения всей информации максимально крупным шрифтом.
ESP8266 также настроен как веб-сервер. Всю информацию о погоде можно получить с помощью браузера с телефона, планшета или компьютера. На одном из отображаемых экранов отображается IP-адрес веб-сервера.
ESP8266 бывает разных форм и размеров. Я выбираю GEEKCREIT DoIt ESP12E Dev Kit V2. Он полностью совместим со «стандартом» NodeMCU для автономных модулей ESP8266. Он имеет встроенный стабилизатор 3,3 В, CH340 в качестве моста USB-to-Serial и схему автоматического сброса NodeMCU. Вы можете использовать любой модуль ESP8266-12, который у вас есть. Просто имейте в виду, что вам, возможно, придется добавить стабилизатор 3,3 В или другие схемы для его программирования. Я также построил один, используя Witty Cloud ESP8266. Это позволило мне упаковать все в куб размером 1,5 дюйма. Нижняя плата USB-моста отключается после программирования. Я добавил штифт под прямым углом к отверстию 3,3 В на плате Witty. Обвязка была сделана из двух гильз с четырьмя штифтами, одной гильзы с двумя штифтами и двух гильз с одним штифтом.
На фотографии выше плата, в которую вставлен модуль ESP8266, представляет собой печатную плату, которую я разработал в качестве коммутационной платы для ESP8266 и ESP32. Он принимает совместимые с NodeMCU платы ESP8266 с узким корпусом, плату Witty Cloud ESP8266 или плату ESP32 от GEEKCREIT. Все доступные контакты GPIO разбиты на заголовки для облегчения доступа. Я обнаружил, что у большинства плат для разработки никогда не бывает достаточно контактов питания и заземления. Каждый раз, когда вы хотите что-то прикрепить, вам понадобится как минимум штырь заземления, а в большинстве случаев - штырь для питания устройства. Каждый ряд контактов GPIO сопровождается контактом питания 3,3 В и контактом заземления. Я использую ту же схему, что и First Robotics, с питанием посередине. Мне нравится этот макет, потому что, если вы подключите что-то задом наперед, вы не испустите волшебный дым. На плате есть пара дополнений, ИК-датчик, кнопочный переключатель и трехцветный светодиод. Для подключения к любой из этих функций можно использовать перемычки. Если вас интересует одна из этих коммутационных плат ESPxx, свяжитесь со мной.
Шаг 1. Что вам понадобится:
1 - Плата датчика температуры, влажности и давления BME280 I2C
Я купил свой на Ebay в Китае примерно за 1,25 доллара с бесплатной доставкой. Также доступно в Adafruit или Sparkfun.
1 - 0,96 дюйма, 128x64, I2C OLED-дисплей с использованием драйвера SSD1306
Я купил свой на Ebay в Китае примерно за 4 доллара. Мой белый. Вы можете найти синий и белый с желтой областью сверху. Некоторые продаются как SPI и I2C. Возможно, вам придется переместить некоторые резисторы, чтобы выбрать работу I2C. Важной частью является то, что он использует микросхему драйвера SD1306. Также доступно от Adafruit.
1 - NodeMCU ESP8266-12 с CH340
Вы можете использовать любой модуль ESP8266-12, какой захотите. Я предпочитаю те, у которых есть мост CH340 USB-to-Serial. Несколько лет назад появилось множество поддельных микросхем мостов FTDI и SI, поэтому я больше не доверяю ничему, кроме CH340.
2 - Корпуса DuPont с 4 контактами и шагом 0,1 дюйма (2,54 мм)
2 - 2 штыря DuPont с шагом 0,1 дюйма (2,54 мм)
12 - Обжимные кольца DuPont с внутренней резьбой для провода 22-28 AWG
Я получаю свой на Ebay. Вы также можете использовать Molex или любой другой бренд, который вам нравится. Обжимные штифты или IDC Выбор за вами. Будьте осторожны, покупая правильные булавки для своих снарядов. Они не смешиваются и не сочетаются. Также можно просто припаять провода к платам и удалить разъемы. Если вы используете гофрированные штифты, вам понадобится щипцы для обжима. Не пытайтесь обжимать плоскогубцами. Это не работает.
Настенный блок питания 1–5 В, минимум 1 А.
Это дешево и доступно на Ebay. Купите один с разъемом micro USB или любым другим, совместимым с вашей платой ESP8266.
Вам также понадобятся восемь кусков провода 22-28 AWG, чтобы соединить все вместе. Или вы можете просто подключить все это к монтажной плате. Это тебе решать.
Я включил изображение того, что было использовано для создания метеостанции с использованием Witty Cloud ESP8266. На одном изображении показано, где добавить штырь разъема под прямым углом для приема 3,3 В. Один из двух вкладышей штифта заменяется двумя вкладышами с одним штифтом. В одноштырьковые корпуса вставлены провода заземления и 3.3В.
Перейдите по этой ссылке, чтобы получить файлы исходного кода из репозитория GitHub; ESP8266-Метеостанция. В zip-папке или клонированной папке будет папка WeatherStation, содержащая WeatherStation.ino и BME280.h. Это файлы исходного кода. Также есть несколько файлов в формате pdf. В файлах pdf содержится примерно та же информация, что и в этом руководстве.
Шаг 2: Инструменты:
Попробовав обжимные клещи многих производителей, я обнаружил, что японский Engineer PA-21 или PA-09 лучше всего подходят для обжима с наружной и внутренней стороны DuPont. Он доступен на Ebay или Amazon. Любой из них подойдет для штифтов DuPont. PA-09 также выполняет контакты для разъемов JST, обычно используемых на LiPo батареях. Вот ссылка на видео о том, как использовать обжимные клещи Engineer с обжимами DuPont; Как использовать обжимные клещи PA-21
Недавно у Instructables было отличное руководство по использованию обжимных машин Weierli Tools SN-28B со штифтами и гильзами DuPont. Вы можете просмотреть это здесь; Делайте хороший обжимной штифт Dupont ВСЕГДА!
Шаг 3: Сделайте ремни безопасности:
Жгут проводов - ключ к этому проекту. Это стандартный четырехжильный Y-образный кабель. Выше фотография сделанной мною сбруи. OLED-дисплей и матрица датчиков BME280 имеют одинаковую распиновку. Это означает, что две четырехконтактные оболочки идентичны после вставки обжатых проводов. Я сделал свой жгут с помощью двойных обжатых проводов, идущих в два двухконтактных корпуса, которые присоединяются к плате ESP8266. Вместо этого вы могли бы вставить провода с двойным обжимом в одну из четырехконтактных панелей, сделав это соединение как гирляндное соединение. Либо будет работать.
- Обрежьте все провода нужной длины. Мне нравится использовать разные цвета для каждой проволоки; красный для 3,3 В, черный для заземления, желтый для SCL и зеленый для SDA.
- Зачистите один конец каждого провода примерно на 0,1 дюйма.
- Скрутите пряди вместе и добавьте женский изгиб.
- Как только все провода будут обжаты на одном конце, зачистите все провода примерно на 0,2 дюйма.
- Скрутите вместе жилы двух проволок одного цвета.
- После скручивания обрежьте его примерно до 0,1 дюйма и добавьте внутренний обжим.
- Когда все пары проводов обжаты, самое время вставить обжатые концы в оболочки.
- Два четырехконтактных корпуса заполнены слева направо красным, черным, желтым, зеленым или 3,3 В, Gnd, SCL, SDA.
- Один из двух штыревых штырей получает красный и черный провода.
- Два других штыря получают желтый и зеленый провода.
Шаг 4: Совет:
Я обнаружил, что когда я использую провод 28 AWG с обжимными штифтами, они имеют тенденцию отваливаться. Чтобы этого не произошло, я зачищаю конец провода вдвое дольше обычного. Скрутите оголенные провода вместе. Затем сложите скрученную проволоку, чтобы ее толщина была вдвое больше. Теперь, когда я обжимаю его, проволока достаточно толстая, чтобы крепко держаться.
Шаг 5: Соедините все вместе:
- Подключите четырехконтактные корпуса к OLED-дисплею и платам BME280.
- Совместите красный провод с контактами Vcc и 3V3.
- Подключите двухконтактный красный / черный корпус к паре контактов 3V3 (3,3 В) и GND на плате ESP8266. На плате есть три места, где соединяются контакты 3V3 и GND. Избегайте контактов Vin (5V) и GND, так как они будут выпускать волшебный дым от ваших плат OLED и BME280. Убедитесь, что красный провод подключен к контакту 3V3.
- Подключите желто-зеленый двухконтактный корпус к D1 и D2 на плате ESP8266. Желтый провод (SCL) должен быть на D1.
Дважды проверьте свои соединения. Если все в порядке, вы готовы к включению платы ESP8266.
Шаг 6: Как получить ключ OpenWeatherMap
Вам понадобится ключ API для доступа к веб-сайту OpenWeatherMap.org для получения текущей информации о погоде. Следующие несколько шагов подробно описывают, как зарегистрироваться на OpenWeatherMap.org и получить ключ API.
Перейдите по этой ссылке на OpenWeatherMap.org.
Щелкните API посередине вверху веб-страницы.
Шаг 7: Как получить ключ OpenWeatherMap, подписаться
Слева в разделе «Текущие данные о погоде» нажмите кнопку «Подписаться».
Шаг 8: Как получить ключ OpenWeatherMap, получить ключ API
Нажмите «Получить APIkey» и «Начать» в столбце «Бесплатно».
Шаг 9: Как получить ключ OpenWeatherMap, зарегистрироваться
Нажмите кнопку «Регистрация» в разделе «Как получить ключ API (APPID)».
Шаг 10: Как получить ключ OpenWeatherMap, создать учетную запись
Заполните все поля. По завершении установите флажок Я принимаю Условия использования и Политику конфиденциальности. Затем нажмите кнопку «Создать учетную запись».
Проверьте свою электронную почту на наличие сообщения от OpenWeatherMap.org. В письме будет ваш ключ API. Вам нужно будет скопировать ключ API в исходный код метеостанции, чтобы получить текущую погоду.
Бесплатная служба OpenWeatherMap.org имеет некоторые ограничения. Прежде всего, вы не можете получить к нему доступ чаще, чем раз в десять минут. Это не должно быть проблемой, потому что погода меняется не так быстро. Другие ограничения связаны с доступной информацией. Любая из платных подписок предоставит более подробную информацию о погоде.
Шаг 11: Настройте IDE Arduino:
Разработка программы проводилась с использованием Arduino IDE версии 1.8.0. Вы можете скачать последнюю версию Arduino IDE здесь; Arduino IDE. На веб-сайте Arduino есть отличные инструкции по установке и использованию IDE. Поддержка ESP8266 может быть установлена в Arduino IDE, следуя инструкциям по этой ссылке: ESP8266 Addon to Arduino. На веб-странице нажмите кнопку «Клонировать или загрузить» и выберите «Загрузить архив». В файле ReadMe.md есть инструкции по добавлению поддержки ESP8266 в IDE Arduino. Это простой текстовый файл, который можно открыть в любом текстовом редакторе.
Платы ESP8266 бывают всех размеров, форм и используют различные микросхемы моста USB-to-Serial. Я предпочитаю платы, использующие микросхему моста CH340. Несколько лет назад FTDI, SI и другие устали от дешевых клонов, претендующих на роль их частей. Производители микросхем изменили код драйвера, чтобы работать только с собственными оригинальными запчастями. Это привело к большому разочарованию, поскольку люди обнаружили, что мосты USB-Serial больше не работают. Сейчас я просто придерживаюсь мостов USB-to-Serial на базе CH340, чтобы не покупать платы, которые могут работать, а могут и не работать. В любом случае вам нужно будет найти и установить правильный драйвер для микросхемы моста, используемой на вашей плате. Это ссылка на официальный сайт драйверов CH340; CH341SER_EXE.
ESP8266 не имеет специального оборудования I2C. Все драйверы I2C для ESP8266 основаны на битовой передаче. Одна из лучших библиотек I2C ESP8266 - это библиотека brzo_I2C. Он был написан на ассемблере для ESP8266, чтобы сделать его максимально быстрым. Библиотека OLED-дисплеев, которую я использую, использует библиотеку brzo_I2C. Я добавил код для доступа к массиву датчиков BME280 с помощью библиотеки brzo_I2C.
Вы можете получить библиотеку OLED здесь: ESP8288-OLED-SSD1306 Library.
Вы можете получить библиотеку brzo_I2C здесь: Библиотека Brzo_I2C.
Обе библиотеки должны быть установлены в вашей среде разработки Arduino. На веб-сайте Arduino есть инструкции по установке zip-библиотек в IDE здесь: How to Install Zip Libraries.
Совет: после установки пакета плат ESP8266 и библиотек закройте Arduino IDE и снова откройте ее. Это обеспечит отображение плат и библиотек ESP8266 в среде IDE.
Шаг 12: Выберите свою доску:
Откройте IDE Arduino. Если вы еще не сделали этого, установите надстройку ESP8266, библиотеку brzo_i2c и библиотеку драйверов OLED.
Щелкните «Инструменты» в верхней строке меню. Прокрутите раскрывающееся меню до надписи «Доска:». Переместитесь в раскрывающееся меню «Board Manager» и прокрутите вниз до; «NodeMCU 1.0 (модуль ESP-12E)». Щелкните по нему, чтобы выбрать. Оставьте все остальные настройки по умолчанию.
Шаг 13: Выберите последовательный порт:
Щелкните «Инструменты» в верхней строке меню. Прокрутите раскрывающееся меню до пункта «Порт». Выберите порт, подходящий для вашего компьютера. Если ваш порт не отображается, либо ваша плата не подключена, либо вы не загрузили драйвер для микросхемы моста, либо ваша плата не была подключена при открытии Arduino IDE. Простое исправление - закрыть Arduino IDE, подключить плату, загрузить все отсутствующие драйверы, а затем повторно открыть Arduino IDE.
Шаг 14: WeatherStation.ino
Вы можете использовать кнопки «Загрузить» выше или перейти по этой ссылке на GitHub, чтобы получить исходный код; ESP8266-Метеостанция.
Файлы WeatherStation.ino и BME280.h должны находиться в одной папке. Имя папки должно совпадать с именем файла.ino (без расширения.ino). Это требование Arduino.
Шаг 15: отредактируйте WeatherStation.ino
Щелкните «Файл» в верхней строке меню. Щелкните "Открыть". В диалоговом окне «Открыть файл» найдите папку WeatherStation и выберите ее. Вы должны увидеть две вкладки: одну для WeatherStation и одну для BME280.h. Если у вас нет обеих вкладок, значит, вы открыли не ту папку, или вы не загрузили оба файла, или вы не сохранили их в правильной папке. Попробуйте снова.
Вам нужно будет отредактировать файл WeatherStation.ino, чтобы добавить SSID и пароль для вашей сети Wi-Fi. посмотрите в строке 62 следующее;
// введите сюда SSID и пароль для вашей сети Wi-Fi
const char * ssid = "yourssid"; const char * password = "пароль";
Замените yourssid на SSID вашей сети Wi-Fi.
Замените «пароль» на ключ доступа к вашей сети Wi-Fi.
Вам также нужно будет добавить свой ключ OpenWeatherMap и почтовый индекс, где вы живете. Посмотрите в строке 66 на следующее;
// поместите сюда свой ключ OpenWeatherMap.com и почтовый индекс
const char * owmkey = "ваш ключ"; const char * owmzip = "yourzip, country";
Замените yourkey на ключ, полученный с OpenWeatherMap.org.
Замените yourzip, country своим почтовым индексом и страной. После вашего почтового индекса должна быть запятая и ваша страна ("10001, us").
Затем вам нужно установить часовой пояс и включить / отключить летнее время (DST). Посмотрите в строке 85 на следующее;
// Возвращаемое исходное время в секундах с 1970 года. Для корректировки часовых поясов вычтите
// разница в секундах для вашего часового пояса. Отрицательное значение // вычитает время, положительное значение добавляет время #define TZ_EASTERN -18000 // количество секунд в пяти часах #define TZ_CENTRAL -14400 // количество секунд в четырех часах #define TZ_MOUTAIN -10800 // количество секунд в three hours #define TZ_PACIFIC -7200 // количество секунд в двух часах
// Настройте время для вашего часового пояса, изменив TZ_EASTERN на одно из других значений.
#define TIMEZONE TZ_EASTERN // измените это на свой часовой пояс
Существует группа операторов #define, которые определяют смещение времени для различных часовых поясов. Если ваш часовой пояс там, замените «TZ_EASTERN» в определении «TIMEZONE». Если вашего часового пояса нет в списке, вам нужно будет его создать. Сервер NTP показывает время как среднее время по Гринвичу. Вам нужно либо добавить, либо вычесть некоторое количество часов (в секундах), чтобы прийти к вашему местному времени. Просто скопируйте один из операторов «#define TZ_XXX», затем измените имя и количество секунд. Затем измените "TZ_EASTERN" на новый часовой пояс.
Вы также должны решить, использовать ли летнее время или нет. Чтобы отключить DST, замените «1» на «0» в следующей строке;
#define DST 1 // установить на 0, чтобы отключить летнее время
Если этот параметр включен, переход на летнее время будет автоматически увеличиваться или замедляться на один час, когда это необходимо.
Шаг 16. Загрузите код в ESP8266
Щелкните значок круглой стрелки, направленной вправо, который находится чуть ниже кнопки «Изменить» в верхней строке меню. Это скомпилирует код и загрузит его на вашу доску. Если все компилируется и загружается правильно, через несколько секунд должен загореться OLED-дисплей и должно появиться сообщение о подключении.
Шаг 17: Как просмотреть веб-сайт с данными о погоде
На рисунке выше показана веб-страница, обслуживаемая метеостанцией. Вы можете получить к нему доступ с вашего ПК, телефона или планшета. Просто откройте браузер и введите IP-адрес метеостанции в качестве URL-адреса. IP-адрес метеостанции отображается на одном из экранов метеостанции. Щелкните Обновить страницу, чтобы обновить информацию.
Шаг 18: Поздравляем, все готово
Вот и все. Теперь у вас должна быть рабочая метеостанция. Следующим шагом может стать разработка и установка корпуса для вашей метеостанции. Или, может быть, вы хотите добавить еще несколько экранов, чтобы показывать охлаждение ветром, точку росы, время восхода или захода солнца или график изменений атмосферного давления или прогноз погоды с использованием атмосферного давления. Получайте удовольствие и наслаждайтесь.
Рекомендуемые:
YADPF (еще одна цифровая фоторамка): 7 шагов (с изображениями)
YADPF (еще одна цифровая фоторамка): Я знаю, что это не новость, я знаю, я видел здесь некоторые из этих проектов, но я всегда хотел создать свою собственную цифровую фоторамку. Все рамы для картин, которые я видел, хороши, но я искал что-то еще, я ищу действительно красивую
Еще одна умная метеостанция, но : 6 шагов (с изображениями)
Еще одна умная метеостанция, но …: Хорошо, я знаю, что таких метеостанций так много, но потратьте несколько минут, чтобы увидеть разницу … 2 электронных бумажных дисплея с низким энергопотреблением … но 10 разных экраны! Акселерометр на базе ESP32 и датчики температуры / влажности Обновление Wi-Fi
JAWS: просто еще одна метеостанция: 6 шагов
JAWS: Еще одна метеостанция: Какова цель? С юных лет я очень интересуюсь погодой. Самые первые данные, которые я собрал, были из старого, наполненного ртутью термометра, который висел снаружи. Каждый день месяцами подряд я записывал в sma температуру, дату и час
Еще одна метеостанция Arduino (ESP-01, BMP280, DHT11 и OneWire): 4 шага
Еще одна метеостанция Arduino (ESP-01, BMP280, DHT11 и OneWire): здесь вы можете найти одну итерацию использования OneWire с очень небольшим количеством контактов ESP-01. Устройство, созданное в этой инструкции, подключается к сети Wi-Fi вашего выбор (у вас должны быть учетные данные …) Собирает сенсорные данные от BMP280 и DHT11
YACS (еще одна зарядная станция): 6 шагов (с изображениями)
YACS (еще одна зарядная станция): зарядная станция для ваших гаджетов. Расходные материалы: резиновые втулки Ящик Инструменты: сверла и биты