Jak zmienić Arduino w dostawcę usług internetowych — programowanie ATmel ATtiny85?
Opublikowany: 2017-06-13Krótkie bajty: Czasami użycie gotowej płytki Arduino w projekcie jest przesadą lub jest po prostu przewymiarowane. ATtiny85 to niedrogi, ale zaskakująco wydajny mikrokontroler, który może pomóc w zmniejszeniu zajmowanego miejsca w projekcie. Oto jak możesz zaprogramować ATtiny do użytku w swoim projekcie.
Platforma Arduino jest niesamowitym narzędziem do nauki, ale czasami obsługiwane płyty Arduino nie pasują tam, gdzie są potrzebne. Z Arduino Uno (najpopularniejszy model) mierzącymi około 65mmx50mm, łatwo jest zobaczyć, jak może być największym komponentem w niektórych projektach. Istnieją inne płyty, takie jak Nano, które są znacznie mniejsze (moja podróbka Nano ma wymiary 43 mm na 17 mm, 4,5 razy mniejsze) , ale nawet wtedy czasami jest po prostu za duża. Co jeśli, powiedzmy, chcesz zbudować urządzenie do noszenia, może to tylko migająca dioda LED, którą Twój pies będzie nosić w nocy. Po uwzględnieniu baterii i tak dalej, może ona stać się dość duża.Wskaż linię ATtiny, bohatera naszego problemu. Imiennik ATtiny jest oczywisty. Można go znaleźć w opakowaniu DIP-8 (pakiet dual inline – 8 pinów) , czyli ok. 9mm do kwadratu. Z natury do swojego imiennika, ATtiny jest maleńki, ale nie tylko pod względem fizycznym. ATtiny85, który jest używany w tym artykule, ma tylko 8 KB pamięci flash programu, 512 bajtów pamięci RAM i 512 bajtów EEPROM (trwałe przechowywanie poza pamięcią programu) .
Teraz problemem jest zaprogramowanie jednego z tych malutkich facetów. Istnieje kilka samouczków online na ten temat, ale uważam, że są one nieco niekompletne lub brakuje im instrukcji.
ISP – w programatorze systemowym
Programista In System (ISP) nie jest tak wyszukany, jak się wydaje. Zazwyczaj dostawca usług internetowych dla układu ATmel składa się z urządzenia z sześciopinowym kablem USB. Piny ISP są naprawdę łatwe do wykrycia na Arduino, zwykle znajdują się naprzeciwko złącza USB. Układy ATmel są przeznaczone do programowania za pomocą pinów ISP, ale platforma Arduino zaimplementowała na płycie adapter USB na szeregowy, aby wyeliminować potrzebę stosowania urządzenia ISP. Mimo to pozostawili piny ISP dostępne w wielu, jeśli nie w większości modeli.
Ponieważ nasze układy ATtiny nie mają urządzenia USB do portu szeregowego, które mają Arduino, wymagane jest, aby były zaprogramowane za pomocą ISP. Urządzenia ATmel ISP są dość drogie, przynajmniej w porównaniu do kosztu samego Arduino, więc zaoszczędzimy sobie pieniądze i czas wysyłki, zaprogramowając Arduino tak, aby zachowywało się jak ISP.
Robimy to otwierając Arduino IDE i wybierając ArduinoISP z przykładowych szkiców.
Po otwarciu pliku szkicu zobaczysz informacje o oczekiwanym zachowaniu kodu. W tym pliku musimy dokonać szybkiej zmiany, aby nasz ISP mógł poprawnie komunikować się z Arduino IDE.
W linii 220 znajdujemy funkcję setup() .
pusta konfiguracja () { SERIAL.początek(BAUDRATE); pinMode(LED_PMODE, WYJŚCIE); impuls (LED_PMODE, 2); pinMode(LED_ERR, WYJŚCIE); impuls (LED_ERR, 2); pinMode (LED_HB, WYJŚCIE); impuls (LED_HB, 2); }
Musimy zmienić BAUDRATE na 19200, więc wiersz brzmi
SERIAL.początek (19200);
Z tego co wyczytałem Arduino IDE otrzymało aktualizację, która złamała kompatybilność z tym firmware ArduinoISP. Arduino i IDE próbowały komunikować się z różnymi szybkościami transmisji, co spowodowało niepowodzenie wykorzystania Arduino jako dostawcy usług internetowych, pomimo prawidłowego flashowania oprogramowania układowego.
Biblioteki ATtiny
Arduino IDE obsługuje wiele różnych mikrokontrolerów i płytek, ale niestety seria ATtiny nie jest uwzględniona. Oznacza to, że sami musimy zdobyć dla nich wsparcie.
Sposób, który zadziałał dla mnie, polegał na dodaniu poniższego adresu URL do adresów URL menedżera tablic dodatkowych w preferencjach Arduino IDE,
uruchom ponownie IDE, otwórz Menedżera tablic w Narzędzia -> Tablica -> Menedżer tablic, a następnie wyszukaj pakiet ATtiny i zainstaluj go.
Gdy to zrobisz, możesz zacząć budować swój obwód do programowania ATtiny.
Budowanie Twojego dostawcy usług internetowych
Istnieje wiele sposobów na zbudowanie swojego dostawcy usług internetowych. Możesz zbudować go w płytce stykowej bez lutowania, dzięki czemu możesz zmienić przeznaczenie części, lub możesz stworzyć półtrwałe rozwiązanie, lutując wszystko razem, tak jak ja. Jeśli starannie lutujesz to wszystko razem, możesz ponownie użyć Arduino do innego projektu, jeśli chcesz.
Patrząc na pierwsze trzydzieści kilka linii szkicu ArduinoISP, możemy znaleźć następujące informacje o skonfigurowaniu Arduino do działania jako ISP.
Pin 10 | Aby zresetować kod PIN dla Mikrokontroler docelowy |
Pin 11 | SPI Master Out niewolnik w |
Pin 12 | Mistrz SPI w Niewolnik na zewnątrz |
Pin 13 | Zegar szeregowy SPI |
Opcjonalnie można podłączyć diody LED do następujących pinów w celu wskazania stanu
- Pin 9 – Puls – wskazuje, że ISP działa
- Pin 8 – Błąd – Wskazuje, że wystąpił błąd
- Pin 7 – Programowanie – Wskazuje aktywną komunikację z celem
Należy pamiętać, że te diody LED będą wymagały rezystorów.
Tutaj widzimy pinout dla ATtiny85 i odpowiednie połączenia, które musimy wykonać z powrotem do Arduino. To dość surowy rysunek, ale dla wygody oznaczyłem piny na ATtiny85. Należy jednak zauważyć, że piny nie są adresowane na 1,2,3..8 tak jak na schemacie, są one oznaczone w środowisku Arduino IDE tak, jak zostały oznaczone w tekście diagonalnym.
Jest to znacznie bardziej szczegółowy schemat różnych połączeń. Wszystkie diody LED są opcjonalne, ale są przydatne do rozwiązywania problemów, oprócz trzech diod LED stanu, które były zalecane w pliku szkicu ArduinoISP, jest jedna, która po prostu łączy się z 5 V do masy (oczywiście z rezystorem) i następnie jest jeden podłączony do drugiego pinu (Pin 3 w IDE) do testowania ATtiny z testem migania. Zwróć uwagę na kondensator, który łączy pin Reset z masą, jest to wymagane, aby Arduino mogło działać jako dostawca usług internetowych.
To jest Arduino ISP, który zbudowałem dla mikrokontrolerów ATtiny. Widać, że użyłem gniazda DIP-8 do trzymania ATtiny podczas jego programowania. Zostawiłem też wystarczająco dużo miejsca po prawej stronie, aby zainstalować gniazdo DIP-28 do programowania układów ATmega, takich jak ATmega328P. Aktualizacja będzie bardzo prosta, wymaga jedynie podłączenia niezbędnych pinów do układów Atmega, tak jak w przypadku ATtiny.
Po złożeniu swojego Arduino ISP na pewno zechcesz go wypróbować. Pamiętaj, aby wybrać odpowiednie ustawienia do programowania przez podłączone Arduino, a nie programować samego Arduino.
Dla płytki wybieramy opcję ATiny 25/45/85, następnie w wyborze procesora wybieramy ATtiny85, a na koniec wybieramy z programistów Arduino jako ISP. To mówi IDE wszystko, co musi wiedzieć o systemie docelowym, w tym o tym, jak będzie się z nim komunikować. Teraz jesteśmy gotowi, aby wywołać szkic Blink (lub wpisać go samodzielnie, jeśli jesteś tak hardkorowy) i wypróbować go, po prostu pamiętaj, aby zmienić pin używany do migania diody LED na ten, którego użyłeś w swoim obwód, to jest pin 3, jeśli używasz dostarczonego przeze mnie schematu. Na koniec kompilujemy i przesyłamy szkic, klikając Szkic -> Prześlij za pomocą programatora.
pusta konfiguracja () { pinMode(3, WYJŚCIE); } pusta pętla () { digitalWrite(3, WYSOKA); opóźnienie (1000); digitalWrite(3, LOW); opóźnienie (1000); }
W sumie mój Arduino ISP, który jest zlutowany, prawdopodobnie kosztuje około trzech lub czterech dolarów. Chipy ATtiny mogą być również bardzo tanie, zwykle tylko około dolara za sztukę. Polecam zakup gniazd DIP-8, jeśli planujesz umieszczać chipy ATtiny w projektach, ponieważ możesz chcieć zaktualizować kod lub zmienić przeznaczenie chipa. Przylutowanie układu scalonego na miejscu jest wykonalne, ale można łatwo uszkodzić układ scalony, zwłaszcza przy wielokrotnej ekspozycji, tak jak w przypadku kilkukrotnej aktualizacji kodu.
Czy ktoś jeszcze zrobił coś takiego? Czy chciałbyś zobaczyć więcej rzeczy Arduino? Daj nam znać w komentarzach poniżej.
Przeczytaj także: Raspberry Pi lub Arduino — która płytka jest najlepsza dla początkującego?