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, Červenec
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

Ahoj, lidi, už je to nějaký čas, co jsem zveřejnil svůj poslední instruktáž. V mé hlavě se právě děje mnoho věcí, ale podařilo se mi zdokumentovat své „první kroky“s čipy ATTiny v tomto krátkém instruktážním programu pro vás.

Objednal jsem si několik vzorků ATTINY85 jen proto, že jsem je chtěl otestovat:-) (každý miluje testování věcí, že?). Poté jsem začal kreslit nějaké nápady do svého notebooku. Abych byl upřímný, první věc, kterou jsem udělal, bylo blikání LED, což je jako vždy dobrý začátek pro kontrolu, zda vaše nastavení/řetězec nástrojů funguje. Zkoušel jsem také záznamník teploty a vlhkosti s DHT22 a SoftwareSerial. To bylo ošemetné, protože knihovny DHT jsou určeny hlavně pro hodiny 16 MHz (pokud máte v plánu něco takového provést, zkontrolujte, jak přednastavit interní hodiny). Ale rozhodl jsem se ukázat vám něco, co je zábavnější. BTW: Nahrál jsem pro vás jednu ze svých kreseb, není to Rembrandt, ale ukáže vám, jak jsem na papír dostal tento (opravdu) hloupý nápad: -P.

Použil jsem jen věci, které jsem měl kolem sebe, aby byl tento projekt co nejlevnější (pro mě). Výsledkem tohoto malého dobrodružství je pěkný malý „robot pro sledování světla“za zhruba 10–15 $ (pro mě 3 $:-P)

Pokud vás tedy ATTINY zajímá, čtěte dále.

BTW: omlouvám se za svou špatnou angličtinu (nejsem rodilý mluvčí)

Krok 1: Začínáme s ATTiny a nástroji a materiály

Začínáme s ATTiny a nástroji a materiály
Začínáme s ATTiny a nástroji a materiály
Začínáme s ATTiny a nástroji a materiály
Začínáme s ATTiny a nástroji a materiály
Začínáme s ATTiny a nástroji a materiály
Začínáme s ATTiny a nástroji a materiály
Začínáme s ATTiny a nástroji a materiály
Začínáme s ATTiny a nástroji a materiály

Co budete potřebovat, abyste mohli začít:

- čip ATTiny85

- Arduino UNO nebo podobný

-abreadboard s nějakým propojovacím drátem nebo programátorem ATTINY nebo si vyrobte programátorský štít pro Arduino sami (podívejte se na přiložené obrázky, schema je z avdweb.nl). Také jsem udělal tento a jsem s ním opravdu spokojen, jedinou změnou, kterou jsem provedl, bylo, že jsem přidal zásuvku pro řadu ATTinyx4 (viz obrázek a diagramy pinoutů).

- Arduino IDE (získáte zde)

- hardwarové soubory pro ArduinoIDE (stáhněte a nainstalujte je)

Informační odkaz na hřištědirect Odkaz na soubory github, které jsem použil

- načtěte skicu Arduino jako ISP do UNO (to bude váš programátor)

- řiďte se touto instrukcí (https://highlowtech.org/) nebo touto instrukcí (ardutronix) a vyzkoušejte náčrtek „mrknutí“(upravte PIN č. použijte obrázek ATTINY jako referenci! budete potřebovat předzářenou ATTINY LED a k tomu odpor ~ 220Ohm)

Proveďte malé prkénko-nastavení, abyste vše zkontrolovali. Pokud jste udělali vše správně, LED bliká a jste připraveni jít

NÁSTROJE

- Páječka- nějaká pájka- malý řezačka drátu- dremel nebo jiný rotační nástroj (jen pro řezání desky plošných spojů!)- nějaká horká lepidla- pinzeta- dráty

MATERIÁLY

- prototypování DPS (~ 4cmx6cm to zvládne)- 2x LDR- 5x 10k rezistor (2x pro LDR a 2x pro tranzistory BE, 1x LED)- 1x 330Ohm rezistor (1x NEOPIXELS)- 2x LDR- 1x LED (barva vašeho volba, místo kolečka)- 3x NEOPIXEL WS2812- 2x tranzistor (BD137 nebo podobný)- 2x dioda (1N4001 nebo podobný)- 2x mikromotor (např. z mikrokvadrokoptéry Hubsan)- 1x ATTINY85 + volitelný (doporučeno) 8PIN Zásuvka IC- 1x 1 s LIPO (použil jsem 140 Ah ze staré RC helikoptéry)- několik pinheaderů/zásuvek- shrinktube (pouzdro LDR)

Pokračujme stavbou hardwaru…

Krok 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Pokud se podíváte na připojená schémata, nastavení hardwaru je docela jednoduché. Pokud jste tedy schopni číst schémata a používat páječku, je to polovina triku. Podívejte se také na fotografie, přidal jsem pro vás několik poznámek.

Neposkytuji plán řezání desky plošných spojů, máte svobodu vytvořit si vlastní design (buďte kreativní a ukažte nám své drobné roboty). Umístění všech elektronických součástek je také na vás. Pár rad z mé strany:

Zkuste přesně zarovnat motory (sledujte úhel!) Místo kol používáme pouze motorový hřídel. (bude to spotřebovávat méně energie) Doporučuji umístit motory pod baterii (hmotnost) a použít LDR na přední straně (pod úhlem 45 °) spárované s LED (snažím se tuto kombinaci použít k vyhýbání se překážkám, dále jsou nutné testy).

Dále doporučuji udělat malý propojovací můstek, aby se baterie tak snadno neztratila.

Pokud je něco nejasného nebo máte nějaké otázky, zeptejte se mě. Z tohoto malého projektu neudělá mnoho senátů práci.

Krok 3: Software

Software
Software
Software
Software

Nejprve si stáhněte a nainstalujte knihovnu ADAFRUIT Neopixel

Zde je můj kód s některými hlavními popisy (také jsem přidal soubor skici). Nekomentoval jsem každý krok, protože si myslím, že to není nutné.

Nahrajte skicu na svůj ATTiny85 a bavte se s novou hračkou

Nápady na funkci "osobnost" + možná ukázky kódu jsou velmi vítané:-)

Pokud máte nějaké dotazy, klidně se ptejte.

Doufám, že jste si užili můj krátký návod a malý výlet do světa ATTINY.

/* ATTINY85-Rata jednoduchý robot sledující světlo ATTINY85. Verze 2.0, Auer Markus */

#zahrnout

#zahrnout

// 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é nastavení ()

{// upscale hodiny jinak narazíte na nějaké problémy s časováním (lib neopixel je napsán pro 16MHz) #if definováno (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif

// PINMODE pinMode (LMOTOR, VÝSTUP); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // inicializace pixelů PIXEL.begin (); PIXEL.show (); zpoždění (500); // počáteční posloupnost pro (int i = 0; i

prázdná smyčka ()

{if (lightfollow () == 1) {left (); } else if (lightfollow () == 2) {vpravo (); } else if (lightfollow () == 0) {vpřed (); } emoce (); }

int lightfollow () {

int preshold = 14; int výsledek = 0; float left = 0; plovoucí doprava = 0; int vzorky = 1; // číst LDR pro (int j = 0; j <vzorky; j ++) {

vlevo = vlevo + analogové čtení (LLDR); vpravo = vpravo + (analogRead (RLDR)*calib);

}

// vypočítat výsledek (ze kterého směru vychází světlo?)

if ((vlevo/vzorky)> ((vpravo/vzorky)+prah)) {result = 2;}

else if ((vlevo/vzorky) <((vpravo/vzorky) -treshold)) {result = 1;}

else {result = 0;}

vrátit výsledek; } 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 vlevo () {

// VLEVO 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šit právo () {

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

// to je pro další experimenty, snažím se tomu dát trochu osobnosti:-) zkouším, co by se dalo dělat, ale zatím žádné dobré nápady.

void emoce () {int emotimer = 2500; int trvání = 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 (); přestávka; případ 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); přestávka; případ 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); přestávka; výchozí: PIXEL.setPixelColor (1, PIXEL. Color (náhodný (0, 255), náhodný (0, 255), náhodný (0, 255))); PIXEL.show (); přestávka; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

Doporučuje: