28.11.2008

Arduino своими руками

Часть III

(окончание, см. начало - Часть I и Часть II)

Итак, микроконтроллер заработал, но нам этого мало: теперь надо сделать интерфейс для COM-порта, чтобы Arduino мог общаться с PC, в первую очередь для заливания sketch-ей.

Глядим в схему, подбираем детали:
  • Разъем DRB9F на плату, угловой - 12,5 руб.
  • Транзистор T1 - BC547 - 3,8 руб.
  • Транзистор T2 - BC557 - 3,5 руб.
  • Два диода D2,D3 1N4148 - 2 x 2,5 = 5 руб.
  • Два светодиода LED0, LED1 - 2 x 3,3 = 6,6 руб.
  • Резисторы 10K - R5,R8,R7,R10 - 4 x 0,95 = 3,8 руб.
  • Резистор 4К7 R9 - 0,95 руб.
  • Резисторы 1K R1,R2,R6 - 3 x 0,95 = 2,85 руб.
  • Неполярный электролит C9 10 мкФ - 3 руб.
  • Штыревой соединитель PLS40 (из него кусачками отделяется три пина для джампера выключения порта, остальные 37 обязательно пригодятся ;) - 13 руб.
  • Джамперы (стоит поискать на старых материнках, и только если нет под рукой - покупать) - 8,5 руб.
Итого: 63,5 руб.

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

Придется достать сверло на 4..5 мм и просверлить пару дырок для креплений разъема COM-порта (если только вы не купили чудо-макетку с посадочным местом под разъем DRB9F).

Как говорит автор схемы, "иногда поступающая по COM-порту от PC информация может препятствовать запуску скетча", поэтому предусмотрен джампер JP0. У него три положения - "COM-порт работает" - к VСС, "COM-порт блокирован" - к GND и, если снять его вовсе - получили 2 свободных цифровых входа.


Завершающий штрих: подключение внешнего источника питания, например батарейки "Крона". Продолжаем подбирать компоненты:
Итого: 86 руб.



Как и в случае с DRB9F, в плате надо сверлить дополнительные дырки для разъема питания ("плюс" обычно делают в центре). Если подключить выход 7805 к ранее запланированному джамперу (см. Часть II, сборка узла микроконтроллера), то можно переключаться между питанием от батарейки и от USB. Внешний источник может выдавать от +7В до +20В, но больше +16В не рекомендуется, а еще лучше +9В, чтобы не очень сильно грелся собственно стабилизатор.


Вот и все, готово. Перед тем, как приступить к написанию собственных sketch-ей,  осуществим финальную проверку:

File -> Sketchbook -> Examples -> Digital -> Blink

Дальше - Verify/Compile (Ctrl-R), после окончания жмите на кнопку сброса на Arduino, затем File -> Upload to I/O board (Ctrl-U). Полюбуйтесь, как весело перемигиваются светодиоды Rx и Tx, подождите 6 секунд и наблюдайте мигание LED13.

Что еще добавить?
  1. Бюджет разработки, включая программатор не превышает 500 рублей. Цены имеют свойство меняться со временем - может быт, что-то будет дороже, что-то дешевле (некоторые компоненты вообще могут оказаться под рукой или аккуратно демонтированы с ненужных устройств);
  2. Если мало 8К памяти программ, используйте ATmega168-20PU. Микроконтроллеры имеют различный объем Flash и SRAM, но полностью совместимы по корпусам. Тип платы надо будет переставить на Tools -> Board -> Ardiono NG or older w/ATmega168, прошить соответствующий bootloader. С корректно установленным типом платы ArduinoIDE будет правильно учитывать тип МК при компиляции, а текст скетча при этом никак не изменится. Правда, по стоимости будет чуть дороже;
  3. Можно попробовать подключить схему автосброса - Arduino умеет ненадолго устанавливать сигнал DTR перед заливанием sketch-а, и если он соединен со схемой сброса, отпадает необходимость нажимать Reset перед каждой загрузкой скетча. Функция имеет побочный эффект - Arduino может быть сброшен в любой момент программой, которая дергает DTR и даже при отключении или подключении кабеля к COM-порту.
  4. Можно добавить гребенку для непосредственного подключения USB/Serial Converter, если оно у вас есть:


10 комментариев:

  1. Круто. Хочу сделать ардуино на оригинальной односторонней плате.
    Заказал микроконтроллеры. К сожалению ATmega168-20PU сняли с производства. Есть 10 :-(
    Поэтому первый вариант будет на ATmega8. Пиши еще! Буду читать!

    ОтветитьУдалить
  2. Приветствую!
    спаял себе тоже ардуино на оригинальной односторонней
    плате для com порта. но что то никак не могу разобраться
    с загрузчиком, загрузчик залил PonyProg-ом.Если нажать
    кнопку ресет, то светодиод подключенный к 13 выходу бликает раз восем. Когда подключаю к компютеру, то не работает upload, пишет программатор не отвечает.
    Или его еще нужно залить с IDE Arduino?
    P.S. а фьюзы какие то дополнительные нужно выставлять,
    при записи загрузчика, или пойдут те которые
    выставлены по умолчанию в ATmega8?

    ОтветитьУдалить
  3. Ну... начнем с самого простого (и обидного ;) - если Arduino без автосброса, перед upload-ом надо нажимать reset.

    Фьюзы для ATmega8: lfuse=0xdf, hfuse=0xca.

    Какой программатор-то пользуете? Лучше шить через Arduino IDE, оно и зашьет, и фьюзы правильные установит...

    ОтветитьУдалить
  4. перед upload-ом нажимал reset, перемычку на
    автосброс тоже ставил, тогда во время uploada
    бликает диод на 13 выходе.
    фьюзы lfuse=0xdf hfuse=0xca - это в шестнадцатеричном
    коде, а в даташите обычно обозначаются буквами. какие
    это?
    программатор использую PonyProg(что железо, что софт)

    ОтветитьУдалить
  5. Если это - Arduino Severino, то для проверки перемычку надо снять (разорвать цепь автосброса), и понаблюдать за светодиодами Rx/Tx - как они себя будут вести.

    Если верить доке, фьюзы должны быть такие:

    HFUSE (0xCA):

    RSTDISBL = 1
    WDTON = 1
    SPIEN = 0
    CKOPT = 0
    EESAVE = 1
    BOOTSZ1 = 0
    BOOTSZ0 = 1
    BOOTRST = 0

    LFUSE (0xDF):

    BODLEVEL = 1
    BODEN = 1
    SUT1 = 0
    SUT0 = 1
    CKSEL3 = 1
    CKSEL2 = 1
    CKSEL1 = 1
    CKSEL0 = 1

    Самое важное поставить опции внешнего осциллятора верно - по умолчанию включен внутренний калиброванный RC-генератор 1МГц. За это отвечают CKOPT и CKSEL0..3.

    Далее, надо установить старт бутлоадера по ресету (BOOTRST = 0) и правильный размер секции бутлоадера - 1К (или 512 слов - BOOTSZ0..1).

    ОтветитьУдалить
  6. ОК! заработало!
    фьюзы правельно выставил,
    спасибо за помощь!

    ОтветитьУдалить
  7. Рад помочь, обращайтесь, если что ;)

    ОтветитьУдалить
  8. >Неполярный электролит с9 10 мкф
    на схеме он полярный или я ошибаюсь?

    ОтветитьУдалить
  9. Спасибо за статью, очень понравилось
    Я сейчас как раз собираюсь делать плату, надеюсь к вам можно будет обратиться аза помощью?

    ОтветитьУдалить
  10. Можно, но дабы не засорять комменты, сразу открывайте ветку в форуме.

    ОтветитьУдалить