31.12.2009

7DA!

Приближается новый, 11111011010-ый год. 

Желаю, чтобы в новом году было поменьше глюков, побольше новых чипов, море идей и замыслов, а также свободного времени, чтобы все это воплотить.... на благо всему живому, разумеется! ;)

24.12.2009

howtomakekit

По причине предстоящего пополнения, перемещаю все пошаговые инструкции о сборке из наборов деталей в howtomakekit.blogspot.com.

23.12.2009

OpenSolaris и Arduino

Народ вовсю обсуждает, что теперь ArduinoIDE будет работать и под OpenSolaris x86.

Думаю, уже пора делать версию для iPod и Xbox.

22.12.2009

Уроки Wiring (1)

На досуге немного статей для тех, кто делает самые первые шаги и плохо представляет себе базовые возможности Arduino (рекомендую к прочтению отдельную статью-faq на эту тему).

Урок 1. Из чего состоит Arduino?

Итак, вы собрались поразить мир невероятным электронным устройством и выбрали в качестве платформы Arduino. Но вот вопрос - а что у него, собственно, внутри?

Наверное, вы уже поняли, что на панельке возвышается "сердце" системы - микроконтроллер фирмы ATMEL ATmega328P-PU (иногда это может быть и ATmega168-20PU, и даже - ATmega8-16PU, пока для простоты считайте, что они отличаются лишь максимально возможным размером программы). Если ваши задумки не помещаются в ATmega328P, не паникуйте! Для этого придумали Arduino Mega.

Вернемся к тому, что расположено на плате:



  1. Разъем USB (квадратный, или B-типа) - основной канал общения Arduino с компьютером. Почти всю работу выполняет припаянный справа многоногий чип FT232RL, представляясь компьютеру в виде виртуального COM-порта. Во время обмена моргают светодиоды Rx и Tx. Кроме того, с этого же разъема Arduino будет получать стабилизированное питание +5В - именно от него питается микроконтроллер ATmega.
  2. Разъем питания 2.1/5.5 - альтернативный способ подать питание на Arduino, если под рукой нет компьютера с разъемом USB (c такой ситуацией приходится сталкиваться чаще, чем можно подумать). Когда будете подбирать подходящий блок питания, обращайте внимание на то, что плюс должен быть в центре, а напряжение - в пределах 7..20 Вольт. Идеально было бы питать его от 9 Вольт, иначе стабилизатор начинает ощутимо нагреваться. Часто переносные проекты питают от компактного и относительно недорогого элемента "крона" (6F22).
  3. Кнопка сброса. Работает в точности, как в "большом брате" - нажимаете ее, и все начинается с самого начала!
  4. Колодки цифровых пинов. Цифровые (digital) пины Arduino нумеруются от 0 до 13 и могут превращаться во входы или выходы - причем их роль можно менять прямо по ходу пъесы выполнения программы. Кое-где на них написано PWM, что означает возможность аппаратного ШИМ (широтно-импульсная модуляция, которую мы рассмотрим позже). AREF - это вход опорного напряжения внутреннего АЦП, может пригодиться при работе с аналоговыми значениями. GND - это "земля" или "минус" вашего источника питания. 
  5. Колодки аналоговых и прочих пинов. Справа расположены аналоговые пины - 0..5, их можно использовать для считывания аналоговых сигналов. В отличие от цифровых входов, которые при чтении могут давать только единицу или ноль, аналоговые выдадут вам число от 0 до 1023, в зависимости от текущего приложенного к ним напряжения. Если не хватает цифровых пинов, можно превратить эти выводы в цифровые - и тогда они получат номера 14-19. Левая часть колодки имеет специальное значение, разберем чуть подробнее:





    • RESET - дополнительный вход сброса. Зачем, если и так уже есть кнопка? Очень просто - на пины может надеваться так называемая Shield-плата со схемой, которой управляет Arduino, и до кнопки уже будет не добраться. Поэтому часто на Shield-плате делают еще одну - дублирующую и соединяют с этим входом. Сброс - это святое! ;)
    • 3V3 - питание +3,3 Вольта. Оно получается как бы "побочным" способом от USB-чипа FT323RL. Не исключено, что оно может пригодиться, но увы - допустимый ток всего 50мА! Для сравнения - порт USB может отдавать в 10 раз больше - 500мА.
    • 5V - питание +5 Вольт. Это линия питания микроконтроллера и всей схемы. При питании от внешнего источника, может отдавать до 1,5 А, так что смело используйте, но учтите - помехи на этой шине могут серьезно осложнить жизнь микроконтроллеру! 
    • GND - земля, причем сразу два контакта подряд. Так сделано для удобства.
    • VIN - напряжение, которое поступает прямо с разъема питания [2]. Те самые 7..20 Вольт о которых мы уже упоминали.



  6. Светодиод L. Это специальный тестовый светодиод, подключенный к цифровому входу номер 13. У Arduino нет встроенного дисплея или динамика и иногда единственный способ сообщить миру о том, что в вашей микропрограмме все плохо в порядке - помигать именно этим светодиодом.
У пытливых, наверное, уже созрел вопрос - а что будет, если подключить питание и к USB, и к разъему питания? Облако едкого дыма Да ничего страшного не произойдет - специальная схема на плате Duemilanova выберет, откуда брать питание. В других платах - например, в Diecimila, надо было механически переставлять джампер. Так что эта автоматика - приятное (в основном ;) усовершенствование.

Подводя промежуточный итог: по большому счету, Arduino состоит из микроконтроллера, моста USB-COM и светодиода "L". Микроконтроллер сам по себе содержит в себе много интересного, по умолчанию доступно:

  • универсальные цифровые пины ввода/вывода - 14 штук ( 0 - 13 )
  • аналоговые пины для чтения через АЦП - 6 штук ( 0 - 5 )
  • два пина, которые могут быть источником прерываний ( 2 и 3 )
  • таймер, который отсчитывает число миллисекунд, прошедших с момента старта.
Если подключить некоторое количество библиотек, можно также получить доступ к таким ресурсам:
  • энергонезависимая память (EEPROM) и память программ (FLASH);
  • таймеры;
  • последовательный порт (UART);
  • двупроводная шина, совместимая с I2C.
Что дальше? Конечно же, программировать!

(продолжение следует: Урок 2. Запуск ArduinoIDE)

20.12.2009

Удвоение пинов Arduino (1)

Часто приходится слышать, что "буду покупать Arduino Mega, потому что в обычном Arduino мало выводов". Действительно: а что делать, если цифровых выводов Arduino хронически не хватает? Тем, кто настроен на покупку, настоятельно рекомендую Freeduino Mega 2560 - по крайней мере, и выводов, и возможностей у нее побольше.

Но есть и более дешевый способ, о котором не подозревают начинающие. Попытаемся исправить ;)

Часть I. Размножение выходов, или ShifOut

Понадобится логическая микросхема, которая принимает данные последовательно, а выдает – параллельно. Наиболее популярным решением является 74HC595:



Полностью ее название звучит как 8-bit serial-in, serial or parallel-out shift register with output latches; 3-state, а по-русски - восьмибитный сдвиговый регистр с последовательным входом и последовательным или параллельным выходом с защелкой и высокоимпендансным выходом.

Для нас это значит, что микросхема умеет последовательно, бит за битом, принимать данные по двум входам и по команде "покажи" выставлять полученный код на своих восьми выходах. Заглянем внутрь (а там сплошные триггеры ;):



"Защелка" (по англ. latch) – это регистр хранения на выходе, который удерживает предыдущий принятый код, пока последовательным способом принимается очередная порция данных. В процессе сдвига данные передаются слева направо между триггерами FFx: со входа DS в FF0, с выхода FF0 в FF1 и так далее; самое последнее значение "выталкивается" из FF7 и теряется навсегда в окружающем пространстве-времени. Но расстраиваться не стоит - это же сдвиговый регистр, ему так и положено работать! ;) В нужный момент FFx переписываются "вниз" - в триггеры LATCH и, если на то будет инверсный разрешающий сигнал OE (Output Enable), код появится на выходах Q0-Q7.

Eagle в курсе про 74HC595, искомый элемент располагается в библиотеке "74xx-eu", секция "74*595". Рисуем простейшую схему:


Немного смущает различное наименование выводов чипа 74HC595 в datasheet и в Eagle - видимо сказывается длительный срок жизни этой микросхемы. Но в любом случае, смысл у них один и тот же. На схеме сделаны следующие соединения:
  • вывод 8 – земля микросхемы 
  • вывод 16 – питание микросхемы 
  • вывод 13 - инверсное разрешение вывода информации – уровень логического нуля на этом входе разрешает выставить хранимый в защелке код на параллельные выходы (Q0-Q7, они же QA-QH). Для простоты подключаем к GND - всегда выводить;
  • вывод 10 – инверсный вход сброса сдвигового регистра. Тоже обходимся без него, поэтому делаем его пожизненно неактивным -  подаем туда логическую единицу (на то он инверсный), притягивая к питанию VСС;
  • вывод 14 - последовательный вход данных от МК. Подключаем его к digital 11;
  • вывод 11 - вход синхронизации данных, подключаем к digital 12;
  • вывод 12 - синхронизация защелки, подключаем к digital 8.
Как видите, в самом простом варианте у Arduino расходуются только три цифровых выхода.

#define DS   11
#define SHCP 12
#define STCP 8

void send595(byte output) {
  for (int i=0;i<8;i++){
    digitalWrite(DS,output & 1);
    digitalWrite(SHCP,LOW);
    delay(1);
    digitalWrite(SHCP,HIGH);
    output >>= 1;
  }
  digitalWrite(STCP,HIGH);
  delay(1);
  digitalWrite(STCP,LOW);  
}

void setup() {
  pinMode(DS,OUTPUT);
  pinMode(SHCP,OUTPUT);
  pinMode(STCP,OUTPUT);
  digitalWrite(SHCP,LOW);  
  digitalWrite(STCP,LOW);  
}

void loop() {
  for (int k=0;k<256;k++) {
    send595(k);
    delay(100);
  }
}


Если к каждому из выходов SV2 подключить по светодиоду, то мы сможем визуально последовательно наблюдать, как выглядят двоичные числа от 0 до 255 (снова и снова, пока работает loop ;).

Данные передаются по линии DS, при этом микросхема 595 воспринимает их по фронту сигнала SH_CP - это такой момент времени, когда сигнал переходит из состояния логического нуля в единицу. По окончании приема очередных восьми бит надо ненадолго установить ST_CP, чтобы поместить данные в защелку.

Я поместил вывод байта в отдельную процедуру send595(output) для наглядности, но теперь пора открыть страшную тайну пояснить, что в языке Wiring предусмотрен специальный оператор shiftOut(dataPin, clockPin, bitOrder, value), выполняющий побитовый вывод байтового значения value в порядке bitOrder (имеется ввиду направление вывода value - от старшего бита к младшему или наоборот - от младшего к старшему) через dataPin и clockPin. Как раз подходит для нашего случая:

#define DS   11
#define SHCP 12
#define STCP 8

void setup() {
  pinMode(DS,OUTPUT);
  pinMode(SHCP,OUTPUT);
  pinMode(STCP,OUTPUT);
  digitalWrite(SHCP,LOW);  
  digitalWrite(STCP,LOW);  
}

void loop() {
  for (int k=0;k<256;k++) {
    shiftOut(DS,SHCP,LSBFIRST,k);
    digitalWrite(STCP,HIGH);
    delay(1);
    digitalWrite(STCP,LOW); 
    delay(100);
  }
}


Подведем промежуточные итоги.

Мы пожертвовали тремя,  получили 8, в итоге добавив 5 дополнительных входов. У обычного Arduino 19 выходов, и, теоретически, можно использовать 6 групп по 3, получив 6 * 8 = 48 выходов.

Но не спешите делать вывод, что это предел. Предела вообще нет! Благодаря специальному последовательному выходу Q7`, можно объединить несколько микросхем, получив 16, 24, 32 и т. д. разрядов:


Теперь о грустном.  Конечно, наращивать число ножек до бесконечности не получится. Препятствовать этому будут требования к максимальной частоте изменения сигнала на выходе.

Чтобы изменить состояние хотя бы даже одного из выходов 75HC595, нам придется прогнать  последовательно все 8, 16, 24, 32... разряда через вход DS. Чем больше разрядов - тем больше время установки. А чем больше времени тратится на изменение одного разряда, тем меньше скорость изменения выходного сигнала. Впрочем, вполне вероятно, для некоторых приложений это ограничение не будет существенным, попробуем подсчитать.

На вывод одного разряда необходимо как минимум выполнить одну ассемблерную инструкцию сдвига, одну - вывода в порт и две - на переход в цикле. МК построен по RISC-архитектуре и выполняет одну операцию за такт, работая на частоте 16 МГц. Значит, четыре такта он обрабатывает за 250 нс. Таким образом байт будет выведен не менее, чем за 2 мкс, а предельная частота составит 0,5 МГц (это грубая прикидка верхнего значения -  буду признателен, если кто-то подсчитает точнее).

Побороться с этим пределом будет довольно сложно, потому что все известные мне пути довольно ограничены:

  • повысить тактовую частоту МК больше 16 МГц: потеряем базовую совместимость с Arduino, придется исправлять константу в библиотеке, менять кварц на плате. Больше 20 МГц не получится, увы - а это прирост всего-то на 25%;
  • повысить питание 75HC595N: таково уж свойство КМОП-логики - чем больше напряжение, тем быстрее работает. Но МК Arduino (тоже построенный на КМОП) и так работает на предельном напряжении 4,5..5,5В, и вот его-то ускорить уже не удастся;  В то же время, быстродействие зависит и от серии микросхемы - можно по крайней мере не выбирать древние и медленные. Ставьте современные 74HC595 или даже 74HCT595 и будете иметь в запасе предел 100 МГц, который с запасом "накрывает" способности нашего МК в Arduino.

Таким образом, с выходами разобрались.

А что нужно делать, чтобы размножить входы? Читайте во второй части.

(использованы материалы из статьи Serial to Parallel Shifting-Out with a 74HC595)

18.12.2009

Головолупа

За неимением микроскопа, решил немного облегчить себе жизнь с помощью лупы с головным креплением:



Конечно, микроскоп дает большее увеличение, но тут тоже можно "поиграться" увеличением, комбинируя линзы - возможны варианты 1.8, 2.3, 3.7 или 4.8:



Причем делается это одной рукой, без лишних усилий. Также есть подсветка - слева и справа по лампочке, которая питается от двух батарей AAA:



Ну и наконец, если надо вернуть обратно нормальный обзор, лупу можно поднять над головой:



Это чуть лучше, чем держатель с лупой, руки по-прежнему остаются свободны. Несколько странным показалось, что используется именно лампочки накаливания, а не светодиоды.

В целом, все равно хочется иметь микроскоп, но сложно убедить персональную жабу отдать 15000-20000 руб за то, что и так есть на работе ;)

16.12.2009

Опрос по материалам

Спасибо всем 33 отважным людям, которые рискнули принять участие в опросе (надеюсь, все-таки это было действительно 33 человека, а не бесчестные накрутки ;)

Итак:
  1. Требующих прояснить вопросы с базовым синтаксисом и тех, кто и так уже все знает оказалось равное количество - по трое, или по 9% ответов. Вот если бы эти две категории подружить:  те, кто все и так знает, отлично бы разъяснили это тем, кто не знает почти ничего ;) Я же постараюсь в скором времени выложить перевод Arduino Notebook - неплохое, но краткое пособие для начинающих (с принципиальными схемами).
  2. Следующими идут те, кто хочет разобраться с ассемблером и AVR Studio - 6%. Замечу, что этому вопросу посвящено достаточно много ресурсов, и часто они получше моего. Быть может, коснусь процесса отладки.
  3. Третье с конца место делят те, кто хочет узнать больше про Eagle и про Shield-платы - их по 27%. Темы очень связанные, ибо те, кто полезет в Eagle на почве Arduino-мании, неминуемо попробуют создать в нем Shield-плату. Постараюсь им помочь.
  4. По 33% получили беспроводные / проводные сети и аналоговые датчики. Собираюсь осветить работу с недорогим оборудованием и того, и другого типов (про датчики температуры я уже писал).
  5. Управление моторами интересует 36%, и эту тему я затрагивал только вскользь, однажды. Разовью на примере серво, приехавших ко мне недавно из поднебесной.
  6. Ну и первое место... 45% ответов (!) за Processing. Честно говоря, в шоке, хотя и понимаю, почему эта тема интересна. Я сам никогда не использовал этот язык, но в основе его все та же идея - простой и интуитивный инструмент для дизайнеров, заточенный под визуализацию. В Arduino существует библиотека Firmata для общения с Processing, и наоборот - для Processing тоже есть библиотека общения с Arduino. Таким образом, можно быстро визуализировать  работу микропрограммы Arduino. Обращаюсь к тем, кто уже имел с этим дело - сделайте доброе дело, соорудите статью для общественности (возьму на себя корректуру любого уровня)! Я же пока углубляюсь в книгу "Physical Computing" Салливана и Иго, где есть неплохое введение.
Кстати, за окном жесткий минус, травить платы на неостекленном балконе проблемно.

Зато у меня будет достаточно времени для статей ;)

13.12.2009

Программирование SO-корпусов

Недавно мне подкинули вопрос: нужно запрограммировать ATtiny2313-20SU до пайки, как это сделать? 

Действительно, в отличие от корпуса DIP, предназначенный для поверхностного (SMD) монтажа SO-20 вызывает ряд вопросов, среди которых главный - где брать панельку?!



Переходники на DIP существуют, но стоят около 1000 рублей. И тут я вспомнил про замечательное видео на easyelectronics.ru, где демонстрировали, как пользоваться Розе на примере платы подобного переходника. Недолго думая, я взял Eagle и соорудил простую печатную плату:



Чтобы сделать ее более универсальной, я разместил на ней кварц 4.0 МГц (общеизвестно, что внутрисхемное программирование не запустится без питания и тактовых импульсов) и снабдил разъемом BH-10R, чтобы можно было подключать к любому программатору, а не только к USBasp.

Сначала надо аккуратно установить программируемую "тиньку" на контактные площадки, соблюдая положение первого контакта:



Затем воспользоваться самым обычным канцелярским биндером (зажимом для бумаг), на фото экземпляр 15 мм шириной и с 9 мм "глубиной" захвата:





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



Резюме: в случае промышленного применения для массового программирования, стоит обратить внимание на время установки микросхемы в подобную панельку. Я не знаю, сколько занимает это в "дорогой" панельке-переходнике, но зато переходник, полученный в домашних условиях выглядит значительно дешевле. Ну и всё это актуально только для случая, когда в схеме не предполагается ICSP-разъема.



Как всегда, публикую файлы для Eagle и экспортированное в eps тонер-трансфер изображение для изготовления по технологии ЛУТ. Лицензия - сс sa ;)

08.12.2009

One Chip Arduino

Японец Кимио Косака (Kimio Kosaka), ранее уже замеченный за изобретением бит-банг программинга для Arduino, создал на основе Metaboard вот такой шедевр:



Да, зрение вас не подвело! Печатной платы вовсе и нет, выполнено на проволочном каркасе.



Идея мне нравится, но... насколько удобно будет одевать Shield-плату без риска погнуть конструкцию?







Обратите внимание: CC-NC-SA, использование в коммерческих целях запрещено. Вот к чему приводит пофигистичность в вопросах лицензирования (я про Metaboard, у которого его просто не было).

05.12.2009

USB-TTL

Идея проекта  V-USB - дать миру свободную программную реализацию для микроконтроллеров ATMEL, в которых отсутствует аппаратная поддержка шины USB. Основная цель - упростить и удешевить жизнь самодельщикам,  которые хотят использовать USB в своих проектах.

Экономия оборачивается мелкими ограничениями - расходование 1,5К памяти программ, использование внешнего кварца из определенного набора значений (в экзотическом варианте допускается использовать и внутреннюю RC-цепочку, но тогда тогда надо включить процедуру автокалибровки от USB) жертвование одним пином, на который можно повесить прерывание.  Еще один минус состоит в относительно низкой пропускной способности этой реализации, а также постоянно открытый вопрос о соответствии стандарту - все ожидают, что вот-вот Windows перестанет поддерживать режим low speed bulk transfer, и наступит конец света, Windows перестанут пользоваться будет как-то неприятно.

Тем не менее, для элементарных и компактных низкоскоростных устройств, собранных своими руками - это настоящая находка, что и говорить!

Но представим на секунду, что проекта V-USB не существует. Можно попробовать достать микроконтроллер с аппаратной поддержкой USB - например, что-то из этого списка. Дорого / не достать / не хотите менять МК? Тогда поможет внешний USB-чип, есть на любой вкус - для USB 2.0 и для USB 1.1.

Если вы держали в руках Arduino, то наверняка обратили внимание на микросхемку с махонькими ножками в два ряда. Не судите по размеру: это мегапопулярнейший чип FT232RL, производимый фирмой FTDI:



FT232RL представляет собой мост USB-TTL. При этом для работы ей не нужно почти ровным счетом ничего: питание она берет от шины USB, внешнего кварца не требует, драйвера - свободные и под все ОС,  обеспечивает все сигналы COM-порта (и более того). Плюс к этому имеет 1К EEPROM, где прошит уникальный заводской номер и зарезервированный FTDI для этих чипов VID/PID. Кстати, утверждается, что диапазон PID-ов (Product ID) можно получить бесплатно, если есть необходимость. Но обычно этой необходимости нет: после подключения к шине USB, с точки зрения программ, в компьютере просто появляется еще один COM-порт, хоть и с неимоверно большим номером - COM33 (разумеется, номер меняется, можно выставить хоть COM1).

На выходе мы получаем последовательный порт с уровнями TTL, который можно видеть в спецификациях многих микроконтроллеров как UART. На Arduino это цифровые пины 0 и 1, или PD0 и PD1 на ATmega.

Без минусов тоже не обошлось: цена и мелкий шаг ножек (корпус SSOP28). Многих это останавливает, но не всех: я решил опробовать ЛУТ на пределе возможностей - шаг ножек составляет 0,65 мм, а ширина контактной площадки - всего 0,30 мм.

Начнем со схемы:



Это вторая версия, в которой появились некоторые "излишества". Первое - это самовосстанавливающийся предохранитель FUSE, защищающий линию питания от короткого замыкания. Cветодиоды Rx / Tx хорошо скрашивают досуг в процессе обмена данными, а разомкнутый джампер JP1 позволяет не подавать питание на подключаемую схему. Резистор R3 - это просто перемычка, помогает при разводке.

Откуда-то из моего бардака всплыло устройство-аналог из проекта Arduino - в свое время оно носило название Arduino Stamp. Выполнено на двухсторонней плате и имеет размер 18 х 33 мм:



Я попытался узнать у коллег на работе, какой размер SMD-элементов самый популярный в этом сезоне - мне сообщили, что 0603. Внутренне я долго сопротивлялся этому, и установил с самим собой компромисс на типоразмере 0805 - при этом размер элементов получается целых 2 х 1,25 мм: мне даже удалось найти элемент, который я случайно смахнул со стола! ;) Перемычка R3 имеет размер 1206, а предохранитель и вовсе "гигансткий" - 1812.

Я немного увеличил габариты платы - до 22 х 39 мм, и развел односторонним способом:



Вопреки моим ожиданиям, рисунок протравился довольно четко:



Визуально получилось ненамного габаритнее, чем двустороннее исполнение:



Оригинальная синенькая плата экспортирует наружу все выходные сигналы FT232RL, но на практике  они нечасто бывают нужны -  гребенки для них по умолчанию не распаивают.
Кстати, сам FTDI тоже выпускает подобные переходники, только именуются они как "отладочная плата" и стоят негуманных денег:



Называется он MM232R, чип там FT232RQ, совсем микроскопический, но... такую плату уже не установишь на беспаечную макетку - из-за нелепой конфигурации гребенки. А вот у Arduino Stamp она правильная ;)

В силу своей односторонней природы, разъемы, вилки и светодиоды пришлось расположить на одной стороне платы, а все остальные SMD-элементы - на другой:



В итоге все заработало, естественно с первого раза. Подключал к антикварной LilyPad Main Board, у которой нет USB.

Если будете повторять, хочу обратить внимание, что надо сначала паять предохранитель, а только потом - микросхему, так удобнее. Кроме того, плату надо обязательно равномерно залудить, наилучших результатов можно добиться при помощи сплава Розе.

Файлы для скачивания (лицензия cc-sa):
По традиции, экземпляр выкладываю на Молоток.ру для желающих купить.

03.12.2009

Сухая очистка для паяльника

Мимолетно заглядывая к коллегам в монтажную, не переставал удивляться, зачем это они принесли из дома металлическую мочалку для мойки посуды. И, главное - как они ее используют?

Недавно решился задать этот вопрос в слух. Надо мной, конечно же, совершенно справедливо посмеялись: объяснили, что это специальная очистка для паяльника.



Я попросил попользоваться и пришел в полный восторг: нагар на жале образуется довольно часто, надо чистить на бумажке или губкой. А тут - ткнул в латунного "ежика" пару раз - и готово! Одно-два движения, жало даже остыть не успевает.

Хотя, говорят, некоторые и руками умудряются чистить, но мне лично руки дороги как память ;)

Называется это чудо "устройство для сухой чистки жала паяльника" и продается много где: но до тех пор, пока мне не объяснили что это такое и как этим пользоваться, я не обращал на него внимания.

Отсюда мораль: "век живи, век учись" и никакой интернет не заменит общения с живыми людьми.

30.11.2009

Новый опрос

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

Поэтому, добавил новый опрос на правую панель: о том, на какие темы статьи от меня ждут читатели.

Пока приходят ответы, ищу гетинакс стеклотекстолит и SMD-элементы, уж больно заманчиво выглядят результаты:

27.11.2009

SMPReaderUSB - финальная версия

Финальная версия устройства чтения / записи модулей памяти Электроника МК-90. От начальной идеи, оно неспешно эволюционировало в законченный девайс:



Файлы:

  • Для тех, кто в море под Windows: скачайте программу-инсталлятор, она установит драйвер, необходимые dll-ки и саму программу чтения/записи;
  • Полный архив с исходниками firmware и software, схемой и разводкой односторонней печатной платы в Eagle (последние под лицензией Creative Commons Attribution-Share Alike 3.0 Unported);
  • Для тех, кто хочет изготовить печатную плату: файл eps (extended postscript). Загрузите его с разрешением 720 dpi в Photoshop или Gimp, что гарантированно даст качественный отпечаток.
Поддерживается также и Linux (он теперь всегда поддерживается, живу я теперь в нём ;)  В архиве бинарники, собранные под Ubuntu 9.10. Искренне прошу прощения, что не сделал полноценный пакет .deb, но компиляция элементарна: надо поставить libusb-dev и g++, а потом запустить make.sh.

Использование:
  • Чтение образа СМП: smpusb read -f filename.bin
  • Запись образа СМП: smpusb write -f filename.bin
  • Проверка батареи: smpusb voltage

Если вдруг возникает необходимость обновить прошивку, надо:
  • Скачать новое firmware с http://mk90.blogspot.com
  • Отключить питание (отключить и от компьютера, и от СМП)
  • Поставить джампер JP1 в положение PGM
  • Подключить к компьютеру
  • Запустить программу обновления:
    smpreader_updater smpreaderusb_atmega8.hex
  • Вернуть JP1 в прежнее положение, отключить питание.
При следующем включении заработает новая прошивка.

Предупреждаю, что схема несовершенна, поэтому при подключении модуля начинает слегка расходоваться его батарея. Посчитав усложнение схемы неоправданным, предлагаю взять за правило: попользовался - отключи! Тем более, что модуль в большинстве случаев используется именно для хранения данных или их переноса между PC и МК-90.

Как всегда, буду рад конструктивной критике и глупым, но грамотно сформулированным  вопросам ;)

Кстати, уважаемый smallkaa в комментах уверял меня, что low speed bulk-transfer mode под Linux неработоспособен. Мне кажется, что это мнение все-таки устарело ;)

19.11.2009

LibUSB

Библиотека libusb и ее аналог libusb-win32 обычно используются совместно с устройствами, основанными на V-USB. Конечно, жесткой зависимости тут нет - одно может существовать без другого и наоборот. Однако, если Вы не хотите ставить DDK под Windows и изучать азы написания драйверов USB, лучше все-таки воспользоваться этой библиотекой: сэкономите кучу времени. Кроме того, логику работы со стороны PC-хоста вы можете писать и отлаживать как обычное приложение, не ломая голову над тем, как распечатать из ядра отладочную информацию.

I. Windows

libusb-win32 существует в двух вариантах.

А. Фильтр

Для установки фильтра надо запустить  libusb-win32-filter-bin-x.x.x.x.exe. Инсталляция выглядит довольно стрёмно: либа добавляется в цепочку обработчиков USB, и на некоторое время все USB-устройства в системе отваливаются. Именно поэтому никогда не пытайтесь установить фильтр с файловой системы, расположенной на USB-устройстве. В Vista надо перед установкой открыть свойства и указать режим совместимости с Windows XP. Перезагрузка не требуется.

Б. Драйвер

Когда аппаратное устройство отлажено, более разумным выглядит инсталляция в виде драйвера. Для установки потребуются привилегии администратора, но зато и никакого подвисания в процессе инсталляции не будет. Драйвер оседает в системе в виде inf-фала, особой процедуры удаления не предусмотрено.

Кстати, так будет нагляднее при просмотре диспетчера устройств: можно прописать соответствующие текстовые строки. В противоположность этому, при подключении нескольких устройств на V-USB в режиме фильтра, они будут выглядеть одинаково. Чтобы отличить их одно от другого, придется хитрить ;)

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

Итак, качайте и распаковывайте файл libusb-win32-device-bin-x.x.x.x.tar.gz. В каталоге bin есть inf-wizard.exe, он поможет нам создать персональный inf-файл для нашего устройства (получается, что libusb0.sys/dll едины для всех, а вот inf-файлов может быть сколь угодно много). Чтобы не вводить руками VID, PID и имя устройства, перед запуском мастера подключите его к USB:



При использовании кода V-USB на условиях бесплатной лицензии, VID и PID одинаковы у всех разработчиков, зато Description должен быть уникальный. За деньги, естественно, вам выделят персональные VID/PID, не вопрос ;)

После сохранения в отдельный каталог, мы получим:
  • *.inf - файл описания установки драйвера
  • *.cat и *_x64.cat - здесь должны быть цифровые подписи драйверов, но для этого надо быть сертифицированным Micro$oft-ом. А без этого придется увидеть предупреждение о том, что Windows "с камнем на сердце так и быть, заинсталлирует какой-то непонятный драйвер без подписи".
Что дальше?

Надо добавить в этот же каталог файлы libusb0.dll,  libusb0.sys,  libusb0_x64.dll и libusb0_x64.sys. После этого на него можно ссылаться в ответ на вопрос мастера установки драйверов, где же стоит пошукать драйвер "для неизвестного устройтва" или даже провести установку заранее - на *.inf по правой кнопке вызвать контекстное меню и выбрать "Установить".

Если надо позаботиться о пользователе, который программы запускает исключительно через ярлыки, а слово "распаковать" приводит его в суеверный ужас ;) можно сделать и полноценный инсталлятор. Рекомендую пользоваться надежной и при этом абсолютно бесплатной программой Inno Setup. Авторы libusb позаботились о таком развитии сюжета и положили в архив файл examples\install_driver_template.iss - это кусочек скрипта инсталляции файлов драйвера на языке Inno Setup. Предположим, выделенный каталог называется drivers, а inf-файл - MyCoolDevice.inf:

[Files]
Source: "driver\*.sys"; DestDir: "{app}\driver"
Source: "driver\*.cat"; DestDir: "{app}\driver"
Source: "driver\*.dll"; DestDir: "{app}\driver"
Source: "driver\*.inf"; DestDir: "{app}\driver"
Source: "driver\*.dll"; DestDir: "{win}\system32"; FLags: replacesameversion restartreplace uninsneveruninstall

[Run]

; invoke libusb's DLL to install the .inf file
Filename: "rundll32"; Parameters: "libusb0.dll,usb_install_driver_np_rundll {app}\driver\MyCoolDevice.inf"; StatusMsg: "Installing driver (this may take a few seconds) ..."

Добавив эти строки в соответствующие секции любого готового скрипта Inno Setup, мы обеспечиваем установку драйверов в систему.

II. Linux

В linux все выглядит схожим образом, но немного проще. Проверьте в вашем менеджере пакетов, установлен ли libusb, например для Debian/Ubuntu/etc:

dpkg -l | grep libusb

Если нет, можно поставить:

sudo apt-get libusb-0.1-4

Для разработки программ потребуется установить девелоперский пакет libusb-dev:


sudo apt-get libusb-dev



После этого можно компилять, указывая необходимость линковки с libusb:

gcc -lusb myproject.c


Для разработчиков пакетов надо позаботиться о зависимости, например в файл debian/control добавить правило Depends:

Depends: libusb-0.1-4

Это вынудит менеджер пакетов ставить libusb с новым пакетом автоматически. Разумеется, потребуется правильно настроенный apt/sources.list.

13.11.2009

Вариант USBasp

Вдохновленный освоением ЛУТ ;) я решил потренироваться и развести печатную плату для своего любимого программатора USBasp. Кроме тренировки, я преследовал две цели:

  1. Разместить в программатор в корпусе Ganita, дабы не сверлить боковухи под разъемы;
  2. Сделать легкие модификации в схеме.
Вот оригинал:



Из него я решил исключить R7 и посадить выводы 6 и 7 разъема X2 на землю. Автор собирался сделать поддержку отладки, но за несколько лет как руки у него до этого не дошли. Разводить плату без них проще, тем более, что для Arduino гораздо удобнее иметь 6-ти контактный разъем ICSP в дополнение к 10-контактному. Ну и давно хотел добавить во все решения на USB самовосстанавливающийся предохранитель. Стандартный плавкий 5x20 и места больше занимает, и замены требует при перегорании. Финальная схема:



На гетинаксе это выглядит так:



Предохранитель попался фирмы Bourns, на 300 мА. Специально посмотрел, как это работает - при коротком замыкании за 1-2 секунды ток в цепи питания падает практически до единиц мА, сам элемент ощутимо нагревается. Правда, на выбранном для бесчеловечных экспериментов лаптопе тоже самое происходило и без предохранителя, что указывает на то, что он уже и так установлен и в цепи питания USB-хоста. Тем не менее, пусть будет - так спокойнее:



Внутри добавилась вилка ICSP:



А вот десятиконтактную вилку программирования пришлось взять угловую (BH10R), как и джамперы - чтобы они были доступны с торцов. Вид в корпусе:



Виды с торцов:





Итак, джамперов там три, напоминаю, что:

  • JP1 подает питание в разъем программирования (программируемая схема питается от программатора);
  • JP2 устанавливается для режима программирования самого программатора при первой прошивке или последующих ее обновлениях;
  • JP3 устанавливается для МК, у которых низкая (менее 1,5 МГц) частота тактирования. Например, таковыми являются все чистые МК Arduino - фьюз-биты в них установлены по умолчанию на внутреннюю калиброванную RC-цепочку. Я в этом случае обычно программирую в два приема - сначала с этим джампером ставлю фьюзы для "быстрого" внешнего кварца, затем снимаю джампер и заливаю микропрограмму. Даже ATmega8 шить на пониженной скорости очень тоскливо, а для ATmega328 вообще можно уходить пить чай.

Кстати, одна очевидная деталь, которая обычно ускользает от внимания: чтобы запрограммировать МК этого программатора, надо не только установить JP2, но и позаботиться о питании - например, получить его с разъема программирования, замкнув JP1.

Вот одним таким программатором я прошиваю другой:



В остальном - никаких хитростей, программатор поддерживается avrdude и работает как часы, совместим с Windows и Linux.

Ссылки на Молоток.ру для желающих обзавестись готовым программатором или набором деталей. В отдельной статье я подробно расписал для новичков нюансы работы на этом ресурсе.

05.11.2009

ЛУТ: какой утюг лучше?

Перед вами два утюга.

Казалось бы, причем здесь Лужков какая разница для ЛУТ?



Для интересующихся поясню - слева самый дешевый китайский утюг, специально купленный за 450 рублей, мощность 2200 Вт. Справа - любимый инструмент жены, Braun средней пальцовости, мощность 1900 Вт.

Экспериментальным путем я установил следующее: если выставлять оба утюга на максимум нагревания, то с Braun-ом получаются более надежные отпечатки - они тяжелее смываются ацетоном и менее подвержены риску повреждения при отмачивании бумаги.

Таким образом, становится понятным, что хоть китайский hrenznaetktoname и мощнее по паспорту, но нагрев-то больше у Braun.

Что лучше?

Если на вашем шаблоне дорожки достаточно толстые, или же он вообще выполнен в стиле минимальной поверхности травления (травятся изолирующие канавки между проводниками, остается максимум меди) - тогда китаец удобнее, проще смывать тонер после травления. При обратной ситуации выигрывает Braun - он позволяет и дорожки рисовать потоньше, и отмачивать бумагу после отутюживания без особой нежности.

03.11.2009

Что такое Arduino?

Последний раз изменялось: 23.01.2012

После очередного вопроса о том, что это за Arduino, о котором я периодически здесь пишу, наконец с ужасом понял, что почему-то всегда считал, что это должно быть и так всем известно. Исправляюсь ;)

Arduino - это свободная платформа для быстрой прототипизации электронных устройств, основанная на микроконтроллере ATmega и языке Wiring, поддерживаемая сообществом энтузиастов. Вы легко можете вступить в сообщество, чтобы внести свой личный посильный вклад.

Для работы потребуется Arduino-совместимая плата. Такую плату можно купить или изготовить самостоятельно, в ней нет ничего сложного. Она состоит из микроконтроллера и порта для последовательного подключения к компьютеру. Есть варианты для USB и COM.


Далее, необходимо скачать и установить бесплатную ArduinoIDE - интегрированную среду разработки, позволяющую редактировать, компилировать и загружать результат компиляции в плату Arduino.

По большому счету - это всё, остальное - детали.

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

Действительно, именно так и кажется на первый взгляд. Контроллер ATmega168-20PU из семейства 8-битных RISC-процессоров ATMEL способен выполнять одну инструкцию за такт. Тактируется он, кстати, от кварцевого резонатора 16 МГц. Все его порты ввода-ввода выведены наружу, называются "пины" и разделены на цифровые и аналоговые (согласно  их назначению в самом микроконтроллере). Цифровые пины 0 и 1 помечены как "RX" и "TX" и  являются одновременно последовательным портом для связи с компьютером - к ним подключена микросхема FT232RL (мост с USB) или MAX232CPE (мост с COM). Реже встречается сопряжение с COM-портом на транзисторных ключах или полное отсутствие такового - тогда надо использовать внешнюю плату-переходник. На цифровом выходе 13 как правило расположен тестовый светодиод "L", который может быть использован разработчиком микропрограммы (ее часто называют скетчем - от англ. sketch - набросок) на свое усмотрение.

Так что, как видите, ничего сверхъестественного - напротив, все выглядит элементарно. На мой взгляд, секрет популярности скрыт в следующем:
  • открытые схемы и рисунки печатных плат
  • простота применения непрофессионалами
  • низкая стоимость Arduino-совместимой платы
  • поддержка сообщества

А теперь FAQ - немного вопросов и ответов, которые обычно задают в первую очередь..

(просмотреть полностью)

01.11.2009

Сборка Arduino Severino

Для сборки Arduino Severino потребуются следующие детали:
  • Печатная плата - 1 шт.
  • Микроконтроллер ATmega8/168/328P - 1 шт.
  • Панелька SCS-28 - 1 шт.
  • Стабилизатор напряжения L7805CV - 1 шт.
  • Кварц 16 МГц - 1 шт.
  • Емкость керамическая 22пФ - 2 шт.
  • Емкость керамическая 100нФ - 4 шт.
  • Емкость электролитическая 100мкФ х 16В - 2 шт.
  • Емкость электролитическая неполярная 10мкФ х 16В - 1 шт.
  • Диод 1N4148 - 2 шт.
  • Диод 1N4007 - 1 шт.
  • Транзистор BC547C - 1 шт.
  • Транзистор BC557С - 1 шт.
  • Резистор 1 КОм - 5 шт.
  • Резистор 10 КОм - 5 шт.
  • Резистор 4,7 Ом - 1 шт.
  • Дроссель 100 мкГн - 1 шт.
  • Вилка PLD06 2x3 - 1 шт.
  • Светодиод - 4 шт.
  • Тактовая кнопка - 1 шт.
  • Разъем DRB-9FА угловой на плату - 1 шт.
  • Гнездо питания 2.1мм на плату - 1 шт.
  • Гнездо PBS-08 1x8 - 2 шт.
  • Гнездо PBS-06 1x6 - 2 шт.
Из инструментов потребуются:
  • паяльник
  • припой (подойдет стандартный ПОС-61)
  • флюс (самая обычная канифоль)
  • кусачки
  • пинцет
Сильно облегчает работу также держатель с лупой и крокодилами.

Печатная плата выполнена на основе технологии ЛУТ и может быть изготовлена самостоятельно. Обычно, она уже просверлена, залужена в сплаве Розе и покрыта специальным канифольным лаком, предотвращающим окисление и способствующим пайке (плавится при t=85C, при необходимости легко удаляется спиртом).

1. Устанавливаем пять резисторов - R1, R2, R3, R4 и R6 (не выбрасывайте ножки, они нам еще пригодятся! ;) Отличить их можно по порядку цветов - коричневый, черный, красный, золотистый.



2. Устанавливаем пять резисторов 10К - R5, R7, R8, R10, R11. Сочетание цветов - коричневый, черный, оранжевый, золотистый.



Золотистая полоска на краю обозначает точность, в данном случае 5%. Если не доверяете цветам, всегда можно измерить омметром (мультиметром в режиме изменения сопротивления), но учтите, что теоретические 10К могут "плавать" в диапазоне 9,5...10,5 КОм. Arduino этого вполне достаточно, а для схем, требующих бОльшую точность, есть и более точные резисторы. Но и стоят они, естественно, дороже.

3. Ставим последний резистор 4К7 - R9



Я ориентирую все резисторы золотистой полоской в одну сторону - вверх или вправо -  исключительно из эстетических соображений. Как-то крайне неопытный Arduino-любитель поинтересовался у меня, как правильно включать резистор - он думал, что его ножки неравнозначны. Теперь вы понимаете, почему я все время в своих статьях говорю о том, что с Arduino может разобраться человек, ничего не смыслящий в схемотехнике?

4. Устанавливаем диоды D2, D3 - 1N4148. Они выполнены в стеклянном корпусе-капельке, по размеру еще меньшем, чем резистор. Устанавливать их надо так, чтобы совпала полоска не шелкографии и черненькая полоска на диоде (на фото полоска - справа):



5. Внизу слева монтируем защитный диод D1 - 1N4007 (допустима замена на 1N4004).
Не забываем про полоску (она снова справа):



6. Теперь уже набралось достаточно обкусанных ножек, самое время соорудить из них три перемычки:



Плата Arduino Severino - односторонняя (или ОПП, как говорят профи ;), в таких случаях разводка далеко не всегда получается без перемычек. Поверьте, три штуки - более чем гуманная плата за избавление от возни с изготовлением двухсторонней платы и переходными отверстиями.

7. Установим угловые джамперы JP0 и JP4:



Эти джамперы переключают режимы работы с COM-портом и бывают нужны нечасто. Старайтесь припаивать так, чтобы между одетым джампером и платой был зазор:



8. Устанавливаем кварц Q1 - 16000 Гц



Если кварц будет в другом корпусе, например "высокий" HC-48U, его надо "положить" на плату - благо место имеется. В противном случае, он может помешать стыковке Arduino с  Shiel-платами, т.к. находится аккурат внутри зоны стыковки.

9. Ищем емкости C1 и C2 - 22 пФ, на них обычно написано 220:



И аккуратно паяем их рядом с кварцем:



10. Теперь надо найти дроссель L1 - 100 мкГн. Обычно, он выглядит как резистор:



Правильный порядок цветов: коричневый, черный, коричневый (далее идет полоса точности - золотистая или серебристая). Дроссель выполняет в цепи питания микроконтроллера помехоподавляющие функции, и включен он между питанием Vcc и питанием АЦП - AVcc. И без него будет работать, но с ним - надежнее ;)



11. Находим емкости 100 нФ (на них написано "104"):



... и устанавливаем все четыре штуки: С3, С4, С6, С7:



12. Теперь можно поставить панельку SCS-28:



13. Установим светодиоды - их в комплекте 4 штуки. Основное правило - длинной ножкой в плюс. Все светодиоды на этой плате сориентированы одинаково - плюс вверху:



(обычно на светодиодах делают "лыску", спрямляя часть окружности корпуса - это соответствует минусу).

Выбор цветов может быть произвольным. Я обычно выбираю светодиод L (LED13) поярче, потому что именно он более всего нагружен в информативном плане. Rx и Tx мигают в момент загрузки скетча из ArduinoIDE, а PWR индицирует подачу питания. Вариант:



14. Устанавливаем электролиты 100 мкФ С5 и C8, тоже длинной ножкой в плюс. Но смотреть она будет уже вниз:



15. А вот электролит 10 мкФ C9 - неполярный. И хотя у него тоже одна ножка длиннее, не верьте! ;)  На то он и неполярный: как хотите, так и устанавливайте.



16. Установим транзисторы: T1 - BC547, T2 - BC557.

Для начала отформуйте пинцетом их ножки, чтобы они выстроились в одну линию:



Далее, можно установить, ориентируя корпус по шелкографии:



Только не перепутайте BC547 и BC557 - у них разная проводимость. А вот буква на конце значения не играет - BC557B будет работать так же хорошо, как и BC557C.

17. Устанавливаем тактовую кнопку сброса



(тактовая - это от английского tactile - осязаемая).

18. Рядом ставим гребенку ICSP 2x6 - PLD06:



Паять её надо осторожно: если перегреете ножки, они могут "поехать" в пластиковом корпусе и вместо аккуратной гребенки может получиться "ежик с иголками врастопырку" ;)

Гребенка ICSP ( in circuit serial programming ) потребуется для двух ситуаций: 1. Зашивание bootloader-а в "свежий" микроконтроллер 2) Работа через AVRStudio. Чтобы ее использовать, Вам потребуется программатор.

19. Теперь устанавливаем IC2 - стабилизатор напряжения +5В - L7805CV:



Если подогнуть ножки заранее, на плате будет выглядеть чуть более аккуратно (хотя, дело вкуса):



В процессе пайки среднюю ножку придется погреть подольше, с ней соединен радиатор.

Если собираетесь питать Arduino от источника питания более +9В например, от +12В, стоит позаботиться о дополнительном радиаторе - для этого придется впаять стабилизатор вертикально и соединить его при помощи винта с этим самым радиатором. Иначе есть риск обжечься - на 12В греться он будет прилично.

20. Теперь надо запаять колодки выводов PBS - две по 8 выводов и две по 6. Удобно пользоваться для этого готовой shield-платой: она переворачивается ножками вверх, на них одеваются колодки PBS:



... а затем плата Arduino / Freeduino, на которую надо установить эти колодки:



Убедившись, что нет перекосов, смело паяйте. В результате должно получиться приблизительно так:





21. Устанавливаем разъем COM-порта DRB-9:



22. Устанавливаем гнездо питания 2,1/5,5 мм:



Рекомендую перед установкой очистить контакты от окислов, например слегка пройтись по ним надфилем. При пайке лучше использовать жидкий флюс (например, тот же ЛТИ-120). Ну и олова придется капнуть чуть побольше, если надо закрыть трехмиллиметровые отверстия в плате.

23. При необходимости, аккуратно подогните ножки микроконтроллера ATmega:



... и установите его в панель SCS-28, совмещая ключ на корпусе, на панельке и шелкографии (в данном случае, он смотрит направо):



Готово! Тем, кто уже имел дело с Arduino, рекомендую изучить руководство по этой плате, там подробно объясняется смысл всех схемотехнических решений и джамперов (на английском).

Поскольку микроконтроллер из комплекта уже прошит, можно сразу и протестировать: для этого надо подключить источник питания и соединить COM-порт с компьютером.

Запустите ArduinoIDE, убедитесь, что она сконфигурирована для нужного типа платы "Tools | Board | ... " и для нужного COM-порта "Tools | Serial Port | ... ". Тип платы в случае с Severino зависит от микроконтроллера:

  • ATmega8-16PU = "Arduino NG o older w/ ATmega8";
  • ATmega168-20PU = "Arduino Diecimila, Duemilanove, or Nano w/ ATmega168";
  • ATmega328P-PU = "Arduino Duemilanove or Nano w/ ATmega328".
Загрузите исходник тестового sketch-а из комплекта: "File | Examples | Digital | Blink".

Откомпилируйте программу (Ctrl+R, круглая кнопка со стрелкой, "Sketch | Verify/Compile"), затем "залейте" sketch (Ctrl+U, квадратная кнопка со стрелкой вправо, "File | Upload to I/O board"). По окончании должно появиться сообщение об успешной загрузке в плату Arduino.

Светодиод L должен начать стабильно мигать (для Atmega8 подождите 10-15 секунд, так уж устроен его bootloader).