Programowanie
Arduino Uno może być programowane za pomocą oprogramowania (Arduino Software (IDE)). Wybierz „Arduino Uno z menu Tools > Board (zgodnie z mikrokontrolerem na twojej płytce). Szczegóły znajdziesz w referencjach i tutorialach.
Mikrokontroler ATmega328 na Arduino Uno jest wstępnie zaprogramowany bootloaderem, który pozwala na wgranie do niego nowego kodu bez użycia zewnętrznego programatora sprzętowego. Komunikuje się on za pomocą oryginalnego protokołu STK500 (referencja, pliki nagłówkowe C).
Możesz również ominąć bootloader i zaprogramować mikrokontroler przez nagłówek ICSP (In-Circuit Serial Programming) za pomocą Arduino ISP lub podobnego programu; zobacz te instrukcje, aby poznać szczegóły.
Kod źródłowy firmware’u ATmega16U2 (lub 8U2 w płytkach rev1 i rev2) jest dostępny w repozytorium Arduino. ATmega16U2/8U2 jest wyposażona w bootloader DFU, który można aktywować poprzez:
- Na płytkach Rev1: podłączenie zworki lutowniczej z tyłu płytki (w pobliżu mapy Włoch), a następnie włożenie 8U2.
- Na płytach Rev2 lub nowszych: jest rezystor, który podciąga linię 8U2/16U2 HWB do masy, co ułatwia wejście w tryb DFU.
Możesz użyć oprogramowania FLIP firmy Atmel (Windows) lub programatora DFU (Mac OS X i Linux), aby załadować nowy firmware. Możesz też użyć nagłówka ISP z zewnętrznym programatorem (nadpisując bootloader DFU). Zobacz ten tutorial po więcej informacji.
Ostrzeżenia
Arduino Uno posiada resetowalny bezpiecznik polifuzyjny, który chroni porty USB Twojego komputera przed zwarciami i nadprądem. Chociaż większość komputerów posiada własne wewnętrzne zabezpieczenia, bezpiecznik zapewnia dodatkową warstwę ochrony. Jeśli do portu USB zostanie przyłożone więcej niż 500 mA, bezpiecznik automatycznie przerwie połączenie do czasu usunięcia zwarcia lub przeciążenia.
Różnice z innymi płytkami
Uno różni się od wszystkich poprzednich płytek tym, że nie używa układu sterownika FTDI USB-to-serial. Zamiast tego posiada Atmega16U2 (Atmega8U2 do wersji R2) zaprogramowaną jako konwerter USB na szeregowy.
Zasilanie
Płytka Arduino Uno może być zasilana przez złącze USB lub z zewnętrznego zasilacza. Źródło zasilania jest wybierane automatycznie.
Zewnętrzne (nieUSB) zasilanie może pochodzić z zasilacza AC-to-DC (wall-wart) lub baterii. Zasilacz można podłączyć przez włożenie wtyczki 2,1 mm do gniazda zasilania na płycie. Przewody z baterii można podłączyć do wyprowadzeń GND i Vin złącza POWER.
Płytka może pracować z zewnętrznym zasilaniem od 6 do 20V. Przy zasilaniu mniejszym niż 7V, pin 5V może dostarczać mniej niż pięć woltów i płytka może stać się niestabilna. Jeśli użyjemy więcej niż 12V, regulator napięcia może się przegrzać i uszkodzić płytkę. Zalecany zakres to 7 do 12 V.
Piny zasilania są następujące:
- Vin. Napięcie wejściowe do płytki Arduino, gdy korzysta ona z zewnętrznego źródła zasilania (w przeciwieństwie do 5 V ze złącza USB lub innego regulowanego źródła zasilania). Możesz podawać napięcie przez ten pin lub, jeśli podajesz napięcie przez gniazdo zasilania, masz do niego dostęp przez ten pin.
- 5V.Ten pin wyprowadza regulowane 5V z regulatora na płytce. Płytka może być zasilana albo z gniazda zasilania DC (7 – 12V), ze złącza USB (5V), albo z pinu VIN płytki (7-12V). Podawanie napięcia przez piny 5V lub 3.3V omija regulator i może uszkodzić płytkę. Nie radzimy tego robić.
- 3V3. Zasilanie 3,3 V generowane przez wbudowany regulator. Maksymalny pobór prądu to 50 mA.
- GND. Piny masy.
- IOREF. Ten pin na płytce Arduino dostarcza napięcia referencyjnego, z którym pracuje mikrokontroler. Odpowiednio skonfigurowany shield może odczytać napięcie na pinie IOREF i wybrać odpowiednie źródło zasilania lub włączyć translatory napięcia na wyjściach do pracy z 5V lub 3,3V.
Pamięć
Atmega328 posiada 32 KB (z czego 0,5 KB zajmuje bootloader). Posiada także 2 KB pamięci SRAM i 1 KB pamięci EEPROM (która może być odczytywana i zapisywana za pomocą biblioteki EEPROM).
Wejścia i wyjścia
Zobacz mapowanie pomiędzy pinami Arduino a portami ATmega328P. Mapowanie dla Atmega8, 168, i 328 jest identyczne.
MAPOWANIE PINÓW ATmega328P
Każdy z 14 cyfrowych pinów na Uno może być użyty jako wejście lub wyjście, używając funkcji pinMode(),digitalWrite(), i digitalRead(). Pracują one przy napięciu 5 V. Każdy pin może dostarczyć lub odebrać 20 mA jako zalecany stan pracy i posiada wewnętrzny rezystor podciągający (domyślnie odłączony) 20-50k omów. Maksymalnie 40mA jest wartością, której nie wolno przekroczyć na żadnym z pinów I/O, aby uniknąć trwałego uszkodzenia mikrokontrolera.
Dodatkowo, niektóre piny mają wyspecjalizowane funkcje:
Uno posiada 6 wejść analogowych, oznaczonych od A0 do A5, z których każde zapewnia 10 bitów rozdzielczości (tj. 1024 różnych wartości). Domyślnie mierzą one od masy do 5 V, choć można zmienić górną granicę ich zakresu za pomocą pinu AREF i funkcji analogReference(). Na płytce znajduje się jeszcze kilka innych pinów:
- AREF. Napięcie odniesienia dla wejść analogowych. Używany z funkcją analogReference().
- Reset. Doprowadzenie tej linii do stanu LOW resetuje mikrokontroler. Zazwyczaj używany do dodania przycisku reset do shieldów, które blokują ten na płytce.
Komunikacja
Arduino Uno posiada szereg udogodnień do komunikacji z komputerem, inną płytką Arduino lub innymi mikrokontrolerami. ATmega328 zapewnia komunikację szeregową UART TTL (5V), która jest dostępna na cyfrowych pinach 0 (RX) i 1 (TX). ATmega16U2 na płycie przekazuje tę komunikację szeregową przez USB i pojawia się jako wirtualny port com dla oprogramowania na komputerze. Firmware 16U2 używa standardowych sterowników USB COM i nie jest potrzebny żaden zewnętrzny sterownik. Jednak w systemie Windows wymagany jest plik .inf. Oprogramowanie Arduino (IDE) zawiera monitor szeregowy, który umożliwia wysyłanie prostych danych tekstowych do i z płytki. Diody LED RX i TX na płytce będą migać, gdy dane są przesyłane przez układ USB-to-serial i połączenie USB z komputerem (ale nie w przypadku komunikacji szeregowej na pinach 0 i 1).
Biblioteka SoftwareSerial umożliwia komunikację szeregową na dowolnych pinach cyfrowych Uno.
Atmega328 obsługuje również komunikację I2C (TWI) i SPI. Oprogramowanie Arduino (IDE) zawiera bibliotekę Wire, która upraszcza korzystanie z magistrali I2C; szczegóły w dokumentacji. Do komunikacji SPI należy użyć biblioteki SPI.
Automatyczny (programowy) reset
Nie wymagając fizycznego naciśnięcia przycisku reset przed załadowaniem danych, płytka Arduino Uno jest zaprojektowana w sposób, który pozwala na jej resetowanie przez oprogramowanie działające na podłączonym komputerze. Jedna ze sprzętowych linii kontroli przepływu (DTR) układu ATmega8U2/16U2 jest połączona z linią resetowania układu ATmega328 poprzez kondensator 100 nanofaradów. Gdy linia ta jest asertywna (przyjmuje stan niski), linia reset opada na czas wystarczający do zresetowania układu. Oprogramowanie Arduino (IDE) wykorzystuje tę możliwość, aby umożliwić wgranie kodu poprzez proste naciśnięcie przycisku wgrywania na pasku narzędzi interfejsu. Oznacza to, że bootloader może mieć krótszy timeout, ponieważ obniżenie DTR może być dobrze skoordynowane z rozpoczęciem wgrywania kodu.
Ta konfiguracja ma inne implikacje. Kiedy Uno jest podłączony do komputera z systemem Mac OS X lub Linux, resetuje się za każdym razem, kiedy następuje połączenie z nim z poziomu oprogramowania (przez USB). Przez następne pół sekundy, lub coś koło tego, na Uno działa bootloader. Podczas gdy jest on zaprogramowany do ignorowania nieprawidłowo sformatowanych danych (tj. czegokolwiek poza wgraniem nowego kodu), przechwytuje on kilka pierwszych bajtów danych wysyłanych do płytki po otwarciu połączenia. Jeśli szkic uruchomiony na płytce otrzymuje jednorazowe dane konfiguracyjne lub inne dane przy pierwszym uruchomieniu, upewnij się, że program, z którym się komunikuje, odczeka sekundę po otwarciu połączenia i przed wysłaniem tych danych.
Płytka Uno zawiera ślad, który można przeciąć, aby wyłączyć auto-reset. Pady po obu stronach tego śladu mogą być zlutowane razem, aby ponownie go włączyć. Jest on oznaczony jako „RESET-EN”. Możesz także być w stanie wyłączyć auto-reset przez podłączenie rezystora 110 ohm z 5V do linii reset; zobacz ten wątek na forum po szczegóły.
Rewizje
Rewizja 3 płytki ma następujące nowe cechy:
- 1.0 pinout: dodane piny SDA i SCL, które znajdują się w pobliżu pinu AREF oraz dwa inne nowe piny umieszczone w pobliżu pinu RESET, IOREF, które pozwalają shieldom dostosować się do napięcia dostarczanego z płyty. W przyszłości shieldy będą kompatybilne zarówno z płytką wykorzystującą AVR, która pracuje z napięciem 5V jak i z Arduino Due, które pracuje z napięciem 3.3V. Drugi z nich to nie podłączony pin, który jest zarezerwowany do przyszłych celów.
- Wytrzymalszy obwód RESET.
- Atmega 16U2 zastępuje 8U2.
.