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. Анонимный4 мая 2009 г., 19:13

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

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

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

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

    ОтветитьУдалить
  4. Анонимный4 мая 2009 г., 22:05

    перед 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. Анонимный4 мая 2009 г., 23:45

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

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

    ОтветитьУдалить
  8. Анонимный11 июля 2009 г., 16:02

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

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

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

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