ATtiny: karły bardzo duża

Arduino płyty są dostępne w różnych formach i klasach wydajności. Dla bardziej zwartych obwodów są czasami również mniejsze tablice Arduino "mini", "Micro" lub "nano" do ciężkiego. Kto chodzi do małych wymiarów i dobrym stosunkiem ceny do wydajności, należy przyjrzeć się rodzinie ATtiny.

Arduino deski jak Arduino Uno, Mega, Mini, Nano i Micro z potężnych chipów ATmega nadają się do różnych zastosowań. obok MCU zintegrować szereg innych elementów, takich jak kryształ, logiki mocy, diody LED, przycisk RESET i wiele więcej. Jednak w ten sposób również mają wielkość w których nie mogą być łatwo wykorzystane do zwartych obwodów. Na szczęście istnieje alternatywa nazywa ATtiny.

Prawie 40 procesory ATtiny rodzina ma 8-bitowy. Twoja pamięć flash porusza się w przedziale od 512 kB do 16 kB. Ich liczba kołków od 6 do 32. pozostałe właściwości będzie zmieniać się od układu do układu. Dlatego deweloperzy powinni być w stanie znaleźć odpowiednich przedstawicieli ATtiny łatwo w zależności od zastosowania, a nie tylko w przypadku, gdy zwartość jest jednym z wymogów.

ATtiny85 jest stosunkowo często wykorzystywane przez Arduino MakersATtiny85 jest stosunkowo często wykorzystywane przez Arduino Makers(Zdjęcie: sparkfun.com)

Najmniejsze procesor ATtiny doprowadza się do nie więcej niż o wymiarach 1,4 mm x 1,5 mm i są pod napięciem 0,7 V spełnione, tak, że zasilanie jest niewystarczające, bateryjne lub. Poszczególne kołki o ATtiny okazać się bardzo elastyczne, ponieważ kołki przygotowywania osoby można wykorzystać dla wejścia / wyjścia, konwersja analogowo / cyfrową modulacją szerokość i impulsu opcjonalne. Nawet pin RESET może być skonfigurowane (patrz poniżej) I / O. Dla częstotliwości zegara wewnętrznego oscylatora chip zapewnia. Do zainteresowanego czytelnika rozpoznaje prawym górnym rogu obrazu architektonicznego obrazowane ATtiny25 / 45/85:

Architektura z ATtiny 25/45/85-chipArchitektura z ATtiny 25/45/85-chip(Zdjęcie: ATMEL)

ATtiny25, ATtiny45 & ATtiny85

omówić wszystkie żetony ATtiny w szczegółach, jest skomplikowana i nudna. Dlatego niniejszy artykuł skupia przykład do często używanych przedstawicieli. Wśród ATtiny chipy cieszyć przedstawicieli ATtiny25, ATtiny45 i ATtiny85 szczególnie atrakcyjne, ponieważ łączą one zwartość o wysokiej wydajności. Zwłaszcza ten ostatni ATtiny85 szczególnie bogate w środowisku naturalnym. Z 8K Flash, 512 bajtów pamięci EEPROM i 512 bajtów pamięci SRAM, ponieważ mają one potencjał mniejszych projektów. W przeciwieństwie do jej malutkiej obudowie to już wspomniano przedstawicieli ATtiny również pod względem mocy obliczeniowej w sobie. Są one oparte na architekturze RISC z 120 poleceń, które wymagają prawie zawsze tylko w jednym cyklu zegara. Jako procesorów RISC jest zazwyczaj duży zestaw ogólnych 32 (8 bitów) rejestrów.

Działanie układu może być wykonana z różnych częstotliwości i napięć:

ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1,8 - 5,5 V, 0 - 10 MHz @ 2,7 - 5,5 V
ATtiny25 / 45/85: 0 - 10 MHz @ 2,7 - 5,5 V, 0 - 20 MHz @ 4,5 - 5,5 V

W trybie aktywnym, o niskiej częstotliwości, niskie napięcie (1 MHz, 1,8 V), zużycie energii przy bardzo skromny 300 uA.

ATtiny85 i ATtiny25 lub ATtiny45 jego bracia posiada 8 wyjść. Zdjęcie przedstawia opcję pakietu DIP-8. Oczywiście, również wersje SMT są dostępne.

W 8 kołki ATtiny85 W 8 kołki ATtiny85(Zdjęcie: sparkfun.com)

Pinbelkontury:

Ogólnie rzecz biorąc, szpilek ATtiny85 są użyteczne pod wieloma względami, a także następujący rysunek przedstawia:

Kiedy ATtiny85 wszystkie szpilki może dostarczyć wiele funkcji i ról Kiedy ATtiny85 wszystkie szpilki może dostarczyć wiele funkcji i ról

Komunikacja ze światem zewnętrznym

Cena pytanie: jeśli ATtiny I2C lub SPI autobusem? Skomplikowana Odpowiedź jest, w zależności od punktu widzenia, albo "ani ... ani" lub "zarówno ...", Wsparcie motyw autobus jest za pośrednictwem uniwersalnego składnika. ATtiny85 dzięki modułu USI (Universal Serial Interface), zarówno I2C (TWI) -, jak również obsługa protokołu SPI. Wśród nich znajdują się w każdym ATtiny85 normalnym i dodatkowy licznik o wysokiej rozdzielczości, aby zapewnić wymaganą dokładną synchronizację

ATtiny25 / 45/85 na drodze nie ma magistrali szeregowej, dlatego komunikacja z monitorem szeregowego w Arduino IDE domyślnie nie jest możliwe. W jaki sposób technologia oprogramowanie spotkanie, opisuje na stronie internetowej "Komunikacja z Tiny-tych",

miga

Ponieważ oprogramowanie lub bootloadera faktycznie dochodzi do ATtiny? Przedstawiciele ATtiny są programowane z ISCP lub ISP (In-Circuit seryjny Programming). ICSP zawiera w ten sposób sześć portu MOSI, MISO, SCK, RESET VCC i GND. Nawiasem mówiąc, sześć biegunów prostokątny portu ISCP znajduje się w stopie wiórów ATmega na Arduino.

Do programowania ATtiny85 istnieje wiele Programista, o USBtiny lub USBasp. Odpowiadający rozwiązań jest zakup ekspresu na eBay za garść euro.

Z menu Narzędzia Arduino | Programista znaleźć wsparcie dla predefiniowanych programista. Arduino jako opcja ISP ma w ofercie. Powiedzieć: Arduino Uno lub inna płyta Arduino może być stosowany jako programista. Jest to najprostszy i najtańszy rozwiązanie, oprócz niezbędnego okablowania. Hobbystów, którzy chcą programować często się ATtiny, oczywiście, można skonstruować prosty ale trwałego rozwiązania opartego na pokładzie Arduino Uno.

Niezbędna obwody przedstawiono na poniższym wykresie Fritzing:

Programowanie ATtiny85 z Arduino Uno jako programista sprzętu Programowanie ATtiny85 z Arduino Uno jako programista sprzętu

Okablowanie sworzni obu składników jest w następujący sposób:

ATtiny85 Arduino
Pin 1 .................... pin 10 (RESET)
Styk 2 .................... n / a
Trzpień 3 .................... n / a
Pin 4 GND ....................
Styk 5 .................... kołek 11
Pin 6 .................... kołek 12
Pin 7 .................... pin 13
Pin 8 .................... 5V

Zaleca się ponadto do opisanego self-made rozwiązanie jest kondensator elektrolityczny do wejścia RESET na płytce Arduino Uno (Plus) oraz wyjście GND (minus) zatrzymany.

Zatem Arduino IDE obsługuje również ATtiny scalone, potrzebuje odpowiedniego menedżera Board. Wpisz Preferencje (Arduino | preferencjach) pod następującym adresem URL dodatkowy Board Manager:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager
/package_damellis_attiny_index.json

Aby zaprogramować ATtiny85 o Uno przy użyciu Arduino IDE, należy teraz jeszcze w radach Manager (Narzędzia | menedżera deski) poszukuje ATtiny. Należy znaleźć następujące biblioteki płyt i zainstalować:

Instalacja ATtiny Wspieranie Tung w Arduino IDE Instalacja ATtiny Wspieranie Tung w Arduino IDE

Teraz wybierz menu (Tools | deski) odpowiedniego wpisu: ATtiny25 / 45 / 85-ty

Pobierz przykładowy szkic, w którym wymienić pin 13 LED przez 0 jako obowiązkowego migające np. Goście z pewnością musi być podłączony do wyjścia cyfrowego 0 z ATtiny85 także realny LED.

Jako programista dajesz w Narzędzia | Programista Arduino jako ISP. Jeśli inna użycie sprzętu programista (patrz wyżej), można określić aplikacje, które programista zamiast.

Teraz wreszcie Maker można załadować szkic na ATtiny85. Strumień zawiera procesor na Arduino UNO lub jego powiązanej ICSP / programatora ISP. Oczywiście, ATtiny85 można następnie z Arduino lub oddzielone od programatora i inaczej zapewnić zasilanie, więc na przykład, akumulator lub FTDI pokładzie.

RESET trzpień może być, jak wspomniano wcześniej, w tym artykule, o stanowisku tzw "bezpieczniki" rekonfiguracji ATTINY do zwykłego wejścia. Odbywa się to za pomocą zwykłego programatora ISP. Oznacza to jednak, że użytkownik nie może zaprogramować za pomocą programatora ISP, MCU (Micro Controller sztukę), ale wymaga programista z wyższym napięciem.

Aby zmienioną konfigurację odwróconej, jest również taka "High Voltage Programista" potrzebne. Który jest dostępny w sprzedaży lub można zamiast stworzyć self-made, takich jak opisane na stronie internetowej przechowywane. przedstawia inną stronę internetową, jak programiści korzystania z pin RESET bez dodatkowych interwencji jako wyjście.

Bardziej wygodne opcje

Najwygodniejszym i najłatwiejszym rozwiązaniem, aby użyć ATtiny bez większego wysiłku, są wykończone mini tablice takie jak OLIMEXINO-85, który można kupić albo gotowe zamontowane za kilka euro jako DIY lub zestawu.

OLIMEXINO-85 zawiera ATtiny85 sumę wszystkich innych niezbędnych składnikówOLIMEXINO-85 zawiera ATtiny85 sumę wszystkich innych niezbędnych składników(Zdjęcie: olimex.com)

Zestaw integruje pokładzie FTDI do władzy, a socketed ATtiny85, przycisk reset i diody LED i elementów pasywnych. Gotowa płyta jest kompatybilny makiet i wykonuje wszystkie wyjściach ATtiny85 zewnątrz. Pokazy, biblioteki i oprogramowania, producent Olimex na tej stronie GitHub dostępnych.

Przyjedziemy do tematu bootloadera. W przypadku procesorów ATtiny społeczność open source stworzył własny projekt o nazwie mikrojąderkowym w życiu. Jego podstawowym celem projektu jest zwartość. OLIMEXINO-85 Płyta zawiera, na przykład, domyślnie bootloader mikrojąderkowym.

Aby użyć płytę OLIMEXINO-85 pod Arduino IDE, programiści muszą dodać menedżera Zarząd IDE w preferencjach następującym adresem URL: http://digistump.com/package_digistump_index.json.

Wprowadzanie adresu URL w ustawieniach Izby Zarządzających Arduino IDE Wprowadzanie adresu URL w ustawieniach Izby Zarządzających Arduino IDE

Po tym, menu Narzędzia | wyżywienie | menedżer deski ATtiny deski oferowanych do instalacji:

Montaż płyt ATtiny (Digistump) Zarząd Kierownik Arduino IDE Montaż płyt ATtiny (Digistump) Zarząd Kierownik Arduino IDE

Wystarczy wyszukać płyt Digistump AVR.

Zaznacz OLIMEXINO-85 planszę Digispark (domyślnie - 16,5 MHz).

Gdy chcesz grać skit na pokładzie, wyjąć płytkę z portu USB komputera. Po naciśnięciu przycisku wysyłania prosi IDE podłączyć płytę za pośrednictwem portu USB, a następnie mikrojądrowe automatycznie ładuje szkic na ATtiny.

Adafruit błyskotka & CO

Poza Olimex również Adafruit ma rady na podstawie ATtiny85 za kilka euro. Ozdoba Płyta zawiera również zastosowanie wszędzie iz OLIMEXINO-85 mikrojądrowy. Adafruit płyta dostarcza w wersji 3 lub 5-V-V.

Płyta Adafruit Ozdoba z Micro USB Płyta Adafruit Ozdoba z Micro USB(Zdjęcie: adafruit.com)

W celu uzyskania dalszych informacji na temat jego funkcji, zastosowanie i montaż znajdują się na stronie internetowej cacko.

Innym porównywalne Zarząd jest Digistump:

digistumpKolejna płyta ATtiny85 pochodzi z Digistump(Zdjęcie: digistump)

Ale to jest dalece niewystarczające. Wattuino nanitów 85 są dostępne dla sześciu euro Watterott. Ta płyta następujący projekt nanitów. Poza Watterott oferuje wyżywienie w oparciu o ATtiny841 który posiada pakiet DIP-14, a tym samym więcej połączeń:

Watterott nanites 86Watterott nanites 86(Zdjęcie: watterott.com)

A może to z pewnością wyśledzić niektóre bardziej przystępne tablice, które mają podobną funkcjonalność w Internecie. Zbyt wiele możliwości zróżnicowania nie istnieje w każdym razie.

Na przykład kontroli sygnalizacji świetlnej

W celu zilustrowania pracy z procesorów ATtiny Następuje prosty przykład szkic który realizuje prosty świetle. Aby to zrobić, musimy najpierw zrozumieć, jak faktycznie działa lekki ruch. W sumie istnieją cztery fazy ruchu świetlne znane (patrz rysunek):

Istnieją cztery sygnałów drogowych Istnieją cztery sygnałów drogowych(Zdjęcie: http://bascom-forum.de/mediawiki/index.php/Datei:Ampelphasen.png)

Oczywiście, można zrobić różne fazy o różnych długościach na światłach. Cała sprawa może skomplikować również arbitralne. Niektóre światła drogowe są całkowicie wyłączone z ruchu światła lub pokazać migający sygnał żółty. W realnym świecie również równoczesne i skoordynowane połączenie kilku światłach odbywa się na skrzyżowaniach.

Jednak trywialne kontrola sygnalizacji świetlnej, jak opisano poniżej mini-projektu wymaga jedynie ograniczony wysiłek.

Fritzing schemat celu zilustrowania trywialne obwodu, makiet trzy diody LED (czerwony, zielony, żółty), trzy rezystory 220 omów a przewodem bitowego przesunięcia:

Prosty obwód sygnalizacji świetlnej o OLIMEXINO-85 (pokazany schematycznie Board) Prosty obwód sygnalizacji świetlnej o OLIMEXINO-85 (pokazany schematycznie Board)

Kod kontroli sygnalizacji świetlnej

Kod dla sterownika świetlną wprowadza się z czterech faz w postaci prostego maszyna stanów (stan), wzór, w którym poszczególne stany metody (phaseOne, phaseTwo faza trzy phaseFour) reprezentują. Zmiana stanu następuje według prostego połączenia metod, takich jak wywoływanie phaseTwo () w korpusie pętli (). Aukcja jest oczywista.

////////////////////////////////////////////////// ///////////
//
// Prostsze Szkic do ATtiny85
// kontrola sygnalizacji świetlnej
//
////////////////////////////////////////////////// ///////////


const Int czerwony = 4; // Red LED
Int YEL const = 2; // Żółta dioda
Int GRN const = 0; // Zielona dioda LED



// pomocnicze deklaracje:

// Red LED on / off:

#define Redon () digitalWrite (RED, HIGH)
#define RedOff () digitalWrite (czerwonej LOW)
// Żółty LED on / off:
#define YellowOn () zapisu cyfrowego (YEL, HIGH)
#define YellowOff () zapisu cyfrowego (YEL, LOW)
// Zielona LED on / off:
#define greenon () zapisu cyfrowego (GRN, HIGH)
#define Greenoff () zapisu cyfrowego (GRN, LOW)
// Zegar czerwony faza:
DelayOne #define () opóźnienie (5000)
// przejście czasowy czerwono, zielono:
#define DelayTwo () opóźnienia (2000)
// Timer faza zielono:
#define Delay Trzy () opóźnienie (5000)
// czasowy przejście od zieleni do czerwono:
#define Delay Cztery () opóźnienie (2000)

void setup () {
// diody LED jako wyjścia:
pinMode (RED WYJŚCIE);
pinMode (ŻÓŁTY WYJŚCIE);
pinMode (GRN WYJŚCIE);
// Gdy wszystkie diody LED są wyłączone:
inicjalizacji ();
}

// Wszystkie diody LED są wyłączone:
nieważne inicjuj () {
RedOff ();
YellowOff ();
Greenoff ();
}

// faza czerwono:
nieważne phaseOne () {
Redon ();
YellowOff ();
Greenoff ();
DelayOne ();
}

// RotNachGrünPhase:
nieważne phaseTwo () {
Redon ();
YellowOn ();
Greenoff ();
DelayTwo ();
}

// faza zielono:
próżnia Etap trzeci () {
RedOff ();
YellowOff ();
Greenon ();
Trzy Delay ();
}

// GrünNachRotPhase:
nieważne phaseFour () {
RedOff ();
YellowOn ();
Greenoff ();
Cztery Delay ();
}

// default => Żółty migający sygnał:
void awaryjny () {
RedOff ();
Greenoff ();
YellowOn ();
opóźnienia (500);
YellowOff ();
opóźnienia (500);
}

nieważne pętli () // Start z zielonej fazy:
trójfazowe ();
phaseFour ();
phaseOne ();
phaseTwo (); }
}

doprowadzić do wyświetlenia

To prawda, to był trywialny aplikacji. Innym przykładem jest przedstawienie bardziej złożonych aplikacji. W tym bardziej złożonym przykładzie, 0,96 przychodzi" OLED 128 x 64 pikseli jest stosowany (typu OLED jest SSD1306). Ponieważ wyświetlacz wymaga portu I2C, szkic pokazuje również przykład wykorzystania I2C na ATtiny85.

Port 0 (PB0) aktów ATtiny85 (SDA) jako połączenia danych, a port dwa (PB2) służy jako SCL linii czasu.

(Uwaga: Port 0 lub PB0 jest na pin 5, port 2 i PB2 pin 7 wiórów ATtiny85).

Przynieść OLED poprzez I2C na ATtiny85 biegu, specjalna biblioteka jest konieczne, ponieważ standardowa biblioteka I2C reprezentuje przewodowa dla ATtiny85 zbyt bujnej przekąskę. Na szczęście istnieją środki zaradcze:

Układ jest w następujący sposób:

Przewód niebieski: ATtiny85 GND GND z SSD1306
Przewód czerwony: ATtiny85 3.3V lub 5V Vcc z SSD1306
Zielony drut: ATtiny85 Port 0 (= Pin 5) z SSD1306 SDA
Żółty przewód: ATtiny85 Port 2 (= Pin 7) z SCL SSD1306

co wskazuje także w następującym Fritzing wykresie:

SSD1306 wyświetlacz OLED w Adafruit błyskotka 5VSSD1306 wyświetlacz OLED w Adafruit błyskotka 5V

Chociaż Adafruit-Ozdoba Board widać na schemacie, ale że mogą one zastąpić ATtiny85 dowolnym momencie przez OLIMEXINO-85, A Wattuino nanitów 85 lub inna płyta Breakout.

Wszystko czego potrzebujesz to kod

Użytkownik AndyB2 postawił na instructables.com bardzo dobrym przewodnikiem i kod źródłowy do podłączenia OLED do ATtiny85 są dostępne, dzięki czemu odnoszą dwie szersze przykłady jak materiał ilustracyjny i użytkowania. Znajdź Maker instrukcjami w tym momencie. I zorientowanych sobie we własnym przykładem dla AndyB2.

Ze względu na ograniczoną pamięci danych ATtiny85 następujący szkic odrzuty niezmienne informacje, takie jak wzór bitowej logo termometr stosowanych w pamięci programu. Jest to oczywiste z PROGMEM atrybutu w kodzie programu.

Fabuła programu demo szybko powiedział.

#include "SSD1306_minimal.h" // OLED kierowca

// przechowywania danych w pamięci programu:
#include

#define DEG "\ xa7" "C"

SSD1306_Mini oled; // 128x64 wyświetlacz OLED 0,97"

// obraz małego termometru:
const unsigned char ThermometerIcon [] PROGMEM = {
0x00, 0xfe, 0x03, 0xfe, 0x50,
0x00, 0xff, 0x00, 0xff, 0x55,
0x60, 0x9F, 0x80, 0x9F, 0x65,
};


////////////////////////////////////////////////// /
//
// wyświetlacz początek show ()
// zwraca początkowej info na wyświetlaczu
//
////////////////////////////////////////////////// /


void pokaz start () {

oled.startScreen (); Przełączyć // wyświetlacz
oled.clear (); // czytelny wyświetlacz

oled.cursorTo (0,7); // pozycja kursora
oled.printString ( "i funkcje");

opóźnienia (3000);

oled.clear ();
oled.cursorTo (15,1);// pozycja kursora
oled.printString ( "demo ATtiny85");
}

////////////////////////////////////////////////// /
//
// pokazuje wskaźnik zasilania ()
// wyjścia działające informacji
// logo (termometr)
// i wartość temperatury
//
////////////////////////////////////////////////// /


void pokaz wyświetlacz operacyjny () {

oled.clear (); // czytelny wyświetlacz
oled.startScreen (); Przełączyć // wyświetlacz


oled.cursorTo (0,0);
oled.printString ( "połączenie OLED");
oled.cursorTo (10,2);
oled.printString ( "temperatura");
// wyświetlacz graficzny, a nawet:
oled.drawImage (ThermometerIcon, 20,4, 5, 3);
}



////////////////////////////////////////////////// /
//
pomiaru temperatury //
// symuluje termometr
//
////////////////////////////////////////////////// /
Temperatura znak środek () {
powrotu 20 + losowo (-5,5);
}


////////////////////////////////////////////////// /
//
// konfiguracja
// Inicjalizacja OLED
Pokaż // Ekran startowy
Pokaż // Wskaźnik zasilania
//
////////////////////////////////////////////////// /


void setup () {
pinMode (3 wprowadzania danych);

oled.init (0x3c); // OLED zależy IIC ID 0x3c
oled.clear (); // czytelny wyświetlacz

Opóźnienie (1000);
patrz start (); // Ekran początkowy rozruch
opóźnienia (2000);
wyświetlić wyświetlacz operacyjny (); // Wskaźnik zasilania
}



////////////////////////////////////////////////// /
//
// pętla
// rzeczywisty pomiar pętli
// ciągły pomiar i do ekranu operacyjnego
// output
//
////////////////////////////////////////////////// /


nieważne pętli () {

char buf [10];

// Określ Temperatura:
Temperatura znak = pomiaru temperatury ();

// Tworzenie sformatowanych informacji:
sprintf (buf, "% + 0.2hd" ° C, temperatura);

// pozycja kursora:
oled.cursorTo (30, 5);

// wyjście wartości temperatury:
oled.printString (buf);
opóźnienia (500); // przerwa pomiędzy pomiarami
}

Jak zawsze, formy drukowane przykładem może jeszcze wiele do życzenia. Jeśli czujesz się jak można wykorzystać, na przykład, zamiast symulowanej miernik temperatury prawdziwy czujnika i poszerzyć obwód zgodnie z innego czujnika lub przedmiotu do wyboru. Oczywiście, odpowiednio zmodernizowane układ ATtiny ma być przekazane w ramach danych pozycyjnych drogą radiową (RF). Uwolnij swoją wyobraźnię cichy darmo.

streszczenie

Podróż do przedstawicieli rodziny ATtiny pokazuje, że nie ma konieczności dostępu do tablicy Arduino jako panaceum na projektach. Kto kocha to niewielkie, przystępne cenowo i energooszczędne, można połączyć z pomocą obwodów ATtiny. Wtedy też może osiągnie mniejszą baterię lub działanie ogniw słonecznych.

Jednak to rozwiązanie ma również ograniczenia fizyczne w odniesieniu do grubości dostępnych mechanizmów komunikacyjnych, rozmiar pamięci lub liczbę wejść i wyjść. Ponadto, biblioteki Arduino działa tylko częściowo i często dopiero po większych zmian do systemów ATtiny razem.

Gdy wady nie mają znaczenia i korzyści przeważają, jest wykorzystanie ATtiny rodziny na pewno nic w drodze.