Innholdsfortegnelse:

ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 trinn
ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 trinn

Video: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 trinn

Video: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 trinn
Video: How to use the Atmel ATTINY10 Microcontroller 2024, Juli
Anonim
ATTiny-RAT, ATTINY drevet mini lysfølger
ATTiny-RAT, ATTINY drevet mini lysfølger
ATTiny-RAT, ATTINY drevet mini lysfølger
ATTiny-RAT, ATTINY drevet mini lysfølger
ATTiny-RAT, ATTINY drevet mini lysfølger
ATTiny-RAT, ATTINY drevet mini lysfølger
ATTiny-RAT, ATTINY drevet mini lysfølger
ATTiny-RAT, ATTINY drevet mini lysfølger

Hei folkens, det er en stund siden jeg la ut min siste instruerbare. Vel, det er mange ting som går rundt i hodet mitt akkurat nå, men jeg klarte å dokumentere mine "første skritt" med ATTiny-serien med sjetonger i denne korte instruksen for deg.

Jeg bestilte noen ATTINY85 prøver bare fordi jeg ville teste dem:-) (alle liker å teste ting, ikke sant?). Etter det begynte jeg å tegne noen ideer i notatblokken min. For å være ærlig var det første jeg gjorde å blinke med en LED som som alltid er en god start for å sjekke om oppsettet/verktøykjeden din fungerer. Jeg prøvde også en temperatur- og fuktighetslogger med DHT22 og SoftwareSerial. Det var vanskelig fordi DHT -bibliotekene hovedsakelig er for 16Mhz -klokke (hvis du planlegger å gjøre noe slikt, sjekk hvordan du skal forhåndskalke internklokken). Men jeg bestemte meg for å vise deg noe som er vel, bare morsommere. BTW: Jeg lastet opp en av tegningene mine for deg, det er ikke en Rembrandt, men det vil vise deg hvordan jeg fikk denne (virkelig) dumme ideen til et stykke papir: -P.

Jeg brukte bare ting jeg hadde liggende for å holde dette prosjektet så billig som mulig (for meg). Resultatet av dette lille eventyret er en fin liten "lightfollower robot" for rundt 10-15 $ (3 $ for meg:-P)

Så hvis du er interessert i ATTINY selv, kan du bare lese videre.

BTW: beklager min dårlige engelsk (jeg er ikke morsmål)

Trinn 1: Komme i gang med ATTiny & Tools & Materials

Komme i gang med ATTiny og verktøy og materialer
Komme i gang med ATTiny og verktøy og materialer
Komme i gang med ATTiny og verktøy og materialer
Komme i gang med ATTiny og verktøy og materialer
Komme i gang med ATTiny og verktøy og materialer
Komme i gang med ATTiny og verktøy og materialer
Komme i gang med ATTiny og verktøy og materialer
Komme i gang med ATTiny og verktøy og materialer

Hva du trenger for å komme i gang:

- en ATTiny85 -brikke

- en Arduino UNO eller lignende

-abreadboard med noen jumper-wire eller en ATTINY programmerer eller lag et programmeringsskjerm for Arduino selv (sjekk de vedlagte bildene, det er en skjema fra avdweb.nl). Jeg har også laget denne, og jeg er veldig fornøyd med den. Den eneste endringen jeg gjorde var at jeg la til en kontakt for ATTinyx4-serien (se bildet og pinout-diagrammene).

- Arduino IDE (få den her)

- hardwarefilene for ArduinoIDE (last ned og installer dem)

Info-Link til lekeplassdirekt Link til github-filene jeg brukte

- last Arduino som ISP -skisse på UNO (dette blir din programmerer)

- følg denne instruksjonen (https://highlowtech.org/) eller denne instruksjonsboken (av ardutronix) og prøv "blink" -skissen (modifiser PIN -koden. bruk ATTINY -bildet som referanse! du trenger forhåndsflettet ATTINY en LED og en ~ 220Ohm motstand for det)

Lag et lite brødbrett-oppsett for å sjekke alt. Hvis du har gjort alt riktig, vil LED-en blinke og du er klar til å gå

VERKTØY

- Loddejern- litt loddetinn- en liten wirecutter- en dremel eller et annet roterende verktøy (bare for å kutte PCB!)- noen limlimmer- pinsetter

MATERIALER

- prototyping PCB (~ 4cmx6cm vil gjøre det)- 2x LDR- 5x 10k motstand (2x for LDRs og 2x for transistorene BE, 1x LED)- 1x 330Ohm motstand (1x NEOPIXELS)- 2x LDR- 1x LED (farge på din valg, i stedet for hjulet)- 3x NEOPIXEL WS2812- 2x Transistor (BD137 eller lignende)- 2x Diode (1N4001 eller lignende)- 2x mikromotor (f.eks. fra et Hubsan mikro-quadcopter)- 1x ATTINY85 + valgfritt (anbefalt) 8PIN IC Socket- 1x 1s LIPO (jeg brukte en 140Ah fra et gammelt RC-helikopter)- noen pinheaders/socket- shrinktube (LDR-hus)

La oss fortsette med å bygge maskinvaren …

Trinn 2: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare

Hvis du ser på skjemaene jeg har vedlagt, er maskinvareoppsettet ganske enkelt. Så hvis du er i stand til å lese skjemaer og bruke et loddejern, er det halve trikset. Se også på bildene, jeg la til noen notater for deg.

Jeg gir ikke en plan for å kutte kretskortet, du har friheten til å lage ditt eget design (vær kreativ og vis oss Tiny Bots). Plasseringen av alle de elektroniske komponentene er også opp til deg. Noen hint fra min side:

Prøv å justere motorene nøyaktig (se vinkelen!) Vi bruker bare motorakselen i stedet for hjul. (dette vil forbruke mindre energi) Jeg anbefaler å plassere motorene under batteriet (vekt) og å bruke LDR -ene på forsiden (45 ° vinklet) sammen med på LED (jeg prøver å bruke denne kombinasjonen for å unngå hindring, videre tester er nødvendig).

Videre anbefaler jeg å lage en liten av/på -jumper slik at batteriet ikke går seg vill så lett.

Hvis det er noe uklart eller hvis du har spørsmål, er det bare å spørre meg. Det vil ikke gjøre at mange sener lager en avhandling av dette lille prosjektet.

Trinn 3: Programvare

Programvare
Programvare
Programvare
Programvare

Først av alt last ned og installer ADAFRUIT Neopixel Library

Her er koden min med noen store beskrivelser (jeg la også til skissefilen). Jeg kommenterte ikke hvert trinn fordi jeg tror det ikke er nødvendig.

Last opp skissen til ATTiny85 og ha det gøy med det nye leketøyet ditt

Ideer til funksjonen "personlighet" + kanskje kodeeksempler er veldig velkomne:-)

Hvis det er noen spørsmål, kan du gjerne spørre.

Jeg håper du likte min korte instruksjonsrike og den lille turen inn i ATTINYs verden.

/* ATTINY85-Rata enkel ATTINY85 drevet lysfølge robot. Versjon 2.0, av Auer Markus */

#inkludere

#inkludere

// motorer

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

// andreint emo = 0; flyte kalib; boolsk emostat; lang oldmillis; // definere NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

ugyldig oppsett ()

{// oppskalere klokken ellers vil du støte på noen timingproblemer (neopikslen lib er skrevet for 16MHz) #if definert (_AVR_ATtiny85_) hvis (F_CPU == 16000000) clock_prescale_set (clock_div_1); #slutt om

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INNGANG); pinMode (LLDR, INNGANG); // initialiser piksler PIXEL.begin (); PIXEL.show (); forsinkelse (500); // startsekvens for (int i = 0; i

hulrom ()

{if (lightfollow () == 1) {left (); } annet hvis (lightfollow () == 2) {right (); } annet hvis (lightfollow () == 0) {forward (); } følelser (); }

int lightfollow () {

int terskel = 14; int resultat = 0; flyte til venstre = 0; flyte til høyre = 0; int prøver = 1; // les LDR for (int j = 0; j <samples; j ++) {

venstre = venstre + analogRead (LLDR); høyre = høyre + (analogRead (RLDR)*kalib);

}

// beregne resultatet (hvilken retning kommer lyset fra?)

if ((venstre/prøver)> ((høyre/prøver)+grense)) {result = 2;}

ellers hvis ((venstre/prøver) <((høyre/prøver) -treshold)) {result = 1;}

annet {resultat = 0;}

returresultat; } ugyldig forover () {// Fremover analogWrite (LMOTOR, 230); analogWrite (RMOTOR, 230); PIXEL.setPixelColor (0, PIXEL. Color (0, 0, 255)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

ugyldig venstre () {

// VENSTRE 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 (); }

ugyldig rett () {

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

// dette er for ytterligere eksperimenter, prøver å gi denne en liten personlighet:-) jeg tester hva jeg kan gjøre, men ingen gode ideer ennå.

void emotion () {int emotimer = 2500; int varighet = tilfeldig (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = tilfeldig (1, 4); } if (millis () - oldmillis> duration) {emostate =! emostate; } if (emostate == true) {switch (emo) {case 1: PIXEL.setPixelColor (1, PIXEL. Color ((255), (255), (255))); PIXEL.show (); gå i stykker; sak 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); gå i stykker; sak 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); gå i stykker; standard: PIXEL.setPixelColor (1, PIXEL. Color (tilfeldig (0, 255), tilfeldig (0, 255), tilfeldig (0, 255))); PIXEL.show (); gå i stykker; }} annet {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

Anbefalt: