Радио, о радио! А так же ИН-18

Мы были частью механизма
Мы не могли иначе мыслить
И все же изредка украдкой
Я пропадал, искав отгадки
И каждый раз я был доволен
Когда в мой разум били волны…

Поздний вечер, лежим на диване, готовимся ко сну. В руках пульт, на полке рядом светятся самые большие лампы, когда либо производившиеся в Советском Союзе! Никуда не нужно вставать, щелкаем по кнопкам пульта, меняем подсветку, настраиваем время (при необходимости). Еще один щелчок и включается радио, выбираем канал и постепенно засыпаем под звуки любимой радиостанции ^^

Фото немного разные, так как сняты с прототипа и с финальной версии плат, изготовленных в Китае. 

Что же умеют данные часы? 

  1. Показ времени и даты;
  2. Управление всеми настройками с пульта ДУ;
  3. Регулировка уровня звука;
  4. Память на 6 радио каналов;
  5. Антиотравление каждые 30 секунд + ночное антиотравление;
  6. Звук тикания:
  7. Обратный ход часов (понятия не имею зачем, просто по приколу);
  8. Эффект «Дефектная лампа». В случайный момент времени лампа начинает моргать и отключаться как неисправная.
  9. Радио-будильник. В указанное время включится выбранная радиостанция;
  10. Самое бесполезное — показ температуры. Он жутко врёт, считайте, что его нет. Температура берется из ds3231. 

Радио, о Радио!
Мой юный слух ласкав ночами
Уши сделав мне глазами

Принципиальную схему можно разделить на 2 части: 1) Высокое напряжение и низкое 3.3 В для управления радио модулем 2) Управляющая часть

Внимание желающих написать коммент «я мог бы так же на тини10 на ассемблере», «всё плохо, кг/ам» и других подобных: откройте эту ссылку https://cxem.net/mc/mc484.php и внимательно посмотрите на рис. 1.

Ну а теперь, после того, как все лишние ушли в указанном на рис. 1. направлении, можно и продолжить.

Схема питания выполнена на двух каскадах: 1) Предварительное повышение напряжения для управления полевым транзистором и 2) Собственно сама управляющая часть, создающая высокое напряжение. Этот мутант был найден на просторах интернета и он просто идеально тянет 6 ламп ИН-18 в динамической индикации, напряжение поддерживается 170 В не проседая ни на пол Вольта. 

Теперь управляющая часть

В качестве основного управляющего контроллера выбрана atmega328. Ног хватает, памяти тоже. Микросхема времени ds3231, классика… Пульт ДУ от ардуино. Исходники прошивки прилагаю, сможете сами настроить тот пульт, который вам больше подойдет. 

Классический дешифратор К155ИД1, усиленный внешними стабилитронами. Подсветка на адресных светодиодах ws2812. Стабилизатор для получения 3.3 В линейный, AMS1117. 

Самое интересное, наверное, радиомодуль, он вполне себе китайский, RDA5807, модуль в сборе. Без антенны работать не будет. 

Каждый раз пускаясь вброд
На задворки этих нот
По ночам закрывшись в доме
Я тихо пел в свои ладони

А теперь инструкция

Ардуино: инфракрасный пульт и приемник | Класс робототехники

Прошивка по умолчанию рассчитана вот на такой пульт, как на картинке выше.

ОК — настройка времени. Если отображается дата, то будет выполнена настройка даты. Изменения выполняются с помощью кнопок UP, DOWN, LEFT, RIGHT
Кнопка ОК возвращает в режим отображения времени. Настройка времени сохраняется.

* и # — уровень звука.

0 — выключить радио.

1, 2, 3, 4, 5, 6 — установка избранных радио частот. Будильник в качестве сигнала выбирает частоту на кнопке 1.

UP — настройка режимов отображения. Кнопка ОК переключает на следующую настройку до тех пор, пока все настройки не будут выполнены
— прокрутка цифр каждую секунду (1 — вкл, 0 — откл)
— прокрутка цифр каждые 30 секунд
— звук тикания
— обратный ход часов
— дефектная лампа
— будильник включен
— если будильник включен (1), то следующим пунктом появится его настройка. Если отключен (0), то выполняется переход к отображению времени. 

RIGHT — режим подсветки, статичный цвет. Выбор осуществляется кнопкой вправо.

LEFT — смена динамических режимов подсветки.

DOWN — показать дату.

8 — отобразить температуру (значение температуры берется из контроллера напрямую, часто врёт, функция не является основной,
исправлений и точности тут ждать не следует.

Коротко о прошивке

Как уже было сказано ранее, исходник прилагается. Прошивка написана в среде Arduino IDE в целях упростить работу с железом. В первых строках мы увидим дефайны:

#define K_1   0xFFA25D
#define K_2   0x511DBB
#define K_3   0xFFE21D
#define K_4   0xFF22DD
#define K_5   0xFF02FD
#define K_6   0xFFC23D
#define K_7   0xFFE01F
#define K_8   0xFFA857
#define K_9   0xFF906F
#define K_STAR  0xFF6897
#define K_0   0xFF9867
#define K_SHARP 0xFFB04F
#define K_UP   0xFF18E7
#define K_LEFT  0xFF10EF
#define K_OK   0xFF38C7
#define K_RIGHT 0xFF5AA5
#define K_DOWN  0xFF4AB5

Это коды кнопок. K — означает KEY, далее идет название кнопки. STAR — звездочка. SHARP — решетка. UP — вверх. Ну и так далее, сами разберётесь, ничего сложного ))

Для адептов: «код г**но, я могу лучше» есть два варианта. Первый — сделайте лучше, оптимизируйте, покажите как надо, я буду предельно вам благодарен. Ну и 2, если ваши слова не подтверждены делом, см рис. 1. из ссылки на статью выше. 

У этого же кода есть несомненный плюс, он стабильно работает и не падает. 

Еще немного фото:

   

 

   

В качестве питания выбран порт micro-usb, потому что он есть у всех, не надо заморачиваться с блоками питания. Адептам 12 В: я уважаю ваше мнение, но слушать его не буду. 

Печатная плата разведена в программе Sprint Layout, двухсторонняя, выполнена на одной плате. 

Особых сложностей плата не представляет и довольно легко может быть выполнена ЛУТом или фоторезистом. Переходные отверстия можно пропаять тонкой проволокой, как я и делал в прототипе. 

Ах да, совсем забыл: датчик температуры отсутствует, в прошивке не реализован.

Так же следует помнить, что переход на Altium Designer я выполняю только сейчас. Схема рисовалась по плате и не мной, в схеме возможны ошибки. В случае расхождений верим плате, в случае сложностей задаем вопросы в ветке форума или в комментариях, постараюсь ответить всем. 

Всем спасибо за внимание, с вами был El Kotto, до новых встреч ^^. Фрагменты взяты из перевода песни Rammstein — Radio. Автор перевода — радио тапок.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Лампа ИН-18 6
Резистор 0 Ом 1 0805
Микросхема К155ИД1 1
Конденсатор 1 мкФ 1 Размер 2220, НЕ МЕНЕЕ ЧЕМ 250 В
Выпрямительный диод BYV26C 1
Конденсатор 0.1 мкФ 21 0805
Дроссель BLM31PG121SN1L 9 Можно заменить перемычкой
LED драйвер ws2812 6 5050
Резистор 75 Ом 8 0805
TSOP38238 1 Приёмник ИК пульта
Конденсатор 100 мкФ 6.3 В 7 Электролиты
Кнопка KLS7-TS6606 3 Или другая подобного типа
Резистор 4.7 кОм 13 0805
Резистор 4.7 кОм 1
Резистор 1 кОм 8 0805
Конденсатор 10 мкФ 2 1206
Конденсатор 10 мкФ 1
Линейный регулятор AMS1117-3.3 1
Конденсатор 0.1 мкФ 1 1206
Кварцевый резонатор 20 МГц 1 Выводной, усеченный
Разъем PJ-234 1
Разъем PJ-234 1
Разъем PJ-327C 1
Модуль RDA5807M 1
Резистор 0 Ом 5 1206
Биполярный транзистор MMBTA42 6
Биполярный транзистор MMBTA92 6
Резистор 1 МОм 6 0805
Резистор 10 кОм 9 0805
Конденсатор 22 пФ 1 0805
Конденсатор 0.1 мкФ 250 В 1 1206
Резистор 0 Ом 9 0805
МК AVR 8-бит ATmega328P 1 TQFP32
Часы реального времени (RTC) DS3231 1
Отсек батарейный CR1220 1
Дроссель 47 мкГн 1 10×10 мм
Дроссель 22 мкГн 1 4×4 мм
DC/DC импульсный конвертер MC34063A 2 SO8
Транзистор IR4427 1
Конденсатор 0.1 мкФ 10 0603
Резистор 1.5 кОм 1 0805
Разъем micro-usb 1
Пищалка TAT-BS8530BS 1
Биполярный транзистор BC847 1
Стабилитрон BZV55-C75 10
MOSFET-транзистор IRFR4620 1
Резистор 10 Ом 1 0805
Резистор 0.22 Ом 1 2512
Резистор 680 кОм 1 0805
Резистор 15 кОм 1 0805
Резистор 180 Ом 1 0805
Резистор 1.2 кОм 1 0805
Резистор 1.2 кОм 1
Выпрямительный диод US1M 1
Конденсатор 510 пФ 2 0805
Конденсатор 560 пФ 1 0805
Пульт ДУ ардуино 1 С крестом снизу предпочтительнее