Sadržaj:

ATTiny-RAT, ATTINY napajani mini svjetlosni sljedbenik: 3 koraka
ATTiny-RAT, ATTINY napajani mini svjetlosni sljedbenik: 3 koraka

Video: ATTiny-RAT, ATTINY napajani mini svjetlosni sljedbenik: 3 koraka

Video: ATTiny-RAT, ATTINY napajani mini svjetlosni sljedbenik: 3 koraka
Video: Programming the new ATtiny from Arduino using UPDI [Beginner Tutorial] 2024, Novembar
Anonim
ATTiny-RAT, ATTINY Mini Lightfollower sa napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower sa napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower sa napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower sa napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower sa napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower sa napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower sa napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower sa napajanjem

Zdravo raja, prošlo je dosta vremena od kada sam objavio svoju posljednju instrukciju. Pa, mnoge stvari mi se trenutno vrte po glavi, ali uspio sam dokumentirati svoje "prve korake" sa čipovima ATTiny serije u ovom kratkom uputstvu za vas.

Naručio sam neke uzorke ATTINY85 samo zato što sam ih želio testirati:-) (svi vole testirati stvari, zar ne?) Nakon toga počeo sam crtati neke ideje u svoju bilježnicu. Da budem iskren, prvo što sam učinio je treptanje LED diode, što je kao i uvijek dobar početak za provjeru funkcionira li vaše postavljanje/lanac alata. Također sam isprobao zapisnik o temperaturi i vlažnosti s DHT22 i SoftwareSerial. To je bilo lukavo jer su DHT biblioteke uglavnom namijenjene taktu od 16 MHz (ako planirate učiniti nešto slično, provjerite kako unaprijed podesiti interni sat). Ali odlučio sam da vam pokažem nešto što je, pa, samo smiješnije. BTW: Postavio sam jedan od mojih crteža za vas, nije Rembrandtov, ali će vam pokazati kako sam ovu (zaista) glupu ideju dobio na komad papira: -P.

Koristio sam samo stvari koje sam ležao kako bih ovaj projekt učinio što jeftinijim (za mene). Rezultat ove male avanture je lijepi mali "svjetlosni robot" za oko 10-15 $ (3 $ za mene:-P)

Dakle, ako ste i sami zainteresirani za ATTINY, pročitajte dalje.

BTW: oprostite na lošem engleskom (nisam izvorni govornik)

Korak 1: Započnite s ATTiny & Tools & Materials

Prvi koraci s ATTiny & Tools & Materials
Prvi koraci s ATTiny & Tools & Materials
Prvi koraci s ATTiny & Tools & Materials
Prvi koraci s ATTiny & Tools & Materials
Prvi koraci s ATTiny & Tools & Materials
Prvi koraci s ATTiny & Tools & Materials
Prvi koraci s ATTiny & Tools & Materials
Prvi koraci s ATTiny & Tools & Materials

Šta će vam trebati za početak:

- ATTiny85 čip

- Arduino UNO ili slično

-abreadboard s nekom džamperskom žicom ili ATTINY programatorom ili sami napravite štitnik za programer za Arduino (provjerite priložene slike, postoji shema sa avdweb.nl). Napravio sam i ovaj i zaista sam zadovoljan s njim. Jedina izmjena koju sam napravio je da sam dodao utičnicu za ATTinyx4 seriju (pogledajte sliku i dijagrame iscrtavanja).

- Arduino IDE (nabavite ga ovdje)

- hardverske datoteke za ArduinoIDE (preuzmite ih i instalirajte)

Info-veza do igralištadirektna veza do github datoteka koje sam koristio

- učitajte skicu Arduina kao ISP -a na UNO (ovo će biti vaš programer)

- slijedite ovo uputstvo (https://highlowtech.org/) ili ovo uputstvo (autor ardutronix) i isprobajte skicu "treptanja" (izmijenite PIN broj. upotrijebite sliku ATTINY kao referencu! trebat će vam unaprijed utisnuta LED dioda ATTINY i otpornik od ~ 220Ohm za to)

Napravite malu ploču za postavljanje kako biste provjerili sve. Ako ste sve učinili kako treba, LED će treptati i spremni ste za rad

ALATI

- lemilica- malo lemljenja- mala žica za rezanje- dremel ili drugi rotacijski alat (samo za rezanje PCB-a)- malo vrućeg ljepila- pinceta- žice

MATERIJALI

- prototipiranje PCB-a (~ 4cmx6cm će to učiniti)- 2x LDR- 5x 10k otpornik (2x za LDR-ove i 2x za tranzistore BE, 1x LED)- 1x 330Ohm otpornik (1x NEOPIXELS)- 2x LDR-1x LED (boja vaše izbor, umjesto kotačića)- 3x NEOPIXEL WS2812- 2x tranzistor (BD137 ili slično)- 2x dioda (1N4001 ili slično)- 2x mikromotor (npr. iz Hubsanovog mikro kvadrokoptera)- 1x ATTINY85 + opcionalno (preporučeno) 8PIN IC utičnica- 1x 1s LIPO (koristio sam 140Ah iz starog RC-helikoptera)- neki pinheaders/utičnice- skupljajuća cijev (LDR kućište)

Nastavimo s izgradnjom hardvera …

Korak 2: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Ako pogledate sheme koje sam priložio, postavljanje hardvera je prilično jednostavno. Dakle, ako znate čitati sheme i koristiti lemilicu, to je pola trika. Pogledajte i fotografije, dodao sam vam neke bilješke.

Ne dajem plan za rezanje PCB -a, imate slobodu da napravite vlastiti dizajn (budite kreativni i pokažite nam svoje Sitne botove). Na vama je i postavljanje svih elektroničkih komponenti. Neki savjeti sa moje strane:

Pokušajte precizno poravnati motore (pazite na kut!) Koristimo samo osovinu motora umjesto kotača. (ovo će trošiti manje energije) Preporučujem da postavite motore ispod baterije (težina) i da koristite LDR -ove sprijeda (pod kutom od 45 °) uparene sa LED diodom (pokušavam koristiti ovu kombinaciju za izbjegavanje prepreka, dalje potrebni su testovi).

Nadalje, preporučujem da napravite mali prekidač za uključivanje/isključivanje kako se baterija ne bi tako lako izgubila.

Ako imate nešto nejasno ili imate pitanja, samo me pitajte. Neće učiniti puno senasa da naprave tezu od ovog malog projekta.

Korak 3: Softver

Softver
Softver
Softver
Softver

Prvo preuzmite i instalirajte ADAFRUIT Neopixel Library

Evo mog koda s nekim većim opisima (dodao sam i datoteku skice). Nisam komentirao svaki korak jer mislim da nije potrebno.

Prenesite skicu na svoj ATTiny85 i zabavite se s novom igračkom

Ideje za funkciju "osobnosti" + možda su primjeri kodova dobrodošli:-)

Ako imate pitanja, slobodno pitajte.

Nadam se da ste uživali u mom kratkom uputstvu i malom putovanju u svijet ATTINY -a.

/* ATTINY85-Rata jednostavan robot koji prati ATTINY85 sa svjetlom. Verzija 2.0, autor Auer Markus */

#include

#include

// motori

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

// otherint emo = 0; float calib; boolean emostate; longmillis; // definiramo NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

void setup ()

{// upscale clock inače ćete naići na neke vremenske probleme (neopixel lib je napisan za 16MHz) #if definirano (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // inicijaliziranje piksela PIXEL.begin (); PIXEL.show (); kašnjenje (500); // startsequence za (int i = 0; i

void loop ()

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

int lightfollow () {

int treshold = 14; int rezultat = 0; float left = 0; lebdi desno = 0; int uzorci = 1; // čita LDR za (int j = 0; j <uzorci; j ++) {

lijevo = lijevo + analogno čitanje (LLDR); desno = desno + (analogno čitanje (RLDR)*kalibracija);

}

// izračunati rezultat (iz kojeg smjera dolazi svjetlost?)

if ((lijevo/uzorci)> ((desno/uzorci)+prag)) {rezultat = 2;}

inače if ((lijevo/uzorci) <((desno/uzorci) -prag)) {rezultat = 1;}

else {rezultat = 0;}

povratni rezultat; } void forward () {// Proslijedi analogWrite (LMOTOR, 230); analogWrite (RMOTOR, 230); PIXEL.setPixelColor (0, PIXEL. Color (0, 0, 255)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

void left () {

// LIJEVO analogWrite (LMOTOR, 150); analogWrite (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.show (); }

void right () {

// DESNO analogWrite (LMOTOR, 255); analogWrite (RMOTOR, 150); PIXEL.setPixelColor (0, PIXEL. Color (0, 100, 0)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

// ovo je za daljnje eksperimente, pokušavajući ovom dati malo osobnosti:-) testiram što bih mogao učiniti, ali još nema dobrih ideja.

void emotion () {int emotimer = 2500; int duration = random (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = slučajno (1, 4); } if (millis () - oldmillis> trajanje) {emostate =! emostate; } if (emostate == true) {switch (emo) {case 1: PIXEL.setPixelColor (1, PIXEL. Color ((255), (255), (255))); PIXEL.show (); break; slučaj 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); break; slučaj 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); break; zadano: PIXEL.setPixelColor (1, PIXEL. Color (nasumično (0, 255), nasumično (0, 255), nasumično (0, 255))); PIXEL.show (); break; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

Preporučuje se: