Taula de continguts:

Mini-seguidor de llum ATTiny-RAT, ATTINY: 3 passos
Mini-seguidor de llum ATTiny-RAT, ATTINY: 3 passos

Vídeo: Mini-seguidor de llum ATTiny-RAT, ATTINY: 3 passos

Vídeo: Mini-seguidor de llum ATTiny-RAT, ATTINY: 3 passos
Vídeo: Seguidor de Llum 2024, Desembre
Anonim
Mini-seguidor de llum ATTiny-RAT, alimentat per ATTINY
Mini-seguidor de llum ATTiny-RAT, alimentat per ATTINY
Mini-seguidor de llum ATTiny-RAT, alimentat per ATTINY
Mini-seguidor de llum ATTiny-RAT, alimentat per ATTINY
Mini-seguidor de llum ATTiny-RAT, alimentat per ATTINY
Mini-seguidor de llum ATTiny-RAT, alimentat per ATTINY
Mini-seguidor de llum ATTiny-RAT, alimentat per ATTINY
Mini-seguidor de llum ATTiny-RAT, alimentat per ATTINY

Hola gent, ha passat un temps des que vaig publicar el meu darrer instructable. Bé, ara hi ha moltes coses al cap, però he aconseguit documentar els meus "primers passos" amb la sèrie de xips ATTiny en aquest breu instructable per a vosaltres.

He demanat algunes mostres ATTINY85 només perquè volia provar-les:-) (a tothom li encanta provar coses, oi?). Després d'això vaig començar a dibuixar algunes idees a la meva llibreta. Per ser sincer, el primer que vaig fer va ser parpellejar un LED que sempre és un bon començament per comprovar si la vostra configuració / cadena d'eines funciona. També he provat un registre de temperatura i humitat amb DHT22 i SoftwareSerial. Va ser complicat perquè les biblioteques DHT són principalment per a rellotges de 16 MHz (si teniu previst fer alguna cosa així, comproveu com preescalar el rellotge intern). Però he decidit mostrar-vos alguna cosa que, molt bé, és més divertit. BTW: he penjat un dels meus dibuixos, no és un Rembrandt, però us mostrarà com he aconseguit aquesta (realment) estúpida idea en un tros de paper: -P.

Només he utilitzat coses que tenia per mantenir aquest projecte el més barat possible (per a mi). El resultat d'aquesta petita aventura és un petit "robot lightfollower" per uns 10-15 $ (3 $ per a mi:-P)

Per tant, si esteu interessats en ATTINY, llegiu més.

BTW: perdó pel meu mal anglès (no sóc nadiu)

Pas 1: Introducció a ATTiny, Eines i materials

Introducció a ATTiny, eines i materials
Introducció a ATTiny, eines i materials
Introducció a ATTiny, eines i materials
Introducció a ATTiny, eines i materials
Introducció a ATTiny, eines i materials
Introducció a ATTiny, eines i materials
Introducció a ATTiny, eines i materials
Introducció a ATTiny, eines i materials

Què necessitareu per començar:

- un xip ATTiny85

- un Arduino UNO o similar

- Tauler de connexió amb algun pont de filferro o un programador ATTINY o feu un programador-blindatge per a Arduino (consulteu les imatges adjuntes, hi ha un esquema a avdweb.nl). També he fet aquest i n’estic molt content, l’única modificació que he fet és que he afegit un sòcol per a la sèrie ATTinyx4 (consulteu la imatge i els diagrames de pinout).

- l'IDE Arduino (obteniu-lo aquí)

- els fitxers de maquinari de l'ArduinoIDE (descarregueu-los i instal·leu-los)

Enllaç d'informació al playgrounddirect Enllaç als fitxers github que he utilitzat

- carregueu l'Arduino com a esbós ISP a l'ONU (aquest serà el vostre programador)

- seguiu aquesta instrucció (https://highlowtech.org/) o aquesta instrucció (per ardutronix) i proveu l'esbós "parpellejar" (modifiqueu el número de PIN. Utilitzeu la imatge ATTINY com a referència! necessitareu un LED ATTINY preflashed i una resistència de ~ 220 Ohm per a això)

Feu una petita configuració de taulers per comprovar-ho tot. Si ho heu fet tot bé, el LED parpellejarà i ja esteu a punt.

EINES

- Soldador: una mica de soldadura, un petit cablejat, un dremel o una altra eina giratòria (només per tallar el PCB);

MATERIALS

- prototipatge de PCB (~ 4cmx6cm ho farà) - 2x LDR- 5x 10k Resistor (2x per als LDRs i 2x per als transistors BE, 1x LED) - 1x 330Ohm Resistor (1x NEOPIXELS) - 2x LDR- 1x LED (color del vostre elecció, en lloc de la roda rodant) - 3x NEOPIXEL WS2812- 2x transistor (BD137 o similar) - 2x díode (1N4001 o similar) - 2x micromotor (per exemple, des d'un micro-quadricòpter Hubsan) - 1x ATTINY85 + opcional (recomanat) 8PIN IC Socket - 1x 1s LIPO (he utilitzat un 140Ah d'un helicòpter RC antic): alguns capçals de pin / endolls - tub retràctil (carcassa LDR)

Procedim construint el maquinari …

Pas 2: maquinari

Maquinari
Maquinari
Maquinari
Maquinari
Maquinari
Maquinari

Si feu una ullada als esquemes que he adjuntat, la configuració del maquinari és bastant senzilla. Per tant, si podeu llegir esquemes i utilitzar un soldador, això és la meitat del truc. Mireu també les fotos, he afegit algunes notes per a vosaltres.

No ofereixo un pla per tallar el PCB, teniu la llibertat de fer el vostre propi disseny (sigueu creatius i mostreu-nos els vostres Tiny Bots). La vostra col·locació de tots els components electrònics també depèn de vosaltres. Alguns consells del meu costat:

Intenteu alinear els motors amb precisió (vigileu l’angle!), Només fem servir l’eix del motor en lloc de les rodes. (això consumirà menys energia) Recomano col·locar els motors sota la bateria (pes) i utilitzar els LDR a la part davantera (inclinats a 45 °) emparellats amb el LED encès (estic intentant utilitzar aquesta combinació per evitar obstacel, encara més calen proves).

A més, recomano fer una mica de jumper encès / apagat perquè la bateria no es perdi tan fàcilment.

Si hi ha alguna cosa poc clara o si teniu cap pregunta, pregunteu-m'ho. No farà que molts senadors facin una tesi d'aquest petit projecte.

Pas 3: programari

Programari
Programari
Programari
Programari

El primer de tots descarregueu i instal·leu ADAFRUIT Neopixel Library

Aquí teniu el meu codi amb algunes descripcions importants (també he afegit el fitxer d'esbós). No he comentat cada pas perquè crec que no és necessari.

Pengeu l’esbós al vostre ATTiny85 i divertiu-vos amb la vostra nova joguina

Idees per a la funció de "personalitat" + potser els exemples de codi són molt benvinguts:-)

Si hi ha alguna pregunta, no dubteu a fer-ho.

Espero que us hagi agradat el meu breu instructiu i el petit viatge al món dels ATTINYs.

/ * ATTINY85-Rata robot de seguiment de llum alimentat per ATTINY85 simple. Versió 2.0, per Auer Markus * /

#incloure

#incloure

// motors

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

// otherint emo = 0; calibre flotant; emostat booleà; longmillis llargs; // defineix NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

configuració nul·la ()

{// rellotge de luxe si no, trobareu alguns problemes de temps (el lib de neopixel s'escriu per a 16 MHz) #if definit (_AVR_ATtiny85_) si (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // inicialitzar els píxels PIXEL.begin (); PIXEL.show (); retard (500); // startsequence for (int i = 0; i

bucle buit ()

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

int lightfollow () {

int treshold = 14; int result = 0; flotador a l'esquerra = 0; flota a la dreta = 0; int samples = 1; // llegiu LDR per a (int j = 0; j <samples; j ++) {

left = left + analogRead (LLDR); right = right + (analogRead (RLDR) * calib);

}

// calcula el resultat (de quina direcció prové la llum?)

if ((left / samples)> ((right / samples) + treshold)) {result = 2;}

else if ((left / samples) <((right / samples) -treshold)) {result = 1;}

else {result = 0;}

resultat de retorn; } void forward () {// Endavant analogWrite (LMOTOR, 230); analogWrite (RMOTOR, 230); PIXEL.setPixelColor (0, PIXEL. Color (0, 0, 255)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

buit a l'esquerra () {

// ESQUERRA 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 () {

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

// això és per a experiments posteriors, intentant donar-li una mica de personalitat:-) Estic provant què podria fer, però encara no hi ha bones idees.

void emotion () {int emotimer = 2500; int durata = aleatori (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = aleatori (1, 4); } if (millis () - oldmillis> durada) {emostate =! emostate; } if (emostate == true) {switch (emo) {case 1: PIXEL.setPixelColor (1, PIXEL. Color ((255), (255), (255))); PIXEL.show (); trencar; cas 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); trencar; cas 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); trencar; per defecte: PIXEL.setPixelColor (1, PIXEL. Color (random (0, 255), random (0, 255), random (0, 255))); PIXEL.show (); trencar; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

Recomanat: