Dlouho jsem si chtěl sestavit svou desku Arduino, podíval se na obvody, ale neodvážil se. Důvodů bylo několik:

  • Můj notebook nemá COM port, takže verze s COM port to mi nevyhovuje
  • USB verze používá velmi drahý čip FT232R.

No a jednoho dne jsem narazil na článek na Habré, kde použili převodník na AVR místo FT232R (obvod tam není), stejně jako podobnou implementaci na Zelectro, ale na mikrokontroléru Atmega8. Ten byl vyroben na základě japonského projektu. To vše mě inspirovalo k vytvoření vlastní implementace Arduina.

A tak, když půjdete na web AVR-CDC a uvidíte poslední změny(v archivu s firmwarem na stránkách nejsou informace) pak jsou tam implementovány linky Rx Tx a také DTR, CTS, RTS nejen na poměrně drahém ATMega8, ale i na levném AtTiny2313. Poslední řádky fungují pouze na quartz na 16 nebo 20 MHz. Právě na základě tohoto čipu jsem se rozhodl sestavit převodník USB - UART.

  • Firmware AtTiny2313 pro quartz 16 MHz -
  • USB ovladač -
  • pojistkové bity - HFuse: CD; LFuse:FF

Část Arduino je převzata z oficiálních stránek téměř beze změn.

Deska je napájena jak přes USB, tak i externí napájení. Deska má standardní konektor pro programátor AVR910 pro flashování hlavního čipu. V mém případě se jedná o AtMega8, ale lze použít i AtMega168.

Aby programátor AVR910 fungoval, musí být do konfiguračního souboru programátoru přidány následující řádky:\Arduino\arduino-1.0.6\hardware\arduino\programmers.txt:

Avr910.name=avr910 avr910.protocol=avr910 avr910.communication=serial avr910.speed=115200

Výše uvedený soubor je upravován pouze normálně Editor poznámkového bloku++. V normálním poznámkovém bloku vypadá nečitelně.

Níže je fotka této sestavy Arduino od Pavla!

Domácí USB Arduino s programátorem

Pro práci s mikrokontrolérem ATmega8 nebo se zařízením Arduino na ATmega8 ve vývojovém prostředí Arduino je nutné nakonfigurovat program Arduino. Parametry podporovaných zařízení na mikrokontroléru ATmega8 je potřeba přidat do souboru hardware/arduino/boards.txt.

Možná budete muset přidat soubory bootloaderu do složky hardware/arduino/bootloaders/optiboot.

Mikrokontrolér ATmega8 může pracovat na frekvenci 0-16MHz při napětí ~5V a ATmega8L na frekvenci 0-8MHz a ATmega8A na frekvenci 0-16MHz v širokém rozsahu napájecích napětí. To je podle pasu, ale prakticky při napětí 5V mohou všechny mikrokontroléry řady ATmega8 pracovat na frekvenci 16 MHz s externím křemenným rezonátorem a na frekvencích 8, 4, 2, 1 MHz s vnitřním generátor.

Na mikrokontroléru ATmega8 existuje varianta desky Arduino, jedná se o Arduino NG. Vývojové prostředí Arduino (Arduino IDE) je připraveno pracovat s mikrokontrolérem ATmega8, ale pouze s jedním zařízením – to je deska arduino NG s mikrokontrolérem ATmega8 na frekvenci 16 MHz s externím quartz rezonátorem. Takto se věci mají v Arduino v. 1.0.6. Navíc pro Arduino NG není nabízen nejoptimálnější a hlavně nepohodlný bootloader.

Abyste mohli programovat mikrokontroléry ATmega8 pracující na různých frekvencích s quartz rezonátorem a bez něj, musíte provést změny v souboru hardware/arduino/boards.txt. Můžete do něj například přidat následující sekce:

