Программирование Arduino, оживление микроэвм Электроника МК-90, аппаратный хакинг.
21.01.2013
11.01.2013
RelayShield HighPower
С момента выпуска RelayShield прошло около года. По традиции, мы проанализировали отзывы пользователей и создали новую версию:
Основная идея - реализовать возможность переключения больших токов. Соответственно, место шести реле заняли четыре, зато более мощных (10А, 250VAC или 30VDC). Как и предыдущий вариант, этот тоже никак не соприкасается с Arduino-совместимой платой при стыковке:
Для тех, кто хочет пользоваться модулем отдельно от Arduino-совместимой платы, пригодится опция "Вилки отсутствуют" - в этом варианте вилки для стыковки не напаиваются. Кроме того, если требуется освободить или переместить управление на другие выходы Arduino, это можно сделать перерезав соответствующую дорожку на solder-джампере с обратной стороны платы:
Управляющие выходы реле находятся на пинах D7, D6, D3 и D4 соответственно. Контактные группы каждого реле обозначены как:
- NOx - Normal Open, разомкнутый в исходном состоянии контакт;
- NCx - Normal Close, замкнутый в исходном состоянии контакт;
- COMx - Common, общий.
Управление несложное - надо перевести пин в режим цифрового выхода при помощи pinMode(N, OUTPUT), затем записать в него соответствующее значение (HIGH или LOW) через digitalWrite:
- LOW (исходное состояние): замкнуты NCx и COMx, NO ни с чем не соединен;
- HIGH: замкнуты NOx и COMx, NC ни с чем не соединен.
Купить RelayShield HighPower можно здесь.
08.01.2013
Как подключить шилд к Nano
Все, кто потратил на сравнение Arduino-совместимых плат хотя бы минут десять, успели усвоить простые истины:
- Полноразмерные платы типа Arduino UNO удобны для пристыковывания шилдов;
- Миниатюрные платы типа Arduino Nano чудо как хороши в комплекте с беспаечной макеткой.
Но что, если требуется ровно наоборот?...
Существуют полноразмерные Arduino-совместимые платы, на которые не напаяны колодки - вместо них можно впаять штыри и воткнуть таким образом в макетку (как правило, на них даже два ряда отверстий - одно для стандартного arduino pinout, второе - на сетке 2,54 мм), хотя по смыслу такое подходит скорее для обычной макетной платы - к которой без паяльника лучше не подходить.
Nano-совместимые платы можно соединить с шилдом либо проводами на той же беспаечной макетке, либо непосредственно (без участия макетки), но, в любом случае, получится не самого приятного вида колтун.
Так или иначе, отныне у нас есть вариант шилда-переходника, который быстро и непринужденно превращаются брюки позволяет состыковать Nano с шилд-платами для полноразмерных старших братьев:
Вот что она умеет:
- изображать arduino pinout 1.0, включая ICSP-вилку для стыковки с последними Ethernet-платами (и прочими вариантами, которые используют для коммуникаций пины с аппаратной поддержкой SPI);
- разъем питания с защитным диодом и опциональной возможностью запитывания от стабилизированного источника +5В;
- посадочные места для пинов A6 и A7 - если они все-таки используются в конструируемом вами устройстве;
- посадочные места для резисторов-подтяжек I2C, если вдруг понадобится;
- кнопку сброса (хотя она и кажется бесполезной на первый взгляд).
Когда я разводил этот вариант, то довольно скоро сообразил, что поместить Nano сверху не получится из-за недопустимой высоты - она просто не даст возможность нахлобучить шилды , при стандартной высоте колодок в 8 мм.
И хотя вопрос решался увеличением высоты колодок, я решил отказаться от этой затратной со всех точек зрения идеи (стоимость этих экзотических высоких колодок и результирующая высота и прочность конструкции) и поместил Nano с противоположной стороны ;) Иными словами - колодки для шилдов и для Nano смотрят в разные стороны:
Я, конечно, понимаю - истинный фанат платформы Arduino просто обязан иметь в своем арсенале как минимум Nano, UNO, и Mega, а следовательно - в таком переходнике не нуждается. Тем не менее, по себе знаю, что прототипизация происходит очень спонтанно и результат качественно зависит от того, что оказалось под руками в конкретный момент времени. В результате это может выглядеть так:
Что до меня лично - я, наконец, получил возможность питать и Nano, и UNO от одного блока питания - быть может, эта идея еще кому-то понравится ;)
25.12.2012
IR-приемник на Arduino
Когда ваше устройство на основе Arduino переходит из фазы прототипизации в реальную жизнь, часто возникают вопросы типа "надо делать корпус" - и все из-за того, что отлично работающие под уютной настольной лампой, от лабораторного источника питания устройства могут не пережить и одной попытки использования в руках ребенка или "отчаянной" домохозяйки. Да я уж и не говорю о рассеянных авторах! ;)
Один из таких аспектов - дистанционный пульт для исполнительного устройства на основе Arduino. Изготавливать его самостоятельно может оказаться довольно муторным делом - во времена первых советских бытовых компьютеров, например, можно было изготовить самостоятельно пленочную клавиатуру или разобрать калькулятор с шикарными герконовыми клавишами. Но теперь, стоит нам оглянуться по сторонам - и на глаза обязательно должен попасться ИК-пульт от какой-то бытовой техники (телевизора, музыкального центра, кондиционера). Если управляемое устройство находится в прямой видимости управляющего - это определенно возможность схалявить наш вариант:
Как грамотно построить схему ИК-приемника? Начнем с краткой справки по структуре сигнала: обычно, это серия световых импульсов определенной частоты - что-то около 38 кГц. Импульсы по специальным правилам образуют посылки, в которых кодируются команды (проще говоря - каждой кнопке соответствует свой код). Для передачи используется инфракрасный светодиод, для получения - инфракрасный приемник.
В основе приемника обязательно лежит фотодиод: полупроводниковое устройство, реагирующее на свет небольшой ЭДС. Для использования получаемый сигнал надо немного усилить, очистить от помех и демодулировать. Стоит ли говорить, что намного практичнее использовать готовую схему - фотоприемник, который уже включает в себя перечисленные узлы:
Стоит запомнить, пожалуй, единственный принципиальный момент - от того, насколько соответствуют частоты пульта и приемника, зависит дальность приема. Иными словами, если излучение модулировано частотой 38 кГц, а фотоприемник по спецификации рассчитан на 36 кГц - все равно будет работать, только придется ближе подходить ;) Выглядят подобные устройства, например, так:
Подключить фотоприемник к Arduino можно с минимальным комплектом деталей:
Резистор R1 и емкость C1 нужны для стабилизации питания, подтягивающий резистор опционален (хотя, как вы понимаете, подтягивающий резистор уже есть в Arduino и использовать можно его).
В качестве библиотеки можно взять вариант от Ken Shirriff, который не только поддерживает форматы NEC, SIRC, RC5, RC6, но и может принимать вообще "сырые" посылки, ни к одному известному коду не относящиеся (и умеет еще много другого, конечно же ;)
Первым делом надо загрузить в Arduino тестовый скетч IRecvDemo и решительно испытать на нем все необходимые кнопки вашего ИК-пульта, просматривая результат в окне Serial Monitor-а:
/* * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv * An IR detector/demodulator must be connected to the input RECV_PIN. * Version 0.1 July, 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com */ #include <IRremote.h> int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } }
В результате вы получите некоторую таблицу значений, которую можно использовать уже в скетче исполнительного устройства.
И, кстати, вызов decode неблокирующийся. После его вызова управление сразу же возвращается и, таким образом, скетч может работать и "заниматься своими делами", принимая команды от пульта в фоновом режиме.
Не забудьте также посмотреть самое лучшее в инете описание IR-кодов на страницах SB Projects.
21.12.2012
ArduinoIDE 1.0.3
Вышла очередная версия ArduinoIDE 1.0.3. Самым значимым в списке изменений идет новая плата - Arduino Esplora (Leonardo-совместимая, на основе ATmega32u4):
В отличие от предыдущих плат, на этой есть сенсоры: фоторезистор, акселерометр, датчик температуры. Также есть четыре кнопки, аналоговый джойстик, пьезоизлучатель, трехцветный светодиод и линейный потенциометр. Разъемы для стыковки с LCD и несколько входов / выходов тоже присутствуют:
Рулить всем этим многообразием помогает Esplora Library. Вообще, конечно же - это просто мечта для гаджетоманов-ардуинокопателей, которым не жалко потратить 65 USD. Но перед покупкой все-таки рекомендую пробежаться по Getting Started With Esplora.
Но вернемся к новой версии ArduinoIDE: нас ожидает пара незначительных фиксов, связанных с Leonardo-совместимыми платами. Один касается бутлоадера, другой - массива digital_pin_to_timer_PGM, описанного в variant-файле.
Первый фикс реализует запуска скетча сразу после подачи питания (точнее, теперь-то это наконец работает). Что до variant-файла, то там банально восстановили кусок массива, пропавший где-то между версиями 1.0.1 и 1.0.2 - потенциально это могло вызывать фатальные неприятности при попытке включить аппаратный ШИМ на тех пинах, которые такой возможности не имели.
Исправления хоть и мелкие, но вполне разумные, поэтому рекомендую владельцам Freeduino 32u4 а) провести обновление поддержки своей платы в ArduinoIDE с помощью нового variant-файла и б) при наличии программатора, прошить новый бутлоадер. Со старым бутлоадером Caterina, естественно, тоже будет работать, но начиная с этого момента во все Leonardo-совместимые контроллеры в нашем магазине по умолчанию будет прошит новый вариант. Так что смело качайте и распаковывайте этот файл в каталог с установленной ArduinoIDE 1.0.3 (не забудьте ее перезапустить, чтобы изменения актуализировались).
В новостях также сообщается и про обновление кода для бутлоадера ATmega8, а также про поддержку скорости 600 бод библиотекой SoftwareSerial.
Словом, типичный релиз под новую плату, в который число случайно вошли несколько изменений.
И, судя по всему, число клонов Leonardo будет расти. Взять, например, новую "женскую" плату от Seeedstudio:
Если присмотреться, то видно несколько моментов:
- есть колодки пинов и вилка программирования, так что скорее всего предполагается стыковка с шилд-платами;
- присутствует холдер с батарейкой и переключателем питания - следовательно, возможна автономная работа и трехвольтовое питание платы/схемы;
- на плате - ATmega328P и FT232RL (авторы утверждают, что в продажу пойдет плата именно с ATmega32u4);
- присутствует пара SMD-светодиодов ;)
Плата все еще не имеет названия, и если на языке вертится что-то подходящее - напишите им немедленно! ;)
Подписаться на:
Сообщения (Atom)
















