Не так давно я рассказывал, как дешево собрать Arduino-совместимую плату.
Единственное, чего не хватало для полноценного комплекта — это программатора. Денег на полноценный программатор обычно жалко, особенно если он нужен время от времени в основном для прошивки бутлоадера в новый чип.
Большинство схем программаторов не решают проблемы курицы и яица — программатор тоже нужно чем-то прошивать. Свою минимальную Arduino я тоже прошивал имевшейся под рукой другой платой Arduino. Но ведь не у всех же она есть, верно? Значит нужен программатор, не требующий прошивки.
Изобретать велосипед я не стал и изготовил программатор на основе схемы, опубликованной у DIHALT. На самом деле им можно прошить любой AVR микроконтроллер или использовать как USB-UART адаптер. В общем, пригодится.
![](https://habrastorage.org/r/w780q1/storage1/b00dbeaa/d01a0f2d/43e467d3/c05dd552.jpg)
К сожалению, схема DIHALT содержит микросхемы логики и буфера, которых ни под рукой ни в ближайшем магазине не оказалось. Поэтому я решил сделать максимально простой вариант:
-Вместо переключения режимов на буфере, логике и кнопках решил использовать просто джампер
-Заменил USB-B разъем на USB Mini-B — такие шнурки обычно есть под рукой, да и сам разъем существенно компактнее.
-Привел всю SMD мелочь к одному размеру 0805 — резисторы и конденсаторы в таком размере дешевле, доступнее и не придется искать разных размеров на одну плату.
-Изменил назначение пинов так, чтобы они шли в том же порядке, как и на Arduino в режиме ISP программатора.
Нам понадобится:
1 микросхема FT232RL — от 132р
2 SMD-конденсатора на 100 нФ — по 2р
1 mini-B USB разъем — от 10р
1 кусочек фольгированного текстолита/гетинакса 40х20 мм примерно.
1 лист фотобумаги 120-180 г/м2 (какая есть под рукой и пролезает в принтер не застревая)
Опционально:
1 PBS-6 гнездо
1 PBS-2 гнездо
3 SMD светодиода
3 SMD резистора 510 Ом
1 перемычка 2.54 мм
Берем фотобумагу для струйного принтера, лучше всего глянцевую 120-180 гр/м2. Но у меня в пределах доступности оказалась только матовая Lomond 180 гр/м2.
Печатаем шаблон на бумаге при максимальном качестве без экономии тонера при 100% масштабе.
Дальше все делаем как в видеоуроке у DI HALT
У меня получилось с первого раза (если не считать, что сначала я забыл отзеркалить шаблон). Вот вытравленная плата:
![FTBB-PCB FTBB-PCB](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/e24/aa8/8b0/e24aa88b0b46ccb71be0c77b5c8d1de9.jpg)
«FTBB-PCB»
Залуженная плата с просверленными отверстиями (1мм сверлом, ручной сверлилкой)![FTBB-PCB FTBB-PCB](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/4b8/5f2/648/4b85f26480ff16b9408a34d4bcd46d17.jpg)
«FTBB-PCB»
Затем пользуясь уроком по пайке SMD элементов припаиваем FT232RL, USB разъем, и пару конденсаторов.
В принципе в этот момент можно подключить к компьютеру и убедиться, что устройство работает и определяется в Windows.
![FTBB FTBB](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/073/afe/579/073afe579a09e0d802a0f223a677c0a6.jpg)
«FTBB»
Если купили опциональные компоненты, то впаиваем с обратной стороны оба гнезда и резисторы со светодиодами на их места (если нет, припаивайте провода прямо к площадкам)
![FTBB FTBB](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/c14/4c1/bd6/c144c1bd6a800f3c136bd8b27006e25f.jpg)
«FTBB»
На проводок не обращайте внимания, я когда разводил перемычку, забыл второе отверстие на схеме и поэтому пришлось провод впаять, что поделать. В приложенном файле уже исправленный вариант.
Все, дальше делаем кабель со стандартной для ArduinoISP схемой контактов — Reset, MOSI, MISO, SCK (на плате Arduino это пины D10, D11, D12, D13). VTG и GND соответственно подключаем к пинам "+" и "-" программатора.
![image](https://habrastorage.org/r/w1560/getpro/geektimes/post_images/3df/ed6/ae0/3dfed6ae0573cf561b38a931c8825fa2.png)
![FTBB FTBB](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/cd0/b76/7fd/cd0b767fd7ccb114dc0f456282ec74c5.jpg)
«FTBB»
прошиваем бутлоадер (загрузчик) с помощью avrdude модифицированного для поддержки FTBB.
Я использовал FTBB для прошивки загрузчиком Atmega168P, запаянного на макетную плату.
![FTBB-Bootloading FTBB-Bootloading](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/aa5/427/be0/aa5427be053e3addce92f33d3729a723.jpg)
«FTBB-Bootloading»
Готово. Теперь можно пользоваться платой как обычной Arduino. Или можно прошить свой бутлоадер, или даже просто любую подходящую прошивку без всякого бутлоадера.
При установленном джампере мы можем прошить плату, чтобы она заработала нужно снять джампер на программаторе или отключить его от платы.
В качестве USB-UART адаптера для прошивки скетчей будем использовать наш FTBB программатор, подключив пины TX-RX к соответствующим пинам Arduino. прошиваться будет из Arduino IDE как обычно, нужно только нажать Reset на плате сразу после того как скетч скомпилировался. (я не стал разводить DTR пин, т.к. использую другой бутлоадер).
Все необходимые файлы:
AVRDudeR с настройками atmega168p и booload.cmd для прошивки бутлоадера (а также скриптом для прошивки произвольного .hex файла и тестом подключения). Я изменил в конфиг avrdude назначение пинов, чтобы пользоваться тем же кабелем, что и для прошивки с помощью ArduinoISP.
Шаблон для ЛУТ + несколько вариантов платы в формате Sprint Layout 5 (2 варианта DI HALT и две мои адаптации) и наклейка с подписями пинов.
UPD поправил ссылки на файлы ЛУТ и прошивку.
Единственное, чего не хватало для полноценного комплекта — это программатора. Денег на полноценный программатор обычно жалко, особенно если он нужен время от времени в основном для прошивки бутлоадера в новый чип.
Большинство схем программаторов не решают проблемы курицы и яица — программатор тоже нужно чем-то прошивать. Свою минимальную Arduino я тоже прошивал имевшейся под рукой другой платой Arduino. Но ведь не у всех же она есть, верно? Значит нужен программатор, не требующий прошивки.
Изобретать велосипед я не стал и изготовил программатор на основе схемы, опубликованной у DIHALT. На самом деле им можно прошить любой AVR микроконтроллер или использовать как USB-UART адаптер. В общем, пригодится.
![](https://habrastorage.org/storage1/b00dbeaa/d01a0f2d/43e467d3/c05dd552.jpg)
К сожалению, схема DIHALT содержит микросхемы логики и буфера, которых ни под рукой ни в ближайшем магазине не оказалось. Поэтому я решил сделать максимально простой вариант:
-Вместо переключения режимов на буфере, логике и кнопках решил использовать просто джампер
-Заменил USB-B разъем на USB Mini-B — такие шнурки обычно есть под рукой, да и сам разъем существенно компактнее.
-Привел всю SMD мелочь к одному размеру 0805 — резисторы и конденсаторы в таком размере дешевле, доступнее и не придется искать разных размеров на одну плату.
-Изменил назначение пинов так, чтобы они шли в том же порядке, как и на Arduino в режиме ISP программатора.
Нам понадобится:
1 микросхема FT232RL — от 132р
2 SMD-конденсатора на 100 нФ — по 2р
1 mini-B USB разъем — от 10р
1 кусочек фольгированного текстолита/гетинакса 40х20 мм примерно.
1 лист фотобумаги 120-180 г/м2 (какая есть под рукой и пролезает в принтер не застревая)
Опционально:
1 PBS-6 гнездо
1 PBS-2 гнездо
3 SMD светодиода
3 SMD резистора 510 Ом
1 перемычка 2.54 мм
Берем фотобумагу для струйного принтера, лучше всего глянцевую 120-180 гр/м2. Но у меня в пределах доступности оказалась только матовая Lomond 180 гр/м2.
Печатаем шаблон на бумаге при максимальном качестве без экономии тонера при 100% масштабе.
Дальше все делаем как в видеоуроке у DI HALT
У меня получилось с первого раза (если не считать, что сначала я забыл отзеркалить шаблон). Вот вытравленная плата:
![FTBB-PCB FTBB-PCB](https://habrastorage.org/getpro/geektimes/post_images/e24/aa8/8b0/e24aa88b0b46ccb71be0c77b5c8d1de9.jpg)
«FTBB-PCB»
Залуженная плата с просверленными отверстиями (1мм сверлом, ручной сверлилкой)
![FTBB-PCB FTBB-PCB](https://habrastorage.org/getpro/geektimes/post_images/4b8/5f2/648/4b85f26480ff16b9408a34d4bcd46d17.jpg)
«FTBB-PCB»
Затем пользуясь уроком по пайке SMD элементов припаиваем FT232RL, USB разъем, и пару конденсаторов.
В принципе в этот момент можно подключить к компьютеру и убедиться, что устройство работает и определяется в Windows.
![FTBB FTBB](https://habrastorage.org/getpro/geektimes/post_images/073/afe/579/073afe579a09e0d802a0f223a677c0a6.jpg)
«FTBB»
Если купили опциональные компоненты, то впаиваем с обратной стороны оба гнезда и резисторы со светодиодами на их места (если нет, припаивайте провода прямо к площадкам)
![FTBB FTBB](https://habrastorage.org/getpro/geektimes/post_images/c14/4c1/bd6/c144c1bd6a800f3c136bd8b27006e25f.jpg)
«FTBB»
На проводок не обращайте внимания, я когда разводил перемычку, забыл второе отверстие на схеме и поэтому пришлось провод впаять, что поделать. В приложенном файле уже исправленный вариант.
Все, дальше делаем кабель со стандартной для ArduinoISP схемой контактов — Reset, MOSI, MISO, SCK (на плате Arduino это пины D10, D11, D12, D13). VTG и GND соответственно подключаем к пинам "+" и "-" программатора.
![image](https://habrastorage.org/getpro/geektimes/post_images/3df/ed6/ae0/3dfed6ae0573cf561b38a931c8825fa2.png)
![FTBB FTBB](https://habrastorage.org/getpro/geektimes/post_images/cd0/b76/7fd/cd0b767fd7ccb114dc0f456282ec74c5.jpg)
«FTBB»
прошиваем бутлоадер (загрузчик) с помощью avrdude модифицированного для поддержки FTBB.
:: writing Arduino bootloader
avrdude.exe -p m168p -c ftbb -P ft0 -U flash:w:ATmegaBOOT_168_diecimila.hex:a
:: writing fuses
avrdude.exe -p m168p -c ftbb -P ft0 -Uefuse:w:0x00:m -Uhfuse:w:0xdd:m -Ulfuse:w:0xff:m -Ulock:w:0x0F:m
Я использовал FTBB для прошивки загрузчиком Atmega168P, запаянного на макетную плату.
![FTBB-Bootloading FTBB-Bootloading](https://habrastorage.org/getpro/geektimes/post_images/aa5/427/be0/aa5427be053e3addce92f33d3729a723.jpg)
«FTBB-Bootloading»
Готово. Теперь можно пользоваться платой как обычной Arduino. Или можно прошить свой бутлоадер, или даже просто любую подходящую прошивку без всякого бутлоадера.
При установленном джампере мы можем прошить плату, чтобы она заработала нужно снять джампер на программаторе или отключить его от платы.
В качестве USB-UART адаптера для прошивки скетчей будем использовать наш FTBB программатор, подключив пины TX-RX к соответствующим пинам Arduino. прошиваться будет из Arduino IDE как обычно, нужно только нажать Reset на плате сразу после того как скетч скомпилировался. (я не стал разводить DTR пин, т.к. использую другой бутлоадер).
Все необходимые файлы:
AVRDudeR с настройками atmega168p и booload.cmd для прошивки бутлоадера (а также скриптом для прошивки произвольного .hex файла и тестом подключения). Я изменил в конфиг avrdude назначение пинов, чтобы пользоваться тем же кабелем, что и для прошивки с помощью ArduinoISP.
Шаблон для ЛУТ + несколько вариантов платы в формате Sprint Layout 5 (2 варианта DI HALT и две мои адаптации) и наклейка с подписями пинов.
UPD поправил ссылки на файлы ЛУТ и прошивку.