# http://optiboot.googlecode.com # http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik ################## ########################################### atmega8o.name=ATmega8 ( optiboot 16MHz ext) atmega8o.upload.protocol=arduino atmega8o.upload.maximum_size=7680 atmega8o.upload.speed=115200 atmega8o.bootloader.low_fuses=0xbf atmegaloader8o.bootloader.0xd50 =optiboot_atmega8.hex atmega8o.bootloader.unlock_bits=0x3F atmega8o.bootloader.lock_bits=0x0F atmega8o.build.mcu=atmega8 atmega8o.build.f_cpu=16000000L standardní atmega8o.bootloader.mcu=atmega8o.build.f_cpu=16000000L standardní atmega8o. ################################################## ############# a8_8MHz.name=ATmega8 (optiboot 8 MHz int) a8_8MHz.upload.protocol=arduino a8_8MHz.upload.maximum_size=7680 a8_8MHz.upload.speed=115200.booter_8MHzfuses =0xa4 a8_8MHz.bootloader.high_fuses=0xdc a8_8MHz.bootloader.path=optiboot a8_8MHz.bootloader.file=a8_8MHz_a4_d c.hex a8_8MHz.build.mcu=atmega8 a8_8MHz.build.f_cpu=8000000L a8_8MHz.build.core=arduino a8_8MHz.build.variant=standard ################### ########################################### a8_1MHz.name=ATmega8 (optiboot 1 MHz int) a8_1MHz.upload.protocol=arduino a8_1MHz.upload.maximum_size=7680 a8_1MHz.upload.speed=9600 a8_1MHz.bootloader.low_fuses abozoter8load_MHz.bootloader.bootloader.bootloader.0xhigh_. file=a8_1MHz_a1_dc.hex a8_1MHz.build.mcu=atmega8 a8_1MHz.build.f_cpu=1000000L a8_1MHz.build.core=arduino a8_1MHz.build.variant=standard ################# ############################################ a8noboot_8MHz.name=ATmega8 ( no boot 8 MHz int) a8noboot_8MHz.upload.maximum_size=8192 a8noboot_8MHz.bootloader.low_fuses=0xa4 a8noboot_8MHz.bootloader.high_fuses=0xdc a8noboot_8MHz.build.mcu=atmega8 a8noboot_8MHz.build.f_cpu=8000000L a8noboot_8MHz.build.f_cpu=8000000L a8noboot_8MHz. build8noboot_8MHz .build.variant=standard ########################################### ################### #

Nyní v Program Arduino V nabídce Service / Board se objeví následující zařízení:

  • ATmega8 (optiboot 16MHz ext)
  • ATmega8 (optiboot 8 MHz int)
  • ATmega8 (optiboot 1MHz int)
  • ATmega8 (bez bootování 8 MHz int)

První tři zařízení na mikrokontroléru ATmega8 obsahují bootloader, jsou kompatibilní s Arduino a lze do nich přímo načíst skici (programy) z vývojového prostředí Arduino. Čtvrté zařízení neobsahuje bootloader, může to být samostatný čip ATmega8. V ATmega8 (bez boot 8 MHz int) lze skici z programu Arduino načítat přes programátor, včetně programátoru založeného na desce Arduino.

ATmega8 (optiboot 16MHz ext) pracuje s externím krystalem, ostatní zařízení s interním oscilátorem.

Parametry v souboru hardware/arduino/boards.txt definují pojistkové bity, cestu k souboru bootloaderu, typ mikrokontroléru a jeho frekvenci. Pojistkové bity jsou zapsány do mikrokontroléru (s bootloaderem nebo bez něj), když vyberete Tools / Vypálit bootloader. Pojistkové bity určují, na jaké frekvenci bude váš mikrokontrolér a ostatní pracovat. důležité parametry, včetně těch, na kterých závisí jeho výkon, přeprogramovatelnost atd.

