ATTiny-RAT, Mini Lightfollower cu alimentare ATTINY: 3 pași
ATTiny-RAT, Mini Lightfollower cu alimentare ATTINY: 3 pași
Anonim
ATTiny-RAT, Mini Lightfollower alimentat cu ATTINY
ATTiny-RAT, Mini Lightfollower alimentat cu ATTINY
ATTiny-RAT, Mini Lightfollower alimentat cu ATTINY
ATTiny-RAT, Mini Lightfollower alimentat cu ATTINY
ATTiny-RAT, Mini Lightfollower alimentat cu ATTINY
ATTiny-RAT, Mini Lightfollower alimentat cu ATTINY
ATTiny-RAT, Mini Lightfollower alimentat cu ATTINY
ATTiny-RAT, Mini Lightfollower alimentat cu ATTINY

Salutare oameni buni, a trecut ceva timp de când am postat ultimul meu instructable. Ei bine, sunt multe lucruri care se întâmplă în capul meu chiar acum, dar am reușit să-mi documentez „primii pași” cu seria de jetoane ATTiny în acest scurt instructable pentru tine.

Am comandat câteva mostre ATTINY85 doar pentru că am vrut să le testez:-) (tuturor le place să testeze lucrurile, nu?). După aceea, am început să desenez câteva idei în caietul meu. Pentru a fi sincer, primul lucru pe care l-am făcut a fost să clipesc un LED care este ca întotdeauna un început bun pentru a verifica dacă setarea / lanțul de instrumente funcționează. De asemenea, am încercat un logger de temperatură și umiditate cu DHT22 și SoftwareSerial. Acesta a fost unul dificil, deoarece bibliotecile DHT sunt în principal pentru ceasul de 16Mhz (dacă intenționați să faceți așa ceva, verificați cum să prescrieți ceasul intern). Dar am decis să vă arăt ceva care este, de asemenea, mai amuzant. BTW: Am încărcat unul dintre desenele mele pentru dvs., nu este un Rembrandt, dar vă va arăta cum am prins această idee (cu adevărat) stupidă pe o bucată de hârtie: -P.

Am folosit doar lucruri pe care le aveam în jur pentru a menține acest proiect cât mai ieftin posibil (pentru mine). Rezultatul acestei mici aventuri este un mic „robot lightfollower” pentru aproximativ 10-15 $ (3 $ pentru mine:-P)

Deci, dacă sunteți interesat de ATTINY, citiți mai departe.

BTW: îmi pare rău pentru engleza mea proastă (nu sunt vorbitor nativ)

Pasul 1: Noțiuni introductive despre ATTiny & Instrumente și materiale

Noțiuni introductive despre ATTiny, Instrumente și Materiale
Noțiuni introductive despre ATTiny, Instrumente și Materiale
Noțiuni introductive despre ATTiny, Instrumente și Materiale
Noțiuni introductive despre ATTiny, Instrumente și Materiale
Noțiuni introductive despre ATTiny, Instrumente și Materiale
Noțiuni introductive despre ATTiny, Instrumente și Materiale
Noțiuni introductive despre ATTiny, Instrumente și Materiale
Noțiuni introductive despre ATTiny, Instrumente și Materiale

Ce veți avea nevoie pentru a începe:

- un cip ATTiny85

- un Arduino UNO sau similar

- placa de bord cu un jumper-wire sau un programator ATTINY sau faceți un programator-shield pentru Arduino (verificați imaginile atașate, există o schemă de pe avdweb.nl). Am făcut-o și pe aceasta și sunt foarte mulțumită de ea. Singura modificare pe care am făcut-o a fost că am adăugat o priză pentru seria ATTinyx4 (consultați imaginea și diagramele pinout).

- ID-ul Arduino (obțineți-l aici)

- fișierele hardware pentru ArduinoIDE (descărcați-le și instalați-le)

Info-Link către playgrounddirect Link către fișierele github pe care le-am folosit

- încărcați Arduino ca schiță ISP pe UNO (acesta va fi programatorul dvs.)

- urmați această instrucțiune (https://highlowtech.org/) sau acest instructable (de ardutronix) și încercați schița „clipire” (modificați codul PIN. Utilizați imaginea ATTINY ca referință! veți avea nevoie de LED-ul ATTINY preflashed și un rezistor de ~ 220Ohm pentru asta)

Realizați o mică configurație pentru a verifica totul. Dacă ați făcut totul bine, LED-ul va clipi și sunteți gata de plecare

INSTRUMENTE

- Fier de lipit - unele lipit - un mic cablu - un dremel sau alt instrument rotativ (doar pentru tăierea PCB-ului!) - unele lipici - pensete - fire

MATERIALE

- PCB de prototipare (~ 4cmx6cm o va face) - 2x LDR- 5x 10k Rezistor (2x pentru LDR-uri și 2x pentru tranzistoare BE, 1x LED) - 1x 330Ohm Rezistor (1x NEOPIXELS) - 2x LDR- 1x LED (culoarea dvs. la alegere, în locul roții rotative) - 3x NEOPIXEL WS2812- 2x tranzistor (BD137 sau similar) - 2x diodă (1N4001 sau similar) - 2x micromotor (de ex. de la un micro-quadcopter Hubsan) - 1x ATTINY85 + opțional (recomandat) 8PIN IC Socket - 1x 1s LIPO (am folosit un 140Ah dintr-un elicopter RC vechi) - niște capete de pin / prize - shrinktube (carcasă LDR)

Să continuăm construind hardware-ul …

Pasul 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Dacă aruncați o privire la schemele atașate, configurarea hardware-ului este destul de simplă. Deci, dacă sunteți capabil să citiți schemele și să utilizați un fier de lipit, aceasta este jumătate din truc. De asemenea, aruncați o privire la fotografii, am adăugat câteva note pentru dvs.

Nu ofer un plan pentru tăierea PCB-ului, aveți libertatea de a vă crea propriul design (fiți creativi și arătați-ne Tiny Bots). Plasarea tuturor componentelor electronice depinde și de dvs. Câteva indicii din partea mea:

Încercați să aliniați cu precizie motoarele (urmăriți unghiul!) Folosim doar arborele motor în locul roților. (acest lucru va consuma mai puțină energie) Vă recomand să plasați motoarele sub baterie (greutate) și să utilizați LDR-urile din față (unghi de 45 °) asociat cu LED-ul (încerc să folosesc această combinație pentru evitarea obstacelelor, mai departe sunt necesare teste).

În plus, vă recomand să creați un mic jumper on / off, astfel încât bateria să nu se piardă atât de ușor.

Dacă este ceva neclar sau dacă aveți întrebări, întrebați-mă. Nu va face prea mulți seni să facă o teză din acest mic proiect.

Pasul 3: Software

Software
Software
Software
Software

Prima dintre toate descarcă și instalează ADAFRUIT Neopixel Library

Iată codul meu cu câteva descrieri majore (am adăugat și fișierul schiță). Nu am comentat la fiecare pas, deoarece cred că nu este necesar.

Încărcați schița pe ATTiny85 și distrați-vă cu noua dvs. jucărie

Idei pentru funcția „personalitate” + poate că exemplele de cod sunt foarte binevenite:-)

Dacă aveți întrebări, nu ezitați să întrebați.

Sper că ți-a plăcut scurtul meu instructabil și mica călătorie în lumea ATTINY-urilor.

/ * ATTINY85-Rata robot cu urmărire de lumină ATTINY85 simplu. Versiunea 2.0, de Auer Markus * /

#include

#include

// motoare

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

// otherint emo = 0; calibru plutitor; emostat boolean; lungi vechi; // define NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

configurare nulă ()

} #endif

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // inițializează pixeli PIXEL.begin (); PIXEL.show (); întârziere (500); // startsequence for (int i = 0; i

bucla nulă ()

{if (lightfollow () == 1) {left (); } else if (lightfollow () == 2) {right (); } else if (lightfollow () == 0) {forward (); } emoție (); }

int lightfollow () {

int treshold = 14; int result = 0; float left = 0; float dreapta = 0; probe int = 1; // citiți LDR-uri pentru (int j = 0; j <samples; j ++) {

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

}

// calculați rezultatul (din ce direcție provine lumina?)

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

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

altceva {rezultat = 0;}

rezultatul returului; } void forward () {// Forward analogWrite (LMOTOR, 230); analogWrite (RMOTOR, 230); PIXEL.setPixelColor (0, PIXEL. Color (0, 0, 255)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

gol stâng () {

// STÂNGA 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 (); }

nul drept () {

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

// aceasta este pentru alte experimente, încercând să-i dau un pic de personalitate:-) Testez ce ar putea face, dar încă nu am idei bune.

void emotion () {int emotimer = 2500; durata int = aleatorie (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = aleatoriu (1, 4); } if (millis () - oldmillis> durata) {emostate =! emostate; } if (emostate == true) {switch (emo) {case 1: PIXEL.setPixelColor (1, PIXEL. Color ((255), (255), (255))); PIXEL.show (); pauză; cazul 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); pauză; cazul 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); pauză; implicit: PIXEL.setPixelColor (1, PIXEL. Color (aleatoriu (0, 255), aleatoriu (0, 255), aleatoriu (0, 255))); PIXEL.show (); pauză; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}