Witam Was drodzy Majsterkowicze! Jako, że wykonuję ostatnio dość dużo projektów opartych o Arduino zrobiłem sobie płytkę do wgrywania bootloadera na czystą AtMegę oraz późniejszego jej programowania bez plątanin kabelków na płytce stykowej. Takie rozwiązanie pomaga mi zaoszczędzić pieniądze (nie trzeba kupować nowego Arduino do każdego projektu) oraz zwiększa estetykę projektów (moim zdaniem dedykowane płytki drukowane wyglądają dużo zgrabniej niż pająki z Arduino Nano w roli głównej). Przede wszystkim jednak pomaga to zaoszczędzić czas. Wystarczy włożyć procesor w podstawkę na płytce stykowej, podłączyć całość jednym kablem do Arduino i szybko wgrać bootloader. Moja płytka pozwala programować wpięty w nią układ na 4 sposoby:
- Przez złącze ICSP zewnętrznym programatorem np. USBASP
- Przez złącze ICSP za pomocą Arduino
- Przez złącze szeregowe za pomocą Arduino UNO z wyjętym uC (lub konwerterem USB-TTL z pinem DTR)
- Przez złącze szeregowe za pomocą najtańszego chińskiego konwertera USB-TTL (bez pinu DTR)
Tak prezentuje się gotowa płytka. Niestety nie zauważyłem na niej jednego drobnego błędu. Przy wyprowadzeniu pinów portu szeregowego brakuje VCC, więc programując układ przez owy port trzeba będzie zasilanie +5V podłączyć do odpowiedniego pinu w złączu ICSP. 3 piny ze zworką na skraju płytki służą do wyboru źródła RESETu. W jednym ustawieniu RESET jest pobierany ze złącza ICSP (np. jeśli programujemy przez programator USBASP), w drugim przypadku pin RESET jest podłączony do pojedynczego gniazda wyprowadzonego zaraz obok zworki (w przypadku, kiedy chcemy wypalić bootloader przez Arduino działające jako programator). To tyle ze wstępnej prezentacji układu. Przejdźmy więc do skompletowania potrzebnych części i zmontowania układu :)
Potrzebne części
- Arduino Uno
- 1 x dławkik 10 uH
- 3 x kondensator 100 nF
- 1 x rezystor 10 kΩ
- 1 x przełącznik monostabilny
- Drabinka goldpinów
- Drabinka precyzyjna żeńska
- Mikrokontroler Atmega 328P-PU
- 1 x kwarc 16 MHz (opcjonalnie)
- 2 x kondensator 22 pF (opcjonalnie)
Schemat oraz projekt płytki PCB
Rezonator 16 MHz oraz kondensatory C4 i C5 są opcjonalne. Możemy zamiast nich wlutować żeńskie złącza w płytkę i dobierać je do naszych potrzeb w danym momencie lub wlutować i programować tylko mikrokontrolery z fusebitami zgodnymi z tymi w Arduino.
Pobierz pliki EAGLE oraz PDF z projektem PCB
Płytkę możemy wytrawić domowymi metodami, które były już opisywane na Majsterkowie np. tu
Opis działania układu
Opis wyprowadzeń (piny czytane od lewej do prawej):
Sekcja czerwona (TTL):
[RESET] [RXD] [TXD] [GND]
Sekcja niebieska (ICSP):
[VCC] [MOSI] [GND]
[MISO] [SCK] [RST]
Sekcja zielona (wybór źródła RESETu)
[Z ICSP] [RESET Z uC] [Z PINU PO PRAWEJ]
A jak to programować hmm?
Na początku wypalamy bootloader. W tym celu w Arduino IDE wybieramy Przykłady > 11. ArduinoISP > ArduinoISP i wgrywamy na nasze Arduino. Następnie podłączamy złącze ICSP z Arduino do złącza ICSP na naszej płytce. Ustawiamy zworkę na reset z pinu po prawej i podłączamy go do pinu 10 w Arduino. Teraz z menu Narzędzia > Programator wybieramy ArduinoISP ponownie wchodzimy w menu Narzędzia tym razem wybierając opcję Wypal bootloader.
Kiedy mamy już wypalony bootloader możemy np. włożyć układ do Arduino i prototypować na nim, a po skończonej pracy zrobić dla naszego urządzenia dedykowaną płytkę i włożyć do niej nasz zaprogramowany układ.
Możemy też skorzystać z tego poradnika i programować Atmegę za pomocą konwertera PL2303. Oczywiście zamiast układać to na breadboardzie podłączamy konwerter bezpośrednio pod naszą płytkę.
Mam nadzieję, że mój projekt zaoszczędzi Wam nudnego podłączania kabelków, liczenia pinów i marnowania czasu na coś, co teraz możecie zrobić podłączając wszystkie wymagane kabelki w kilka sekund.
Jak nazywa się to w co się wkłada mikrokontroler? i dlaczego jest dodany dławik?
Podstawka to ZIF 28 Pin do kupienia u majfriendów: http://www.ebay.pl/sch/i.html?_odkw=arduino&LH_PrefLoc=2&_sop=15&LH_BIN=1&_osacat=0&ssPageName=STRK%3AMEFSRCHX%3ASRCH&_from=R40&_trksid=m570.l1313&_nkw=ZIF+28+pin&_sacat=0
Dławik dodałem do filtrowania na części analogowej (niby tutaj zbędne, ale to groszowa sprawa, a nigdy nic nie wiadomo)
Ogólnie pomysł fajny ;)
Ale może warto w przyszłości byłoby pomyśleć, aby wszystkie piny mikrokontrolera wypuścić na złącza goldpin, wtedy miałbyś dodatkowo prostą płytkę dla prototypów. Tak na przyszłość, staraj się umieszczać kwarc jak najbliżej mikrokontrolera. Opisy na płytce zlewają się ze sobą – do ich przemieszczania służy narzędzie “Smash”.
Dobry pomysł z tymi pinami, można sobie zrobić budżetowe Arduino :P Co do kwarcu to umieściłem go dalej specjalnie bo podstawka była szeroka i nie chciałem, żeby nachodziła na rezonator. Co do opisów akurat się nie przykładałem w tym projekcie, bo i tak nie drukuje warstwy opisowej, ale dobrze wiedzieć na przyszłość ;)
Dla zainteresowanych – podobne rozwiązanie:
http://www.ebay.com/itm/For-ATmega8-ATmega48-NO-Chip-DIY-Kit-Development-Board-AVR-Development-Board-/141758666536?hash=item2101799728:g:ScQAAOSwl9BWHOd8
Uwaga jedynie na kwarc – załączony to 8MHz
Witam, widze ze duzo tu fachowcow od arduino. mam pewien problem. Mianowicie. uruchamialem rozne szkice i nie byo zadnych prolemow. dzis po dluzszym nie uzywaniu arduino chcialem stwrzyc termetr badajacy temperature wdy w bsenie po osiagnieciu odpowieniej temperatury elektrozawo otworzylby ciepla wde na okleslony czas i tak do osiagniecia adenej temperatur. Ale juz na samym poczatku napotklem problem nie moge wgrac zadnego szkicu z magistrala i2c i zwyswietlczem 16*2 wyskakuja bldy itp. blink i inne szkice s przyjmwane w czym moze byc rpoblem, ? dodam ze instalowlem wsyzstkie rodzaje arduine IDE i ciagle to samo. wyswielacz bez i2c dziala, podpinam inny z ic2 nie da sie wgrac zadneg szicu . pomozecie?