Pojistkové bity NEJSOU zapsány do mikrokontroléru při nahrávání náčrtů. Pokud je v nabídce Služba / Poplatek vybrána špatná platforma, pak:

  • Při nahrávání náčrtů
    • Nevhodná frekvence – vede ke změně rychlosti programů
    • Nevhodný procesor – vede k nefunkčnosti programů
  • Při zápisu bootloaderu
    • Nevhodná frekvence - může vést k nefunkčnosti mikrokontroléru v tomto systému
    • Nevhodný procesor (pojistky) - k zablokování mikrokontroléru

Pozor, vaše nesprávné kroky mohou deaktivovat mikrokontrolér, což bude vyžadovat programátor k obnovení.

Bootloader pro mikrokontrolér ATmega8.

Zavaděče Optiboot pro různé provozní frekvence mikrokontroléru lze stáhnout z webu Bootloader Constructor.

Zavaděče Optiboot je nezávislý vývoj zavaděče s otevřeným zdrojovým kódem uznávaný vývojáři Arduina. Optiboot je navržen pro použití s ​​různými variantami Arduina a pro celou řadu mikrokontroléry Atmel. Hlavní rozdíly mezi bootloaderem Optiboot a jeho konkurenty jsou až čtyřikrát menší velikost kódu, redukce zbytečných zpoždění v mikrokontroléru, vysoká rychlost nahrávání náčrtů z počítače.

Umístěte soubory bootloaderů do programu Arduino podle toho, co je napsáno v souboru hardware/arduino/boards.txt. Například pro zařízení ATmega8 (optiboot 16MHz ext) musí být soubor bootloaderu umístěn ve složce hardware/arduino/bootloaders/optiboot50 a název souboru musí být optiboot_atmega8.hex

Když jsem držel v rukou původní desku Arduino, v hlavě se mi zrodila myšlenka sestavit její klon. Po sezení a promyšlení projektu bylo rozhodnuto vše osadit na jednostrannou desku a desku opatřit čipem FT232RL pro komunikaci s počítačem. Aby nedošlo k poruchám USB port počítače, kvůli nadměrné spotřebě proudu jsem se rozhodl obětovat možnost napájení z USB, ale více o tomto kroku o něco později.

Takže, milí čtenáři, předkládám vaší pozornosti naši verzi klonu Arduino. Seznamte se s Paduino FT232RL

Jak již bylo zmíněno výše, deska má nedostatek – je zbavena možnosti napájení z USB portu. Díky použití čipu FT232RL je však na desce výstup 3,3V. Také přidat. Přítomnost propojky bych rád připsal funkčnosti automatické stahování(ENABLE), stejně jako jumper (JP LED13), který umožňuje vypnout ne vždy používanou LED připojenou na pin číslo 13.

Kromě již existujícího výstupu Vin na Arduinu byl také přidán výstup VTG INPUT. Standardní výstup Vin má dle mého názoru řadu nevýhod, i když na druhou stranu jsou tu plusy. Mezi nevýhody patří ztráta napětí na diodě (0,6-0,8 voltu), rovněž když je Arduino napájeno nikoli z napájecího konektoru, ale přímo z hřebenů, ztrácíme ochranu proti přepólování. výstup Vin v obvodu je umístěn za ochrannou diodou. Na pinu VTG INPUT máme vždy napětí rovné vstupnímu napětí bez jakýchkoli ztrát a při napájení Arduina přes hřebeny je zachována funkčnost ochrany proti přepólování. ve schématu je výstup umístěn před ochrannou diodou. Mezi výhody výstupu Vin patří to, že při správném napájení bude mít vždy plus, jinak nebude nic, zatímco VTG INPUT je buď mínus nebo plus.

Smyslem této úpravy je možnost napájet podomácku vyrobené motorové štíty prezentované na tomto webu a náš klon Arduino z jednoho zdroje napájení bez jakékoli ztráty napájecího napětí.

Vzhledem k tomu, že FTshka v této sestavě používá pouze zemnící a signální vedení portu USB, po prohlédnutí datového listu na něj zavěsíme postroj v následující konfiguraci:

Tentokrát vynechám všechny výrobní kroky. Z výrobního procesu přiložím pouze foto leptané a pocínované desky před montáží prvků.

Pár slov o FT232RL. Mikročip je poměrně malý. Abyste mohli posoudit své síly, dávám fotku FTS na desetikopce.

Přiložíme Ftshku k desce, vycentrujeme, namočíme nohy tavidlem, nabereme velmi malé množství pájky na hrot páječky a rychle projdeme každou nohu. Pokud s pájením začínáte a ještě jste se nenaučili, jak pájet rychle jedním dotykem, doporučuji vám udělat interval 10-15 sekund po každé noze.

Velikostí není Paduino o moc větší než původní Arduino.

Všechno, s vymyšlenou výrobou. Pro práci v prostředí Arduino zbývá pouze zaplnit paměť ovladače zavaděč.

Po nahrání bootloaderu nám nic nebrání přistoupit přímo k programování.

Nejprve si musíte stáhnout prostředí Arduino. Stažení Nejnovější verze k dispozici na stránkách výrobce.

Náš klon připojíme k počítači, pokud je dostupný internet, zařízení by mělo být detekováno automaticky.

Pokud při připojování není nainstalován ovladač na FT232RL automatický režim, poté si stáhněte ovladač pro váš operační systém z webu výrobce FTDI.

V komentářích k článku člověk upozornil na možnost konfliktu mezi novými ovladači pro FT232RL ze stránek výrobce. V tomto ohledu je lepší nainstalovat ovladač z Arduino IDE (arduino-1.0.5-windows\arduino-1.0.5\drivers\FTDI USB Drivers)

Otevřete stažené ID a vyberte desku. Deska se zobrazí jako Arduino NG nebo starší s ATmega 8 při použití ovladače ATmega 8 nebo jako Arduino NG nebo starší s ATmega 168 při použití ATmega168.

Poté vyberte COMport, ke kterému je deska připojena. Můj kabel byl určen pod devátým číslem.

Chcete-li zkontrolovat výkon, vyplňte program testovacího blikače do ovladače takto:

Po úspěšném stažení byste měli vidět následující

Pokud vše fungovalo, tak gratuluji. Sami jste sestavili plnohodnotný klon USB Arduino.

Archiv obsahuje šablonu pro LUT a seznam dílů.

Otevřít obrázek => Tisk => Celá stránka

Pro usnadnění odpájení smd součástek na zadní straně desky, kde není označení, dám obrázek.

Chtěl bych poznamenat, že na kondenzátorech smd nejsou žádné značky, ale pro usnadnění odpájení na obrázku jsem je použil. 104 - 0,1 uF, 22 - 22 pF.

(P.S. Napsal jsem stejný článek na www.nnm.ru, rozhodl jsem se verze synchronizovat).
Nějak (před pár měsíci) jsem při procházení novinek na internetu narazil na velmi lichotivé recenze na megapopulární projekt Arduino. Psalo se, že skoro hospodyňky to milují a dokážou se s tím makat a dělat s tím nejrůznější zajímavé věci. Ale Ale. Proč to nezkusím, zdá se, že mám ruce a mozek... Nicméně ani finance, ani přírodní lakomost mi nedovolily koupit si hotové prkno. S knírem to zvládneme. Zde je pokyn z úřadu. web: http://arduino.cc/en/Main/ArduinoBoardSerialSingleSided3
Najdete tam seznam dílů a tiskové výkresy.... Zkrátka vše, co potřebujete k výrobě. Vyrobil jsem dvě tyto desky a byl jsem velmi spokojen.

Ale je tu jedno ale. V oficiální verze blok na tranzistorech fungoval jako převodník RS232 .... a to vedlo k nestabilní výměně informací.
Ale nejsem první, kdo má tento problém. Zde je varianta na skutečném převodníku MAX232
http://spiffie.org/electronics/archives/microcontrollers/Build%20a%20MaxSerial%20Freeduino.html
Vyplatí se to udělat.
Zde je můj postup implementace této možnosti.
Shromažďujeme vše na hromadu Díly a konektory - stojí méně než 10 $.
Budeme potřebovat:
- kus jednostranného skelného vlákna (95x65mm)
- mikrokontrolér ATmega8 (nebo ATmega168)
- Čip MAX232 (můžete použít integrální ILX232N)
- 7805 (regulátor napětí 5V)
- 4 LED diody (nejlépe různé barvy)
- quartz 16 Mhz
- tlačítko (se čtyřmi kontakty)
— konektor COM port (matka) pro pájení
- napájecí konektor (2,1 mm)
- 22pF kondenzátor (označení 22 nebo 220) - 2 ks.
- kondenzátor 0,1 uF (označení 104) - 3 ks.
- rezistor 1k (0,125 watt) - 5 ks
- rezistor 10k (0,125 watt) - 1 ks
- dioda 1N4004 (nebo 1N4007) - 1 ks.
- elektrolyt. kondenzátor 10uF x16V - 5 kusů (minimálně na výšku, jinak se stínění nestanou)
- elektrolyt. kondenzátor 100uF x16V - 2 kusy (také nízký)
- podložky pro mikroobvody (16 nožiček - 1 ks, 28 nožiček úzkých - 1 ks)
no, pár proužků špendlíků a odpovídajícím způsobem. jsem maminky.

Nejzodpovědnější je výroba pečeti. ( Připravený soubor Word-ovsky pro tisk aLUT ).

Ještě jednou opakuji, VŠE záleží na kvalitě výroby potisku!!!

Hotovou (leptanou) desku je nutné pocínovat. Pokud chcete krásu, použijte slitinu Rosé. Myslím, že popis této metody můžete snadno najít na internetu. No, můžete použít tavidlo a pájku staromódním způsobem.

Pro krásu a pohodlí lze uspořádání prvků a nápisů použít (se stejnou kořistí) na přední stranu.

Zbývá pečlivě připájet prvky. Začněte propojkami, pak pasivními prvky (odpory, kondenzátory, quartz), pak LED, konektory, podložky. Pájíme vše bez "šmejdů" a "šortek" :)

Pohled ze strany pájení.

A z výsledku. Moje verze má daleko ke standardu, ale je docela efektivní :)

Takže 2/3 práce jsou hotové. Zbývá „vdechnout život“ – flashnout desku bootloaderem. :)

Chcete-li to provést, musíte vytvořit malý programátor.
Zde je schéma:

A zde je hardwarová implementace:

Stáhněte si software z oficiálních stránek. Instalujeme. Spouštíme.

Jdeme po cestě: -> ->

Programátor připojíme k Arduinu, konektor je v LPT, napájíme Arduino

DIY Arduino

No, je čas zvládnout platformu duino na vlastní pěst. Nejprve si ujasněme, co bychom mohli potřebovat. Pro začátek by nebylo špatné rozhodnout se na základě toho, z čeho si vyrobíme naši kopii ladicí desky. Pro zjednodušení počátečního úkolu doporučuji použít USB-(UART)TTL adaptér pro nahrávání náčrtů. To nám hodně usnadní život. osobně použiji levný adaptér objednaný z dnes již neexistujícího internetového obchodu, ale stále funguje.

Při stavbě našeho Duina se budeme snažit použít minimální počet prvků. Během vývoje budeme přidávat potřebné komponenty.

Pro referenci najdeme schémata různé platformy na oficiálních stránkách:

Podle mého názoru jsou schémata dobrá, ale bylo by hezké vidět již osvědčené implementace "domácí", opravdu se mi líbily 3 možnosti:

Postavíme minimální svazek pro naše zařízení. V první fázi detailů je potřeba minimum:

Vlastně samotný atmega328P MK (v mém případě, i když lze použít i 168 a 8)

Quartz 16 MHz

Kondenzátor 22pF x 2ks.

odpor 10k

Tlačítko Reset (mimochodem jakékoli, není to povinný prvek)

To je v podstatě vše, co je pro činnost mikrokontroléru minimálně nutné. Navrhuji ilustrovat a navrhnout všechna naše díla ve velmi dobrém Fritzingově programu:

No, podívejme se, proč jsou tyto prvky potřeba. Tlačítko umožňuje restartovat mikrokontrolér, rezistor R1 je pull-up rezistor pro tlačítko. Crystal, C1 a C2 jsou externí generátor hodin pro regulátor.


To je nutná a dostatečná vazba, ale osobně důrazně doporučuji instalovat 100nF keramický kondenzátor paralelně s hlavním napájením mikroobvodu.

Naše minimální duino je připraveno. Aby bylo použití tohoto nástroje pro ladění pohodlnější, navrhuji nalepit nápovědu s pinoutem "atmega" na pouzdro. Moje verze je implementována v Corel Draw:

Nejprve sestavme obvod našeho Duina na nepájivém prkénku, zde je to, co jsem dostal:

Pro nahrání skic použijeme USB - TTL adaptér, na fotce je můj již dost omšelý adaptér na bázi čipu CP2102:

Před nahráním skic je ale nutné nahrát bootloader do MK, jinak „nepochopí“, co po něm chceme. Existuje mnoho způsobů, ale my použijeme ten nejjednodušší. Použití úžasného programátoru USBasp:

Nejprve připojíme naše Duino k programátoru, je to velmi jednoduché, stačí připojit kontakty programátoru k Duinu:

GND – zem (22 stop)

MOSI – MOSI (d11)

5V - napájení "+" (7 nohou)

Poté Arduino IDE -> Nástroje -> "Zapsat bootloader":

Během procesu nahrávání bootloaderu budete muset počkat asi 2 minuty. Poté nám mohou vypadnout různá "upozornění" jako "nelze nastavit období SCK" - nelekejte se a jděte dál.

No, tady jsme připraveni nahrát testovací skicu "Blink" do našeho nově raženého Duina, ale je tu jeden bod a rád bych se u něj pozastavil. Jak jsme si již řekli, k nahrávání náčrtů slouží sériový port, ale v "normálním" životě MK se jedná o digitální porty 0 a 1. Vše je velmi jednoduché, bootloader jsme již nahráli, ten inicializuje nahrávání nový firmware po zapnutí na několik sekund začne Duino spouštět program, který je uložen v jeho paměti.

Chcete-li přepnout Duino do režimu „příjem“, musíte restartovat MK, k tomu jsme vytvořili speciální tlačítko, ale musíte ho přísně stisknout určitý okamžik, to se nám vůbec nehodí. Naštěstí je na adaptérech speciální "RST" pin, který stačí pro připojení k 1 noze MK, aby se Duino před načtením skici automaticky restartovalo. Zapojení je velmi jednoduché, (adaptér - Duino):

GND – zem (22 stop)

RXD - připojení k TXD (3 nohy)

TXD - připojení ke KXD (2 nohy)

5V - napájení "+" (7 nohou)

Jak jste si všimli, přijímací / vysílací kontakty jsou propojeny křížově. A všechno by bylo v pořádku, ale je tu jedno „ale“: existuje obrovské množství adaptérů a pro automatický restart MK potřebuje zavést 100pF kondenzátor do přerušení obvodu RST - reset (1 větev). Některé adaptéry to mají a některé ne. Zde stačí zkontrolovat, v mé kopii nebyl vestavěný kondenzátor. V důsledku toho je schéma trochu "složité":

No a teď můžete načíst skicu do paměti Duina a zkusit udělat nějaké experimenty =) (do fotky jsou přidány LED diody - indikátory načítání skici):