Часы прилива и погоды: 9 шагов (с изображениями)
Часы прилива и погоды: 9 шагов (с изображениями)
Anonim
Часы приливов и погоды
Часы приливов и погоды

Хотя вы можете купить аналоговые часы с приливом и отливом, у которых одна стрелка показывает, высокий или низкий прилив или что-то среднее, мне нужно было что-то, что сообщало бы мне, в какое время будет отлив. Мне нужно было что-то, на что я мог бы быстро взглянуть, не включая его, не нажимая никаких кнопок или не дожидаясь. И хотелось чего-нибудь с большим временем автономной работы. Поэтому я использовал плату TTGO T5, которая представляет собой плату на основе ESP32 с дисплеем для электронной бумаги 2,13 дюйма, подключенную к микросхеме TTL5110. TPL5110 включает T5 каждые 2,5 часа, а один раз в день T5 загружает данные о приливах с NOAA и данные о погоде из OpenWeatherMap, отображают данные на электронной бумаге, а затем приказывают TPL5110 выключить T5.

ОБНОВЛЕНИЕ (25 февраля 2020 г.) Часы приливов работают в течение одного года, а аккумулятор работает на 4,00 вольта, так что часы, вероятно, могут работать в течение многих лет.

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

Доска TTGO T5 $ 17

Доска Adafruit TPL5110 $ 5

Доска Adafruit Perma-Proto Quarter-size (необязательно) 0,71 доллара США (минимальный заказ 8,50 долларов США)

Литий-полимерный аккумулятор 1200 мАч 10 долларов США (или другой подходящий источник питания)

2-контактный кабель JST PH - штекер $ 0,75

Конденсатор 220 мкФ

Шаг 2: Инструменты

Паяльник

Инструмент для зачистки проводов

Зарядное устройство Li-Po аккумулятора, такое как это.

Шаг 3: Соберите оборудование

Собрать оборудование
Собрать оборудование
Собрать оборудование
Собрать оборудование
Собрать оборудование
Собрать оборудование

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

Конденсатор 220 мкФ очень важен. Без него TPL5110 никогда не включит T5. Непонятно почему, но у других людей, использующих TPL5110, была такая же проблема. Может быть, ESP32 потребляет больше тока при запуске, чем может дать TTL5110?

Не подключайте аккумулятор жестко. Используйте кабель JST-PH, чтобы отсоединить аккумулятор для его зарядки. Если TPL5110 включен, может быть способ зарядить аккумулятор от T5 обратно через TPL5110, но я не могу поручиться за этот метод.

Я сделал деревянный ящик в качестве ограждения, но подойдет все, что имеет минимальные внутренние размеры 1,5 x 2,75 x 1 дюйм.

Шаг 4: Настройте время

На плате TPL5110 есть подстроечный потенциометр, который устанавливает временной интервал, через который TPL5110 выходит из спящего режима. Используйте крошечную отвертку, чтобы повернуть его против часовой стрелки до упора. На моей плате это установило интервал на 145 минут, что на самом деле больше, чем заявленный максимум в 120 минут, но он работает и был последовательным и сэкономит даже больше энергии, чем пробуждение каждые 120 минут, поэтому я использовал его. Вам не нужно точно знать интервал, поскольку цель состоит в том, чтобы загружать данные примерно раз в день примерно в 4 часа ночи. Вы можете указать интервал (например, 145 минут) и время пробуждения (например, 4 часа ночи) в env_config.h.

(Если вы хотите лучше контролировать синхронизацию для какого-либо другого проекта, на задней панели платы TPL5110 есть след, который вы можете вырезать, чтобы отключить потенциометр. Затем вы присоединяете резистор к контакту задержки, и сопротивление определяет интервал в соответствии с этот график.)

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

Вам понадобится IDE Arduino с пакетом ESP32. В среде IDE установите для вашей платы значение «ESP32 Dev Module».

Скетч доступен по адресу https://github.com/jasonful/Tides и требует 3 библиотеки:

  1. «Метеостанция ESP8266», доступная в Менеджере библиотек Arduino (или здесь). Вам понадобятся только эти 6 файлов: ESPHTTPClient.h, ESPWiFi.h, OpenWeatherMapCurrent.cpp, OpenWeatherMapCurrent.h, OpenWeatherMapForecast.cpp, OpenWeatherMapForecast.h, а остальные вы можете удалить.
  2. "Json Streaming Parser" доступен в диспетчере библиотек Arduino (или здесь)
  3. https://github.com/LilyGO/TTGO-Epape-T5-V1.8/tree/master/epa2in13-demo Даже если код не упакован как настоящая библиотека, вы можете просто скопировать его в каталог ваших библиотек и включить Это.

Шаг 6: Настройте программное обеспечение

В файле env_config.h вам нужно будет установить несколько параметров (и некоторые из них, возможно, захотите установить), в том числе:

  • WiFi SSID и пароль
  • Идентификатор станции NOAA (другими словами, где вы)
  • OpenWeatherMap AppID, для которого вам нужно будет зарегистрироваться (это просто и бесплатно)
  • OpenWeatherMap LocationID (опять же, где вы)
  • CONFIG_USE_TPL5110, что позволяет использовать T5 без TPL5110. Вместо этого программа перейдет в режим глубокого сна. Плата T5 потребляет около 8 мА в глубоком сне, поэтому я ожидаю, что заряда батареи хватит на несколько дней.

Шаг 7: Как работает программное обеспечение

(Вы можете пропустить эту часть, если вам все равно.)

Цель состоит в том, чтобы просыпаться один раз в день, но поскольку максимальный интервал TPL5110 составляет всего 2 часа или около того, T5 должен просыпаться чаще. Таким образом, после загрузки данных о приливах и погоде он вычисляет, сколько из этих двухчасовых интервалов существует с настоящего момента до 4:00 утра завтрашнего утра. Это немного усложняется тем фактом, что TPL5110 полностью отключает питание T5, что хорошо для батареи, но это означает, что мы теряем оперативную память и часы реального времени. Это как просыпаться каждое утро с амнезией. Чтобы выяснить, сколько сейчас времени, он извлекает его из HTTP-заголовка NOAA. И чтобы запомнить, сколько осталось 2-часовых интервалов, он записывает этот счетчик в энергонезависимую память (флеш-память). Каждый раз, когда он просыпается, он проверяет этот счетчик, уменьшает его, сохраняет его, и если он больше нуля, он немедленно отправляет сигнал на TPL51110 («Готово»), говоря ему, что он переводит его в спящий режим. Когда счетчик достигает нуля, код загружает новые данные, пересчитывает и сбрасывает счетчик.

Шаг 8: запустите

Запустить его
Запустить его

Убедитесь, что переключатель на левой стороне T5 находится в верхнем (включенном) положении, загрузите эскиз в T5, и в течение нескольких секунд экран должен обновиться с информацией о приливах и погоде.

Если вам нужно отладить программное обеспечение, измените «#define DEBUG 0» в верхней части Tides.ino на «#define DEBUG 1». Это включит последовательный вывод отладки, а также отобразит в нижней части электронного документа количество перезапусков, оставшихся до загрузки новых данных, и время последней загрузки данных.

Шаг 9: Будущие направления

  1. Использование TPL5110 в сочетании с дисплеем на электронной бумаге - отличный способ отображать любые данные, которые не часто меняются, с отличным временем автономной работы.
  2. Когда я разрабатывал это, я думал об использовании TrigBoard, который представляет собой плату ESP8266 с TPL5111 на плате. Это потребовало бы получения отдельного дисплея электронной бумаги и платы драйвера электронной бумаги вроде этого или этого. Или вот такая комбинация драйвер + плата. Я думаю, что для переноса кода на ESP8266 код SSL должен будет использовать отпечатки пальцев вместо сертификатов, а код энергонезависимого хранилища должен будет использовать память EEPROM или RTC.
  3. Недавно я слышал, что плата Lolin32 в режиме глубокого сна неплохо работает: около 100 мкА. Не так хорошо, как плата TPL51110 (20 мкА по данным Adafruit), но достаточно хороша.
  4. OpenWeatherMap возвращает гораздо больше данных о погоде, чем я показываю. Включая идентификаторы значков, которые потребовали бы где-нибудь найти монохромные значки.

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