Πίνακας περιεχομένων:

Ένα ρομπότ που λέει εάν ένας προμηθευτής ηλεκτρονικών συσκευών σας απατά ή όχι: 6 βήματα
Ένα ρομπότ που λέει εάν ένας προμηθευτής ηλεκτρονικών συσκευών σας απατά ή όχι: 6 βήματα

Βίντεο: Ένα ρομπότ που λέει εάν ένας προμηθευτής ηλεκτρονικών συσκευών σας απατά ή όχι: 6 βήματα

Βίντεο: Ένα ρομπότ που λέει εάν ένας προμηθευτής ηλεκτρονικών συσκευών σας απατά ή όχι: 6 βήματα
Βίντεο: 11 Αναδυόμενες τεχνολογίες που θα αλλάξουν τον κόσμο μας! // Άκου να δεις! 2024, Ενδέχεται
Anonim
Ένα ρομπότ που λέει εάν ένας προμηθευτής ηλεκτρονικών συσκευών σας απατά ή όχι
Ένα ρομπότ που λέει εάν ένας προμηθευτής ηλεκτρονικών συσκευών σας απατά ή όχι

Πέρυσι, εγώ και ο μπαμπάς μου πήγαμε σε ένα νέο κατάστημα ρομποτικής/ηλεκτρονικών ειδών πολύ κοντά στο μέρος που ζούμε. Καθώς μπήκα εκεί, ήταν γεμάτο ηλεκτρονικά, σεροβ, αισθητήρες, Raspberry pis και Arduinos. Την επόμενη μέρα, πήγαμε στο ίδιο κατάστημα και αγοράσαμε πολλούς ηλικιωμένους και 3 Arduinos αξίας περίπου 150 USD. Μόλις πήγα σπίτι, κανένα άλλο προϊόν δεν λειτούργησε εκτός από το Arduino Mega. Μας απάτησαν για περίπου 130 δολάρια, που είναι πολλά.

Έτσι, αποφάσισα να δημιουργήσω ένα ρομπότ που μπορεί να δοκιμάσει περίπου 12 αισθητήρες και 2 κινητήρες (εξακολουθούν να λειτουργούν στο σερβο) και να μπορεί να καθορίσει εάν το προϊόν είναι ελαττωματικό.

Ας μπούμε κατευθείαν σε αυτό!

Προμήθειες

1. Arduino UNO

2. Οθόνη αφής TFT 2,4"

3. ζεύγη καλωδίων βραχυκυκλωτήρων

4. αισθητήρες και κινητήρες ώστε να μπορείτε να τους δοκιμάσετε (εδώ χρησιμοποίησα - αισθητήρα κίνησης, αισθητήρα αερίου MQ6, αισθητήρα ήχου, ποτενσιόμετρο και αισθητήρα στάθμης νερού)

Βήμα 1: Πώς λειτουργεί…

Image
Image

Έχω προγραμματίσει ένα 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.
  • Διορθώσεις σφαλμάτων

Συνιστάται: