Съдържание:

Ярка контролируема изгревна лампа: 6 стъпки
Ярка контролируема изгревна лампа: 6 стъпки

Видео: Ярка контролируема изгревна лампа: 6 стъпки

Видео: Ярка контролируема изгревна лампа: 6 стъпки
Видео: ЯРКИЙ ЧЕЛЛЕНДЖ «КРАСНОЕ ПРОТИВ СИНЕГО» || Едим продукты одного цвета 24 часа с 123 GO! FOOD 2024, Ноември
Anonim
Ярка контролируема изгревна лампа
Ярка контролируема изгревна лампа
Ярка контролируема изгревна лампа
Ярка контролируема изгревна лампа

Събуждали ли сте се някога в 7 часа, обичайното време, през което трябва да се събудите за работа, и се озовахте в тъмнина? Зимата е ужасно време, нали? Трябва да се събудите посред нощ (иначе защо е толкова тъмно?), Да се откъснете от леглото и да изпратите полусъзнателното си тяло под душа.

Този проект има за цел да реши един от въпросите - сутрешната тъмнина.

Наоколо има много евтини лампи за изгрев, но всички те са с ниска мощност и бледи. Те са по -скоро като нощна лампа, която би трябвало да ви накара да спите по -добре. Изобщо не това, което искам.

В същото време само включването на ярка светлина ще ви събуди незабавно, но не достатъчно внимателно. Това, което искам, е комбинация от двата подхода - светнете с ниска яркост, бавно стигнете до пълна скорост, след това избухва истинска аларма и вече не сте толкова сънлив. Нека добавим малко песен на птици и всяка сутрин се събуждате на небето!

Стъпка 1: Масив от лампи

Лампа Масив
Лампа Масив
Лампа Масив
Лампа Масив

На първо място, имаме нужда от самата лампа. Имам доста голяма стая с бели стени и таван, затова отидох за 7 GU10 LED лампи, нещо като 6W всяка, повече от 40W чиста мощност! Това е достатъчно, за да се почувствате, че вече е ден. Също така може да се използва като обичайно осветление на помещението през деня.

Всъщност няма значение как го сглобявате, кои лампи използвате с кои гнезда. Всичко, което има значение - това трябва да са димируеми лампи!

В моя случай имам дървена дъска с прикрепени 7 гнезда GU10, всички свързани заедно. По -късно ще го сложа в пластмасова кутия.

Стъпка 2: Теория за затъмняване

Теория за затъмняване
Теория за затъмняване

На теория няма разлика между теория и практика. На практика има.

Управлението на димер от ESP32/Arduino изглежда не е толкова просто, колкото си представях. Взех един от модулите на RobotDyn AC Light Dimmer. Производителят предлага библиотека за това. Не работи на ESP32 (и е наистина трудно да се адаптира, защото използва много достъп до системния регистър, специфичен за ATMega), нещо като работи на Arduino Nano, което дава ужасно трептене при ниска и средна яркост. Ето защо прекарах известно време в проучване как всичко работи и да си проправя път.

Малко теория

Избраният модул за димер използва много популярен TRIAC: BTA16. Има много статии за това. Ще се опитам да го обобщя тук.

TRIAC е модул, който може да предава входно положително или отрицателно напрежение към изхода или да го блокира. По подразбиране той блокира всичко. За да го отворим, трябва да му подадем висок сигнал на входа на порта за 100 us. Тогава той ще остане отворен, докато токът спадне до нула, което се случва, когато входното напрежение промени знака, пресичайки нулево напрежение. След това на следващия цикъл трябва да направим още 100 us пулс и така нататък. Избирайки кога да даваме импулс, ние контролираме яркостта: направете го в самото начало и той ще бъде близо до 100% предаване на мощност. Направете го по -късно и той ще бъде затъмнен. Вижте горната диаграма, като я обясните.

За да генерираме импулси в същата точка на цикъла, трябва да знаем точно кога започва. Ето защо модулът на димера има вграден детектор Zero-Cross. Той просто издига сигнал (който ще уловим като хардуерно прекъсване в Arduino) всеки път, когато напрежението премине нула.

Стъпка 3: Практика на затъмняване

Практика за затъмняване
Практика за затъмняване

Да, така бихте се събудили, ако лампата ви няма затъмняване и вложи всичките 40 W енергия в сънените ви очи.

Общи проблеми

Има множество проблеми, които трябва да решим.

Трептене.

Времето на микроконтролера трябва да бъде наистина прецизно при включване и изключване на изхода на портата. Библиотеката, която RobotDyn предлага, има прекъсване на таймера на всеки 100us и променя нивото на порта само на таймера. Това означава, че може да бъде +/- 50 микросекунди извън оптималната стойност. Той дава добър резултат при висока яркост, но трепте много при ниска яркост. Също така, ако микроконтролерът прави много неща, това намалява точността на времето, така че в идеалния случай трябва да се използва специален микроконтролер за димера.

Минимална яркост. Светодиодите имат вграден преобразувател на мощност, който просто ще откаже да работи с недостатъчна мощност. Изглежда, че лампите ми работят добре от 10-11%.

Дори при тази стойност някои от лампите ми отказаха да светнат при стартиране. Дори при увеличаване на яркостта по -късно те остават тъмни. Ето защо, когато преминем от състояние OFF към някаква положителна яркост, започваме с период на загряване от 5 цикъла, когато даваме пълна мощност на лампите. След това продължаваме с желаната яркост. Това е почти незабележимо, но наистина помага.

50/60 Hz мрежова честота. Трябва да знаете колко да чакате преди следващата нула. Това е доста просто - ние просто разглеждаме времевата разлика между две последни прекъсвания.

Постепенна промяна на яркостта. ESP32 е доста бавен, отнема 0,5 секунди, за да се обработи тривиална HTTP или дори WebSocket заявка, така че не очаквайте плавен преход на яркостта, той трябва да бъде приложен по някакъв начин на нивото на затъмняване. Ето защо, когато получи нова яркост от сериен порт, той просто задава целта и след това бавно се приближава към нея с течение на времето.

Решението

Ето моя прост Arduino код за димера. Той изчаква команда (един байт с новата яркост) от серийния вход, обработва прекъсванията Zero-Cross, контролира TRIAC, обработва всички горепосочени проблеми.

Стъпка 4: Контролер на лампата (ESP32)

Контролер на лампата (ESP32)
Контролер на лампата (ESP32)
Контролер на лампата (ESP32)
Контролер на лампата (ESP32)

Ето схемата на свързване на всички компоненти, които имам. Платката ESP32 е много различна от тази, която използвам (Heltec), така че избраните щифтове изглеждат малко странни, но все пак трябва да работят добре. Чувствайте се свободни да използвате различни щифтове във вашия проект.

Ето кода, който контролира всичко. Това е доста директно.

Основните характеристики

Лампата се свързва с WiFi, стартира WebSocket сървър на порт 81, изчаква команди. Форматът на командата е

За момента се поддържат само две команди: "set_brightness" и "update_settings", които са … доста самоописани.

Получаване на време от NTP. Не искам да усложнявам нещата и да добавя часовник в реално време към схемата. Имаме достъп до интернет, което означава, че можем да получим реалното време от някой NTP сървър и след това да следим текущото време с помощта на системните таймери.

Аларма за изгрев слънце. Можете да настроите една аларма. Какво всъщност прави: започва с минималната яркост и постепенно стига до пълната яркост за 10 минути. След това остава за няколко часа. След това постепенно се изключва за 60 секунди.

Всички параметри по -горе са конфигурируеми.

Птици пеят. DFPlayer mini се използва за възпроизвеждане на музика. Има много ръководства за него, но по същество просто трябва да включите MicroSD карта, форматирана във FAT32, с един файл, наречен 0001.mp3. Този файл може да съдържа всичко, което ви харесва, в моя случай това е 15 минути птичи пеене (ще бъде затворено), и това прави моята сутрин невероятна. ESP32 и DFplayer - те са по избор, но помагат за намаляване на шума.

Съхраняване на настройките в EEPROM. Всички настройки се записват в EEPROM и се зареждат при стартиране. Това дава възможност да се използва лампата с поне алармена функция без свързан контролер.

Предаване на информация на OLED екрана. Моят Heltec ESP32 има вграден SSD1306 128X64 I2C екран. Цялата важна информация се изобразява върху него. Знам, кутията изглежда грозна, току-що отпечатах 3D неща и изрязах дупките и прозорците с бормашина. Бързо, мръсно, но работи!

Стъпка 5: Контролен панел

Контролен панел
Контролен панел
Контролен панел
Контролен панел

Това е сърцето на проекта. Raspberry Pi с оригинален 7-инчов дисплей, работещ с малко Kivy интерфейс.

Ето пълния изходен код.

Характеристиките

Написано на Python. Обичам Kivy, това е Python рамка за потребителски интерфейси. Много прост, но гъвкав и ефективен (използва много C код вътре за висока производителност и хардуерно ускорение).

Време. Показване на текущата температура и налягане навън. Ако свържете дистанционен сензор - вътрешна температура. Той също така изисква и анализира прогнозата за времето за следващите 12 часа и дава съвет относно вероятността от дъжд.

Контролер SunriseLamp, Друг панел показва основна информация за алармата и ви позволява да регулирате яркостта. Ако отидете в настройките, можете да конфигурирате всеки параметър на лампата, включително график на алармата, максимален обем на звука и така нататък.

Screensaver. Renders Game of Life на екрана след определен период на бездействие.

Някога имаше повече от това, но други неща изглеждаха безполезни.

Инсталация

Инсталирах всичко ръчно на Raspbian и сега мога да кажа: не повтаряйте грешките ми. Използвайте KivyPie, всичко е предварително инсталирано.

Освен това, просто следвайте ръководството за инсталиране в хранилището на кодове.

Стъпка 6: Насладете се

Лично аз съм доволен от устройството. Използвам го като основно осветление у дома през деня и ми позволява да се събудя сутрин, невероятно е.

Знам, че инструкциите не са много подробни и описателни. Ако някой направи същото и има проблеми - ще се радвам да помогна!

Препоръчано: