Sommario:
Video: ATTiny-RAT, Mini Light Follower alimentato ATTINY: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
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
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
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
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:
Laptop Raspberry Pi alimentato a supercondensatore: 5 passaggi
Laptop Raspberry Pi alimentato a supercondensatore: a seconda dell'interesse generale verso questo progetto, posso aggiungere più passaggi, ecc. Se ciò aiuta a semplificare i componenti confusi. divertente da t
Retro Arcade - (Full Size Alimentato da Raspberry Pi): 8 Passaggi
Retro Arcade - (Full Size Powered by Raspberry Pi): Innanzitutto volevo ringraziarti per aver dato un'occhiata alla guida allo sviluppo per questo sistema Retro Arcade. Prendo un vecchio box arcade e lo colloco in un cabinet autonomo con un monitor widescreen da 24 pollici. Le misurazioni su questa guida sono approssimative per darti
Display da gioco a LED in legno alimentato da Raspberry Pi Zero: 11 passaggi (con immagini)
Display da gioco a LED in legno alimentato da Raspberry Pi Zero: questo progetto realizza un display a LED 20x10 pixel basato su WS2812 con una dimensione di 78x35 cm che può essere facilmente installato nel soggiorno per giocare a giochi retrò. La prima versione di questa matrice è stata costruita nel 2016 e ricostruita da molte altre persone. Questa esperienza
Mini oscilloscopio CRT alimentato a batteria: 7 passaggi (con immagini)
Mini oscilloscopio CRT alimentato a batteria: Ciao! In questo Instructable ti mostrerò come realizzare un mini oscilloscopio CRT alimentato a batteria. Un oscilloscopio è uno strumento importante per lavorare con l'elettronica; puoi vedere tutti i segnali che fluiscono in un circuito e risolvere i problemi
Come potenziare il suono da un mini altoparlante non alimentato: 3 passaggi
Come potenziare il suono da un mini altoparlante non alimentato.: Questo è un modo economico per aumentare il suono da un set di altoparlanti esterni non alimentato. Questo particolare altoparlante l'ho comprato a Dollar Tree e tutto ciò che contiene sono due altoparlanti e un jack audio. Il suono non è per niente forte