21.01.2013

Используем HNYDuino R2

Новогодние праздники давно окончились, а после крещения многие уже избавились от своих новогодних деревьев. Конечно, если только это не HNYDuino R2 - с ней можно развлекаться хоть круглый год. Рассмотрим более подробно, как именно это делается ;)




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-совместимых плат хотя бы минут десять, успели усвоить простые истины:
  1. Полноразмерные платы типа Arduino UNO удобны для пристыковывания шилдов;
  2. Миниатюрные платы типа 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-светодиодов ;)
Плата все еще не имеет названия, и если на языке вертится что-то подходящее - напишите им немедленно! ;)