Przez długi czas chciałem złożyć moją płytkę Arduino, przyjrzałem się obwodom, ale się nie odważyłem. Powodów było kilka:

  • Mój laptop nie ma portu COM, więc wersja z Port COM nie pasuje mi
  • Wersja USB wykorzystuje bardzo drogi układ FT232R.

Cóż, pewnego dnia natknąłem się na artykuł na Habré, w którym użyli konwertera na AVR zamiast FT232R (układu nie ma), a także podobnej implementacji na Zelectro, ale na mikrokontrolerze Atmega8. Ten ostatni powstał na podstawie projektu japońskiego. To wszystko zainspirowało mnie do stworzenia własnej implementacji Arduino.

I tak, jeśli wejdziesz na stronę AVR-CDC i zobaczysz ostatnie zmiany(w archiwum z oprogramowaniem układowym nie ma informacji na stronie) wtedy są tam zaimplementowane linie Rx Tx, a także DTR, CTS, RTS, nie tylko na stosunkowo drogim ATMega8, ale także na tanim AtTiny2313. Ostatnie linie działają tylko na kwarcu przy 16 lub 20 MHz. To właśnie na bazie tego układu postanowiłem zmontować konwerter USB - UART.

  • Firmware AtTiny2313 dla kwarcu 16 MHz -
  • Sterownik USB -
  • bezpieczniki bitów- Wykorzystanie HF: CD; LFuse: FF

Część Arduino została zaczerpnięta z oficjalnej strony bez prawie żadnych zmian.

Płytka jest zasilana zarówno przez USB, jak i zewnętrzny zasilacz. Płytka posiada standardowe złącze dla programatora AVR910 do flashowania układu głównego. W moim przypadku jest to AtMega8, ale można również użyć AtMega168.

Aby programator AVR910 działał, do pliku konfiguracyjnego programatora należy dodać następujące wiersze..\Arduino\arduino-1.0.6\hardware\arduino\programmers.txt:

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

Powyższy plik jest edytowany tylko normalnie Edytor notatnika++. W normalnym Notatniku wygląda nieczytelnie.

Poniżej zdjęcie tego zestawu Arduino od Pavela!

Domowe Arduino USB z programatorem

Do pracy z mikrokontrolerem ATmega8 lub z urządzeniem Arduino na ATmega8 w środowisku deweloperskim Arduino należy skonfigurować program Arduino. Należy dodać parametry obsługiwanych urządzeń na mikrokontrolerze ATmega8 do pliku hardware/arduino/boards.txt.

Może być konieczne dodanie plików bootloadera do folderu hardware/arduino/bootloaders/optiboot.

Mikrokontroler ATmega8 może pracować z częstotliwością 0-16MHz przy napięciu ~5V, ATmega8L z częstotliwością 0-8MHz a ATmega8A z częstotliwością 0-16MHz w szerokim zakresie napięć zasilania. Jest to zgodne z paszportem, ale praktycznie przy napięciu 5V wszystkie mikrokontrolery serii ATmega8 mogą pracować na częstotliwości 16 MHz z zewnętrznym rezonatorem kwarcowym i na częstotliwościach 8, 4, 2, 1 MHz z wewnętrznym generator.

Istnieje wariant płytki Arduino na mikrokontrolerze ATmega8, jest to Arduino NG. Środowisko programistyczne Arduino (Arduino IDE) jest gotowe do pracy z mikrokontrolerem ATmega8, ale tylko z jednym urządzeniem - to jest płyta arduino NG z mikrokontrolerem ATmega8 na częstotliwości 16 MHz z zewnętrznym rezonatorem kwarcowym. Tak jest w Arduino v. 1.0.6. Ponadto dla Arduino NG oferowany jest nie najbardziej optymalny i, co najważniejsze, niewygodny bootloader.

Aby móc zaprogramować mikrokontrolery ATmega8 pracujące na różnych częstotliwościach z rezonatorem kwarcowym i bez, należy dokonać zmian w pliku hardware/arduino/boards.txt, np. dodać do niego następujące sekcje:

# 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 atmega8o.bootloader.high_fuses=0xdc atmega8o.me.opti50 file =optiboot_atmega8.hex atmega8o.bootloader.unlock_bits=0x3F atmega8o.bootloader.lock_bits=0x0F atmega8o.build.mcu=atmega8 atmega8o.build.f_cpu=6000000L atmega8o.build.core=ubuild.inovarino8=ardu ################################################## ############# a8_8MHz.name=ATmega8 (optiboot 8 MHz int) a8_8MHz.upload.protocol=arduino a8_8MHz.upload.maximum_size=7680 a8_8MHz.upload.speed=115200 a8_8MHz.bootloader.low_bezpieczniki =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=0xa1 a8_1MHz.bootloader.high_fuses=0xdc a8_1MHz.bootloader.8_1MHz.opti. 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 ( bez bootowania 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. ######################################### ####### ########### #

Teraz w Program Arduino W menu Serwis / Tablica pojawią się następujące urządzenia:

  • ATmega8 (optiboot 16MHz ext)
  • ATmega8 (optiboot 8 MHz wewn.)
  • ATmega8 (optiboot 1MHz zewn.)
  • ATmega8 (bez rozruchu 8 MHz int)

Pierwsze trzy urządzenia na mikrokontrolerze ATmega8 zawierają bootloader, są kompatybilne z Arduino i mogą być bezpośrednio ładowane ze szkicami (programami) ze środowiska programistycznego Arduino. Czwarte urządzenie nie zawiera bootloadera, może to być osobny układ ATmega8. W ATmega8 (no boot 8 MHz int) szkice z programu Arduino można wczytać za pomocą programatora, w tym programatora opartego na płytce Arduino.

ATmega8 (optiboot 16MHz ext) współpracuje z zewnętrznym kryształem, inne urządzenia z wewnętrznym oscylatorem.

Parametry w pliku hardware/arduino/boards.txt definiują bity fuse, ścieżkę do pliku bootloadera, typ mikrokontrolera i jego częstotliwość. Bity bezpiecznika są zapisywane do mikrokontrolera (z bootloaderem lub bez) po wybraniu opcji Narzędzia / Nagraj bootloader. Bity bezpiecznika określają, z jaką częstotliwością będzie działał Twój mikrokontroler i inne. ważne parametry, w tym te, od których zależy jego wydajność, przeprogramowanie itp.

Bity bezpiecznika NIE są zapisywane w mikrokontrolerze podczas przesyłania szkiców. Jeżeli w menu Usługa/Opłata zostanie wybrana niewłaściwa platforma, wówczas:

  • Podczas przesyłania szkiców
    • Niewłaściwa częstotliwość - prowadzi do zmiany szybkości programów
    • Niewłaściwy procesor - prowadzi do niedziałania programów
  • Podczas pisania bootloadera
    • Niewłaściwa częstotliwość - może prowadzić do niesprawności mikrokontrolera w tym układzie
    • Nieodpowiedni procesor (bezpieczniki) - do zablokowania mikrokontrolera

Uwaga, twoje nieprawidłowe działania mogą wyłączyć mikrokontroler, co będzie wymagało przywrócenia przez programistę.

Bootloader dla mikrokontrolera ATmega8.

Bootloadery Optiboot dla różnych częstotliwości pracy mikrokontrolerów można pobrać ze strony internetowej Bootloader Constructor.

Bootloadery Optiboot to niezależny program ładujący o otwartym kodzie źródłowym, uznawany przez programistów Arduino. Optiboot jest przeznaczony do użytku z różnymi wariantami Arduino i dla różnych Mikrokontrolery Atmel. Główne różnice bootloadera Optiboot od konkurencji to nawet czterokrotnie zmniejszony rozmiar kodu, redukcja niepotrzebnych opóźnień w mikrokontrolerze, wysoka prędkość przesyłanie szkiców z komputera.

Umieść pliki bootloaderów w programie Arduino zgodnie z tym, co jest napisane w pliku hardware/arduino/boards.txt. Na przykład dla urządzenia ATmega8 (optiboot 16MHz ext) plik bootloader musi być umieszczony w folderze hardware/arduino/bootloaders/optiboot50, a nazwa pliku musi być optiboot_atmega8.hex

Trzymając w rękach oryginalną płytkę Arduino, w mojej głowie zrodził się pomysł złożenia jej klona. Po zastanowieniu się nad projektem postanowiono zmieścić wszystko na jednostronnej płytce i wyposażyć płytkę w układ FT232RL do komunikacji z komputerem. Aby uniknąć awarii Port USB komputera, ze względu na nadmierny pobór prądu postanowiłem poświęcić możliwość zasilania z USB, ale więcej na ten ruch nieco później.

Tak więc, drodzy czytelnicy, przedstawiam Wam naszą wersję klonu Arduino. Poznaj Paduino FT232RL

Jak wspomniano powyżej, płytka ma wadę – pozbawiona jest możliwości zasilania z portu USB. Jednak dzięki zastosowaniu układu FT232RL na płytce jest wyjście 3,3V. Również do dodania. Obecność zworki chciałbym przypisać funkcjonalności automatyczne pobieranie(ENABLE), a także zworkę (JP LED13), która pozwala na wyłączenie nie zawsze używanej diody LED podłączonej do pinu nr 13.

Ponadto, oprócz już istniejącego wyjścia Vin w Arduino, dodano wyjście VTG INPUT. Moim zdaniem standardowe wyjście Vin ma szereg wad, choć z drugiej strony są plusy. Wady to zanik napięcia na diodzie (0,6-0,8 V), również gdy Arduino jest zasilane nie ze złącza zasilającego, a bezpośrednio z grzebieni, tracimy ochronę przed odwróceniem polaryzacji. wyjście Vin w obwodzie znajduje się za diodą ochronną. Na pinie VTG INPUT zawsze mamy napięcie równe wejściu bez żadnych strat, a przy zasilaniu Arduino przez grzebienie zachowana jest funkcja zabezpieczenia przed odwrotną polaryzacją. na schemacie wyjście znajduje się przed diodą ochronną. Zaletą wyjścia Vin jest to, że przy prawidłowym zasilaniu zawsze będzie miał plus, inaczej nie będzie nic, natomiast WEJŚCIE VTG to albo minus albo plus.

Znaczenie tej modyfikacji to możliwość zasilania prezentowanych na tej stronie domowych osłon silników oraz naszego klona Arduino z jednego źródła zasilania bez utraty napięcia zasilającego.

Ponieważ FTshka w tym zespole wykorzystuje tylko linie masy i sygnałowe portu USB, po przejrzeniu arkusza danych zawiesimy na nim uprząż w następującej konfiguracji:

Tym razem pominę wszystkie etapy produkcji. Z procesu produkcyjnego dołączę tylko zdjęcie wytrawionej i ocynowanej płyty przed montażem elementów.

Kilka słów o FT232RL. Mikrochip jest dość mały. Abyś mógł ocenić swoje mocne strony, podaję zdjęcie FTS na monecie dziesięciokopejkowej.

Przymocowujemy Ftshkę do deski, wyśrodkowujemy, zwilżamy nogi topnikiem, bierzemy bardzo małą ilość lutowia na końcówkę lutownicy i szybko przechodzimy przez każdą nogę. Jeśli jesteś nowy w lutowaniu i jeszcze nie nauczyłeś się lutować szybko, jednym dotknięciem radzę zrobić przerwę 10-15 sekund po każdej nodze.

Pod względem wielkości Paduino jest niewiele większe od oryginalnego Arduino.

Wszystko, z wymyśloną produkcją. Do pracy w środowisku Arduino pozostaje tylko zapełnienie pamięci kontrolera program rozruchowy.

Po wgraniu bootloadera nic nie stoi na przeszkodzie, aby przejść bezpośrednio do programowania.

Najpierw musisz pobrać środowisko Arduino. Ściągnij Ostatnia wersja dostępne na stronie producenta.

Podłączamy naszego klona do komputera, jeśli internet jest dostępny, urządzenie powinno zostać wykryte automatycznie.

Jeśli podczas podłączania sterownik na FT232RL nie jest zainstalowany w tryb automatyczny, a następnie pobierz sterownik dla swojego systemu operacyjnego ze strony internetowej producenta FTDI.

W komentarzach do artykułu osoba zwróciła uwagę na możliwość konfliktu pomiędzy nowymi sterownikami do FT232RL ze strony producenta. W związku z tym lepiej zainstalować sterownik z Arduino IDE (arduino-1.0.5-windows\arduino-1.0.5\drivers\FTDI USB Drivers)

Otwórz pobrany identyfikator i wybierz tablicę. Płytka pojawi się jako Arduino NG lub starsza z ATmega 8 w przypadku korzystania z kontrolera ATmega 8 lub Arduino NG lub starsza z ATmega 168 w przypadku korzystania z ATmega168.

Następnie wybierz port COM, do którego podłączona jest płytka. Mój kabel został określony pod dziewiątym numerem.

Aby sprawdzić wydajność, wprowadź test flasher do sterownika, wykonując następujące czynności:

Po pomyślnym pobraniu powinieneś zobaczyć następujące

Jeśli wszystko zadziałało, to gratulacje. Sam zmontowałeś pełnoprawny klon USB Arduino.

Archiwum zawiera szablon dla LUT oraz listę części.

Otwórz obraz => Drukuj => Cała strona

Aby ułatwić wylutowanie elementów smd na odwrocie płytki, gdzie nie ma oznaczenia, podam zdjęcie.

Zaznaczam, że na kondensatorach smd nie ma oznaczeń, ale dla ułatwienia wylutowania na zdjęciu je nałożyłem. 104 - 0,1 uF, 22 - 22 pF.

(PS. Ten sam artykuł napisałem na www.nnm.ru, postanowiłem zsynchronizować wersje).
Jakoś (kilka miesięcy temu) podczas przeglądania wiadomości w Internecie natknąłem się na bardzo pochlebne recenzje dotyczące mega-popularnego projektu Arduino. Napisano, że prawie gospodynie domowe kochają i potrafią się nim bawić i robić z nim różne ciekawe rzeczy. Dobrze, dobrze. Dlaczego nie spróbuję, wydaje mi się, że mam ręce i mózg... Jednak ani finanse, ani naturalne skąpstwo nie pozwoliły mi kupić gotowej deski. Z wąsami zrobimy to. Oto instrukcja z urzędu. strona: http://arduino.cc/en/Main/ArduinoBoardSerialSingleSided3
Znajdziesz tam listę części i rysunki do druku... Krótko mówiąc, wszystko, czego potrzebujesz do produkcji. Zrobiłem dwie takie deski i byłem bardzo zadowolony.

Ale jest jedno ale. W oficjalna wersja blok na tranzystorach działał jak konwerter RS232 .... a to prowadziło do niestabilnej wymiany informacji.
Ale nie ja pierwszy mam ten problem. Oto wariant na prawdziwym konwerterze MAX232
http://spiffie.org/electronics/archives/microcontrollers/Build%20a%20MaxSerial%20Freeduino.html
Warto to zrobić.
Oto mój proces wdrażania tej opcji.
Zbieramy wszystko na hałdę Części i złącza - koszt niecały 10$.
Będziemy potrzebować:
-- kawałek jednostronnego włókna szklanego (95x65mm)
- mikrokontroler ATmega8 (lub ATmega168)
- układ MAX232 (możliwy zintegrowany ILX232N)
- 7805 (regulator napięcia 5V)
- 4 diody LED (najlepiej różne kolory)
- kwarc 16 MHz
- przycisk (z czterema stykami)
— złącze portu COM (matka) do lutowania
- złącze zasilania (2,1mm)
- Kondensator 22pF (oznaczenie 22 lub 220) - 2 szt.
- kondensator 0,1 uF (oznaczenie 104) - 3 szt.
- rezystor 1k (0,125 wata) - 5 szt
- rezystor 10k (0,125 W) - 1 szt
- dioda 1N4004 (lub 1N4007) - 1 szt.
- elektrolit. kondensator 10uF x16V - 5 sztuk (minimalna wysokość, inaczej ekrany nie staną)
- elektrolit. kondensator 100uF x16V - 2 sztuki (również niskie)
- podkładki pod mikroukłady (16 nóżek - 1 szt, 28 nóżek wąskich - 1 szt)
cóż, kilka pasków szpilek i odpowiednio. jestem mamami.

Najbardziej odpowiedzialna jest produkcja sygnetu. ( Gotowy plik Word-ovsky do drukowania iLUT ).

Jeszcze raz powtarzam, WSZYSTKO zależy od jakości wykonania nadruku!!!

Gotowa (trawiona) deska musi być ocynowana. Jeśli chcesz piękna, użyj stopu Rosé. Myślę, że opis tej metody można łatwo znaleźć w internecie. Cóż, możesz używać topnika i lutu w staromodny sposób.

Dla urody i wygody układ elementów i napisów można nałożyć (z tym samym łupem) na front.

Pozostaje starannie przylutować elementy. Zacznij od zworek, potem elementów pasywnych (rezystory, kondensatory, kwarc), potem diody, złącza, pady. Lutujemy wszystko bez "smarki" i "short" :)

Widok od strony lutowania.

I z wyniku. Moja wersja jest daleka od standardu, ale jest całkiem wydajna :)

Tak więc 2/3 pracy jest wykonane. Pozostaje „oddychać życiem” - flashuj płytę za pomocą bootloadera. :)

Aby to zrobić, musisz zrobić małego programistę.
Oto schemat:

A oto implementacja sprzętowa:

Pobierz oprogramowanie z oficjalnej strony. Instalujemy. Ruszamy.

Podążamy ścieżką: -> ->

Programator podłączamy do Arduino, złącze jest w LPT, zasilamy Arduino

DIY Arduino

Cóż, czas na samodzielne opanowanie platformy duino. Najpierw zastanówmy się, czego możemy potrzebować. Na początek nie byłoby źle zdecydować, na podstawie czego wykonamy naszą kopię płyty debugowania. Aby uprościć początkowe zadanie, sugeruję użycie adaptera USB-(UART)TTL do przesyłania szkiców. To znacznie ułatwi nam życie. osobiście skorzystam z taniego adaptera zamówionego w nieistniejącym już sklepie internetowym, ale nadal działa.

Budując nasze Duino postaramy się wykorzystać minimalną liczbę elementów. W miarę rozwoju dodamy niezbędne komponenty.

Dla odniesienia znajdziemy schematy różne platformy na oficjalnej stronie:

Moim zdaniem schematy są dobre, ale fajnie byłoby zobaczyć już sprawdzone realizacje „domowe”, bardzo mi się podobały 3 opcje:

Do naszego urządzenia zbudujemy minimalną uprząż.Na pierwszym etapie szczegółów potrzebne jest minimum:

Właściwie sam atmega328P MK (w moim przypadku, chociaż 168 i 8 też mogą być używane)

Kwarcowy 16 MHz

Kondensator 22pF x 2szt

rezystor 10k

Przycisk resetowania (dowolny, nawiasem mówiąc, niewymagany element)

To w zasadzie wszystko, co jest minimalnie niezbędne do działania mikrokontrolera. Proponuję zilustrować i zaprojektować wszystkie nasze prace w bardzo dobrym programie Fritzing:

Zobaczmy, dlaczego te elementy są potrzebne. Przycisk umożliwia restart mikrokontrolera, rezystor R1 jest rezystorem podciągającym dla przycisku. Crystal, C1 i C2 to zewnętrzny generator zegara dla sterownika.


Jest to konieczne i wystarczające wiązanie, ale osobiście zdecydowanie zalecam zainstalowanie kondensatora ceramicznego 100nF równolegle z głównym zasilaniem mikroukładu.

Cóż, nasze minimalne Duino jest gotowe. Aby wygodniej było korzystać z tego narzędzia do debugowania, sugeruję naklejenie wskazówki z pinoutem "atmega" na obudowie. Moja wersja jest zaimplementowana w Corel Draw:

Najpierw zmontujmy obwód naszego Duino na płytce stykowej bez lutowania, oto co mam:

Do wgrywania szkiców użyjemy przejściówki USB - TTL, na zdjęciu moja już dość sfatygowana przejściówka oparta na chipie CP2102:

Ale przed wgraniem szkiców konieczne jest wgranie bootloadera do MK, w przeciwnym razie nie "zrozumie" tego, czego od niego chcemy. Sposobów jest wiele, ale użyjemy najprostszego. Za pomocą wspaniałego programatora USBasp:

Najpierw podłączmy nasz Duino do programatora, to bardzo proste, wystarczy podłączyć styki programatora do Duino:

GND - ziemia (22 stopy)

MOSI - MOSI (d11)

5V - zasilanie "+" (7 nóżek)

Następnie Arduino IDE -> Narzędzia -> "Write Bootloader":

Podczas procesu nagrywania bootloadera będziesz musiał poczekać około 2 minut. Potem mogą nam wypaść różne „ostrzeżenia”, np. „nie można ustawić okresu SCK” – nie bój się i ruszaj dalej.

Cóż, tutaj jesteśmy gotowi, aby nagrać szkic testowy „Blink” do naszego nowego Duino, ale jest jeden punkt i chciałbym na nim poprzestać. Jak już powiedzieliśmy port szeregowy służy do nagrywania szkiców, ale w "normalnym" życiu MK są to porty cyfrowe 0 i 1. Wszystko bardzo proste, wgraliśmy już bootloader, inicjuje nagrywanie nowe oprogramowanie po włączeniu na kilka sekund, po czym Duino zaczyna wykonywać program, który jest zapisany w jego pamięci.

Aby przełączyć Duino w tryb „odbierania”, musisz ponownie uruchomić MK, w tym celu stworzyliśmy specjalny przycisk, ale musisz go ściśle nacisnąć pewien moment, to w ogóle nie jest dla nas odpowiednie. Na szczęście na adapterach jest specjalny pin "RST", który wystarczy do podłączenia do 1 nogi MK, aby automatycznie zrestartować Duino przed załadowaniem szkicu. Połączenie jest bardzo proste (adapter - Duino):

GND - ziemia (22 stopy)

RXD - podłącz do TXD (3 nogi)

TXD - podłącz do KXD (2 nogi)

5V - zasilanie "+" (7 nóżek)

Jak zauważyłeś, kontakty odbiorcze / nadawcze są połączone na krzyż. I wszystko byłoby dobrze, ale jest jedno „ale”: istnieje ogromna liczba adapterów, a dla automatyczny restart MK musi wprowadzić kondensator 100pF w obwód RST przerwa - reset (1 noga). Niektóre adaptery to mają, a niektóre nie. Tutaj trzeba tylko sprawdzić, w moim egzemplarzu nie było wbudowanego kondensatora. W rezultacie schemat jest nieco „skomplikowany”:

Cóż, teraz możesz załadować szkic do pamięci Duino i spróbować zrobić kilka eksperymentów =) (do zdjęcia są dodawane diody - wskaźniki ładowania szkicu):