Arduino / Freeduino

Блог про Arduino / Freeduino

понедельник, 4 мая 2009 г.

Цепляем к Freeduino ползунковые резисторы, получаем регулятор громкости

Зашел на днях в радиомагазин, увидел там длинные ползунковые переменные резисторы, купил 3 штуки, чтобы реализовать давнюю затею - регулятор громкости для компьютера.
Получилось вот так:

Реализация проста как две копейки - собираем на переменных резисторах делители напряжения в нужном количестве. Сопротивления можно брать в широком диапазоне: от 470Ом до 500кОм и даже шире. У меня стоят на 330к. Со стороны Arduino программа измеряет напряжение на входах, и если обнаруживает изменение, шлет новое значение вместе с номером канала в компьютер. Со стороны ПК программа открывает порт, и по приходу данных меняет громкость на соответствующей линии Вашей звуковой карты.
Таких резисторов можно до 6 штук подключить к Arduino/Freeduino без особых проблем, если нужно больше, можно попробовать пару альтернативных вариантов подключения.
Как обычно выкладываю все исходники, а также бинарники, и схему (если ее так можно назвать :)).
Исходники + бинарники
схема :)
К программе есть небольшое описание.
Исходники старался писать простые и понятные. С регулированием громкости под виндами сам детально не разбирался - использовал чью-то библиотеку (еще давно, когда сам был фидошником, знал что такое ZMH, и регулярно посещал пойнтовки кто-то мне ее по нетмылу прислал).
Еще есть небольшое видео с демонстрацией работы:
http://www.youtube.com/watch?v=f-LLXNQuRVY
...интересно, кто-нибудь узнает звучащее музыкальное произведение?

вторник, 17 марта 2009 г.

Сенсорный датчик для Arduino и жуткий девайс админа-параноика

Обнаружилась тут для Arduino занятная библиотечка, организующая сенсорное управление: www.arduino.cc/playground/Main/CapSense.
Принцип работы иллюстрируется картинкой от автора библиотеки:
Библиотека переключает передающую ногу, и смотрит, через какое время переключится нога приемник. Это время будет зависеть от паразитной емкости, т.е. от того, насколько близко находится рука человека (ну, или не рука).
В ходе экспериментов с библиотекой и различными железками, подцепленными к Arduino, в моем воспаленном сознании админа-параноика родилась идея забавного устройства, которое я Вам и представляю.
Суть в следующем: разместить в кресле (на котором админ проводит свое рабочее время) достаточное количество проволоки и прикрыть ее материей, подсоединить проволоку к Arduino - пусть железка определяет - сидит кто-то на кресле, или нет. И вот в тот самый момент, когда админ отлучается со своего рабочего места, Arduino шлет сигнал компьютеру, а тот автоматически лочится.
...можно еще и .wav проигрывать вроде "работать, негры! солнце еще высоко".
Как обычно выкладываю фото-видео отчет и исходники, разбавленные мелкими комментариями.


Исходные тексты: CapSenseSrc.zip. Для скриптов на Python нужна библиотека pySerial, a под Windows еще и pyWin32.

среда, 18 февраля 2009 г.

Стрелочный индикатор к Arduino из амперметра

Подцепил на днях к Arduino пару здоровых амперметров - открутил от них шунты, и через сопротивления на аналоговые выходы повешал.
Сходу вспомнилось 2 варианта применения (пользы ноль, одно баловство :) ):
- измерение загрузки процессора (как раз сейчас процессоры 2-х ядерные пошли)
- вывод показаний спидометра и тахометра от гоночных игр
Фото с измерятелей загрузки процессора слева направо: WinRar в однопоточном режиме, WinRar в многопоточном режиме, и 100% загрузка с двух калькуляторов!

Вот так собственно выглядит вся конструкция в макетном варианте:

И видео с малость поправленой версии TORCS:

P.S. Кстати, это уже вторая Arduino, купленная на www.freeduino.ru. Первую подарил товарищу - оказалось очень хороший подарок, для тех, кто в теме.
P.P.S. Как и обещал ранее - вот исходники с мелкими комментариями:
Measurer-arduino-with_src.zip
torcs-1.3.1-arduino-speedometer.zip
Если кто-то начнет с ними ковыряться, и что-то будет непонятно - пишите.

четверг, 12 февраля 2009 г.

Цепляем микрофон по кривой схеме :)

Взбрела в голову идея собрать старую игрушку - управление светом с хлопков в ладоши. Подцепил микрофон к Arduino - выяснилось что сигнал слабоватый, и вообще-то надо ставить операционник. Под рукой никакого операционника не нашлось - придумал идиотскую схему через RC-цепочку. С такой схемой при тишине получаем на выходе ноль вольт, а различные хлопки дают слабенький сигнал.
Чтобы его хоть как-то поймать, переключаем диапазон АЦП с 5 на 1.1 вольта, и уже что-то там начинает ловиться.
Для защиты от ложных срабатываний программа ловит 2 последовательных хлопка с обязательной тишиной между ними.
Микрофон подобный обычно зовется в радиомагазине как "электретный обычный китайский, сейчас посмотрю по бумагам... CNZ15E" :). Можно брать любой подобный - китайцы такие куда только не суют. Чувствительность каждого конкретного микрофона сильно зависит от значения R1. Если я ничего не путаю, то при нормальном значении R1 нога 1 микрофона имеет потенциал примерно половина от напряжения питания. В данном случае в .pdf'ке на микрофон указан R1=2.2k, но при 9.1k он значительно чувствительнее.
Выкладываю небольшой фото/видео-отчет и схему с исходником.



Исходник: HandClap.pde

среда, 11 февраля 2009 г.

Управляем 220В нагрузкой

Решил с Arduino поуправлять 220В нагрузкой не очень большой мощности - лампа, компьютер и т.д. Удобно было бы купить так называемое твердотельное реле - это силовой симистор + специальная схема и опторазвязка от управления.
На www.chip-dip.ru нашел всего за 210р S202T02 на ток аж до 16А - чайником управлять можно!. В магазине такого не было - обошелся отдельно симистором BT136-400 на ток 4А за 20р и драйвером с опторазвязкой к нему MOC3061 за 30р. Типовая схема включения по документации подразумевает RC-цепочку на выходе, но можно и без нее.
Отдельную плату городить не стал - собрал всю обвязку вокруг клеммника. Собственно выкладываю схему и фотографии получившейся железки.


В свете наступивших холодов в голову лезет вот такое применение:
Ставим симистор помощнее, вооружаемся Mirand'ой, плагином RemoteX, консольной терминалкой типа lnterm и по ICQ включаем обогреватель в квартире за час до прихода с работы :)
P.S. Еще вот такая идея есть - собрать на дачу имитатор присутствия - пусть периодически свет включает, радио/mp3 какое-нибудь, чтобы бомжи и всякая шушера не лезли. Тут даже компьютер не нужен. Ближе к лету надо попробовать.

понедельник, 12 января 2009 г.

Затянувшиеся праздники и пришедшая по почте Freeduino

Та-а-к... предновогодняя, и самое главное - посленовогодняя беготня несколько затянулась :) Особенности встречи мной НГ - это тема не для этого блога - скажу лишь что праздники удались на славу :)
Заказанная freeduino пришла еще в декабре, но даже сфотографировать и выложить в блог времени катастрофически не хватало - толком поиграться и то не успел. Обошлась она примерно в 1200. Из них 200р - доставка 1 классом, а остальные 100 - из-за наложенного платежа (там еще страховка, плюс процент почты за перевод денег).
Со слов freeduino.ru, если не наложенным платежем, а предоплатой через банк, то на 100р дешевле бы вышла. ...с другой стороны, 100р погоду не делают.
Чего пришло:
В мелкой коробочке еще более мелкая железка, маленький CD (софт я и так в и-нете скачал), и еще штекер питания - тут respect мужикам - вроде копеечная штука, а может пригодиться, чтобы от внешнего БП запитать. Еще понравилось, что ATmega в панельке (Diecimila/Duemilanove вроде тоже с панелькой, но где-то в и-нете видел варианты без панелек).
Вот пара фоток содержимого посылки. Компакт-диск МАЛЕНЬКИЙ! (8 см):

...цеплял тут к ней RGB светодиодную ленту - красивые цвета получаются!
Так и хочется из этой светящейся ленты что-то сделать - пока еще не решил что.
Пока склоняюсь к аналогу вот этого: http://alex.piter-furry.ru/index.php?page=w_ambilight
Может кто что-то другое посоветует?

пятница, 19 декабря 2008 г.

Библиотека i2cmaster для Arduino

Ковырялся тут с подключением по шине I2C микросхемы AD7746 от Analog Devices - это такой измеритель емкости со
встроенным датчиком температуры.
Казалось бы, проблем никаких нет - для Arduino есть стандартная библиотека TWI/I2C - бери и пользуй. Но обнаружилась в ней некоторая особенность - сразу после передачи данных она всегда переводит шину в состояние "Stop Condition".
Для некоторых устройств это никак не мешает работе, а вот чип AD7746 после получения "Stop Condition" сбрасывает внутренний указатель. А работа с этим AD7746 происходит так, что надо сначала записать в этот указатель адрес нужного регистра, а потом уже писать в него, или читать оттуда.
А получается, что я пишу в указатель адрес нужного регистра, после этого происходит "Stop Condition", микроконтроллер сбрасывается, и последующее чтение читает мне опять содержимое регистра с нулевым адресом. :(
Ну ладно, у нас же OpenSource - полез в исходники, и что-то мне пока не хватило задору научить эту библиотеку писать без "Stop Condition" - надо детальнее изучать datasheet на ATmega168.
Рыскал по интернету, нашел библиотеку i2cmaster от Peter Fleury (http://jump.to/fleury), и вот она мою проблему решила!
Пришлось только библиотеку маленько поправить для совместимости с Arduino - указал частоту 16Мгц и включение встроенных подтягивающих резисторов.
Выкладываю в общее пользование: i2cmaster_arduino.zip.
Файл нужно разархивировать в папку hardware\libraries (там должна появиться папка i2cmaster)
...может кто-то все-таки родную библиотеку соберется подшаманить?