Создание USB-гаджета с нуля или еще одна лампа настроения

    Как-то на глаза попалась статья про лампу настроения. Будучи очень далеким от электротехники и абсолютно незнакомым с принципом работы микроконтроллеров, полученных из топика данных ну никак не хватало для понимания всех необходимых действий для создания лампы. Со временем на глаза попадались другие интересные проекты на микроконтроллерах, потому в один прекрасный момент появилось желание потратить часть свободного времени на покорение сей стихии.

    В этой статье я попытался собрать информацию о первых шагах создания с нуля своего проекта на микроконтроллере.

    Цель


    Изучать работу микроконтроллеров я решил на практике: делать что-то реальное куда интереснее, чем гонять десяток светодиодов в симуляторе.
    В первую очередь было необходимо определиться, что хочется сделать. Я остановился на вышеупомянутой лампе настроения. Дабы не создавать полный аналог было решено расширить функционал лампы и добавить управление с ПК.

    Микроконтроллер


    Выбор микроконтроллера был прост.
    Работать с ПК через COM порт — несовременно, потому был выбран вариант связи через USB. Дабы не начинать с микропайки, было решено использовать только компоненты в DIP корпусе. Подходящих микроконтроллеров осталось немного: или любой AVR с программной эмуляцией USB, или PIC серии 18F с аппаратной поддержкой USB 2.0.
    Кто-то может решить по другому, но мой выбор пал на последний вариант, в данном проекте я использовал МК PIC18F2455.
    18F2455 можно заменить без последствий на 18F2550, разница лишь в объеме памяти.
    С минимальными изменениями можно так же использовать:
    18F4455/4550 — при необходимости большего количества ног (40 вместо 28)
    18F14K50 — 20 ног, немного обрезанный функционал, зато немного дешевле


    Схема


    Самая простая схема для подключения PIC18F2455 выглядит так:

    По неизвестной мне причине на схеме переставлены местами 25 и 26 ноги МК.

    Отталкиваясь от нее можно составить схему для лампы. Из изменений потребуется:
    Питание 5В и землю взять от USB.
    Соединить D+ и D- USB с соответствующими ногами МК.
    Подключить к одному цифровому входу кнопку.
    К трем цифровым выходам подсоединить транзисторы для управления светодиодом.



    На схеме не отображены только мощные резисторы к катодам светодиода.

    Программатор


    Перед сборкой микроконтроллер необходимо прошить. Умные люди скажут, что нет ничего лучше PicKit для прошивки пиков. Но кому хочется тратить 1000-2000 руб. для разовой прошивки МК?
    Существуют множество схем самодельных программаторов различной сложности исполнения, но не у всех выходит заставить работать их с первого раза.

    Мною были опробованы два самых простых программатора: один работает через LPT порт, другой — через COM. Удивительно, но все заработало без особых проблем.

    Схема art2003 (читать подробнее):



    LPT разъем, 8 диодов, конденсатор и резистор. Только список поддерживаемых МК не радует.

    Схема универсального программатора (работает как JDM):



    Такой простой схемой на трех резисторах с внешним питанием 5В можно прошить почти любой PIC, главное подсоединить провода к нужным ногам МК (а так же не забыть, что Vdd и Vss может быть несколько).
    Питание 5В можно взять от USB, БП компьютера или зарядного устройства для телефона.

    Оба программатора поддерживаются программой для прошивки пиков — WinPic800.

    Бутлоадер


    Программатор — это хорошо, но что делать, если требуется часто перепрошивать МК, не оставлять же доступ к плате ради такой мелочи? На этот случай удачно подходит использование бутлоадера. Достаточно один раз записать его в МК, после чего все обновления прошивки выполнять напрямую с компьютера через USB.
    На начальном этапе не требуется знать подробностей, достаточно использовать готовые решения. После прошивки бутлоадера в МК достаточно подать питание при зажатой кнопке — и в системе определится новое устройство Microchip Custom USB Device. После установки драйверов можно безопасно работать с доступной памятью через распространяемый Microchip'ом софт.



    Компилятор


    Существует много хороших компиляторов, свой выбор я остановил, наверное, на самом малоизвестном — JAL (Just Another Language). Возможно, кто-то посчитает использование этого компилятора неразумным, но он полностью покрыл все мои требования для старта. Минимальный размер (архив 11 мб), отсутствие установки (1 минута на распаковку не в счет), никаких излишеств (мне не нужна среда разработки), наличие всех необходимых библиотек, рабочие примеры для каждого МК (мигание светодиодом) и для всех основных функциональностей.

    Пример кода мигания светодиодом:

    include 18f2455 -- библиотека для используемого МК
    --
    pragma target clock 48_000_000 -- частота МК, задается для расчета задержки
    --
    enable_digital_io() -- переключение всех входов на цифровой режим
    --
    alias led is pin_B3 -- привязываем led к пину B3
    pin_B3_direction = output -- настраиваем пин B3 для работы как выход
    --

    forever loop -- основной цикл
    led = on -- включить светодиод
    _usec_delay(250000) -- пауза
    led = off -- выключить светодиод
    _usec_delay(250000) -- пауза
    end loop


    При использовании бутлоадера вся конфигурация МК устанавливается в нем, для адаптации прошивки к бутлоадеру достаточно изменить параметры компилирования добавив флаги -loader18 2048 -no-fuse.

    Прошивка


    Описывать все тонкости при написании программы для МК — не хватит не только одной статьи, но и книги. Одна только документация по PIC18F2455/2550/4455/4550 занимает 430 страниц. Узнать все и сразу — почти невозможно.

    Самый простой способ написать что-то свое — посмотреть примеры и сделать по аналогии. Данный путь не всегда самый верный, но постоянно проверяя каждую строчку кода на работоспособность выходит вполне рабочая программа.

    Функционал, включенный в текущую версию прошивки:
    • софтовый 8-битный ШИМ на 200 Гц, 3 канала
    • возможность использования таблицы коррекции гаммы (желательно перевести ШИМ на BAM 10-бит, иначе заметны переходы цвета)
    • 4 процедуры для работы с цветом:
      • программный таймер с шагом 0.1с (макс. время 1:49:13.5) для пауз и установки времени перехода
      • переход от текущего до заданного цвета по RGB значениям за время таймера
      • переход от текущего до заданного цвета по HSV значениям за время таймера
      • мгновенное изменение цвета
    • 6 подпрограмм смены цвета
      • вращение по HSV колесу; дополнительно: колебание по насыщенности и яркости
      • цикл основных цветов; дополнительно: рандомное время перехода на каждый шаг
      • фиксированный цвет; дополнительно: второй фиксированный цвет
      • рандомный цвет по параметрам RGB; дополнительно: рандомный цвет по параметрам HSV
      • предустановленный цикл цветов; дополнительно: — (в будущем — набор команд, загруженный с ПК)
      • (активируется с ПК)прямой вывод полученного с ПК цвета; дополнительно: плавное переход на новый цвет
    • трехрежимная кнопка
      • быстрое нажатие — смена подпрограммы (либо сброс паузы);
      • продолжительное нажатие — альтернативный режим;
      • длительное нажатие — переход в сервисный режим(для перепрошивки)
    • таймер обратного отсчета (задается с ПК, макс. время 1:49:13.5)
    • оповещение о событиях (многократные и одноразовые), 6 каналов (по количеству основных цветов)
    • пауза на время различных событий
    • связь с ПК:
      • возможность изменить основные параметры каждой подпрограммы при помощи софта
      • прием команд управления таймером обратного отсчета и оповещениями
      • возможность прямого контроля цвета с ПК, что открывает путь к расширению функционала за счет софта.

    Казалось бы: вроде ничего особенного. За вечер можно написать. Но, не зная как работают МК, собираешь, наверное, почти все грабли, которые можно встретить. Тем не менее все труды по перечитыванию документации, углубленному гуглению и переписыванию кода с нуля были оправданы: конечный результат оказался вполне работоспособен.

    Сборка


    Основные составляющие лампы — корпус, микроконтроллер и светодиод.
    В качестве основы для лампы была взята все та же лампа GRÖNÖ из IKEA.
    Светодиод — китайский аналог с DealExtreme (SKU 4530), почти в 3 раза дешевле оригинала.
    Светодиод сильно греется, необходим хоть какой радиатор, иначе ярко гореть он будет не долго.

    Мелочевка:
    • панелька для МК
    • 3 транзистора
    • 3 мощных и 5 маломощных резисторов
    • 2 конденсатора
    • резонатор
    • кнопка
    • miniUSB разъем (в DIP исполнении — редкость)

    Все это разместил на плате, дабы попасть в нишу лампы.



    Разводка платы в Sprint Layout, перевод на текстолит методом ЛУТ, сверление, пайка.




    Работа не идеальная, да и без ошибок не обошлось: один резистор оказался лишним (на схемах его уже нет).



    Вся плата размещена под лампой, в выемке для провода размещены кнопка и разъем miniUSB для питания и связи с ПК.


    Питание подается через miniUSB, но не стоит подключать лампу с таким светодиодом к первому подвернувшемуся источнику питания: лампа на полной яркости потребляет чуть меньше 1А. Не все БП рассчитаны на такой ток, в зависимости от типа БП им может стать крайне плохо, что может привести к неприятным последствиям.
    Для подключения к компьютеру возможно потребуется кабель с дополнительным разъемом питания (как у переносных HDD) или хороший активный USB хаб.

    Софт


    Найти подходящий софт для индивидуальной задачи — невозможно. Пришлось заняться и этим вопросом самостоятельно.
    Программа писалась параллельно с прошивкой и использовалась в основном для отладки лампы. На данный момент не реализованы несколько функций — но возможно вскоре найдется время доделать и их.



    Итоги





    Как оказалось, сделать себе уникальный USB-гаджет с нуля — вполне доступная задача. Для этого не требуется мастерство пайки недешевых ft232, не требуется отвлекаться на совместимость с программной реализацией USB и не требуется никаких полуфабрикатов Arduino. Все что нужно — это немного желания.

    Полезная информация


    Набор файлов проекта.
    Документация по семейству PIC 18F с поддержкой USB 2.0.
    Русский перевод документации: книга «Микроконтроллеры Microchip с аппаратной поддержкой USB» Автор: В. С. Яценков.
    Набор библиотек для JAL и IDE — JALEdit.
    WinPic800 — программа для прошивки Pic.
    MCHPFSUSB — набор для работы с бутлоадером.
    Поделиться публикацией

    Комментарии 99

      +11
      гениально! автору спасибо за труд
        0
        Пойду за паяльником… )))
        +5
        Огромное спасибо автору. Надеюсь увидеть еще топиков на подобную тематику.
          0
          А вы не подскажите светимость данного светодиода, на сайте не смог найти, только энергопотребление. Мне интересно посчитать сколько примерно нужно таких светодиодов, что бы сделать полноценное освещение в комнате и насколько это будет дорого.
            0
            Даже не знаю как посчитать, оригинального для сравнения не имею. Для лампы — достаточно ярко, напрямую — слепит.
                +1
                Случайно отправилось раньше времени.
                Тут предлагают готовую лампу, мощностью как и светодиод 3Вт. Я почти уверен, что на нем она и сделана. Написано, что 110 люменов дает. На правду похоже. У меня дома 3 таких лампы (только не спота, а с расссеивателями) едва освещают небольшую комнатку (метров 6-7 квадратных). Поэтому могу предположить, что для создания полноценного освещения, надо от 1 до 2 таких сетодиодов на квадратный метр площади.
                  0
                  Да, это почти совпало с моим гаданием на кофейной гуще, у меня получилось 3-4 на квадрат.
                0
                Подумайте на тему светодиодных лент. Проще монтировать и выглядят эстетичнее.
                  0
                  1Вт светодиода примерно равен 1Вт люминесцентной лампы (где-то больше, где-то меньше).
                  Комнату нормально осветить — надо 100Вт.
                  Тут в 100$ не уложиться…
                  +2
                  Красиво, сам помнится неделю развлекался с RGB светодиодом. Завораживает.
                    0
                    Очень круто, мечтаю сам такое сделать. Уважаю!
                    • НЛО прилетело и опубликовало эту надпись здесь
                      +2
                      Пожалуйста, выложите фотки работающего гаджета!
                        +3
                        а лучше видео.
                          +2
                          Видео добавил. Снимать такое не умею, да и не чем, так что какое получилось.
                          Как не снимешь, вживую оно куда лучше смотрится.
                            0
                            Спасибо!
                            по мне, так вышел бы отличный бэклайт для пола
                              0
                              В ближайших планах сделать девайс и софт для управления N rgb-светодиодами. Надо только на практике посмотреть сколько каналов выдержит один МК.
                              А уж куда расставить светодиоды — придумать потом можно.

                                0
                                Если МК выдерживает один светик, то и один транзисторный (тиристорный) ключик выдержит.
                                Не нужно коммутировать ток светодиодов напрямую :)
                                Там же ж в районе 1А…

                                Рекомендую так же рассмотреть варианты фонариков, «поворотников» в элементах одежды (велосипедистов)
                                или продвинутых тинейджеров.
                                Выйти в таком прикиде вечерком прогуляться — достойный повод «выпасть» из «вконтакта» и взять паяльник в руки…

                                Радует, не оскудела еще земля Русская…
                                :)
                                  0
                                  Выдержит не по питанию, а по расчетам. Я еще не настолько хорошо знаю МК, что бы с уверенностью сказать на сколько каналов хватит процессорного времени.
                                  Выводить планирую через сдвиговый регистр+транзисторы дарлингтона, так что с питанием там все просто.
                              0
                              вполне себе видео получилось, не прибедняйтесь ;)
                              хороший такой ночничок получился.
                                0
                                Красота! Без видео статья казалась не полной.
                              +2
                              Видео хватит? Или обязательно фото?
                              0
                              А исходным кодом работы с USB вы поделитесь?
                                0
                                Вас что интересует? В данном проекте я использовал самый простой вариант — CDC. Лампа видится в системе как обычное COM-устройство.
                                Используемая мною библиотека, найденная на просторах интерната (Delphi): narod.ru/disk/21637241000/ComPort.rar.html

                                  +5
                                  Интернета, конечно же =)
                                0
                                Не совсем в тему. Насколько трудоемко (в сравнении с этим замечательным девайсом) сделать USB-термометр? Задачи: перодическое считывание температуры и запись куда-нибудь (например, в текстовый файл) в автоматическом режиме.
                                  0
                                  Легче раз… Во много.

                                  Пример работы с датчиком температуры предоставлен самим микрочипом. Достаточно подредактировать исходники софта, дабы они сохраняли данные, а не выводили на график.
                                  www.gamma.spb.ru/articles.php?i=29
                                  Где-то встречал даже более практичный урок без мусора, с одним датчиком.

                                  Да и самостоятельно сделать все не сложно, если захотеть. Если разбить задачу на элементы, то необходимо:
                                  -установить таймер на нужный интервал
                                  -подключить датчик температуры
                                  -снимать показания датчика по таймеру
                                  -сразу отправлять результат на комп
                                  -на компе принимать данные и записывать в файл.
                                  Разобраться в каждом пункте — и будет готовый девайс.
                                    0
                                    Спасибо! Надеюсь, это окажется действительно легче :-)
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                      0
                                      Спасибо! Надеюсь, смогу найти понятные примеры использования этих технологий :-)
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          0
                                          Спасибо! Если результат будет не стыдно показать, напишу :-).
                                        0
                                        SDcard + Microchip Memory Disk Drive File System Library на любом пике с spi :)
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                            0
                                            Для этого подходят отладочные платы.

                                            Если сделать такую на пике один раз, на ней можно будет разрабатывать как и на ардуино.
                                            Готовые схемы тоже есть.
                                            Повторить в домашних условиях Jaluino куда проще, чем Arduino, а использовать готовые платы — не спортивно =)
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                0
                                                >безусловно паять самому было бы спортивнее, но это несправедливо для того же ethernet shield, т.к. плату для него ЛУТ-ом не изготовишь…

                                                Изготовишь. У меня плата с TMS320VC5509APGE на 144 ноги (сигнальный процессор 200МГц) + CS8900A на 100 ног (сетевуха) сделана методом лазерного утюга.
                                                В итоге имею очень удобную макетку с USB и ETHERNET.
                                                  0
                                                  Почему это лутом не изготовишь? Запросто, чуть сложней чем обычную, но не более того. Там же не BGA корпус.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                      0
                                                      Думаю там вручную можно и по двум развести.
                                        +1
                                        Спасибо! Отличная статья… достаточно подробная но не занудная… можно сказать почти готовый урок для студентов соотв. ВУЗа… а то как вы выразились
                                        Изучать работу микроконтроллеров я решил на практике: делать что-то реальное куда интереснее, чем гонять десяток светодиодов в симуляторе.

                                        действительно многим студентам не интересно покорять симулятор без возможности в последствии пощупать готовую железку
                                          0
                                          отлично, две таких лампы из икеи я уже имею со времён предыдущей статьи. надеюсь мне хватит мотивации собрать свою лампу настроения.
                                            +1
                                            У Atmel тоже есть мк с «железным» usb, например AT90USBXX правда только в TQFP. Но он отлично паяется, даже простым советским паяльником:) Ну или популярная софтварная реализация V-USB, тогда мк можно в три-четыре раза дешевле брать.
                                              0
                                              Может глупый вопрос. В чем существенная разница между программной эмуляцией USB и аппаратной поддержкой? Правильно ли я понимаю, что проблема только в том, что в случае с программной эмуляцией, под это будет тратится часть памяти микроконтроллера?
                                                +2
                                                Точно, памяти надо много (в масштабах МК) и еще USB это быстрая шина, следовательно нужна хорошая скорость реакции программы, иначе устройство будет попросту отваливаться и вы будете видеть «Устройство USB неопознанно», а кроме того масса процессорного времени (тактов ядра) уходит на обработку всех этих сложных транзакций USB, и на выполнение кода приложения остается меньше…

                                                Поэтому там где МК нагружен выполнением своих задач — хорошее решение не экономить и использовать аппаратный, а там где МК только «лампочками мигает», вполне сойдет и программный. :D
                                                  +1
                                                  Справедливости ради надо заметить, что програмных реализаций существует не одна (на примере AVR) и в целом со своими задачами они отлично справляются!
                                                    0
                                                    Ну там не все так просто. Там надо постоянно дергать usbpoll() чуть затупил — девайс отпал. Так что для загруженных проектов не покатит.
                                                  0
                                                  Софтовая эмуляция — до 10-50 кб/сек.
                                                  Железная — до 700Кб.
                                                    0
                                                    В смысле 700Кб — это предел на AT90XXX
                                                      0
                                                      в pic18 предел — full speed 12Mbps, это теоретический, обычно упирается в производительность вашего firmware.

                                                      Из всего, что я видел вживую на пиках — предел был 8мбпс
                                                        0
                                                        p.p.s.: если опрашивать, например, внешний ADC, то фирмваре съедает очень много тактов и скорость падает до 1мбпс, что примерно равно результатам AT90XXX
                                                  0
                                                  +1 — тем более для такого проекта
                                                    0
                                                    Ну, как вижу, вам проще взять usb-порт компа, заменить D+ и D- на Tx и Rx от com и использовать его для «usb» соединения при помощи простого max232. =)
                                                    Почему же вы не используете V-USB, раз это так просто? UART првычнее?

                                                    Ну это так, шутя =) В вашем проекте это выглядит довольно-таки удачным и хитрым ходом.
                                                    0
                                                    Не спорю, что припаять можно все, но это не самый простой вариант, правда?
                                                    V-USB тоже хорош для простых задач, но это не значит что он годится всегда.

                                                    А по ценам… Не знаю с чем лучше сравнивать. К примеру, mega8 для меня стоит 90руб.
                                                    18f14k50 стоит ровно столько же.
                                                      0
                                                      >Не спорю, что припаять можно все, но это не самый простой вариант, правда?
                                                      Я хоть электроникой толко как хобби занимаюсь, но вот склоняюсь к smd, притом, что паяльной станции у меня нет и паяю все советским паяльником. Для SOIC и TQFP платы ЛУТом с первого раза получаются, паяется чуть ли не проще чем DIP. И дырок сверлить не надо:) Сложно было только для LQFP сделать плату, ну там дорожка/просвет по 0.2мм. Основной плюс DIP'а, что можно на макетке спаять, но макетки это уж сильно муторно, в разы проще ЛУТ освоить.

                                                      >К примеру, mega8 для меня стоит 90руб. 18f14k50 стоит ровно столько же.
                                                      Везет вам, у нас mega8 за сотню, а экзотики типа 18f вобще нету.
                                                        0
                                                        Когда еще не пробовал — кажется что dip проще. Уже есть желание перебраться на smd. Но не выкидывать же все накупленное =)
                                                        Пока последним плюсом dip остается возможность использования кроваток для МК. Можно легко переставлять их с платы на плату.
                                                          0
                                                          Для plcc есть кроватки :)
                                                    +1
                                                    Супер! Надеюсь вы продолжите выкладывать статьи о своем дальнейшем освоении микроконтроллеров.
                                                      0
                                                      Спасибо за статью! Тоже являюсь приверженцем контроллеров PIC ;)

                                                      P.S.: вместо керамического резонатора рекомендую использовать кварц, т.к. довольно часто итоговое устройство не работает с usb-хабами из-за отклонения частоты.
                                                        0
                                                        Керамический был выбран по двум причинам: это проще, и он вполне рабочий.
                                                        Да, можно поставить кварц, но придется добавить пару конденсаторов.

                                                        А что там с отклонениями? Ничего такого не замечал.
                                                          0
                                                          Я недавно собирал 10 экземпляров одного устройства на 18f2550 с керамикой, одно из них вообще не работало, 3 работали с перебоями, если их втыкать в дешёвый китайский хаб.

                                                          После замены керамики на кварцы все 10 заработали даже в самых ужасных условиях.
                                                            0
                                                            Спасибо за совет, при переходе на смд можно будет и кварц взять.

                                                            Тем не менее, керамика тоже способна выполнять свою задачу.
                                                        0
                                                        Не много наивный вопрос: А зачем?
                                                        PIC изучить? Применения ему в быту не так много, а на предприятии учиться лучше сразу под выпускаемую продукцию.
                                                        А для себя светильник под управлением компа можно сделать через LPT, поиграться пару месяцев и забыть.
                                                          +1
                                                          Было две цели: изучить что такое МК и сделать что-то своими руками.

                                                          Почему pic? А почему нет?
                                                          И почему в быту ему меньше применений? Он, вроде умеет ровно тоже самое, что и avr.

                                                          Ну, а если почитать статью, то можно заметить что тут не просто управление тремя светодиодами с компьютера. Лампа вполне работоспособна и без пк.
                                                            0
                                                            Мне кажется, что PIC и AVR пора бы уже похоронить или оставить только для узкоспециализированных задач, а больше внимания уделять ARM.
                                                            На нем, к примеру можно было сделать фоторамку настроения, да ещё снабдить модулем изменения изображения в зависимости от частоты и интенсивности шума в помещении. Но сил на это, разумеется, понадобиться на порядок больше.
                                                              0
                                                              С ARM еще не знакомился, потому не знаю что там и как. Для самостоятельного изучения на примерах — недостаточно много информации в сети. А серьезно изучать пока не вижу смысла.

                                                              Фоторамка… тут больше сложность сделать хорошую фоторамку, что б не стыдно было поставить на стол, нежели оживить ее.
                                                                +1
                                                                Ну, пока армов по 1$ нет.
                                                                А всякие Cortex M0 — с их микроскопическим объемом памяти и бОльшим энергопотреблением — все равно компромисс.
                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                              0
                                                              Что в вашем понимании «с управлением через USB напрямую»?
                                                              Лампа накаливания не умеет общаться по протоколу USB, как и тиристор. Тут может подойти управление через LPT.

                                                              Ну, а если все же использовать МК, то достаточно тиристор подсоединить к МК и сделать диммер.
                                                              С передачей команды все как и здесь будет, это везде одинаково независимо от того, что с полученными данными будет делать МК.
                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                  0
                                                                  Так чем сервомоторчики отличаются от светодиодов? Что скажешь делать микроконтролеру при получении команды — то и будет делать. Светодиод воткнешь — будет моргать. Серво — двигаться. Реле — включать лампу.

                                                                  Команда отправляется с ПК по событию.
                                                                  В текущей программе у меня так заготовка для уведомлений работает.

                                                                  Остается только отлавливать события и отправлять определенную команду, вот это реализовать пока времени нет.
                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                      0
                                                                      Да, именно так. Но при подключении рабочего устройства к пк при помощи софта можно менять настройки, отправлять команды таймеру, сообщения о уведомлениях, а так же напрямую управлять цветом.
                                                              0
                                                              Круто! =) И программа симпатичная вышла.

                                                              Единственно, касательно юзабилити, было бы намного удобнее применить ползунки для насыщенности, яркости…
                                                                0
                                                                Программа писалась лишь бы работала, о удобстве задумывался мало.
                                                                Да. ползунки не помешали бы… но куда их 6 штук разместить?
                                                                0
                                                                Выглядит завораживающе, но всё же, почему именно PIC? AVR много дешевле, проще(не только в программировании), но и вообще он какой-то… Более народный что ли.
                                                                  +1
                                                                  Много дешевле 90 руб (ну ладно, в данном проекте использован старший МК за 200р, но хватило бы и pic18f14k50)?
                                                                  Я же не массовое производство устраиваю, что бы экономить каждую копейку?

                                                                  А в чем простота авр… пока мне не понятно. Тут итак достаточно просто все.

                                                                  Почему именно пик? Так в статье же написано:
                                                                  просто режил начать с МК в DIP корпусе и аппаратным USB. У Atmel таких нет.
                                                                    +1
                                                                    Нечего тут спорить, это делается и на AVR, и на PIC, и на ARM.
                                                                    Кому что удобнее — то и нужно использовать, цена чипа при еденичном производстве меркнет по сравнению с ценой вашего времени.
                                                                    0
                                                                    Снимаю шляпу!
                                                                    Очень приятно что остались еще люди, которые могут решать подобные задачи своими силами.
                                                                      0
                                                                      Автор, Вы молодец!
                                                                        0
                                                                        Круто!
                                                                        А он работает автономно, или все-таки нужно управлять с компьютера изменением цвета?
                                                                          0
                                                                          Да, он может рабтать автономно, нужно только питание через miniUSB (5в, желательно 1А+).
                                                                          В автономном режиме доступны 5 различных программ, которые переключаются нажатием кнопки. Так же можно переключать программы на альтернативный режим зажатием кнопки. Так что суммарно получается 7 различных программ и 3 фиксированных цвета (+ выключенное состояние).
                                                                          С компьютера можно изменять параметры каждой программы с сохранением в энергонезависимую память, потому после переноса лампы подальше от пк она будет светить так, как ее настроили.

                                                                          Радиопередачи нет, потому устанавливать таймер обратного отсчета, отправлять увдомления, и контролировать цвет напрямую в автономном режме не получится.
                                                                          0
                                                                          Спасибо, добавил в избранное!
                                                                          С пиками работать умею уже хорошо, валяются у меня тут 2 штуки 18ф4550, вот на их основе и делаю девайсы! А лампу настроения хотел давно уже сделать, осталась проблема найти подходящий фонарь и светодиод найти.
                                                                            0
                                                                            К автору — очень хотелось бы увидеть в отдельной статье пример реализации usb интерфейса в микроконтроллере (аппаратный/программный) и соответственно написание управляющего ПО для ПК.
                                                                              0
                                                                              То есть простой подробный пример прошивки+софта для передачи данных по usb в обе стороны?
                                                                                0
                                                                                Именно.
                                                                                  0
                                                                                  а просто FT232R использовать никак?
                                                                                    0
                                                                                    А в чем разница между примером для pic usb и ft232?

                                                                                    Немного изменится инициализация. Ну и отправлять байты нужно будет не на serial_hw_data, а на usb_serial_data.
                                                                                    Со стороны компьютера разницы не будет никакой (если использовать режим CDC).

                                                                                    Вот только ft232 стоит дополнительные 200р и идет в SO корпусе, что достаточно мелко для первых шагов.
                                                                                    +1
                                                                                    Если так надо — разберу данную задачу подробно. На деле там ничего сложного: подключение нужной библиотеки с каждой стороны и пара строчек кода для отправки и приема данных.
                                                                                  0
                                                                                  0
                                                                                  Очень хорошо написано, но синтаксис языка программирования меня смутил. И не в тему пинание Ардуино.
                                                                                    0
                                                                                    Да, нечто паскалеподобное… Уровень школьной программы, где-то (или там сейчас только ворд и ексель проходят?).
                                                                                    Здесь достаточно информации для привыкания.
                                                                                    Но никто не заставляет использовать именно этот компилятор, есть куда более профессиональные Сшные.

                                                                                    А насчет ардуино: я просто говорю, чо есть альтернатива. Потратив минимум усилий можно сделать себе аналогичное устройство за куда меньшие деньги. Лично я не вижу в ардуино ни одного плюса, кроме заводской сборки.
                                                                                    Кому-то может лень делать плату самому — пусть сидят на полуфабрикате. Некоторым, может, и симулятора хватит.

                                                                                    0
                                                                                    В нашей глуши пики с УСБ по 10 баксов стоят. Атмелы раз в пять дешевле.
                                                                                      0
                                                                                      Интернет магазины решают!
                                                                                      0
                                                                                      Большое большое, просто ОГРОМНОЕ спасибо Вам, Алексей!
                                                                                        0
                                                                                        Возможно ли использовать эту схему с 12-вольтовыми светодиодами (светодиодная лента)? Что нужно переделать?
                                                                                        А если нет — какие есть аналоги этой схемы для 12-вольтовых диодов?
                                                                                          0
                                                                                          С небольшими изменениями — можно.
                                                                                          Если лента обычная (один плюс и три минуса), то достаточно подать на ленту 12в, желательно заменить транзисторы на N-канальные мосфеты.
                                                                                          При использовании двух источников питания следует объеденить земли. При питании только от 12в — поставить стабилизатор на 5в для питания микроконтроллера.

                                                                                          Если лента китайская (три плюса и один минус) — схему придется немного усложнить, и на словах это объяснить будет сложнее.
                                                                                            0
                                                                                            Еще вопрос: какие транзисторы Вы использовали в данной версии лампы и какие подойдут для 12 вольт?

                                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                        Самое читаемое