Obsah:

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

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

Video: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 kroky
Video: How to use the Atmel ATTINY10 Microcontroller 2024, November
Anonim
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower

Ahojte kamoši, už je to nejaký čas, čo som zverejnil svoj posledný pokyn. V mojej hlave sa práve deje veľa vecí, ale podarilo sa mi zdokumentovať moje „prvé kroky“s čipmi ATTiny v tomto krátkom pokyne.

Objednal som si niekoľko vzoriek ATTINY85 len preto, že som ich chcel otestovať:-) (každý miluje testovanie vecí, však?). Potom som začal kresliť nápady do svojho notebooku. Aby som bol úprimný, prvá vec, ktorú som urobil, bolo blikanie LED diódy, čo je ako vždy dobrý začiatok kontroly, či vaše nastavenie/reťazec nástrojov funguje. Skúsil som aj záznamník teploty a vlhkosti s DHT22 a SoftwareSerial. Bolo to zložité, pretože knižnice DHT sú určené hlavne pre hodiny 16 MHz (ak máte v pláne niečo také urobiť, skontrolujte, ako prednastaviť vnútorné hodiny). Ale rozhodol som sa vám ukázať niečo, čo je zábavnejšie. BTW: Nahral som pre vás jednu z mojich kresieb, nie je to Rembrandt, ale ukáže vám, ako som na tento papier dostal tento (skutočne) hlúpy nápad: -P.

Použil som iba veci, ktoré som mal okolo seba, aby bol tento projekt čo najlacnejší (pre mňa). Výsledkom tohto malého dobrodružstva je pekný malý „robot ľahkého sledovača“za približne 10-15 dolárov (3 doláre pre mňa:-P)

Ak vás teda ATTINY zaujíma, čítajte ďalej.

BTW: ospravedlňujem sa za zlú angličtinu (nie som rodený hovorca)

Krok 1: Začíname s ATTiny a nástrojmi a materiálmi

Začíname s ATTiny a nástrojmi a materiálmi
Začíname s ATTiny a nástrojmi a materiálmi
Začíname s ATTiny a nástrojmi a materiálmi
Začíname s ATTiny a nástrojmi a materiálmi
Začíname s ATTiny a nástrojmi a materiálmi
Začíname s ATTiny a nástrojmi a materiálmi
Začíname s ATTiny a nástrojmi a materiálmi
Začíname s ATTiny a nástrojmi a materiálmi

Čo budete potrebovať na začiatok:

- čip ATTiny85

- Arduino UNO alebo podobné

-abreadboard s nejakým prepojovacím káblom alebo programátorom ATTINY alebo si vyrobte programátorský štít pre Arduino sami (pozrite sa na priložené obrázky, schema je z avdweb.nl). Tiež som urobil tento a som s ním skutočne spokojný. Jedinou zmenou, ktorú som urobil, bolo, že som pridal zásuvku pre sériu ATTinyx4 (pozri obrázok a schémy vývodov).

- Arduino IDE (nájdete ho tu)

- hardvérové súbory pre ArduinoIDE (stiahnite si ich a nainštalujte)

Informačný odkaz na ihriskodirect Odkaz na súbory github, ktoré som použil

- načítajte náčrt Arduina ako ISP do UNO (toto bude váš programátor)

- riaďte sa týmito pokynmi (https://highlowtech.org/) alebo týmto návodom (ardutronix) a vyskúšajte náčrt „žmurknutia“(upravte číslo PIN. Ako referenciu použite obrázok ATTINY! budete potrebovať predzáblesknutý ATTINY LED a k tomu odpor ~ 220Ohm)

Vykonajte malé nastavenie dosku, aby ste všetko skontrolovali. Ak ste urobili všetko správne, LED dióda začne blikať a ste pripravení ísť

NÁSTROJE

- Spájkovačka- Trochu spájky- Malý rezač drôtov- Dremel alebo iný rotačný nástroj (len na rezanie DPS!)- Trochu lepidla- Pinzeta- Drôty

MATERIÁLY

- prototypovanie DPS (~ 4cmx6cm to zvládne)- 2x LDR- 5x 10k odpor (2x pre LDR a 2x pre tranzistory BE, 1x LED)- 1x odpor 330Ohm (1x NEOPIXELS)- 2x LDR- 1x LED (farba vášho voľba, namiesto kolieska)- 3x NEOPIXEL WS2812- 2x tranzistor (BD137 alebo podobný)- 2x dióda (1N4001 alebo podobný)- 2x mikromotor (napr. z mikrokvadrokoptéry Hubsan)- 1x ATTINY85 + voliteľný (odporúča sa) 8PIN IC zásuvka- 1 x 1 s LIPO (použil som 140 Ah zo starej RC helikoptéry)- niekoľko pinheaderov/zásuviek- shrinktube (kryt LDR)

Pokračujme vybudovaním hardvéru …

Krok 2: Hardvér

Hardvér
Hardvér
Hardvér
Hardvér
Hardvér
Hardvér

Ak sa pozriete na priložené schémy, nastavenie hardvéru je veľmi jednoduché. Ak teda dokážete čítať schémy a používať spájkovačku, je to polovica triku. Pozrite sa aj na fotografie, pridal som pre vás niekoľko poznámok.

Neposkytujem plán na rezanie DPS, máte slobodu vytvoriť si vlastný dizajn (byť kreatívny a ukázať nám svoje drobné roboty). Umiestnenie všetkých elektronických súčiastok je len na vás. Niekoľko rád z mojej strany:

Pokúste sa presne zarovnať motory (sledujte uhol!) Namiesto kolies používame iba hriadeľ motora. (spotrebuje to menej energie) Odporúčam umiestniť motory pod batériu (hmotnosť) a použiť LDR vpredu (pod uhlom 45 °) spárované s diódou LED (túto kombináciu sa pokúšam použiť na vyhýbanie sa prekážkam, ďalej sú potrebné testy).

Ďalej odporúčam urobiť malý prepojovací mostík, aby sa batéria tak ľahko nestratila.

Ak je niečo nejasné alebo máte otázky, opýtajte sa ma. Z tohto malého projektu neurobí prácu veľa senikov.

Krok 3: Softvér

Softvér
Softvér
Softvér
Softvér

Najprv si stiahnite a nainštalujte knižnicu ADAFRUIT Neopixel Library

Tu je môj kód s niekoľkými hlavnými popismi (pridal som aj súbor náčrtu). Nekomentoval som každý krok, pretože si myslím, že to nie je potrebné.

Nahrajte skicu do svojho ATTiny85 a bavte sa s novou hračkou

Nápady na funkciu „osobnosť“+ možno príklady kódu sú veľmi vítané:-)

Ak máte nejaké otázky, pokojne sa pýtajte.

Dúfam, že sa vám páčil môj krátky návod a malý výlet do sveta ATTINY.

/* ATTINY85-Rata jednoduchý, svetlo poháňaný robot ATTINY85. Verzia 2.0, Auer Markus */

#zahrnúť

#zahrnúť

// motory

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

// otherint emo = 0; float calib; booleovský emostát; starý oldmillis; // definujte NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

neplatné nastavenie ()

{// upscale hodiny, inak sa stretnete s niektorými problémami časovania (libix neopixelu je napísaný pre 16 MHz) #ak je definovaný (_AVR_ATtiny85_), ak (F_CPU == 16000000) clock_prescale_set (clock_div_1); #koniec Ak

// PINMODE pinMode (LMOTOR, VÝSTUP); pinMode (RMOTOR, VÝSTUP); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // inicializácia pixelov PIXEL.begin (); PIXEL.show (); oneskorenie (500); // počiatočná sekvencia pre (int i = 0; i

prázdna slučka ()

{if (lightfollow () == 1) {left (); } else if (lightfollow () == 2) {vpravo (); } else if (lightfollow () == 0) {forward (); } emócia(); }

int lightfollow () {

int preshold = 14; int výsledok = 0; plavák vľavo = 0; plávať vpravo = 0; int vzorky = 1; // čítanie LDR pre (int j = 0; j <vzorky; j ++) {

vľavo = vľavo + analogické čítanie (LLDR); vpravo = vpravo + (analogRead (RLDR)*kalibrovať);

}

// vypočítajte výsledok (z ktorého smeru svetlo prichádza?)

if ((vľavo/vzorky)> ((vpravo/vzorky)+prah)) {výsledok = 2;}

else if ((vľavo/vzorky) <((vpravo/vzorky)-prah)) {výsledok = 1;}

else {result = 0;}

vrátiť výsledok; } 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 (); }

prázdno vľavo () {

// VĽAVO 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 (); }

zrušiť právo () {

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

// toto je na ďalšie experimenty, snažím sa tomu dodať trochu osobnosti:-) skúšam, čo by sa dalo robiť, ale zatiaľ dobré nápady.

prázdna emócia () {int emotimer = 2500; int trvanie = náhodné (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = náhodný (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 (); prestávka; prípad 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); prestávka; prípad 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); prestávka; predvolené: PIXEL.setPixelColor (1, PIXEL. Color (náhodný (0, 255), náhodný (0, 255), náhodný (0, 255))); PIXEL.show (); prestávka; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

Odporúča: