Mini svjetlosni sljedbenik s ATTiny-RAT, ATTINY napajanjem: 3 koraka
Mini svjetlosni sljedbenik s ATTiny-RAT, ATTINY napajanjem: 3 koraka
Anonim
ATTiny-RAT, ATTINY Mini Lightfollower s napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower s napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower s napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower s napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower s napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower s napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower s napajanjem
ATTiny-RAT, ATTINY Mini Lightfollower s napajanjem

Zdravo ljudi, prošlo je dosta vremena otkad sam objavio svoju posljednju instrukciju. Pa, mnoge stvari mi se trenutno vrte po glavi, ali uspio sam dokumentirati svoje "prve korake" s č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 bilježnicu. Da budem iskren, prvo što sam učinio je treptanje LED diode, što je kao i uvijek dobar početak za provjeru radi li vam postavljanje/lanac alata. Također sam isprobao zapisnik o temperaturi i vlažnosti s DHT22 i SoftwareSerial. To je bilo lukavo jer su DHT knjižnice uglavnom namijenjene taktu od 16 MHz (ako namjeravate učiniti nešto takvo, provjerite kako unaprijed podesiti interni sat). Ali odlučio sam vam pokazati nešto što je, pa, samo smiješnije. BTW: Prenio sam za vas jedan od svojih crteža, nije Rembrandtov, ali pokazat će vam kako sam ovu (stvarno) 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 "lightfollower 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: Početak rada s ATTiny & Tools & Materials

Početak rada s ATTiny & Tools & Materials
Početak rada s ATTiny & Tools & Materials
Početak rada s ATTiny & Tools & Materials
Početak rada s ATTiny & Tools & Materials
Početak rada s ATTiny & Tools & Materials
Početak rada s ATTiny & Tools & Materials
Početak rada s ATTiny & Tools & Materials
Početak rada s ATTiny & Tools & Materials

Što će vam trebati za početak:

- čip ATTiny85

- Arduino UNO ili slično

-abreadboard s nekom džamperskom žicom ili programom ATTINY ili sami napravite štitnik programatora za Arduino (provjerite priložene slike, postoji shema s avdweb.nl). Napravio sam i ovu i jako sam zadovoljan s njom. 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šta izravna Veza do github datoteka koje sam koristio

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

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

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

ALATI

- lemilica- neki lem- 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 priložene sheme, 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 s 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 upotrijebite 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 mnogo senesa nego napraviti 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 svjetlosni robot sa ATTINY85 pogonom. Verzija 2.0, autor Auer Markus */

#uključi

#uključi

// 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; kalibar plovka; boolean emostate; dugi oldmillis; // 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) #ako je definirano (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #završi ako

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, IZLAZ); 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 prag = 14; int rezultat = 0; lebdi lijevo = 0; plutajte desno = 0; int uzorci = 1; // čitanje LDR -ova 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 () {// Naprijed 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 pokuse, pokušavajući ovom dati malo osobnosti:-) testiram što bih mogao učiniti, ali još nema dobrih ideja.

void emotion () {int emotimer = 2500; int trajanje = slučajno (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 (); pauza; slučaj 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); pauza; slučaj 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); pauza; zadano: PIXEL.setPixelColor (1, PIXEL. Color (slučajno (0, 255), nasumično (0, 255), slučajno (0, 255))); PIXEL.show (); pauza; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}