Sommario:

ATTiny-RAT, Mini Light Follower alimentato ATTINY: 3 passaggi
ATTiny-RAT, Mini Light Follower alimentato ATTINY: 3 passaggi

Video: ATTiny-RAT, Mini Light Follower alimentato ATTINY: 3 passaggi

Video: ATTiny-RAT, Mini Light Follower alimentato ATTINY: 3 passaggi
Video: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Dicembre
Anonim
ATTiny-RAT, Mini Lightfollower alimentato ATTINY
ATTiny-RAT, Mini Lightfollower alimentato ATTINY
ATTiny-RAT, Mini Lightfollower alimentato ATTINY
ATTiny-RAT, Mini Lightfollower alimentato ATTINY
ATTiny-RAT, Mini Lightfollower alimentato ATTINY
ATTiny-RAT, Mini Lightfollower alimentato ATTINY
ATTiny-RAT, Mini Lightfollower alimentato ATTINY
ATTiny-RAT, Mini Lightfollower alimentato ATTINY

Ciao gente, è passato un po' di tempo da quando ho pubblicato la mia ultima istruzione. Bene, ci sono molte cose che mi girano per la testa in questo momento, ma sono riuscito a documentare i miei "primi passi" con la serie di chip ATTiny in questo breve tutorial per te.

Ho ordinato alcuni campioni di ATTINY85 solo perché volevo testarli:-) (tutti amano testare le cose, giusto?). Dopodiché ho iniziato a disegnare alcune idee sul mio quaderno. Ad essere onesti, la prima cosa che ho fatto è stata far lampeggiare un LED che è come sempre un buon inizio per verificare se la tua configurazione/toolchain funziona. Ho anche provato un registratore di temperatura e umidità con DHT22 e SoftwareSerial. È stato complicato perché le librerie DHT sono principalmente per l'orologio a 16 Mhz (se hai intenzione di fare qualcosa del genere, controlla come prescalare l'orologio interno). Ma ho deciso di mostrarti qualcosa che è, beh, solo più divertente. A proposito: ho caricato uno dei miei disegni per te, non è un Rembrandt ma ti mostrerà come ho ottenuto questa (davvero) stupida idea su un pezzo di carta: -P.

Ho usato solo le cose che avevo in giro per mantenere questo progetto il più economico possibile (per me). Il risultato di questa piccola avventura è un simpatico "robot lightfollower" per circa 10-15$ (3$ per me:-P)

Quindi, se sei interessato ad ATTINY, continua a leggere.

A proposito: scusa per il mio cattivo inglese (non sono madrelingua)

Passaggio 1: iniziare con ATTiny & Tools & Materials

Iniziare con ATTiny & Tools & Materials
Iniziare con ATTiny & Tools & Materials
Iniziare con ATTiny & Tools & Materials
Iniziare con ATTiny & Tools & Materials
Iniziare con ATTiny & Tools & Materials
Iniziare con ATTiny & Tools & Materials
Iniziare con ATTiny & Tools & Materials
Iniziare con ATTiny & Tools & Materials

Di cosa avrai bisogno per iniziare:

- un chip ATTiny85

- un Arduino UNO o simile

- areadboard con un ponticello o un programmatore ATTINY o fai tu stesso un programmatore-shield per Arduino (controlla le immagini allegate, c'è uno schema da avdweb.nl). Ho realizzato anche questo e ne sono davvero soddisfatto, l'unica modifica che ho apportato è stata l'aggiunta di una presa per la serie ATTinyx4 (fare riferimento all'immagine e ai diagrammi di piedinatura).

- l'IDE Arduino (prendilo qui)

- i file hardware per ArduinoIDE (scaricali e installali)

Info-Link al playgrounddirect Link ai file github che ho usato

- carica Arduino come schizzo ISP su UNO (questo sarà il tuo programmatore)

- segui questa istruzione (https://highlowtech.org/) o questa istruzione (by ardutronix) e prova lo sketch "blink" (modifica il PIN Nr. usa l'immagine ATTINY come riferimento! ti servirà il prelampeggiato ATTINY un LED e un resistore da ~ 220 Ohm per quello)

Fai una piccola configurazione della breadboard per controllare tutto. Se hai fatto tutto bene, il LED lampeggerà e sei pronto per partire

UTENSILI

- Saldatore- un po' di saldatura- un piccolo tagliafili- un dremel o altro utensile rotante (solo per tagliare il PCB!)- della colla a caldo- pinzette- fili

MATERIALI

- PCB di prototipazione (~4cmx6cm lo farà)- 2x LDR- 5x resistore da 10k (2x per LDR e 2x per i transistor BE, 1x LED) - 1x resistore da 330Ohm (1x NEOPIXELS)- 2x LDR- 1x LED (colore del tuo a scelta, al posto della ruota)- 3x NEOPIXEL WS2812- 2x Transistor (BD137 o simile)- 2x Diodo (1N4001 o simile)- 2x micromotore (es. da un micro-quadcopter Hubsan)- 1x ATTINY85 + optional (consigliato) 8PIN Presa IC- 1x 1s LIPO (ho usato un 140Ah da un vecchio elicottero RC)- alcuni pinheader/prese- tubo termoretraibile (alloggiamento LDR)

Procediamo costruendo l'hardware…

Passaggio 2: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Se dai un'occhiata agli schemi che ho allegato, la configurazione hardware è piuttosto semplice. Quindi, se sei in grado di leggere gli schemi e di usare un saldatore, questa è metà del trucco. Guarda anche le foto, ho aggiunto alcune note per te.

Non fornisco un piano per il taglio del PCB, hai la libertà di creare il tuo design (sii creativo e mostraci i tuoi Tiny Bot). Anche il posizionamento di tutti i componenti elettronici dipende da te. Alcuni suggerimenti da parte mia:

Cerca di allineare i motori con precisione (attenzione all'angolo!) usiamo solo l'albero motore invece delle ruote. (questo consumerà meno energia) Consiglio di posizionare i motori sotto la batteria (peso) e di utilizzare gli LDR sulla parte anteriore (angolato a 45°) in coppia con il LED acceso (sto cercando di utilizzare questa combinazione per evitare ostacoli, inoltre sono necessarie prove).

Inoltre consiglio di creare un piccolo ponticello on/off in modo che la batteria non si perda così facilmente.

Se c'è qualcosa di poco chiaro o se hai domande, chiedimi pure. Non servirà a molto fare una tesi su questo piccolo progetto.

Passaggio 3: software

Software
Software
Software
Software

Prima di tutto scarica e installa ADAFRUIT Neopixel Library

Ecco il mio codice con alcune descrizioni principali (ho anche aggiunto il file di schizzo). Non ho commentato ogni passaggio perché penso che non sia necessario.

Carica lo schizzo sul tuo ATTiny85 e divertiti con il tuo nuovo giocattolo

Idee per la funzione "personalità" + forse esempi di codice sono molto benvenute:-)

Se ci sono domande, non esitate a chiedere.

Spero che ti sia piaciuto il mio breve tutorial e il piccolo viaggio nel mondo di ATTINY.

/* ATTINY85-Rata semplice robot che segue la luce alimentato ATTINY85. Versione 2.0, di Auer Markus */

#includere

#includere

//motori

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

//altro emo = 0; calibrazione del galleggiante; emostato booleano; lungo oldmillis; //define NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel(NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

configurazione nulla()

{ //upscale clock altrimenti incontrerai alcuni problemi di timing (la lib neopixel è scritta per 16MHz) #if definito (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #finisci se

//PINMODE pinMode(LMOTOR, OUTPUT); pinMode(RMOTOR, OUTPUT); pinMode(LLDR, INPUT); pinMode(LLDR, INPUT); //inizializza i pixel PIXEL.begin(); PIXEL.mostra(); ritardo (500); //sequenzainiziale for(int i=0;i

ciclo vuoto()

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

int lightfollow() {

int soglia = 14; int risultato = 0; float a sinistra = 0; float a destra = 0; int campioni = 1; //leggi LDR per (int j = 0; j<samples; j++){

sinistra = sinistra + analogRead(LLDR); destra = destra + (analogRead(RLDR)*calib);

}

//calcola il risultato (da quale direzione proviene la luce?)

if((sinistra/campioni) > ((destra/campioni)+soglia)) {risultato = 2;}

else if((sinistra/campioni) < ((destra/campioni)-soglia)) {risultato = 1;}

altrimenti {risultato = 0;}

restituire il risultato; } void forward() { //Inoltra analogWrite(LMOTOR, 230); analogWrite(RMOTOR, 230); PIXEL.setPixelColor(0, PIXEL. Color(0, 0, 255)); PIXEL.setPixelColor(2, PIXEL. Color(0, 0, 255)); PIXEL.mostra(); }

vuoto lasciato() {

//SINISTRA 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.mostra(); }

vuoto a destra() {

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

//questo è per ulteriori esperimenti, cercando di dare a questo un po' di personalità:-) sto testando cosa potrebbe essere in grado di fare, ma ancora nessuna buona idea.

emozione vuota() { int emotimer = 2500; int durata = casuale(250, 750); if (millis() - oldmillis > emotimer) { oldmillis = millis(); emo = casuale(1, 4); } if (millis() - oldmillis > durata) { emostate = !emostate; } if (emostate == true) { switch (emo) { case 1: PIXEL.setPixelColor(1, PIXEL. Color((255), (255), (255))); PIXEL.mostra(); rottura; caso 2: PIXEL.setPixelColor(1, PIXEL. Color((255), (0), (0))); PIXEL.mostra(); rottura; caso 3: PIXEL.setPixelColor(1, PIXEL. Color((0), (255), (0))); PIXEL.mostra(); rottura; predefinito: PIXEL.setPixelColor(1, PIXEL. Color(random(0, 255), random(0, 255), random(0, 255))); PIXEL.mostra(); rottura; } } else { PIXEL.setPixelColor(1, PIXEL. Color(25, 0, 0)); PIXEL.mostra(); } }

Consigliato: