Оглавление:

Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: 8 шагов (с изображениями)
Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: 8 шагов (с изображениями)

Видео: Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: 8 шагов (с изображениями)

Видео: Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: 8 шагов (с изображениями)
Видео: БОКОВУШЕЧКА У ТУАЛЕТА в плацкарте 2024, Ноябрь
Anonim
Метеостанция NaTaLia: метеостанция на солнечных батареях Arduino сделала правильный выбор
Метеостанция NaTaLia: метеостанция на солнечных батареях Arduino сделала правильный выбор
Метеостанция NaTaLia: метеостанция на солнечных батареях Arduino сделала правильный выбор
Метеостанция NaTaLia: метеостанция на солнечных батареях Arduino сделала правильный выбор

После 1 года успешной работы в 2 разных местах я делюсь своими планами по проекту метеостанции, работающей на солнечной энергии, и объясняю, как она превратилась в систему, которая действительно может выжить в течение долгих периодов времени за счет солнечной энергии. Если вы будете следовать моим инструкциям и использовать те же самые материалы, которые указаны в списке, вы можете построить метеостанцию на солнечной энергии, которая будет работать в течение многих лет. Фактически, единственный фактор, ограничивающий продолжительность его работы, - это срок службы батареи, которую вы используете.

Шаг 1: Работа метеостанции

1, передатчик: наружный блок с солнечной панелью, который периодически отправляет погодные телеметрические данные (температура, влажность, индекс тепла, сила солнечной энергии) на внутренний блок приемника.

2, приемник: внутренний блок, сделанный из Raspberry PI 2 + Arduino Mega, с подключенным радиочастотным приемником 433 МГц для приема данных. В моей настройке это устройство не имеет функции локального ЖК-дисплея. Бегает без опаски. Основная программа на C заботится о получении входящих данных от Arduino через последовательный порт, затем записывает данные в текстовый файл и делает последние полученные данные доступными через telnet для других устройств для их запроса.

Станция управляет освещением в моем доме по показаниям фоторезистора (который определяет, день на улице или ночь). В моем случае приемник безголовый, но вы можете легко изменить проект, добавив ЖК-дисплей. Одно из устройств, использующих, анализирующих и отображающих данные о погоде со станции, - это мой другой проект: Ironforge the NetBSD Toaster.

Шаг 2: Первые версии

Первые версии
Первые версии
Первые версии
Первые версии
Первые версии
Первые версии
Первые версии
Первые версии

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

Когда вы проектируете солнечную систему, важно только ПОТРЕБЛЕНИЕ ЭЛЕКТРОЭНЕРГИИ на всех компонентах: микроконтроллере, радиопередатчике, регуляторе напряжения и т. Д.

Использование большого компьютера, такого как Raspberry Pi, или энергоемкого устройства Wi-Fi, такого как ESP, просто для сбора и передачи нескольких бит данных о погоде было бы излишним, но, как я покажу в этом руководстве, даже небольшая плата Arduino.

Лучше всего всегда измерять ток во время процесса сборки с помощью измерителя или осциллографа (полезно, когда вы пытаетесь измерить небольшие всплески использования во время операции за очень короткие промежутки времени (миллисекунды)).

На первом изображении вы можете увидеть мою первую станцию (на базе Arduino Nano) и вторую плату Arduino Barebone Atmega 328P.

Первая версия, хотя и работала отлично (мониторинг среды и отправка данных по радио), имела слишком высокое энергопотребление ~ 46 мА и разряжала батарею за несколько недель.

Все версии использовали следующую батарею:

18650 6000 мАч Защищенная литий-ионная аккумуляторная батарея Встроенная плата защиты

ОБНОВЛЕНИЕ этих батареек ScamFire. Хотя это довольно старый Instructable, я все же чувствовал себя обязанным исправить его из-за этой фиктивной батареи. НЕ покупайте упомянутую батарею, исследуйте другие батареи LION / LIPO самостоятельно, все батареи 3,7 В будут работать с этим проектом.

Наконец, у меня было время разоблачить батарею ScamFire, чтобы узнать, какова ее реальная емкость. Поэтому мы проведем 2 расчета рядом с реальной и «заявленной» мощностью.

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

Небольшая статья о батареях LION / LIPO:

TL; DR:

Это означает, что максимальное напряжение элемента составляет 4,2 В, а «номинальное» (среднее) напряжение составляет 3,7 В.

Например, вот профиль напряжения для «классической» батареи 3,7 В / 4,2 В. Напряжение начинается с максимума 4,2 и быстро падает примерно до 3,7 В в течение большей части срока службы батареи. Как только вы достигнете 3,4 В, батарея разряжена, а при 3,0 В цепь отключения отключает батарею.

Мои измерения с использованием манекена:

Батарея заряжена: 4,1 В

Установлено значение отсечки: 3,4 В

Имитация нагрузки: 0,15 А (у моего устройства была небольшая проблема с понижением напряжения ниже этого).

Измеренная емкость: 0,77 Ач, дайте ему бесплатно 0,8 Ач, что составляет 800 мАч вместо заявленных 6000 мАч!

Поскольку у этой батареи даже не было схемы защиты, я мог свободно опускаться ниже, но при 3,4 В через 10 минут он уже падает до 3,0 В.

Таким образом, при несложных расчетах аккумулятор обеспечивает:

Теоретическая

Напряжение аккумулятора = 3,7 В

Мощность = 3,7х6000 = 22000 мВтч

Настоящий

Напряжение аккумулятора = 3,7 В Мощность = 3,7x800 = 2960 мВтч

Версия: 0.1 НА ОСНОВЕ ARDUINO NANO

Даже с библиотекой LowPower Arduino nano потребляет ~ 16 мА (в спящем режиме) -> FAIL.

Теоретическая

Pavg = VxIavg = 5Vx16mA = 80 мВт

Срок службы батареи = 22000/80 = 275 часов = приблизительно 11 дней

RealPavg = VxIavg = 5Vx16mA = 80 мВт

Срок службы батареи = 800/80 = 10 часов

Версия: 0.2 Atmega 328P Barebone

Мощность, потребляемая ATmega328, во многом зависит от того, что вы с ней делаете. Просто сидя в состоянии по умолчанию, он может использовать 16 мА при 5 В при работе на частоте 16 МГц.

Когда ATmega328P находится в активном режиме, он будет непрерывно выполнять несколько миллионов инструкций в секунду. Кроме того, встроенные периферийные устройства аналого-цифрового преобразователя (АЦП), последовательного периферийного интерфейса (SPI), таймера 0, 1, 2, двухпроводного интерфейса (I2C), USART, сторожевого таймера (WDT) и обнаружения отключения питания (BOD) потребляют мощность.

Для экономии энергии микроконтроллер ATmega328P поддерживает несколько спящих режимов, а неиспользуемые периферийные устройства можно отключить. Режимы сна различаются по тому, какие части остаются активными, по продолжительности сна и времени, необходимому для пробуждения (период пробуждения). Спящим режимом и активными периферийными устройствами можно управлять с помощью библиотек режима сна и питания AVR или, более кратко, с помощью превосходной библиотеки низкого энергопотребления.

Библиотека Low-Power проста в использовании, но очень мощна. Оператор LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); переводит MCU в состояние SLEEP_MODE_PWR_DOWN от 16 мс до 8 с, в зависимости от первого аргумента. Он отключает АЦП и БПК. Спящий режим с отключением питания означает, что все функции микросхемы отключены до следующего прерывания. Далее внешний генератор останавливается. Только прерывания уровня на INT1 и INT2, прерывания смены контактов, совпадение адресов TWI / I2C или WDT, если он включен, могут разбудить MCU. Таким образом, с помощью одного заявления вы минимизируете потребление энергии. Для 3,3 В Pro Mini без светодиода питания и без регулятора (см. Ниже), на котором выполняется заявление, потребление энергии составляет 4,5 мкА. Это очень близко к тому, что упоминается в таблице данных ATmega328P для режима сна с отключением питания с включенным WDT на 4,2 мкА (таблица данных связана в источниках). Поэтому я совершенно уверен, что функция powerDown отключает все, что возможно. С оператором LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); WDT будет отключен, и вы не проснетесь, пока не сработает прерывание.

Таким образом, с настройкой barebone мы можем перевести чип в спящий режим на 5 минут, при этом он потребляет очень мало энергии (0,04 мА без периферийных устройств). Однако это только микросхема Atmega 328P с кварцевым генератором и ничего больше, усилитель напряжения, используемый в этой конфигурации для повышения напряжения батареи с 3,7 В до 5,0 В, также потребляет 0,01 мА.

Один сток с постоянным напряжением - это добавленный фоторезистор, увеличивающий потребление в спящем режиме до общего 1 мА (включая все компоненты).

Формула для расчета точного потребления энергии устройством как в спящем режиме, так и в режиме пробуждения:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Ионный = 13 мА

В основном это исходит от передатчика RF433 Mhz:

Передатчик:

Рабочее напряжение: 3 В - 12 В для макс. Потребляемая мощность 12 В Рабочий ток: макс. Макс. менее 40 мА и мин. 9 мА Режим резонанса: (SAW) Режим модуляции: ASK Рабочая частота: 315 МГц или 433 МГц Мощность передачи: 25 мВт (315 МГц при 12 В) Погрешность частоты: +150 кГц (макс) Скорость: менее 10 Кбит / с

Isleep = 1 мА

Без фоторезистора было бы значительно меньше.

Время Trunon Ton = 250 мс = 0,25 с

Время сна Tsleep = 5 мин = 300 с

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Iavg = (0,25 с * 13 мА + 300 с * 1 мА) / (0,25 с + 300 с)

Iavg = 1,26 мА

Pavg = VxIavg = 5Vx1,26 мА = 6 мВт

Теоретическая

Срок службы батареи = 22000 мВт / 6 мВт = 3666 часов = приблизительно 152 дня

Настоящий

Срок службы батареи = 800 мВт / 6 мВт = 133 часа = примерно 5,5 дней

Хотя это все еще была лучшая серия UltraFire, которую я использовал изначально, вы могли видеть, что без солнечной панели или низкого потребления 1 мА этот проект не продержится долго.

Не стесняйтесь строить станцию и записывать свои выводы и расчеты в комментарии, а я обновлю статью. Я также был бы признателен за результаты с различными микроконтроллерами и повышающими преобразователями.

Шаг 3. Создание успешной метеостанции

Создание успешной метеостанции
Создание успешной метеостанции
Создание успешной метеостанции
Создание успешной метеостанции
Создание успешной метеостанции
Создание успешной метеостанции
Создание успешной метеостанции
Создание успешной метеостанции

Несмотря на то, что это первая успешная версия, она содержит небольшие ошибки на изображениях, и я не могу их переделать, потому что станции уже развернуты. Два усилителя напряжения, показанные на рисунке, доступны на момент написания для аэромоделирования и других приложений. Когда я модернизировал свою станцию, я думал о том, чтобы получить меньшую и более эффективную плату повышения напряжения, однако меньший размер определенно не означает, что она более эффективна.

Новый небольшой модуль на картинке, у которого даже нет светодиода индикатора, фактически потреблял 3 мА (* FAIL *) сам по себе, поэтому я остался со своей старой платой:

PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Повышающий блок питания

На момент написания этот модуль все еще доступен на Ebay за 99 центов, но если вы решите использовать другой усилитель, всегда проверяйте энергопотребление в режиме ожидания. С усилителем хорошего качества он не должен быть больше моего (0,01 мА), хотя маленький светодиод на плате пришлось распаять.

Шаг 4: Список оборудования

Список оборудования
Список оборудования
  • 18650 6000 мАч Защищенная литий-ионная аккумуляторная батарея Встроенная плата защиты
  • Atmega 328P16M 5V с загрузчиком
  • Комплект Adafruit DC Boarduino (совместимый с Arduino) (с ATmega328) <это будет хорошей инвестицией, если вы планируете будущие проекты barebone.
  • Фоторезистор светочувствительный фоторезистор опторезистор 5мм GL5539
  • Диод 1A 1000V 1N4007 IN4007 DO-41 Выпрямительные диоды
  • PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Повышающий блок питания
  • 1,6 Вт, 5,5 В, 266 мА, мини-модуль солнечной панели, зарядное устройство для эпоксидных ячеек, сделай сам
  • TP405 5V Mini USB 1A Зарядная плата для литиевой батареи Модуль зарядного устройства
  • Комплект радиочастотного передатчика и приемника 433 МГц для дистанционного управления Arduino / ARM / MC <Комплект, содержит как передатчик, так и передатчик
  • Корпус 150кс110кс70мм распределительной коробки протектора переключателя на открытом воздухе водоустойчивый
  • Новый модуль датчика температуры и относительной влажности DHT22 для Arduino
  • 1x220 Ом, 2x10КОм, 1xLED, 1xMini Switch, 1x1N4007диод
  • Керамический резонатор / осциллятор Adafruit 16 МГц [ADA1873]
  • Arduino UNO / Mega и т. Д. Для приемной станции + Raspberry PI 1/2/3
  • Прозрачная акриловая пластиковая коробка (опционально)

