Spisu treści:

ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 kroki
ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 kroki

Wideo: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 kroki

Wideo: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 kroki
Wideo: How to use the Atmel ATTINY10 Microcontroller 2024, Listopad
Anonim
ATTiny-RAT, Mini Lightfollower z zasilaniem ATTINY
ATTiny-RAT, Mini Lightfollower z zasilaniem ATTINY
ATTiny-RAT, Mini Lightfollower z zasilaniem ATTINY
ATTiny-RAT, Mini Lightfollower z zasilaniem ATTINY
ATTiny-RAT, Mini Lightfollower z zasilaniem ATTINY
ATTiny-RAT, Mini Lightfollower z zasilaniem ATTINY
ATTiny-RAT, zasilany przez ATTINY Mini Lightfollower
ATTiny-RAT, zasilany przez ATTINY Mini Lightfollower

Cześć ludzie, Minęło trochę czasu, odkąd opublikowałem moją ostatnią instrukcję. Cóż, w mojej głowie krąży teraz wiele rzeczy, ale udało mi się udokumentować moje „pierwsze kroki” z żetonami z serii ATTiny w tej krótkiej instrukcji dla ciebie.

Zamówiłem kilka próbek ATTINY85 tylko dlatego, że chciałem je przetestować:-) (wszyscy uwielbiają testować różne rzeczy, prawda?). Potem zacząłem rysować kilka pomysłów w swoim notesie. Szczerze mówiąc, pierwszą rzeczą, którą zrobiłem, było mruganie diodą LED, która jak zawsze jest dobrym początkiem sprawdzenia, czy twój setup/toolchain działa. Próbowałem również rejestratora temperatury i wilgotności z DHT22 i SoftwareSerial. To było trudne, ponieważ biblioteki DHT są przeznaczone głównie dla zegara 16Mhz (jeśli planujesz zrobić coś takiego, sprawdź, jak przeskalować wewnętrzny zegar). Ale postanowiłem pokazać ci coś, co jest, no cóż, po prostu zabawniejsze. BTW: Wrzuciłem dla ciebie jeden z moich rysunków, nie jest to Rembrandt, ale pokaże ci, jak wpadłem na ten (naprawdę) głupi pomysł na kartkę papieru: -P.

Użyłem tylko rzeczy, które leżałem, aby utrzymać ten projekt jak najtaniej (dla mnie). Efektem tej małej przygody jest miły mały "robot podążający za światłem" za około 10-15 $ (dla mnie 3 $:-P)

Jeśli więc sam jesteś zainteresowany ATTINY, czytaj dalej.

BTW: przepraszam za mój zły angielski (nie jestem native speakerem)

Krok 1: Pierwsze kroki z ATTiny oraz narzędziami i materiałami

Pierwsze kroki z ATTiny oraz narzędziami i materiałami
Pierwsze kroki z ATTiny oraz narzędziami i materiałami
Pierwsze kroki z ATTiny oraz narzędziami i materiałami
Pierwsze kroki z ATTiny oraz narzędziami i materiałami
Pierwsze kroki z ATTiny oraz narzędziami i materiałami
Pierwsze kroki z ATTiny oraz narzędziami i materiałami
Pierwsze kroki z ATTiny oraz narzędziami i materiałami
Pierwsze kroki z ATTiny oraz narzędziami i materiałami

Czego potrzebujesz, aby zacząć:

- chip ATTiny85

- Arduino UNO lub podobny

- abreadboard z jakimiś zworkami lub programatorem ATTINY lub sam zrób programator-shield dla Arduino (sprawdź załączone zdjęcia, jest schemat z avdweb.nl). Zrobiłem też ten i jestem z niego naprawdę zadowolony. Jedyną modyfikacją, jaką wprowadziłem, było dodanie gniazda dla serii ATTinyx4 (patrz zdjęcie i schematy wyprowadzeń).

- Arduino IDE (do pobrania tutaj)

- pliki sprzętowe dla ArduinoIDE (pobierz i zainstaluj)

Info-Link do serwisu playgrounddirect Link do używanych przeze mnie plików github

- załaduj Arduino jako szkic ISP do UNO (to będzie twój programista)

- postępuj zgodnie z tą instrukcją (https://highlowtech.org/) lub tą instrukcją (przez ardutronix) i wypróbuj szkic "mrugnięcia" (zmodyfikuj numer PIN. użyj zdjęcia ATTINY jako odniesienia! będziesz potrzebować wstępnie migającej diody LED ATTINY a i rezystor ~ 220 omów)

Zrób małą płytkę stykową, aby wszystko sprawdzić. Jeśli zrobiłeś wszystko dobrze, dioda LED zacznie migać i jesteś gotowy do pracy

NARZĘDZIA

- lutownica - trochę lutu - mały przecinak do drutu - dremel lub inne narzędzie obrotowe (tylko do cięcia PCB!) - trochę kleju na gorąco - szczypce - druty

MATERIAŁY

- PCB prototypowa (~4cmx6cm zrobi to)- 2x LDR- 5x 10k Rezystor (2x dla LDR i 2x dla tranzystorów BE, 1x LED) - 1x Rezystor 330Ohm (1x NEOPIXELS)- 2x LDR- 1x LED (kolor twojego wybór zamiast kółka)- 3x NEOPIXEL WS2812- 2x Tranzystor (BD137 lub podobny)- 2x Dioda (1N4001 lub podobny)- 2x mikrosilnik (np. z mikroquadkoptera Hubsan)- 1x ATTINY85 + opcjonalnie (zalecane) 8PIN Gniazdo IC- 1x 1s LIPO (użyłem 140Ah ze starego helikoptera RC)- kilka pinheaderów/gniazd- rurka termokurczliwa (obudowa LDR)

Przejdźmy do budowania sprzętu…

Krok 2: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

Jeśli spojrzysz na załączone schematy, konfiguracja sprzętu jest dość prosta. Więc jeśli jesteś w stanie czytać schematy i używać lutownicy, to połowa sukcesu. Zajrzyj też na zdjęcia, dodałem dla Ciebie kilka notatek.

Nie podaję planu cięcia PCB, masz swobodę tworzenia własnego projektu (bądź kreatywny i pokaż nam swoje Tiny Boty). Umieszczenie wszystkich elementów elektronicznych zależy również od Ciebie. Kilka wskazówek z mojej strony:

Staraj się precyzyjnie ustawić silniki (uważaj pod kątem!) używamy tylko wału silnika zamiast kół. (będzie to zużywać mniej energii) Zalecam umieszczenie silników pod akumulatorem (waga) i użycie LDR-ów z przodu (pod kątem 45°) w połączeniu z diodą LED (próbuję użyć tej kombinacji do unikania przeszkód, dalej potrzebne są testy).

Ponadto polecam zrobić małą zworkę, aby bateria nie zgubiła się tak łatwo.

Jeśli jest coś niejasnego lub masz pytania, po prostu zapytaj mnie. Nie ma sensu robić tezy z tego małego projektu.

Krok 3: Oprogramowanie

Oprogramowanie
Oprogramowanie
Oprogramowanie
Oprogramowanie

Pierwszy ze wszystkich pobierz i zainstaluj ADAFRUIT Neopixel Library

Oto mój kod z kilkoma głównymi opisami (dodałem również plik szkicu). Nie komentowałem każdego kroku, ponieważ uważam, że nie jest to konieczne.

Prześlij szkic na ATTiny85 i baw się swoją nową zabawką

Pomysły na funkcję "osobowość" + może przykłady kodu są mile widziane:-)

Jeśli są jakieś pytania, nie wahaj się ich zapytać.

Mam nadzieję, że podobała Ci się moja krótka instruktażowa i mała wycieczka do świata ATTINY.

/* ATTINY85-Rata prosty robot podążający za światłem ATTINY85. Wersja 2.0, Auer Markus */

#włączać

#włączać

//Motoryzacja

#define LMOTOR 0 #define RMOTOR 1 //LEDs #define PIXELPIN 2 #define NUMPIXEL 3 //LDRs #define LLDR A2 #define RLDR A3

//inne emo = 0; kaliber pływakowy; emostat logiczny; długie stare millis; //zdefiniuj NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel(NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

pusta konfiguracja()

{ //upscale clock w przeciwnym razie napotkasz pewne problemy z synchronizacją (biblioteka neopixel jest napisana dla 16MHz) #if defined (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif

//PINMODE pinMode(LMOTOR, WYJŚCIE); pinMode(RMOTOR, WYJŚCIE); pinMode(LLDR, INPUT); pinMode(LLDR, INPUT); //zainicjuj piksele PIXEL.begin(); PIXEL.pokaż(); opóźnienie (500); //startsequence for(int i=0;i

pusta pętla()

{ if(lightfollow() == 1) { left(); } else if(lightfollow() == 2) { right(); } else if(lightfollow() == 0) { forward(); } emocja(); }

int lightflow() {

próg wewnętrzny = 14; int wynik = 0; pływak w lewo = 0; pływak w prawo = 0; próbki int = 1; //odczytaj LDR dla (int j = 0; j<samples; j++){

lewy = lewy + odczyt analogowy (LLDR); prawo = prawo + (analogRead(RLDR)*calib);

}

//oblicz wynik (z którego kierunku pada światło?)

if((lewo/próbki) > ((prawo/próbki)+próg)) {wynik = 2;}

else if((lewo/próbki) < ((prawo/próbki)-próg)) {wynik = 1;}

inaczej {wynik = 0;}

zwróć wynik; } void forward() { //Forward analogWrite(LMOTOR, 230); zapis analogowy(RMOTOR, 230); PIXEL.setPixelColor(0, PIXEL. Color(0, 0, 255)); PIXEL.setPixelColor(2, PIXEL. Color(0, 0, 255)); PIXEL.pokaż(); }

nieważne w lewo () {

//LEWY zapis analogowy(LMOTOR, 150); zapis analogowy(RMOTOR, 255); PIXEL.setPixelColor(0, PIXEL. Color(0, 0, 255)); //PIXEL.setPixelColor(1, PIXEL. Color(75, 0, 0)); PIXEL.setPixelColor(2, PIXEL. Color(0, 100, 0)); PIXEL.pokaż(); }

nieważne prawo () {

//PRAWY zapis analogowy(LMOTOR, 255); analogZapis(RMOTOR, 150); PIXEL.setPixelColor(0, PIXEL. Color(0, 100, 0)); PIXEL.setPixelColor(2, PIXEL. Color(0, 0, 255)); PIXEL.pokaż(); }

//to do dalszych eksperymentów, próbując nadać temu komuś trochę osobowości:-) Testuję, co dałoby się zrobić, ale jeszcze nie ma dobrych pomysłów.

void emotion() { int emotimer = 2500; int czas trwania = losowy (250, 750); if (millis() - oldmillis > emotimer) { oldmillis = millis(); emo = losowo (1, 4); } if (millis() - oldmillis > czas trwania) { emostate = !emostate; } if (emostate == true) { switch (emo) { przypadek 1: PIXEL.setPixelColor(1, PIXEL. Color((255), (255), (255))); PIXEL.pokaż(); przerwa; przypadek 2: PIXEL.setPixelColor(1, PIXEL. Color((255), (0), (0))); PIXEL.pokaż(); przerwa; przypadek 3: PIXEL.setPixelColor(1, PIXEL. Color((0), (255), (0))); PIXEL.pokaż(); przerwa; domyślnie: PIXEL.setPixelColor(1, PIXEL. Color(random(0, 255), random(0, 255), random(0, 255))); PIXEL.pokaż(); przerwa; } } else { PIXEL.setPixelColor(1, PIXEL. Color(25, 0, 0)); PIXEL.pokaż(); } }

Zalecana: