Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Πώς λειτουργεί…
- Βήμα 2: Μεταφόρτωση του κώδικα
- Βήμα 3: Απαιτούνται βιβλιοθήκες:
- Βήμα 4: Οι συνδέσεις
- Βήμα 5: Χτυπήστε τα όλα μαζί
- Βήμα 6: Περαιτέρω βελτιώσεις:
Βίντεο: Ένα ρομπότ που λέει εάν ένας προμηθευτής ηλεκτρονικών συσκευών σας απατά ή όχι: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Πέρυσι, εγώ και ο μπαμπάς μου πήγαμε σε ένα νέο κατάστημα ρομποτικής/ηλεκτρονικών ειδών πολύ κοντά στο μέρος που ζούμε. Καθώς μπήκα εκεί, ήταν γεμάτο ηλεκτρονικά, σεροβ, αισθητήρες, Raspberry pis και Arduinos. Την επόμενη μέρα, πήγαμε στο ίδιο κατάστημα και αγοράσαμε πολλούς ηλικιωμένους και 3 Arduinos αξίας περίπου 150 USD. Μόλις πήγα σπίτι, κανένα άλλο προϊόν δεν λειτούργησε εκτός από το Arduino Mega. Μας απάτησαν για περίπου 130 δολάρια, που είναι πολλά.
Έτσι, αποφάσισα να δημιουργήσω ένα ρομπότ που μπορεί να δοκιμάσει περίπου 12 αισθητήρες και 2 κινητήρες (εξακολουθούν να λειτουργούν στο σερβο) και να μπορεί να καθορίσει εάν το προϊόν είναι ελαττωματικό.
Ας μπούμε κατευθείαν σε αυτό!
Προμήθειες
1. Arduino UNO
2. Οθόνη αφής TFT 2,4"
3. ζεύγη καλωδίων βραχυκυκλωτήρων
4. αισθητήρες και κινητήρες ώστε να μπορείτε να τους δοκιμάσετε (εδώ χρησιμοποίησα - αισθητήρα κίνησης, αισθητήρα αερίου MQ6, αισθητήρα ήχου, ποτενσιόμετρο και αισθητήρα στάθμης νερού)
Βήμα 1: Πώς λειτουργεί…
Έχω προγραμματίσει ένα Arduino για δημιουργία και διαδραστική διεπαφή χρήστη με οθόνη TFT. Όπως γνωρίζουμε, η οθόνη TFT έχει μόνο έναν ελεύθερο πείρο, δηλαδή τον ακροδέκτη Α5. (εάν χρησιμοποιείτε το UNO). Έτσι, κάθε αισθητήρας που χρησιμοποιεί αναλογικές ακίδες για την ανάγνωση δεδομένων είναι συμβατός με αυτήν τη ρύθμιση…
Στο περιβάλλον χρήστη, μπορείτε να αλλάξετε το χρώμα φόντου της επιφάνειας εργασίας και μπορείτε να ανοίξετε την εφαρμογή που αναπτύχθηκε για το Arduino από εμένα για να δοκιμάσει αισθητήρες.
Ανοίγοντας την εφαρμογή, μπορείτε να δείτε 2 επιλογές, ΕΙΣΟΔΟΣ και ΕΞΟΔΟΣ. αν κάνετε κλικ στην επιλογή Εισαγωγή, εμφανίζει 4 αισθητήρες (Είναι συμβατό με 12, αλλά δεν το έχω προγραμματίσει ακόμα καθώς πλησιάζουν οι εξετάσεις…. καμία ώρα:(. Ο καθένας είναι ελεύθερος να επεξεργαστεί τον κώδικα…)
Και μπορεί επίσης να ελέγξει εάν ο σερβοκινητήρας λειτουργεί από εσάς, συνδέστε τον στην υποδοχή.
κοίτα:
Βήμα 2: Μεταφόρτωση του κώδικα
Ο κωδικός είναι ένα πρόγραμμα 600 γραμμών που κωδικοποίησα σχολαστικά σε περίπου 50 ώρες. Έχει μερικά σφάλματα, οπότε παρακαλώ τροποποιήστε το και στείλτε το μου στο mail μου ([email protected]).
Ανεβάστε τον κωδικό και συνδέστε την ασπίδα TFT στο Arduino. Σας συνιστώ να παίζετε με το UI, ώστε να το έχετε καλύτερα.
Ο κώδικας:
#περιλαμβάνω
#include #include #include #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define ΜΠΛΕ 0x001F #define NAVY 0x000F #define 0x000F #dex #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #defineSmeSine_defineYmeSine_defineYmeSine_define 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = Οθόνη αφής (XP, YP, XM, YM, 300); Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); #define BOXSIZE 40 #define PENRADIUS 3 #define MINPRESSURE 10 #define MAXPRESSURE 1000 int sound? κατάσταση char = 6; int touch = 0; int χρώμα = ΜΑΥΡΟ; int redir = 0; int ota? void setup () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (ΛΕΥΚΟ); tft.setCursor (60, 160); tft.setTextColor (ΜΑΥΡΟ); tft.print ("Σύρετε για σύνδεση"); } void loop () {float sensorVoltage; float sensorValue? TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); if (pz> MINPRESSURE && pz 240 && px 130 && py 240 && px 20 && py 240 && px 20 && py 160 && px 12 && py 240 && px 20 && py 240 && px 20 && py 40 && px 15 && py 150 && px 40 && py 150 && px 80 && py 150 && px 120 && py 150 && px 170 && py 90 && px 40 && py 90 && px 80 && py 90 && px 120 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 100 && px 20 && py 200 && px 100 && py 100 && px 20 && py 100 && px 20 && py 100 && px 20 && py <100) {touch = 26; }} if (αγγίξτε == 1 && κατάσταση == 6) {tft.setRotation (0); tft.fillScreen (χρώμα); ήχος = 0; tft.fillRect (200, 180, 80, 140, ΛΕΥΚΟ); tft.drawRect (201, 181, 81, 141, ΜΑΥΡΟ); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, ΜΑΥΡΟ); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, ΜΑΥΡΟ); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, ΜΑΥΡΟ); tft.fillRect (45, 180, 30, 120, ΜΠΛΕ); tft.drawRect (46, 181, 31, 121, ΜΑΥΡΟ); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, ΜΑΥΡΟ); tft.fillRect (115, 180, 30, 120, ΠΡΑΣΙΝΟ); tft.drawRect (116, 181, 31, 121, ΜΑΥΡΟ); tft.fillRect (150, 180, 30, 120, ΚΙΤΡΙΝΟ); tft.drawRect (151, 181, 31, 121, ΜΑΥΡΟ); tft.fillTriangle (210, 30, 210, 50, 220, 40, ΛΕΥΚΟ) tft.fillRect (200, 35, 12, 12, ΛΕΥΚΟ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ΜΑΥΡΟ); tft.drawRect (200, 35, 12, 12, ΜΑΥΡΟ); tft.drawCircle (210, 40, 14, ΛΕΥΚΟ); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Ρυθμίσεις"); tft.fillRoundRect (45, 75, 75, 75, 4, ΛΕΥΚΟ); tft.drawRoundRect (45, 75, 75, 75, 4, ΜΑΥΡΟ); tft.fillRect (75, 75, 15, 30, ΜΑΥΡΟ); tft.fillRect (75, 120, 15, 30, ΜΑΥΡΟ); tft.fillRect (90, 105, 30, 15, ΜΑΥΡΟ); tft.fillRect (45, 105, 30, 15, ΜΑΥΡΟ); κατάσταση = 7; άγγιγμα = 0; ota = 0; } if (touch == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, ΛΕΥΚΟ) tft.fillRect (200, 35, 12, 12, ΛΕΥΚΟ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ΜΑΥΡΟ); tft.drawRect (200, 35, 12, 12, ΜΑΥΡΟ); tft.drawCircle (210, 40, 14, ΜΑΥΡΟ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ΜΑΥΡΟ); tft.drawLine (300, 30, 270, 30, ΜΑΥΡΟ); tft.setCursor (20, 200); tft.print ("εξατομίκευση"); tft.setCursor (20, 170); tft.print ("αποσύνδεση"); tft.setCursor (20, 140); tft.print ("περιφερειακά"); tft.setCursor (20, 110); tft.print ("Σχετικά"); άγγιγμα = 1; κατάσταση = 2; } if (αγγίξτε == 10 && κατάσταση == 2) {tft.fillScreen (ΛΕΥΚΟ); tft.setCursor (10, 160); tft.setTextColor (ΜΑΥΡΟ); tft.print ("Δημιουργήθηκε και αναπτύχθηκε"); tft.setCursor (100, 190); tft.print ("από:"); tft.setCursor (60, 220); tft.print ("Έφηβος από την Ινδία"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, ΛΕΥΚΟ) tft.fillRect (200, 35, 12, 12, ΛΕΥΚΟ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ΜΑΥΡΟ); tft.drawRect (200, 35, 12, 12, ΜΑΥΡΟ); tft.drawCircle (210, 40, 14, ΜΑΥΡΟ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ΜΑΥΡΟ); tft.drawLine (300, 30, 270, 30, ΜΑΥΡΟ); κατάσταση = 6; } if (αγγίξτε == 11 && κατάσταση == 2) {tft.fillScreen (ΛΕΥΚΟ); tft.setCursor (60, 40); tft.print ("Επιλέξτε ένα"); tft.setCursor (40, 60); tft.print ("χρώμα φόντου"); tft.fillRect (60, 180, 45, 45, RED); tft.fillRect (120, 180, 45, 45, ΚΙΤΡΙΝΟ); tft.fillRect (180, 180, 45, 45, ΜΠΛΕ); tft.fillRect (240, 180, 45, 45, ΠΡΑΣΙΝΟ); tft.fillRect (60, 130, 45, 45, MAGENTA); tft.fillRect (120, 130, 45, 45, NAVY); tft.fillRect (180, 130, 45, 45, LIGHTGREY); tft.fillRect (240, 130, 45, 45, CYAN); tft.fillRect (60, 80, 45, 45, ΛΕΥΚΟ); tft.drawRect (60, 80, 45, 45, ΜΑΥΡΟ); tft.fillRect (120, 80, 45, 45, ΜΑΥΡΟ); tft.fillRect (180, 80, 45, 45, ΕΛΙΑ); tft.fillRect (240, 80, 45, 45, ΜΩΒ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, ΛΕΥΚΟ) tft.fillRect (200, 35, 12, 12, ΛΕΥΚΟ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ΜΑΥΡΟ); tft.drawRect (200, 35, 12, 12, ΜΑΥΡΟ); tft.drawCircle (210, 40, 14, ΜΑΥΡΟ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ΜΑΥΡΟ); tft.drawLine (300, 30, 270, 30, ΜΑΥΡΟ); κατάσταση = 6; εάν (redir == 1) {χρώμα = ΛΕΥΚΟ? } if (redir == 2) {color = BLACK; } if (redir == 3) {color = OLIVE; } if (redir == 4) {color = PURPLE; } if (redir == 5) {color = MAGENTA; } if (redir == 6) {color = NAVY; } if (redir == 7) {color = LIGHTGREY; } if (redir == 8) {color = CYAN; } if (redir == 9) {color = RED; } if (redir == 10) {color = YELLOW; } if (redir == 11) {color = BLUE; } if (redir == 12) {color = GREEN? }} if (touch == 26) {ota = 1; tft.fillScreen (ΛΕΥΚΟ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, ΛΕΥΚΟ) tft.fillRect (200, 35, 12, 12, ΛΕΥΚΟ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ΜΑΥΡΟ); tft.drawRect (200, 35, 12, 12, ΜΑΥΡΟ); tft.drawCircle (210, 40, 14, ΜΑΥΡΟ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ΜΑΥΡΟ); tft.drawLine (300, 30, 270, 30, ΜΑΥΡΟ); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Εισαγωγή"); tft.setCursor (30, 150); tft.print ("Έξοδος"); tft.drawRect (25, 130, 90, 30, ΜΑΥΡΟ); tft.drawRect (25, 60, 90, 30, ΜΑΥΡΟ); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Επίπεδο νερού"); tft.setCursor (150, 170); tft.print ("Επίπεδο αερίου"); tft.setCursor (150, 120); tft.print ("Απόσταση"); tft.setCursor (150, 70); tft.print ("oundχος"); άγγιγμα = 1; κατάσταση = 2; }}} while (sound == 1) {tft.fillScreen (WHITE); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage)? Serial.println ("Επίπεδο ήχου ="); Serial.println (sensorVoltage); καθυστέρηση (1000)? εάν (ήχος == 0) {διάλειμμα; }}}}
Βήμα 3: Απαιτούνται βιβλιοθήκες:
- Adafruit_GFX.h
- Adafruit_TFTLCD.h
- TouchScreen.h
Σύνδεσμοι Github για το ίδιο:
github.com/adafruit/Adafruit-GFX-Library
github.com/adafruit/TFTLCD-Library
github.com/adafruit/Adafruit_TouchScreen
Βήμα 4: Οι συνδέσεις
Χρειάζεστε 6 καλώδια βραχυκυκλωτήρων. 3 αρσενικά και 3 θηλυκά. κολλήστε τα απευθείας στον πίνακα Arduino ως εξής:
Βήμα 5: Χτυπήστε τα όλα μαζί
Βάλτε τα καλώδια στο arduino (ανατρέξτε στην εικόνα), χρησιμοποιήστε κάποιο πιστόλι κόλλας εάν χρειάζεται…
Στη συνέχεια, συνδέστε την ασπίδα TFT και δοκιμάστε τους αισθητήρες σας.
Σας ευχαριστώ που μετακινηθήκατε μέχρι κάτω. Φροντίστε να με ψηφίσετε αν πιστεύετε ότι αυτό το έργο ήταν μοναδικό και χρήσιμο
Ευτυχισμένη κατασκευή και προσοχή στους απατεώνες ηλεκτρονικών;
Βήμα 6: Περαιτέρω βελτιώσεις:
- Περισσότερη συμβατότητα με αισθητήρες
- Ο κωδικός σερβοκινητήρα έπρεπε να τελειώσει
- Μια άλλη εφαρμογή που μπορεί να διασυνδεθεί με μονάδες Bluetooth, ώστε να μπορούμε να ελέγχουμε ένα ρομπότ με Bluetooth.
- Διορθώσεις σφαλμάτων
Συνιστάται:
Φτιάξτε έναν EASY Infinity Mirror Cube - ΟΧΙ Τρισδιάστατη εκτύπωση και ΟΧΙ προγραμματισμός: 15 βήματα (με εικόνες)
Φτιάξτε έναν EASY Infinity Mirror Cube | ΟΧΙ Τρισδιάστατη εκτύπωση και ΟΧΙ προγραμματισμός: Σε όλους αρέσει ένας καλός κύβος απείρου, αλλά μοιάζουν σαν να είναι δύσκολο να φτιαχτούν. Ο στόχος μου για αυτό το Instructable είναι να σας δείξω βήμα-βήμα πώς να το φτιάξετε. Όχι μόνο αυτό, αλλά με τις οδηγίες που σας δίνω, θα μπορείτε να κάνετε μία
Φτιάχνοντας ένα απλό ρομπότ από πράγματα που μπορείτε να βρείτε στο σπίτι σας (έκδοση hotwheel): 5 βήματα
Φτιάχνοντας ένα απλό ρομπότ από πράγματα που μπορείτε να βρείτε στο σπίτι σας (Έκδοση θερμού τροχού): Αυτό το Εκπαιδευτικό θα σας δείξει πώς να φτιάξετε έναν στρογγυλό τροχό που λειτουργεί μόνο του και λειτουργεί με μπαταρίες διπλού Α. Θα χρειαστεί να χρησιμοποιήσετε μόνο πράγματα που πιθανότατα θα βρείτε στο σπίτι σας. Λάβετε υπόψη ότι αυτό το ρομπότ πιθανότατα δεν θα πάει ακριβώς ευθεία
Ας φτιάξουμε ένα ρομπότ που περπατάει με ένα κασσίτερο Coca-Cola στο σπίτι: 6 βήματα (με εικόνες)
Ας φτιάξουμε ένα ρομπότ που περπατάει με ένα κασσίτερο Coca-Cola στο σπίτι: Γεια σε όλους, είμαι η Merve! Θα φτιάξουμε ένα ρομπότ που περπατά με ένα κασσίτερο Coca-cola αυτή την εβδομάδα. *_*Ξεκινάμε! ** LEΗΦΙΣΤΕ ΓΙΑ ΑΥΤΟ ΤΟ ΕΡΓΟ ΣΕ ΔΙΑΓΩΝΙΣΜΟ ΚΟΛΛΗΣ
Mystic Crystal Ball (Κυριολεκτικά σας λέει την τύχη σας!): 3 βήματα (με εικόνες)
Mystic Crystal Ball (Σας λέει κυριολεκτικά την περιουσία σας!): Μάθετε πώς να φτιάξετε μια κρυστάλλινη μπάλα που αποκαλύπτει την τύχη που αποκαλύπτει το μέλλον σας όταν αγγίζεστε! Το έργο αποτελείται από τρία βασικά μέρη και μπορεί να κατασκευαστεί σε περίπου τέσσερις ώρες. Υλικά: 1. Χωρητικός αισθητήρας αφής: 1 - Μικροελεγκτής Arduino Uno 1
Δημιουργήστε ένα πραγματικό ρολόι που χτυπά το κουδούνι για τον υπολογιστή σας και ένα ρολόι που χτυπά πυροσβεστήρα .: 3 βήματα (με εικόνες)
Δημιουργήστε ένα πραγματικό ρολόι που χτυπά το κουδούνι για τον υπολογιστή σας και ένα ρολόι που προκαλεί πυροσβεστήρα .: Ένα κουδούνι από ορείχαλκο, ένα μικρό ρελέ μερικά ακόμη πράγματα και ένα πραγματικό κουδούνι μπορούν να χτυπήσουν τις ώρες στην επιφάνεια εργασίας σας. Αν και αυτό το έργο τρέχει σε Windows και Mac Το OS X επίσης, αποφάσισα να εγκαταστήσω το Ubuntu Linux σε έναν υπολογιστή που βρήκα στα σκουπίδια και να δουλέψω σε αυτό: Δεν είχα ποτέ