Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Hej på er, det var ett tag sedan jag lade upp min sista instruerbara. Det är många saker som går runt i mitt huvud just nu men jag lyckades dokumentera mina "första steg" med ATTiny-serien med chips i denna korta instruerbara för dig.
Jag beställde några ATTINY85-prover bara för att jag ville testa dem:-) (alla älskar att testa saker, eller hur?). Efter det började jag dra några idéer i min anteckningsbok. För att vara ärlig var det första jag gjorde att blinka en lysdiod som som alltid är en bra start för att kontrollera om din installation/verktygskedja fungerar. Jag testade också en temperatur- och fuktighetsloggare med DHT22 och SoftwareSerial. Det var svårt eftersom DHT -biblioteken huvudsakligen är för 16Mhz -klocka (om du planerar att göra något sådant, kolla hur du förskalerar internklockan). Men jag bestämde mig för att visa dig något som är, ja, bara roligare. BTW: Jag laddade upp en av mina teckningar för dig, det är inte en Rembrandt men det kommer att visa dig hur jag fick denna (riktigt) dumma idé på ett papper: -P.
Jag använde bara saker jag hade för att hålla detta projekt så billigt som möjligt (för mig). Resultatet av detta lilla äventyr är en trevlig liten "lightfollower robot" för cirka 10-15 $ (3 $ för mig:-P)
Så om du är intresserad av ATTINY själv, läs bara vidare.
BTW: förlåt för min dåliga engelska (jag är inte infödda)
Steg 1: Komma igång med ATTiny & Tools & Materials
Vad du behöver för att komma igång:
- ett ATTiny85 -chip
- en Arduino UNO eller liknande
-abreadboard med någon jumper-wire eller en ATTINY programmerare eller gör en programmerare-shield för Arduino själv (kolla de bifogade bilderna, det finns en schema från avdweb.nl). Jag gjorde också den här och jag är riktigt nöjd med den enda ändringen jag gjorde var att jag lade till ett uttag för ATTinyx4-serien (se bilden och pinout-diagrammen).
- Arduino IDE (få det här)
- Hardwarefilerna för ArduinoIDE (ladda ner och installera dem)
Info-länk till lekplatsdirekt Länk till github-filer jag använde
- ladda Arduino som ISP -skiss på UNO (detta kommer att vara din programmerare)
- följ denna instruktion (https://highlowtech.org/) eller denna instruerbara (av ardutronix) och prova "blinka" -skissen (modifiera PIN -koden. använd ATTINY -bilden som referens! du behöver den förladdade ATTINY en LED och en ~ 220Ohm motstånd för det)
Gör en liten brödbräda för att kontrollera allt. Om du har gjort allt rätt blinkar lysdioden och du är redo att gå
VERKTYG
- Lödkolv- lite löd- en liten trådavvisare- en dremel eller annat roterande verktyg (bara för att klippa av kretskortet!)- några smörjmedel- pincett- trådar
MATERIAL
- prototyper PCB (~ 4cmx6cm kommer att göra det)- 2x LDR- 5x 10k motstånd (2x för LDR och 2x för transistorerna BE, 1x LED)- 1x 330Ohm motstånd (1x NEOPIXELS)- 2x LDR- 1x LED (färg på din val, istället för hjulet)- 3x NEOPIXEL WS2812- 2x Transistor (BD137 eller liknande)- 2x Diod (1N4001 eller liknande)- 2x mikromotor (t.ex. från en Hubsan mikro-quadcopter)- 1x ATTINY85 + tillval (rekommenderas) 8PIN IC-uttag- 1x 1s LIPO (jag använde en 140Ah från en gammal RC-helikopter)- några pinheaders/sockets- shrinktube (LDR-hus)
Låt oss fortsätta med att bygga hårdvaran …
Steg 2: Hårdvara
Om du tittar på schemat som jag bifogade är hårdvaruinställningen ganska enkel. Så om du kan läsa scheman och använda ett lödkolv, är det halva tricket. Titta också på bilderna, jag la till några anteckningar för dig.
Jag ger inte en plan för att skära kretskortet, du har friheten att göra din egen design (var kreativ och visa oss dina Tiny Bots). Placeringen av alla elektroniska komponenter är också upp till dig. Några tips från min sida:
Försök att rikta in motorerna exakt (se vinkeln!) Vi använder bara motoraxeln istället för hjul. (detta kommer att förbruka mindre energi) Jag rekommenderar att placera motorerna under batteriet (vikt) och att använda LDR: erna på framsidan (45 ° vinklad) ihop med på LED (jag försöker använda denna kombination för att undvika hinder, ytterligare test behövs).
Dessutom rekommenderar jag att du gör en liten av/på -bygel så att batteriet inte går vilse så lätt.
Om det är något oklart eller om du har frågor är det bara att fråga mig. Det kommer inte att göra så mycket senar att göra en tes av detta lilla projekt.
Steg 3: Programvara
Först av allt ladda ner och installera ADAFRUIT Neopixel Library
Här är min kod med några större beskrivningar (jag lade också till skissfilen). Jag kommenterade inte varje steg eftersom jag tror att det inte är nödvändigt.
Ladda upp skissen till din ATTiny85 och ha kul med din nya leksak
Idéer till "personlighet" -funktion + kanske kodexempel är mycket välkomna:-)
Om det finns några frågor får du gärna fråga.
Jag hoppas att du njöt av min korta instruerbara och den lilla resa till ATTINYs värld.
/* ATTINY85-Rata enkel ATTINY85 driven ljusföljande robot. Version 2.0, av Auer Markus */
#omfatta
#omfatta
// motorer
#define LMOTOR 0 #define RMOTOR 1 // LEDs #define PIXELPIN 2 #define NUMPIXEL 3 // LDRs #define LLDR A2 #define RLDR A3
// otherint emo = 0; flytkalib; boolsk emostat; lång oldmillis; // definiera NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);
void setup ()
{// exklusiv klocka annars kommer du att stöta på några timingproblem (neopixel lib är skrivet för 16MHz) #if definierat (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif
// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // initiera pixlar PIXEL.begin (); PIXEL.show (); fördröjning (500); // startsekvens för (int i = 0; i
void loop ()
{if (lightfollow () == 1) {left (); } annars if (lightfollow () == 2) {right (); } annars if (lightfollow () == 0) {forward (); } känsla (); }
int lightfollow () {
int treshold = 14; int resultat = 0; flyta vänster = 0; flyta höger = 0; int prover = 1; // läs LDR för (int j = 0; j <samples; j ++) {
vänster = vänster + analogRead (LLDR); höger = höger + (analogRead (RLDR)*kalib);
}
// beräkna resultatet (vilken riktning kommer ljuset ifrån?)
if ((vänster/samplingar)> ((höger/prover)+treshold)) {resultat = 2;}
annars if ((left/samples) <((right/samples) -treshold)) {result = 1;}
annat {resultat = 0;}
returresultat; } 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 (); }
tomrum kvar () {
// VÄNSTER 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 (); }
ogiltig rätt () {
// HÖGER analogWrite (LMOTOR, 255); analogWrite (RMOTOR, 150); PIXEL.setPixelColor (0, PIXEL. Color (0, 100, 0)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }
// detta är för ytterligare experiment, försöker ge den här en liten personlighet:-) jag testar vad som kan göra, men inga bra idéer ännu.
void emotion () {int emotimer = 2500; int varaktighet = slumpmässig (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = slumpmässig (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 (); ha sönder; fall 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); ha sönder; fall 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); ha sönder; standard: PIXEL.setPixelColor (1, PIXEL. Color (random (0, 255), random (0, 255), random (0, 255))); PIXEL.show (); ha sönder; }} annat {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}