Arduino – ArduinoBoardLeonardo

Zasilanie

Układ Arduino Leonardo może być zasilany przez złącze micro USB lub za pomocą 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 pinów Gnd i Vin złącza POWER.
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, uzyskać do niego dostęp przez ten pin.
  • 5V. Regulowane zasilanie używane do zasilania mikrokontrolera i innych elementów na płytce. Może pochodzić z VIN poprzez wbudowany regulator, lub być dostarczane przez USB lub inne regulowane źródło 5V.
  • 3V3. Zasilanie 3,3 V generowane przez wbudowany regulator. Maksymalny pobór prądu wynosi 50 mA.
  • GND. Uziemienie pinów.
  • IOREF. Napięcie, przy którym pracują piny i/o płytki (tj. VCC dla płytki). W Leonardo jest to 5V.

Pamięć

Pamięć ATmega32u4 ma 32 KB (z 4 KB używanymi dla bootloadera). Posiada również 2,5 KB pamięci SRAM i 1 KB pamięci EEPROM (która może być odczytywana i zapisywana za pomocą biblioteki EEPROM).

Wejście i wyjście

Każdy z 20 cyfrowych pinów i/o w Leonardo może być użyty jako wejście lub wyjście, używając funkcji pinMode(), digitalWrite() i digitalRead(). Działają one przy napięciu 5 V. Każdy pin może dostarczyć lub odebrać maksymalnie 40 mA i posiada wewnętrzny rezystor podciągający (domyślnie odłączony) o wartości 20-50 kOhm. Dodatkowo, niektóre piny mają wyspecjalizowane funkcje:

  • Serial: 0 (RX) i 1 (TX). Używane do odbierania (RX) i nadawania (TX) danych szeregowych TTL przy użyciu sprzętowych możliwości szeregowych ATmega32U4. Zauważ, że w Leonardo, klasa Serial odnosi się do komunikacji USB (CDC); dla szeregu TTL na pinach 0 i 1, użyj klasy Serial1.
  • TWI: 2 (SDA) i 3 (SCL). Obsługa komunikacji TWI przy użyciu biblioteki Wire.
  • Przerwania zewnętrzne: 3 (przerwanie 0), 2 (przerwanie 1), 0 (przerwanie 2), 1 (przerwanie 3) i 7 (przerwanie 4). Piny te mogą być skonfigurowane do wyzwalania przerwania przy niskiej wartości, rosnącym lub opadającym zboczu, lub zmianie wartości. Zobacz funkcję attachInterrupt() po szczegóły.
  • PWM: 3, 5, 6, 9, 10, 11, i 13. Zapewniają 8-bitowe wyjście PWM za pomocą funkcji analogWrite().
  • SPI: na nagłówku ICSP. Piny te obsługują komunikację SPI przy użyciu biblioteki SPI. Zauważ, że piny SPI nie są podłączone do żadnego z cyfrowych pinów I/O, tak jak to jest w Uno, są one dostępne tylko na złączu ICSP. Oznacza to, że jeśli posiadasz shield, który używa SPI, ale NIE posiada 6-pinowego złącza ICSP, które łączy się z 6-pinowym nagłówkiem ICSP Leonardo, shield nie będzie działał.
  • LED: 13. Do pinu cyfrowego 13 podłączona jest wbudowana dioda LED. Kiedy pin ma wartość HIGH, dioda LED jest włączona, kiedy pin ma wartość LOW, jest wyłączona.
  • Wejścia analogowe: A0-A5, A6 – A11 (na pinach cyfrowych 4, 6, 8, 9, 10, i 12). Leonardo posiada 12 wejść analogowych, oznaczonych od A0 do A11, z których wszystkie mogą być również używane jako cyfrowe wejścia/wyjścia. Piny A0-A5 znajdują się w tych samych miejscach co na Uno; wejścia A6-A11 są na cyfrowych pinach i/o odpowiednio 4, 6, 8, 9, 10, i 12. Każde wejście analogowe zapewnia 10 bitów rozdzielczości (tj. 1024 różnych wartości). Domyślnie wejścia analogowe mierzą od masy do 5 V, choć możliwa jest zmiana górnej granicy 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żywane z funkcją analogReference().
  • Reset. Doprowadzenie tej linii do stanu niskiego resetuje mikrokontroler. Zazwyczaj używany do dodania przycisku reset do shieldów, które blokują ten na płycie.

Zobacz także mapowanie pomiędzy pinami Arduino i portami ATmega32u4.

Komunikacja

Płytka Leonardo posiada szereg udogodnień do komunikacji z komputerem, innym Arduino lub innymi mikrokontrolerami. ATmega32U4 zapewnia komunikację szeregową UART TTL (5V), która jest dostępna na pinach cyfrowych 0 (RX) i 1 (TX). 32U4 umożliwia również komunikację szeregową (CDC) przez USB i pojawia się jako wirtualny port com dla oprogramowania na komputerze. Układ działa również jako urządzenie USB 2.0 o pełnej prędkości, wykorzystując standardowe sterowniki USB COM. W systemie Windows wymagany jest plik .inf. Oprogramowanie Arduino zawiera monitor szeregowy, który pozwala na wysyłanie prostych danych tekstowych do i z płytki Arduino. Diody LED RX i TX na płytce będą migać, gdy dane są przesyłane przez połączenie USB do komputera (ale nie w przypadku komunikacji szeregowej na pinach 0 i 1). Biblioteka SoftwareSerial pozwala na komunikację szeregową na dowolnych pinach cyfrowych Leonardo. Układ ATmega32U4 obsługuje również komunikację I2C (TWI) oraz SPI. Oprogramowanie Arduino zawiera bibliotekę Wire upraszczającą korzystanie z magistrali I2C; szczegóły w dokumentacji. Do komunikacji SPI należy użyć biblioteki SPI. Leonardo pojawia się jako ogólna klawiatura i mysz, i może być zaprogramowany do sterowania tymi urządzeniami wejściowymi za pomocą klas Keyboard i Mouse.

Programowanie

Leonardo może być programowany za pomocą oprogramowania Arduino (pobierz). Wybierz „Arduino Leonardo z menu Tools > Board (zgodnie z mikrokontrolerem na Twojej płytce). Aby uzyskać szczegółowe informacje, zobacz referencje i tutoriale. Mikrokontroler ATmega32U4 w Arduino Leonardo jest fabrycznie wyposażony w bootloader, który pozwala na wgranie do niego nowego kodu bez użycia zewnętrznego programatora sprzętowego. Komunikuje się on za pomocą protokołu AVR109. Możesz również ominąć bootloader i zaprogramować mikrokontroler przez nagłówek ICSP (In-Circuit Serial Programming) używając Arduino ISP lub podobnego; zobacz te instrukcje dla szczegółów.

Automatyczny (programowy) reset i inicjacja bootloadera

Zamiast wymagać fizycznego naciśnięcia przycisku reset przed załadowaniem, Leonardo jest zaprojektowany w sposób, który pozwala na jego resetowanie przez oprogramowanie działające na podłączonym komputerze. Reset jest wyzwalany, gdy wirtualny (CDC) port szeregowy / COM Leonardo jest otwarty przy 1200 baud, a następnie zamknięty. Kiedy to nastąpi, procesor zresetuje się, przerywając połączenie USB z komputerem (co oznacza, że wirtualny port szeregowy / COM zniknie). Po zresetowaniu procesora uruchamia się bootloader, który pozostaje aktywny przez około 8 sekund. Bootloader może być również zainicjowany przez naciśnięcie przycisku reset na Leonardo. Zauważ, że kiedy płytka po raz pierwszy się włączy, przeskoczy od razu do szkicu użytkownika, jeśli jest obecny, zamiast inicjować bootloader.
Ze względu na sposób, w jaki Leonardo obsługuje reset, najlepiej jest pozwolić oprogramowaniu Arduino spróbować zainicjować reset przed załadowaniem, zwłaszcza jeśli masz zwyczaj wciskania przycisku reset przed załadowaniem na innych płytkach. Jeśli oprogramowanie nie potrafi zresetować płytki, zawsze możesz uruchomić bootloader naciskając przycisk reset na płytce.

USB Overcurrent Protection

Leonardo posiada resetowalny polifuse, 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.

Charakterystyka fizyczna

Maksymalna długość i szerokość płytki PCB Leonardo to odpowiednio 2,7 i 2,1 cala, przy czym złącze USB i gniazdo zasilania wystają poza ten pierwszy wymiar. Cztery otwory na śruby pozwalają na przymocowanie płytki do powierzchni lub obudowy. Zauważ, że odległość pomiędzy cyfrowymi pinami 7 i 8 wynosi 160 mil (0.16″), nie jest równą wielokrotnością 100 mil odstępu pomiędzy innymi pinami.