Вы можете найти все это на Ebay, я не хочу продвигать каких-либо продавцов, ссылаясь на их страницы, и ссылки в любом случае станут мертвыми в будущем.

Примечания к списку оборудования:

На случай, если вы каким-то образом заблокируете Atmega с помощью программирования, купите их больше, то же самое касается усилителя напряжения и контроллера заряда солнечной батареи.

Солнечное зарядное устройство содержит 2 маленьких цветных светодиода, которые включаются только в случае солнечной зарядки и указывают (красный-> зарядка, синий-> полностью заряженный состояния). Их тоже можно распаять. Это скорее дает немного больше энергии аккумулятору во время зарядки.

Как видите, в моем списке нет держателей батарей. Почему? Потому что они ненадежны. У меня было бесчисленное количество случаев, когда батарея вынималась из держателя и теряла связь. Особенно, если ваша установка установлена на высокой тарелке, такой как моя, открытая для любых суровых погодных условий. Я даже застегнул батарею в держатель на 2 молнии, и она все равно выдвинулась. Не делайте этого, просто снимите внешнее покрытие с батареи и припаяйте провода прямо к нижней части батареи, содержащей схему защиты от перезарядки (не обходите защиту). Держатель батареи можно использовать только для удержания батареи на месте в устройстве.

Плата для зарядки литиевой батареи TP405 5V Mini USB 1A: к сожалению, эта плата не включает защиту от обратного тока для солнечной панели, для этого вам понадобится еще 1 диод, который нужно разместить между одной ногой солнечной панели и схемой зарядки, чтобы остановить попытки тока течь обратно в солнечную панель по ночам.

Шаг 5: Сборка

сборка
сборка
сборка
сборка
сборка
сборка

Эта плата содержит относительно мало компонентов, и маркеры на плате довольно просты.

Убедитесь, что вы НЕ вставляете Atmega328P неправильно (это может нагреть и заблокировать микросхему, а также разрушить усилитель напряжения).

В этой установке микросхема обращена вниз (маленькое U-образное отверстие с маркировкой PIN1). Все остальные компоненты должны быть очевидны.

Используйте экранированный кабель (например: аудиокабель от CDrom) для LDR. В некоторых случаях (после многих недель тестирования) выяснилось, что он мешает передаче радиосигнала. Это была одна из тех ошибок, которые трудно устранить, поэтому, если вы не хотите проблем, просто используйте экранированный кабель, конец истории.

Светодиод: светодиод в нижней части коробки изначально был добавлен так, чтобы он мигал при исходящей радиопередаче, но позже я посчитал это пустой тратой энергии, и он мигает только 3 раза в процессе загрузки.

TP: контрольная точка для измерения тока всей цепи.

DHT22: не покупайте дешевый DHT11, потратьте на 50 центов больше, чтобы получить белый DHT22, который также может измерять отрицательные температуры.

Шаг 6: Дизайн корпуса

Дизайн корпуса
Дизайн корпуса
Дизайн корпуса
Дизайн корпуса
Дизайн корпуса
Дизайн корпуса

Хотя это немного излишне, напечатанный на 3D-принтере куб (weather_cube) был сделан для удержания датчика температуры DHT22 на месте. Куб приклеен к нижней части IP-бокса и имеет только одно отверстие для доступа воздуха к датчику. Я добавил сетку в отверстие от пчел, ос и других мелких мух.

Опционально можно использовать внешний бокс, чтобы сделать станцию более водонепроницаемой, если вы устанавливаете ее на решетку для посуды на открытом воздухе.

Идея для одной полезной функции: добавление большой металлической кровельной пластины на 1-2 см сверху коробки, обеспечивающей тень от солнца летом, хотя это также может отнять у панели полезный солнечный свет. Вы можете придумать дизайн, который разделяет панель и коробку (оставляя панель на солнце, а коробку в тени).

На фотографиях: одна из станций удалена из рабочей среды через 1 год, напряжение батареи по-прежнему составляет ошеломляющие 3,9 В, ни одна из частей коробки не повреждена водой, хотя сетка, которую я приклеил на дне куба, была разорвана. Причина, по которой станция нуждалась в обслуживании, заключается в неисправности соединения на разъеме LDR, хотя соединительный кабель, казалось, все еще был на месте, соединение было разорвано, поэтому контакт иногда был плавающим, что приводило к плохим аналоговым показаниям LDR. Совет: если вы используете стандартные соединительные кабели для ПК, приклейте их все после того, как станция заработает исправно, чтобы избежать этого.

Шаг 7: Программное обеспечение

Программное обеспечение
Программное обеспечение

Для программного кода потребуются 3 внешние библиотеки (LowPower, DHT, VirtualWire). В последнее время у меня возникли проблемы с поиском некоторых из них в Интернете, поэтому я прикрепил их в отдельном ZIP-файле. Независимо от того, какую ОС вы используете Linux / Windows, просто найдите папку с библиотеками Arduino IDE и извлеките их туда.

Просто примечание, независимо от того, что я уже не рекомендую покупать DHT11, если вы используете неправильный тип датчика DHT, программа просто навсегда зависнет в начале в разделе инициализации (вы даже не увидите, как светодиод запуска мигает 3 раза).

Код основного цикла очень прост: сначала он считывает значения окружающей среды (температура, индекс тепла, влажность, солнечная энергия), отправляет их по радио, затем использует библиотеку малой мощности, чтобы перевести Arduino в спящий режим на 5 минут.

Я обнаружил, что снижение скорости передачи увеличивает стабильность радиопередач. Станция отправляет очень небольшой объем данных, 300 бит / с более чем достаточно. Также не забывайте, что передатчик работает только с прибл. 4,8 В, в будущей версии 3,3 В это может привести к еще худшему качеству передачи (передача данных через стены и другие препятствия). У меня возникла проблема с использованием Arduino Mega, подключенного к Raspberry PI 2, питающего Mega от PI, и я не получил никакой передачи. Решением было запитать Mega от отдельного внешнего источника 12 В.

Шаг 8: Версия 2 (на основе ESP32)

Версия 2 (на базе ESP32)
Версия 2 (на базе ESP32)
Версия 2 (на базе ESP32)
Версия 2 (на базе ESP32)
Версия 2 (на базе ESP32)
Версия 2 (на базе ESP32)

Все, что может сломаться, сломается, если цитировать старого доброго Мерфи, и, в конце концов, спустя годы станции загадочным образом рухнули. Один начал отправлять бессмысленные солнечные данные, которые выросли до десятков тысяч, что невозможно из-за того, что плата Arduino содержит 6 каналов (8 каналов на Mini и Nano, 16 на Mega), 10-битный аналого-цифровой преобразователь. Это означает, что он преобразует входные напряжения от 0 до 5 вольт в целочисленные значения от 0 до 1023. Поэтому после замены радио, LDR и многократного перепрограммирования Atmega 328P я сдался и решил, что пришло время для инноваций. Пойдем ESP32.

Плата, которую я использовал, была: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Микроконтроллер ESP-32

Рабочее напряжение 3,3 В Цифровые контакты ввода / вывода 19 контактов аналогового входа 6 Тактовая частота (макс.) 240 МГц Флэш-память 4 МБ Длина 5 мм Ширина 2,54 мм Вес 4 г

Который, в отличие от изображенного, не имеет логотипа LOLIN (подделка из Китая). Моим первым приятным сюрпризом было то, что распиновка, напечатанная на плате, совпадала с распиновкой Arduino! После того, как я столкнулся с таким количеством безымянных плат, на которых мне приходилось искать распиновки весь день, смертельно устал, делая ошибки, наконец, появилась плата с простой распиновкой WoW!

Однако вот темная сторона истории:

Первоначально я подключил LDR к A15, который является контактом 12, потому что было легче склеивать контакты вместе. Затем у меня было 4095 показаний (это максимум, который вы можете получить с AnlogRead на ESP32), которые сводили меня с ума, потому что единственной причиной, по которой я восстановил станцию, были сломанные показания LDR со старого (DHT все еще работал нормально). Получается, что:

ESP 32 объединяет два 12-битных регистра ACD. ADC1 с 8 каналами, подключенными к GPIO 32-39, и ADC2 с 10 каналами на других контактах. Дело в том, что ESP32 использует ADC2 для управления функциями Wi-Fi, поэтому, если вы используете Wi-Fi, вы не можете использовать этот регистр. API драйвера ADC поддерживает ADC1 (8 каналов, подключенных к GPIO 32–39) и ADC2 (10 каналов, подключенных к GPIO 0, 2, 4, 12–15 и 25–27). Однако использование ADC2 имеет некоторые ограничения для приложения:

ADC2 используется драйвером Wi-Fi. Поэтому приложение может использовать ADC2 только тогда, когда драйвер Wi-Fi не запущен. Некоторые из выводов ADC2 используются в качестве соединительных выводов (GPIO 0, 2, 15), поэтому их нельзя использовать свободно. Так обстоит дело со следующими официальными комплектами разработки:

Таким образом, подключение LDR от контакта 12 к A0, который является VP, решило все, но я не понимаю, почему они даже перечисляют контакты ADC2 как доступные для производителей. Сколько еще хоббистов потратили кучу времени, пока не выяснили это? По крайней мере, пометьте неиспользуемые контакты красным цветом или чем-то еще или вообще не упоминайте об этом в руководстве, чтобы другие производители могли узнать о них только в том случае, если они им действительно нужны. Вся цель ESP32 - использовать его с WIFI, все используют его с WIFI.

Хорошее начало для настройки IDE Arduino для этой платы:

Хотя я поместил это в код здесь, он снова повторяется:

Этот код может не компилироваться для других моделей ESP32, кроме Weemos LOLIN 32!

Настройки сборки: -Использовать загрузку / серийный номер: 115200 -Использовать ЦП / оперативную память: 240 МГц (Wi-Fi | BT) -Использовать частоту вспышки: 80 МГц

В сети есть тонны метеостанций на базе ESP32, их гораздо больше, чем в моей версии 1 с barebone-чипом, потому что их проще настроить, вам не нужен программист, просто подключите устройство к USB и запрограммируйте его и их Режим глубокого сна отлично подходит для долгой работы от батареи. Сразу же это было первое, что я протестировал еще до того, как паять контакты, потому что, как я отмечал несколько мест в этом проекте, САМЫМ важным является энергопотребление, а с нынешней (поддельной) батареей и небольшой солнечной панелью резервный мощность не может превышать 1-2 мА, иначе проект не сможет поддерживать себя в долгосрочной перспективе.

И снова был приятным сюрпризом, что режим глубокого сна работает так, как рекламируется. Во время глубокого сна сила тока была настолько низкой, что мой дешевый мультиметр даже не смог ее измерить (у меня работает).

Во время отправки данных ток составлял около 80 мА (что примерно в 5 раз больше, чем когда Atmega 328P просыпался и передавал данные), однако не забывайте, что с V1 на LDR в спящем режиме потреблялась мощность в среднем 1 мА (который также зависел от уровня освещенности и менялся с 0,5 мА до 1 мА), которого теперь нет.

Теперь, когда батарея UltraFire разоблачена, если вы используете ту же батарею, вот чего вы можете ожидать:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Iavg = (2 с * 80 мА + 300 с * 0,01 мА) / (2 с + 300 с) Iavg = 0,5 мА

Pavg = VxIavg = 5Vx0,5 мА = 2,5 мВт

Теоретическая

Срок службы батареи = 22000 мВт / 2,5 мВт = 8800 часов = приблизительно 366 дней

Настоящий

Срок службы батареи = 800 мВт / 2,5 мВт = 320 часов = приблизительно 13 дней

У меня не было прицела, чтобы точно измерить время включения, но с моими настройками он составляет около 2 секунд.

Я не хотел тратить день на индивидуальное кодирование всего, поэтому я поискал некоторые другие метеостанции на Instructables на основе ESP32, чтобы узнать, что они делают для хранения данных. К сожалению, заметил, что они используют негибкие и ограниченные сайты, такие как weathercloud. Поскольку я не фанат «облака» и их код давно сломался, потому что с тех пор сайт изменил свой API, я потратил 10 минут на создание собственного решения, потому что это не так сложно, как можно было бы подумать. Давайте начнем!

Во-первых, для этого проекта нет отдельного изображения печатной платы, потому что он использует те же компоненты (извините за то, что припаян на уродливом макете), что и V1, с той разницей, что все работает от 3,3 В. DHT подключился с подтягиванием к VCC, LDR отключился с 10k. Проблема, которую можно увидеть с батареями 18650, такими как моя китайская подделка (6500 мАч ultra sun fire lol: D), заключается в том, что они начинают кривую разряда примерно с 4,1 В новой эры и работают до тех пор, пока их схема отключения не сработает, чтобы остановить повреждение ячеек (те, кому посчастливилось его иметь). Для нас это никуда не годится, так как вход 3,3 В. Хотя эта плата LOLIN имеет разъем для литиевой батареи и схему зарядки в этом проекте, я хотел отремонтировать большую часть того, что можно было от старой станции, поэтому со старым 18650 вы НЕ МОЖЕТЕ использовать это встроенное зарядное устройство. Решение было очень простым: я отрезал кабель micro USB, припаянный к 5 В от старого усилителя напряжения, и проблема решена, так как на плате microUSB есть регулятор.

Таким образом, разница между старой и новой версией заключается в том, что в старой батарее 3,7 В -> повышено до 5 В -> ardu работает от 5 В -> все компоненты работают от 5 В.

В новом: батарея обеспечивает 3,7 В -> повышается до 5 В -> регулируется через бортовую регистрацию на ESP32 -> все компоненты работают от 3,3 В.

С точки зрения программного обеспечения нам также понадобится еще одна библиотека DHT, DHT Arduino несовместима с ESP. То, что нам нужно, называется DHT ESP.

Я начал основывать свой код на примере DHT, который предоставил этот код. Работа кода:

1. Получите данные об окружающей среде из данных DHT + Solar от фотоэлемента.

2, подключитесь к Wi-Fi со статическим IP-адресом

3, отправьте данные в php-скрипт

4, ложись спать на 10 минут

Как вы заметите, я настроил код для повышения эффективности, чтобы полностью минимизировать время пробуждения, поскольку он потребляет в 5 раз больше энергии, чем старый проект, когда он включен. Как я это сделал? Прежде всего, если есть ЛЮБАЯ ошибка, функция getTemperature () вернет false (что означает снова 10 минут сна). Это может быть похоже на то, что датчик DHT не может быть запущен или соединение Wi-Fi недоступно. Как вы заметили, обычный цикл while () для продолжения попытки привязки Wi-Fi навсегда был также удален, но необходимо оставить задержку в 1 секунду, иначе он не всегда будет подключаться, и это также зависит от типа AP, нагрузки и т. Д., Насколько быстро это произойдет, с 0,5 с у меня непоследовательное поведение (иногда не может подключиться). Если кто-то знает, как это сделать лучше, оставьте его в комментариях. Только когда данные DHT прочитаны и соединение Wi-Fi установлено, он попытается отправить данные в скрипт на веб-сервере. В нормальном рабочем режиме также отключены все виды функций расточительства времени, такие как Serial.println (). В качестве сервера я также использую IP, чтобы избежать ненужного поиска DNS, в моем коде как шлюз по умолчанию, так и DNS-сервер установлены на 0.0.0.0.

Я не понимаю, почему так сложно создать собственный API, когда все, что для этого нужно:

sprintf (ответ, "temp =% d & hum =% d & hi =% d & sol =% d", temp, hum, hi, sol);

int httpResponseCode = http. POST (ответ);

Вы помещаете этот небольшой php-код в любой raspberry pi, и вы можете сразу выполнять задачи system () на основе телеметрии, например включать вентиляторы или включать свет, если становится достаточно темно.

Некоторые примечания к коду:

WiFi.config (статический IP, шлюз, подсеть, dns); // ДОЛЖНО быть после того, как Wi-Fi начнется, как глупо…

WiFi.mode (WIFI_STA); // ДОЛЖЕН, иначе он также создаст нежелательную точку доступа

Ага, теперь ты знаешь. Кроме того, порядок конфигов IP может меняться в зависимости от платформы. Сначала я попробовал другие примеры, в которых были переключены значения шлюза и подсети. Зачем ставить статический IP? Что ж, это совершенно очевидно, если у вас есть выделенный ящик в вашей сети, такой как Linux-сервер, на котором запущен isc dhcpd, вам не нужны сотни миллионов записей в журнале, когда ESP просыпается и получает IP-адрес от DHCP. Маршрутизаторы обычно не регистрируют ассоциации, поэтому они остаются незамеченными. Это цена экономии энергии.

V2 никогда не мог поддерживать себя из-за плохого качества батареи, и я просто поставил его на адаптер, поэтому, если вы хотите построить V1 или V2, НЕ покупайте упомянутый аккумулятор, проведите собственное исследование аккумуляторов (любые 18650 заявленная емкость более 2000 мАч на Ebay - это афера с большой вероятностью).

Рекомендуемые: