Решил повторить перенеся на atmega328, точнее на стандартные Ардуиновские модули.
Название темы посоветовали более опытные товарищи, постараюсь оправдать )) Что умеет:
Есть 4 канала pwm для управления RGBW лентами, управление от китайских ИК пультов для лент (пока только Nec протокол). Есть еще канал для управления включением БП и 2 канала для вывода на ленты/панели/гирлянды на ws2812. Можно также подключить по i2c RTC и LCD дисплей и выводить время на панель 32*8 из ws и на кольцо из 60 штук ws Устройство собрано из:
ATMEGA 328 C кварцем 16 MHZ (стандартный Arduino mini pro). Питание 5 В.
ENC28J60 с питанием 5 В (с распаянным на нём AMS1117 3.3)
I2C RTC Модуль с DS3231 и 24C32
I2C OLED 0,96" 128*64 на SSD1306
LCD1602 на HD44780 c I2C модулем на PCF8574
TSOP я оторвал от китайского блока управления лентами
Для управления используется инкрементный энкодер с подсветкой двумя ws2812, соединенными параллельно. Это подключено UTP проводом длиной метров 5. Попробую описать схему соединений atmega328 (в скобках Ардуино), т.к. нарисовать нормальную пока не получается.
PD0, PD1 (0,1 или Rxd,Txd) - Вращение Энкодера. Подтянуто к +5В резистором 1 кОм
PD2(2) - Кнопка Энкодера. Подтянуто к +5В резистором 1 кОм
PD3(3) - Наверное вход. Пока не используется
PD4(4) - Выход на WS2812
PD5(5) - Выход PWM Зелёный цвет через резистор 680 Ом на затвор MOSFET Nтипа из дохлой материнки
PD6(6) - Выход PWM Красный цвет через резистор 680 Ом на затвор MOSFET Nтипа из дохлой материнки
PD7(7) - Выход на WS2812
PC0(A0) - Выход SS SPI на вход CS ENC28J60. Подтянуто к +3В резистором 10 кОм
PC1(A1) - Выход. Пока не используется
PC2(A2) - Выход. Power On. Активный уровень "0". Для управления компьютерным БП
PC3(A3) - Выход. Пока не используется
PC4(A4 или SDA) - TWI (I2C) SDA
PC5(A5 или SCL) - TWI (I2C) SCL
ADC6(A6) - Вход. ADC
ADC7(A7) - Вход. ADC
PB0(8) - Вход ИК. Режим ICP. Соединен напрямую с TSOP.
PB1(9) - Выход PWM Синий цвет через резистор 680 Ом на затвор MOSFET Nтипа из дохлой материнки
PB2(10) - Выход PWM Белый цвет через резистор 680 Ом на затвор MOSFET Nтипа из дохлой материнки
PB3(11 или MOSI) - MOSI SPI на вывод SI ENC28J60.
PB4(12 или MISO) - MISO SPI на вывод SO ENC28J60. Через резистор 270 Ом
PB5(13 или SCK) - SCK SPI на вывод SCK ENC28J60.
Цветом выделено не обычное подключение ENC к Меге, т.е. если соединять стандартные шилды, то этот контакт следует отогнуть или откусить и соединить проводами так, как описано.
Для питания устройства и лент я использую старый компьютерный блок питания. дежурные 5В идут на питание схемы, +12В питают ленты, +5в питают ленты/панели из ws2812, а управляется БП выходом PC2. Сейчас прошивка собрана под OLED дисплей 0,96" 128*64 на SSD1306 можно пересобрать под LCD1602,
I2C устройства можно не подключать. Все будет работать с соответствующими ограничениями.
Уже добавлены BH1750, ATMEL24C32 но не придумал как их использовать
Фьюзы : E:0x06 L:0xff H:0xda
Прошивка фьюзов:
Код: Выделить всё
avrdude -c usbasp -p m328p -P COM1 -V -U efuse:w:0x06:m -U lfuse:w:0xff:m -U hfuse:w:0xda:m
Код: Выделить всё
avrdude -c usbasp -P COM1 -p m328p -F -e -U flash:w:main.hex
Код: Выделить всё
[size=50]avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Size before:AVR Memory Usage
----------------
Device: atmega328p
Program: 30110 bytes (91.9% Full)
(.text + .data + .bootloader)
Data: 1636 bytes (79.9% Full)
(.data + .bss + .noinit)
EEPROM: 361 bytes (35.3% Full)
(.eeprom)[/size]
Код: Выделить всё
http://192.168.0.18/sec/?cf=1&eip=192.168.0.18&pwd=sec&sip=&sct=
-Установить сетевые параметры
http://192.168.0.18/sec/?on=1 - Включить свет.
http://192.168.0.18/sec/?on=0 - Выключить свет.
http://192.168.0.18/sec/?get=1
- Прочитать значения оттенка, насыщености, яркости и яркости белого
http://192.168.0.18/sec/?set=1&w=0&v=100&s=100&h=345
- Установить яркость белого, яркость, насыщеность и оттенок
http://192.168.0.18/sec/?dtp=1 -- Страница Дата/Время/Температура 3231
http://192.168.0.18/sec/?dtp=1&dat=25%2F01%2F2017&tim=20%3A32%3A28%5B3%5D
- Установка Дата/Время/День недели
http://192.168.0.18/sec/?wsp=1 -- Страница выбора типа панелей
http://192.168.0.18/sec/?wsp=1&ws0=0&ws1=2 -- Установка типа панели
0 - Круглые часы из 60 ws2812. Первый светодиод - 0 минут. ws2812 расположены по часовой стрелке.
1 - SmartClock. Круглые часы из 60 ws2812. Одним цветом светится сектор между часовой и минутной
стрелками, другим между минутной и часовой. (не доделан)
2 - Часы на панели 32х8 ws2812 текущего RGB цвета с текущей яркостью.
И с яркостью 1 в состоянии выключено.. Первый светодиод - Нижний правый угол.
3 - Вывод на один ws2812 текущего RGB цвета с текущей яркостью.
И с яркостью 3 в состоянии выключено.
Используется для подсветки энкодера. Работает с ws2811.
4 - Вывод "радуги" на ленту/панель/гирлянду до 512 ws2812. (не доделан)
5 - Вывод текущего цвета RGB с текущей яркостью на ленту/панель/гирлянду до 512 ws2812.
6 - Вывод двух строк по 32 символа со скроллингом на панель 32х16 ws2812 текущего RGB цвета
с текущей яркостью. И с яркостью 1 в состоянии выключено. Первый светодиод - Верхний правый угол.
http://192.168.0.18/sec/?lep=1 -- Страница выбора настроки цветов для ROUND CLOCK
http://192.168.0.18/sec/?led=14 -- Страница настроки цветов
Рекомендую использовать цвета для ROUND CLOCK:
http://192.168.0.18/sec/?led=4&r=1&g=0&b=0 -- Цвет часов при выключенном свете
http://192.168.0.18/sec/?led=5&r=5&g=0&b=0 -- Цвет часов при включенном свете
http://192.168.0.18/sec/?led=6&r=0&g=5&b=0 -- Цвет минут при выключенном свете
http://192.168.0.18/sec/?led=7&r=0&g=25&b=0 -- Цвет минут при включенном свете
http://192.168.0.18/sec/?led=8&r=0&g=0&b=5 -- Цвет секунд при выключенном свете
http://192.168.0.18/sec/?led=9&r=0&g=0&b=50 -- Цвет секунд при включенном свете
http://192.168.0.18/sec/?led=10&r=5&g=5&b=5 -- Цвет делений 15, 30, 45 при выключенном свете
http://192.168.0.18/sec/?led=11&r=25&g=25&b=25 -- Цвет делений 15, 30, 45 при включенном свете
http://192.168.0.18/sec/?led=12&r=1&g=1&b=1 -- Цвет делений 5, 10, 20, 25, 35, 40, 50, 55 при выключенном свете
http://192.168.0.18/sec/?led=13&r=5&g=5&b=5 -- Цвет делений 5, 10, 20, 25, 35, 40, 50, 55 при включенном свете
Цвет деления 0 - текущий RGB цвет (может использоваться для подсветки энкодера)
http://192.168.0.18/sec/?irp=0...1 -- Страницы выбора кнопок ИК
http://192.168.0.18/sec/?iii=0...19 -- Настройка кнопки ИК
Пример;
http://192.168.0.18/sec/?iii=0&c=FF02FD&o=2&t=3&w=0&v=100&s=100&h=345 кнопка включения, цвет не меняется
-- Ввод команды. Перед входом в настройку конкретной кнопки можно установить цвет, который будет
назначен на кнопку и нажать на кнопку пульта ДУ. Эти данные будут использованы в качестве предустановки.
iii - № кнопки
с -- Сигнал с пульта 4 байта в hex формате
o -- Управление включением
0 - Off
1 - On
2 - Change
3 - NC (Nothing)
t -- Установка уровней цветов
0 - Set (установить яркость, насыщенность, оттенок в N единиц)
1 - '+' (увеличить яркость, насыщенность, оттенок на N единиц)
2 - '-' (уменьшить яркость, насыщенность, оттенок на N единиц)
3 - NC (Nothing)
w -- яркость белого,
v -- яркость,
s -- насыщеность
h -- оттенок