Mini Lightfollower ATTiny-RAT, ATTINY Powered: 3 Βήματα
Mini Lightfollower ATTiny-RAT, ATTINY Powered: 3 Βήματα
Anonim
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 ATTiny-RAT, ATTINY Powered

Γεια σας παιδιά, έχει περάσει πολύς καιρός από τότε που δημοσίευσα το τελευταίο μου εκπαιδευτικό. Λοιπόν, υπάρχουν πολλά πράγματα στο μυαλό μου αυτή τη στιγμή, αλλά κατάφερα να τεκμηριώσω τα "πρώτα μου βήματα" με τα τσιπ της σειράς ATTiny σε αυτό το σύντομο οδηγό για εσάς.

Παρήγγειλα μερικά δείγματα ATTINY85 μόνο και μόνο επειδή ήθελα να τα δοκιμάσω:-) (σε όλους αρέσει να δοκιμάζουν πράγματα, σωστά;). Μετά από αυτό άρχισα να σχεδιάζω μερικές ιδέες στο σημειωματάριό μου. Για να είμαι ειλικρινής, το πρώτο πράγμα που έκανα ήταν να αναβοσβήνει ένα LED που είναι όπως πάντα μια καλή αρχή για να ελέγξετε αν η εγκατάσταση/αλυσίδα εργαλείων σας λειτουργεί. Δοκίμασα επίσης έναν καταγραφέα θερμοκρασίας και υγρασίας με DHT22 και SoftwareSerial. Αυτό ήταν ένα δύσκολο γιατί οι βιβλιοθήκες DHT είναι κυρίως για ρολόι 16Mhz (αν σκοπεύετε να κάνετε κάτι τέτοιο, ελέγξτε πώς να κάνετε προεπιλογή του εσωτερικού ρολογιού). Αποφάσισα όμως να σας δείξω κάτι που είναι, πιο αστείο. -Π.

Χρησιμοποίησα μόνο πράγματα που είχα για να κρατήσω αυτό το έργο όσο το δυνατόν πιο φθηνό (για μένα). Το αποτέλεσμα αυτής της μικρής περιπέτειας είναι ένα ωραίο μικρό "ρομπότ που ακολουθεί το φως" για περίπου 10-15 $ (3 $ για μένα:-P)

Αν λοιπόν ενδιαφέρεστε για το ATTINY μόνοι σας διαβάστε περισσότερα.

BTW: συγνώμη για τα κακά μου αγγλικά (δεν είμαι φυσικός ομιλητής)

Βήμα 1: Ξεκινώντας με ATTiny & Εργαλεία & Υλικά

Ξεκινώντας με ATTiny & Εργαλεία & Υλικά
Ξεκινώντας με ATTiny & Εργαλεία & Υλικά
Ξεκινώντας με ATTiny & Εργαλεία & Υλικά
Ξεκινώντας με ATTiny & Εργαλεία & Υλικά
Ξεκινώντας με ATTiny & Εργαλεία & Υλικά
Ξεκινώντας με ATTiny & Εργαλεία & Υλικά
Ξεκινώντας με ATTiny & Εργαλεία & Υλικά
Ξεκινώντας με ATTiny & Εργαλεία & Υλικά

Τι θα χρειαστείτε για να ξεκινήσετε:

- ένα τσιπ ATTiny85

- ένα Arduino UNO ή παρόμοιο

-abreadboard με κάποιο jumper-wire ή έναν προγραμματιστή ATTINY ή φτιάξτε μόνοι σας έναν προγραμματιστή-ασπίδα για το Arduino (ελέγξτε τις συνημμένες εικόνες, υπάρχει ένα σχηματικό σχέδιο από το avdweb.nl). Έκανα επίσης αυτό και είμαι πολύ ευχαριστημένος με αυτό η μόνη τροποποίηση που έκανα ήταν ότι πρόσθεσα μια πρίζα για τη σειρά ATTinyx4 (ανατρέξτε στην εικόνα και τα διαγράμματα pinout).

- το Arduino IDE (πάρτε το εδώ)

- τα αρχεία υλικού για το ArduinoIDE (κατεβάστε και εγκαταστήστε τα)

Σύνδεσμος πληροφοριών προς την παιδική χαρά απευθείας σύνδεσμος προς τα αρχεία github που χρησιμοποίησα

- φορτώστε το Arduino ως ISP σκίτσο στο UNO (αυτός θα είναι ο προγραμματιστής σας)

- ακολουθήστε αυτήν την οδηγία (https://highlowtech.org/) ή αυτήν την οδηγία (από ardutronix) και δοκιμάστε το σκίτσο "κλείσιμο" (τροποποιήστε τον αριθμό PIN. χρησιμοποιήστε την εικόνα ATTINY ως αναφορά! θα χρειαστείτε το προθερμασμένο ATTINY ένα LED και μια αντίσταση O 220Ohm για αυτό)

Κάντε μια μικρή διάταξη για να ελέγξετε τα πάντα. Εάν τα έχετε κάνει όλα σωστά, το LED θα αναβοσβήνει και είστε έτοιμοι να πάτε

ΕΡΓΑΛΕΙΑ

- Συγκολλητικό σίδερο- κάποιο συγκολλητικό- ένας μικρός κοπτήρας- ένα ντέρμελ ή άλλο περιστροφικό εργαλείο (μόνο για το κόψιμο του PCB!)- μερικές καυτές κόλλες- τσιμπιδάκια- σύρματα

ΥΛΙΚΑ

- πρωτότυπο PCB (~ 4cmx6cm θα το κάνει)- 2x LDR- 5x 10k Resistor (2x για τα LDR και 2x για τα τρανζίστορ BE, 1x LED)- 1x 330Ohm Resistor (1x NEOPIXELS)- 2x LDR- 1x LED (χρώμα του δικού σας επιλογή, αντί του τροχού τροχού)- 3x NEOPIXEL WS2812- 2x τρανζίστορ (BD137 ή παρόμοιο)- 2x δίοδος (1N4001 ή παρόμοιο)- 2x μικροκινητήρας (π.χ. από μικρο-τετρακόπτερο Hubsan)- 1x ATTINY85 + προαιρετικό (συνιστάται) 8PIN IC Socket- 1x 1s LIPO (χρησιμοποίησα 140Ah από ένα παλιό ελικόπτερο RC)- μερικές κεφαλές/πρίζες- shrinktube (περίβλημα LDR)

Ας προχωρήσουμε στην κατασκευή του υλικού…

Βήμα 2: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

Αν ρίξετε μια ματιά στα σχήματα που επισυνάπτω, η ρύθμιση του υλικού είναι αρκετά απλή. Έτσι, αν είστε σε θέση να διαβάσετε σχηματικά και να χρησιμοποιήσετε κολλητήρι, αυτό είναι το μισό κόλπο. Επίσης, ρίξτε μια ματιά στις φωτογραφίες, πρόσθεσα μερικές σημειώσεις για εσάς.

Δεν παρέχω ένα σχέδιο για την κοπή του PCB, έχετε την ελευθερία να κάνετε το δικό σας σχέδιο (να είστε δημιουργικοί και να μας δείξετε τα Tiny Bots σας). Η τοποθέτηση όλων των ηλεκτρονικών εξαρτημάτων εξαρτάται επίσης από εσάς. Μερικές συμβουλές από την πλευρά μου:

Προσπαθήστε να ευθυγραμμίσετε με ακρίβεια τους κινητήρες (προσέξτε τη γωνία!) Χρησιμοποιούμε μόνο τον άξονα του κινητήρα αντί για τροχούς. (αυτό θα καταναλώσει λιγότερη ενέργεια) Συνιστώ να τοποθετήσετε τους κινητήρες κάτω από την μπαταρία (βάρος) και να χρησιμοποιήσετε τα LDR μπροστά (με γωνία 45 °) σε συνδυασμό με LED (προσπαθώ να χρησιμοποιήσω αυτόν τον συνδυασμό για αποφυγή εμποδίων, περαιτέρω χρειάζονται δοκιμές).

Επιπλέον, προτείνω να κάνετε λίγο βραχυκυκλωτήρα ενεργοποίησης/απενεργοποίησης, ώστε η μπαταρία να μην χαθεί τόσο εύκολα.

Εάν υπάρχει κάτι ασαφές ή εάν έχετε ερωτήσεις, απλώς ρωτήστε με. Δεν θα κάνει πολλά γηρατειά να κάνουν μια διατριβή από αυτό το μικρό έργο.

Βήμα 3: Λογισμικό

Λογισμικό
Λογισμικό
Λογισμικό
Λογισμικό

Κατεβάστε και εγκαταστήστε το ADAFRUIT Neopixel Library

Εδώ είναι ο κωδικός μου με μερικές σημαντικές περιγραφές (πρόσθεσα επίσης το αρχείο σκίτσου). Δεν σχολίασα κάθε βήμα γιατί πιστεύω ότι δεν είναι απαραίτητο.

Ανεβάστε το σκίτσο στο ATTiny85 και διασκεδάστε με το νέο σας παιχνίδι

Ιδέες για τη λειτουργία "προσωπικότητα" + ίσως τα παραδείγματα κώδικα είναι πολύ ευπρόσδεκτα:-)

Εάν υπάρχουν ερωτήσεις, μη διστάσετε να τις ρωτήσετε.

Ελπίζω να απολαύσατε το σύντομο διδακτικό μου και το μικρό ταξίδι στον κόσμο των ATTINY.

/* ATTINY85-Rata απλό ρομπότ που τροφοδοτείται με φως ATTINY85. Έκδοση 2.0, από Auer Markus */

#περιλαμβάνω

#περιλαμβάνω

// κινητήρες

#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? boolean emostate? μακριά oldmillis? // καθορισμός NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

void setup ()

{// upscale ρολόι αλλιώς θα αντιμετωπίσετε κάποια χρονικά προβλήματα (το lib neopixel γράφεται για 16MHz) #εάν οριστεί (_AVR_ATtiny85_) εάν (F_CPU == 16000000) clock_prescale_set (clock_div_1)? #τέλος εαν

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // αρχικοποίηση εικονοστοιχείων PIXEL.begin (); PIXEL.show (); καθυστέρηση (500)? // startsequence για (int i = 0; i

κενός βρόχος ()

{if (lightfollow () == 1) {left (); } else if (lightfollow () == 2) {δεξιά (); } else if (lightfollow () == 0) {εμπρός (); } συναισθημα(); }

int lightfollow () {

int κατώφλι = 14; int αποτέλεσμα = 0; επιπλέουν αριστερά = 0; επιπλέουν δεξιά = 0; int δείγματα = 1; // διαβάστε LDR για (int j = 0; j <δείγματα; j ++) {

αριστερά = αριστερά + analogRead (LLDR); δεξιά = δεξιά + (analogRead (RLDR)*calib);

}

// Υπολογίστε το αποτέλεσμα (από ποια κατεύθυνση προέρχεται το φως;)

εάν ((αριστερά/δείγματα)> ((δεξιά/δείγματα)+κατώφλι)) {αποτέλεσμα = 2;}

αλλιώς εάν ((αριστερά/δείγματα) <((δεξιά/δείγματα) -κατώφλι)) {αποτέλεσμα = 1;}

else {result = 0;}

αποτέλεσμα επιστροφής? } 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 (); }

κενό αριστερά () {

// ΑΡΙΣΤΕΡΑ 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 (); }

άκυρο δικαίωμα () {

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

// αυτό είναι για περαιτέρω πειράματα, προσπαθώντας να δώσω σε αυτόν μια μικρή προσωπικότητα:-) Δοκιμάζω τι θα μπορούσε να κάνει, αλλά δεν υπάρχουν ακόμα καλές ιδέες.

κενό συναίσθημα () {int emotimer = 2500; int διάρκεια = τυχαία (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = τυχαίο (1, 4); } if (millis () - oldmillis> διάρκεια) {emostate =! emostate; } if (emostate == true) {switch (emo) {case 1: PIXEL.setPixelColor (1, PIXEL. Color ((255), (255), (255))); PIXEL.show (); Διακοπή; θήκη 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); Διακοπή; θήκη 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); Διακοπή; προεπιλογή: PIXEL.setPixelColor (1, PIXEL. Color (τυχαία (0, 255), τυχαία (0, 255), τυχαία (0, 255))); PIXEL.show (); Διακοπή; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}