Оглавление:
- Запасы
- Шаг 1. Использование Oled
- Шаг 2: несколько OLED
- Шаг 3. Создание прокручиваемого меню с помощью поворотного энкодера
- Шаг 4: Включение предыдущего кода в другое
- Шаг 5: Изготовленная на заказ печатная плата с Fritzing + Схема
- Шаг 6: Дизайн + лазерный резак
- Шаг 7: Сборка
- Шаг 8: не останавливайтесь на достигнутом
Видео: Будильник Oled: 8 шагов (с картинками)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
Существует много часов Arduino / ESP32, но используют ли они эти красивые и четкие OLED-дисплеи?
Я уже некоторое время экспериментирую с Arduinos и ESP32, но так и не дожил до готового продукта. Я сделал будильник с четырьмя 1,3-дюймовыми монохромными OLED-дисплеями. Часы также оснащены регулируемой прикроватной лампой и USB-портом для зарядки (ни у кого нет запасных розеток рядом с кроватью). OLED-светодиоды также имеют регулируемую яркость, это было добавлено в последнюю минуту после того, как моя девушка угрожала моему проекту. Если тусклый свет недостаточно тусклый, я могу также предоставить версию кода, в которой в определенные часы включаются 3 дисплея. Целью было создать простые в обслуживании часы, выходящие за рамки «прототипа». Создавая свои часы, я столкнулся с некоторыми трудностями, которые мне пришлось решить, поэтому я думаю, что этим руководством стоит поделиться. Часы можно сделать с помощью небольших инструментов, мне не нравятся уроки «и для следующего шага я использовал свой фрезерный станок с ЧПУ 10.000 € / $».
Некоторые вещи, которые будут объяснены в этой инструкции (in-structable-ception):
- Как использовать / подключить I2C OLED-дисплей с Arduino / ESP32
- Как использовать несколько объектов I2C с одним arduino / ESP32
- Как сделать "прокручиваемое" меню с помощью поворотного энкодера (+ как использовать энкодер с ESP32 / arduino)
- Как спроектировать и заказать нестандартную печатную плату с помощью фритзинга.
- В часах также используются RTC (часы реального времени), драйвер светодиода, модуль понижающего напряжения… Я не буду вдаваться в подробности, потому что для этих модулей действительно много информации, доступной.
Хочу отметить, что я не профессиональный программист. Цель моего инструктажа - объяснить те моменты, которые я упомянул выше. То, как я все это собираю для своего конечного продукта, может быть не самым чистым способом. Это способ, который позволил мне все это отслеживать.
Запасы
При покупке расходных материалов я всегда стараюсь взвесить важность качества / документации по сравнению с ценой. Мои расходные материалы - это смесь А-брендов и более дешевых китайских запчастей. Mouser - отличный поставщик, если качество важно, я заказываю на Banggood / Aliexpress более дешевые запчасти.
- Плата ESP32, я использовал Huzzah32 от adafruit, но есть много других (более дешевых) вариантов. Я выбрал Huzzah32, потому что он очень хорошо задокументирован.
- 4 1,3-дюймовых I2C OLED-дисплея (128x64, с драйвером SH1106), чаще встречаются 0,96-дюймовые, но для этого проекта я предпочитаю 1,3-дюймовые
- Драйвер фемтобака Sparkfun для управления светодиодами
- часы RTC, я использовал один с литиевым элементом
- Ардуино нано
- Женский порт USB 2.0 (я использовал: SS-52200-002 от Stewart Connector)
- гнездовой разъем постоянного тока (я использовал: L722A от Switchcraft)
- адаптер постоянного тока 12В 3А (GST36E12-P1J от Mean Well)
- Специальная печатная плата, необязательно, но это делает проект намного более компактным и простым в обслуживании, если деталь умирает + большая надежность из-за меньшего количества проводов (jlcpcb.com)
- винты и болты M3
- латунные вставки M3
- понижающий модуль с 12 В на 5 В от Pololu (DF24V22F5)
- 3 Вт с радиатором
- перемычки
- зуммер
- Мультиплексор I2C (TCA9548A от adafruit)
- 2 ротационных энкодера (я пробовал некоторые, не все работают с моим кодом. Один из "DFrobot" работает, как и тот, который работает с круглой печатной платой из "DIYmore". Мой код не работает для кнопки Типа KY-040. В моем будильнике используется будильник от DIYmore, потому что их очень легко монтировать на панель (не требуются дополнительные винты / отверстия).
- Ассортимент женских заголовков (по желанию)
- Дерево для рамы: 18ммx18ммx2400мм
- Копировальная бумага
Я также использовал некоторые инструменты (паяльник, третья рука, пила…), но ничего особенного.
Шаг 1. Использование Oled
Чтобы использовать OLED, вам необходимо установить библиотеку. Я использую U8G2lib от Оли Крауса, он очень понятен и имеет справочное руководство с наглядными примерами.
Чтобы подключить вашу плату (ESP или Arduino), вам нужно найти контакты SDA и SCL. Эти контакты являются контактами связи I2C. Погуглите "распиновку" вашей конкретной платы, если вы не можете их найти.
Я добавил пример кода. Код работает как для arduino, так и для ESP32, но вероятность нехватки памяти для ESP32 меньше. Все оледы, которые я пробовал до сих пор, работают как с 3,3 В (ESP32), так и с 5 В.
Шаг 2: несколько OLED
В этом мой проект начинает отличаться от множества других будильников. Большинство Arduinos / ESP имеют только один или два контакта I2C. Это ограничивает использование частей I2C. Что делать, если у меня есть 4 датчика I2C и я хочу отображать их показания на дисплее I2C? Войдите в мультиплексор. Мультиплексор позволяет адресовать 7 различных частей I2C. Это позволяет моему ESP32 использовать часы реального времени I2C и отображать время, снова используя I2C на 4 дисплеях (или больше, не позволяйте мне останавливать вас).
Я добавил пример кода для ESP32, с этого момента я не уверен, что Arduino сможет справиться с этим. В примере используются только дисплеи, это могут быть и другие вещи, такие как датчики I2C и т. Д. Принцип всегда один и тот же: вы вызываете нужный канал с помощью "tcaselect (#);" функция, то вы выполняете любой необходимый вам код объекта I2C.
Шаг 3. Создание прокручиваемого меню с помощью поворотного энкодера
Перво-наперво проверьте свои кодировщики. Я добавил код для тестирования ваших модулей кодировщика. Как указано в поставках: я успешно протестировал свой код только с модулями поворотного энкодера от DF robot и модулем с круглой печатной платой от DIYmore. См. Изображения выше для правильных кодировщиков.
Я использовал эту библиотеку:
Надеюсь, что добавленный мной PDF-файл поможет со структурой меню, которую я использовал для своих часов.
Самым сложным в этом проекте для меня было заставить работать кодировщик. Существует множество различных кодировщиков и множество разных библиотек, которые не всегда совместимы с ESP32. Но я думаю, что (рабочий) поворотный энкодер - это элегантное решение, если вы хотите что-то ввести. Если бы я использовал только кнопки, мне понадобилось бы больше одной, а установка времени потребовала бы большого количества нажатий.
Шаг 4: Включение предыдущего кода в другое
Название как бы резюмирует то, что я сделал. Я пробовал часть за частью, а потом собрал все воедино. Но из-за того, что никогда не бывает легко, мне пришлось кое-что изменить. Последовательная связь - медленный процесс. Это мешает правильному чтению кодировщика. Чтобы преодолеть это, я добавил прерывания на контакты кодировщика. Код для чтения кодировщика затем немедленно вызывается, если вы нажимаете или поворачиваете кодировщик.
Как только вы поймете, как построено меню, вы обнаружите, что очень легко добавлять или удалять функции по своему вкусу. Возможно, вы хотите получить текущую погоду или время из Интернета и отобразить их?
Я упустил много таких идей, потому что прежде всего хотел надежного покоя времени. Тот, который ничего не делает автоматически. Я работаю очень неурочно в зоне летнего времени. Каждый раз, когда меняют час, я нервничаю, чтобы проспать. Будет ли мой телефон автоматически менять час? Будут ли мои часы? Ну, мои часы не будут, если я сам их не поменяю. Но, может быть, вы хотите поставить часы на кухне? Другой сценарий, добавляйте функции, пока не кончится память!
Шаг 5: Изготовленная на заказ печатная плата с Fritzing + Схема
Внимание: Adafruit отмечает, что, хотя вы можете запитать huzzah32 через разъем USB, вы должны быть осторожны, чтобы не использовать одновременно вход питания micro USB. Моя печатная плата питается от понижающего понижающего преобразователя, который затем питает huzzah через USB-контакт. Поэтому при загрузке всегда отключайте внешний источник питания / снимайте huzzah с платы.
Я решил припаять женские разъемы на печатной плате, потому что это упрощает замену детали или, например, добавление дополнительного датчика I2C. Это также позволяет мне легко удалить nano или ESP32 для загрузки программ.
Я добавил файл Фризтинга, я могу написать здесь роман, но я думаю, что пример говорит лучше всего. Я начал со схемы всей установки. Хотя у Fritzing в мусорных баках много деталей, там есть не все. Иногда вы можете найти часть Fritzing в Интернете, иногда нет. Детали, которые я не мог найти, я просто заменил на женскую часть заголовка. Если вы щелкните его правой кнопкой мыши, вы можете отредактировать заголовок на нужное количество контактов и назначить ему распиновку. Я делал это со всеми частями, которые не мог найти. Поскольку почти все модули используют одинаковый шаг 0,1 дюйма (2,54 мм), это даст вам правильный интервал для детали.
Затем вы переключаетесь на вид PCB приложения fritzing. Печатная плата будет установлена на место, если вы щелкните по ней, вы можете установить ее размер и выбрать однослойную или двухслойную печатную плату. Мой использует 2 слоя. Fritzing предложит соединения, которые вы сделали на схематическом виде. В программе есть опция автотрассировки, но я ею никогда не пользуюсь. Мне нравится организовывать свои связи вручную. На виде печатной платы желтые соединения находятся в верхнем слое, оранжевые - в нижнем слое. Опять же, если вы нажмете на соединение, вы можете выбрать его свойства.
Чтобы сделать настоящую печатную плату, вы должны экспортировать ее как файл gerber. Перед тем, как сделать это, во вкладке «routing» вы можете проверить правила проектирования. Если все прошло успешно, вы можете нажать «Export for PCB». Большинство производителей запрашивают файл gerber, поэтому выберите экспорт в файл gerber.
Я заказал свою печатную плату в JLCPCB, мне нравится, что вам сразу назначают цену. Конечно, есть много других вариантов.
По поводу схемы: используются 2 напряжения. Светодиод и фемтобак питаются напрямую от источника питания 12 В. Остальные питаются через понижающий понижающий преобразователь на 5 вольт.
Шаг 6: Дизайн + лазерный резак
Для своего первого дизайна я попробовал использовать массив дуба (я слежу за классами по деревообработке), но быстро стало ясно, что это не идеально. Древесина слишком толстая, что затрудняет подгонку деталей. Мультиплексор из березы толщиной 3 мм позволяет упростить крепление энкодеров и дисплеев.
Я нашел онлайн-сервис лазерной резки snijlab.nl, доступный для любителей из Роттердама (они отправляются в Бельгию, Нидерланды и Германию). На их веб-сайте вы можете загрузить свои рисунки, и они сразу же сообщат вашу цену. Я использовал Autocad, который у меня есть на работе, но программное обеспечение особого значения не имеет. Это просто должен быть векторный рисунок (Vectr, Illustrator, Inkscape…). Большинство магазинов используют цвета, чтобы определить, хотите ли вы вырезать или гравировать.
Следует помнить о некоторых вещах:
- Макс. размеры лазерного резака (я нарисовал рамку вокруг своих деталей)
- Мин. расстояние между разрезами
- Убедитесь, что вы не рисуете двойные линии, лазер сделает дополнительный проход, что будет стоить вам больше.
- При печати в PDF убедитесь, что вы печатаете 1: 1. Вы не хотите уменьшать масштаб или соответствовать бумаге.
Шаг 7: Сборка
Я построил часы вокруг деревянного каркаса, панели удерживаются на месте винтами M3 и вставками в каркас. Если бы я когда-нибудь построил версию 2, я бы использовал алюминиевые L-образные профили для крепления панелей. Просверлить отверстия под латунные вставки было очень сложно. Мне потребовалось очень много времени, чтобы добиться приемлемого результата. Это, конечно, будет означать, что чертеж лазерной резки должен быть пересмотрен. Я думаю, что с алюминиевыми профилями и просто болтами и гайками вы получите лучший результат.
Чтобы лучше рассеивать свет, я наклеил кальку на внутреннюю часть отверстий. Это придает свету приятное свечение.
Шаг 8: не останавливайтесь на достигнутом
Проект сосредоточен вокруг ESP32, я почти не использовал его. В настоящее время в моей спальне можно дистанционно управлять освещением с помощью blynk. Управление ими с помощью часов - лишь небольшой шаг вперед. Возможно, вам нужны дополнительные дисплеи, показывающие температуру в вашем доме? Или какие-то локальные датчики (на этом мультиплексоре еще есть свободные I2C-соединения!). Может быть, установить время / будильник через приложение и bluetooth?
Сообщите мне, что вы изменили, что вы бы изменили, что я должен изменить …
Рекомендуемые:
Пузырьковый будильник делает пробуждение веселым (ish): 7 шагов (с картинками)
Пузырьковый будильник делает пробуждение забавным (иш): просыпаться под жужжащий будильник - отстой. Я один из тех, кто не любит просыпаться до того, как вышло солнце (или не было дома много часов). Итак, что может быть лучше, чем просыпаться весело, чем вечеринка с пузырями в постели! Используя Arduino и
Будильник "День сурка": 12 шагов (с картинками)
Будильник «День сурка»: Будильник «День сурка» состоит из перекидных часов Panasonic RC-6025, модифицированных для воспроизведения звука из фильма «День сурка», когда срабатывает будильник. и пленка) прошел спец
Прикроватные часы-будильник MP3 с буквами: 6 шагов (с картинками)
Прикроватный будильник в формате MP3 с письмом: для этого проекта я хотел сделать удобный и полнофункциональный прикроватный будильник с надписью «Word». Мои личные требования к прикроватному будильнику: Читаемость при любом освещении, но не ослепляющая ночью. MP3-мелодии будильника Привлекают
Умный будильник: умный будильник на Raspberry Pi: 10 шагов (с изображениями)
Умный будильник: умный будильник на Raspberry Pi: вы когда-нибудь хотели умные часы? Если да, то это решение для вас! Я сделал Smart Alarm Clock, это часы, в которых вы можете менять время будильника в соответствии с веб-сайтом. При срабатывании будильника раздастся звуковой сигнал (зуммер) и загорятся 2 лампочки
GOOB - умный будильник: 15 шагов (с картинками)
GOOB - умный будильник: GOOB - это аббревиатура от «Get Out Of Bed», подходящее название для моего проекта. Я хотел создать устройство, которое поможет разбудить меня по утрам, потому что это не самая простая задача. Основная идея в том, что будильник не останавливает сигнал