Πίνακας περιεχομένων:
- Βήμα 1: ΣΧΕΤΙΚΑ ΜΕ ΑΥΤΟ ΤΟ ΕΡΓΟ
- Βήμα 2: Απαιτείται υλικό
- Βήμα 3: Κύκλωμα & συνδέσεις
- Βήμα 4: ΕΡΓΑΣΙΑ
- Βήμα 5: ΚΩΔ
- Βήμα 6: ΕΠΙΔΕΙΞΗ ΒΙΝΤΕΟ
Βίντεο: Έλεγχος Servo χρησιμοποιώντας MPU6050 μεταξύ Arduino και ESP8266 με βήματα HC-12: 6
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Σε αυτό το έργο, ελέγχουμε τη θέση ενός σερβοκινητήρα χρησιμοποιώντας τα mpu6050 και HC-12 για επικοινωνία μεταξύ Arduino UNO και ESP8266 NodeMCU.
Βήμα 1: ΣΧΕΤΙΚΑ ΜΕ ΑΥΤΟ ΤΟ ΕΡΓΟ
Είναι ένα άλλο έργο IoT βασισμένο στο HC-12 RF-module. Εδώ, τα δεδομένα imu (mpu6050) από το arduino χρησιμοποιούνται για τον έλεγχο του σερβοκινητήρα (συνδεδεμένος με τον Nodemcu). Εδώ, η απεικόνιση δεδομένων εκτελείται επίσης από την πλευρά του arduino όπου τα δεδομένα βήματος mpu6050 (περιστροφή γύρω από τον άξονα x) απεικονίζονται με ένα σκίτσο επεξεργασίας (συζητήθηκε αργότερα). Βασικά αυτό το έργο είναι λίγο προθέρμανση για να θυμάστε διάφορες πτυχές του ελέγχου Imu & Servo με Arduino και ESP8266 nodemcu.
ΣΚΟΠΟΣ
Ο στόχος αυτού του αρκετά σαφούς, Ελέγχουμε τη θέση του Servo μοτέρ χρησιμοποιώντας την τιμή βήματος της IMU. Και όλα μαζί αυτή η κλίση και η συγχρονισμένη θέση κινητήρα απεικονίζεται με την επεξεργασία.
Βήμα 2: Απαιτείται υλικό
Μονάδα NodeMCU ESP8266 12E Wifi
Χαρτόνι χωρίς κόλλα
Σύρμα βραχυκυκλωτήρα
MPU6050 accelo+γυροσκόπιο
Ενότητες HC-12 RF (ζεύγος)
Σερβοκινητήρας SG90
Βήμα 3: Κύκλωμα & συνδέσεις
Οι συνδέσεις είναι κατευθείαν. Μπορείτε να τροφοδοτήσετε το σερβο με 3,3V του Nodemcu. Μπορείτε επίσης να χρησιμοποιήσετε το Vin για να τροφοδοτήσετε το σερβο αν το nodemcu σας έχει τόση τάση σε αυτόν τον πείρο. Αλλά οι περισσότεροι πίνακες Lolin δεν έχουν 5V στο Vin (εξαρτάται από τον κατασκευαστή).
Αυτά τα διαγράμματα κυκλώματος γίνονται με τη χρήση EasyADA.
Βήμα 4: ΕΡΓΑΣΙΑ
Μόλις ξεκινήσει το σκίτσο του arduino, θα στείλει τη γωνία κλίσης (που κυμαίνεται από -45 έως 45) στον δέκτη hc12 του Nodemcu που αντιστοιχίζεται με τη θέση Servo 0 έως 180 μοιρών. Εδώ χρησιμοποιήσαμε τη γωνία κλίσης από -45 έως +45 μοίρα, ώστε να μπορούμε εύκολα να τη χαρτογραφήσουμε στη θέση Servo.
Τώρα, σκέφτεστε γιατί μπορούμε απλά να χρησιμοποιήσουμε τη μέθοδο του χάρτη ως εξής:-
int pos = χάρτης (val, -45, 45, 0, 180);
Επειδή η αρνητική γωνία που στέλνει ο πομπός hc12 λαμβάνεται ως:
1ο ημίχρονο: (T) 0 έως 45 => 0 έως 45 (R)
2ο ημίχρονο: (T) -45 έως -1 => 255 έως 210 (R)
Πρέπει λοιπόν να το αντιστοιχίσετε στο 0 έως 180 ως
εάν (val> = 0 && val <= 45) pos = (val*2) +90; else pos = (val-210)*2;
Αποφεύγω τη μέθοδο του χάρτη λόγω κάποιου άσχετου σφάλματος. Μπορείτε να το δοκιμάσετε και να σχολιάσετε ότι λειτουργεί μαζί σας
εάν (val> = 0 && val <= 45) pos = χάρτης (val, 0, 45, 90, 180); else pos = χάρτης (val, 255, 210, 0, 90); // Το 4ο όρισμα μπορεί να είναι 2 (μπορείτε να ελέγξετε)
MPU6050 Υπολογισμός γωνίας κλίσης
Χρησιμοποιώ βιβλιοθήκη MPU6050_tockn η οποία βασίζεται στην παροχή ακατέργαστων δεδομένων από το IMU.
int pitchAngle = mpu6050.getAngleX ()
Αυτό θα μας δώσει τη γωνία περιστροφής γύρω από τον άξονα x. Όπως είδατε στο σχήμα, το imu μου είναι κάθετα τοποθετημένο στο breadboard, οπότε μην συγχέετε με το pitch and roll. Στην πραγματικότητα θα πρέπει πάντα να βλέπετε τον άξονα τυπωμένο στον πίνακα ανάρτησης.
Μέσω αυτής της βιβλιοθήκης, δεν χρειάζεται να ασχολείστε με τα εσωτερικά ηλεκτρονικά της ανάγνωσης συγκεκριμένων καταχωρητών για συγκεκριμένη λειτουργία. καθορίζετε μόνο τη δουλειά και τελειώσατε!
Btw αν θέλετε να υπολογίσετε μόνοι σας τη γωνία. Μπορείτε εύκολα να το κάνετε ως εξής:
#περιλαμβάνω
const int MPU6050_addr = 0x68; int16_t AcX, AcY, AcZ, Temp, GyroX, GyroY, GyroZ; void setup () {Wire.begin (); Wire.beginTransmission (MPU6050_addr); Wire.write (0x6B); Wire.write (0); Wire.endTransmission (true); Serial.begin (9600); } void loop () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmission (false); Wire.requestFrom (MPU6050_addr, 14, true)? AcX = Wire.read () << 8 | Wire.read (); AcY = Wire.read () << 8 | Wire.read (); AcZ = Wire.read () << 8 | Wire.read (); Temp = Wire.read () << 8 | Wire.read (); GyroX = Wire.read () << 8 | Wire.read (); GyroY = Wire.read () << 8 | Wire.read (); GyroZ = Wire.read () << 8 | Wire.read ();
int xAng = χάρτης (AcX, minVal, maxVal, -90, 90); int yAng = χάρτης (AcY, minVal, maxVal, -90, 90); int zAng = χάρτης (AcZ, minVal, maxVal, -90, 90); x = RAD_TO_DEG * (atan2 (-yAng, -zAng)+PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng)+PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng)+PI); Serial.print ("AngleX ="); // Pitch Serial.println (x); Serial.print ("AngleY ="); // Roll Serial.println (y); Serial.print ("AngleZ ="); // Yaw Serial.println (z); }
Αλλά, δεν είναι απαραίτητο να γράψετε τόσο πολύ κώδικα για να πάρετε τη γωνία. Πρέπει να γνωρίζετε τα γεγονότα πίσω από τη σκηνή, αλλά η χρήση βιβλιοθήκης άλλων ανθρώπων είναι πολύ αποτελεσματική σε πολλά έργα. Μπορείτε να διαβάσετε σχετικά με αυτό το imu και άλλες προσεγγίσεις για να λάβετε περισσότερα φιλτραρισμένα δεδομένα από τον ακόλουθο σύνδεσμο: Explore-mpu6050.
Ο κώδικας arduino μου στο άκρο μετάδοσης έχει μόνο 30 γραμμές με τη βοήθεια της βιβλιοθήκης MPU6050_tockn, οπότε η χρήση μιας βιβλιοθήκης είναι καλή εκτός αν δεν χρειάζεστε κάποιες βασικές αλλαγές στη λειτουργικότητα του IMU. Μια βιβλιοθήκη με το όνομα I2Cdev του Jeff Rowberg είναι πολύ χρήσιμη εάν θέλετε κάποια φιλτραρισμένα δεδομένα χρησιμοποιώντας το DMP (motionηφιακός επεξεργαστής κίνησης) της IMU.
Ενσωμάτωση με την Επεξεργασία
Εδώ η Επεξεργασία χρησιμοποιείται για την απεικόνιση των δεδομένων περιστροφής σχετικά με τον άξονα x της IMU όπως υπολογίζεται από τα ακατέργαστα δεδομένα που προέρχονται από το MPU6050. Λαμβάνουμε τα εισερχόμενα ακατέργαστα δεδομένα στο SerialEvent με τον ακόλουθο τρόπο:
void serialEvent (Serial myPort) {
inString = myPort.readString (); δοκιμάστε {// Αναλύστε τα δεδομένα // println (inString); String dataStrings = split (inString, ':'); if (dataStrings.length == 2) {if (dataStrings [0].equals ("RAW")) {for (int i = 0; i <dataStrings.length - 1; i ++) {raw = float (σειρές δεδομένων [i+1]); }} else {println (inString); }}} catch (εξαίρεση ε) {println ("Caught Exception"); }}
Εδώ μπορείτε να δείτε την απεικόνιση στην εικόνα που επισυνάπτεται σε αυτό το βήμα. Τα δεδομένα θέσης που λαμβάνονται στο άκρο nodemcu φαίνονται επίσης στη σειριακή οθόνη, όπως φαίνεται στην εικόνα.
Βήμα 5: ΚΩΔ
Έχω επισυνάψει το αποθετήριο github. Μπορείτε να το κλωνοποιήσετε και να το πιρούνι για να το χρησιμοποιήσετε στα έργα σας.
my_code
Το repo περιλαμβάνει 2 σκίτσα arduino για πομπό (arduino+IMU) & δέκτη (Nodemcu+Servo).
Και ένα σκίτσο επεξεργασίας. Ορίστε το repo αν αυτό σας βοηθήσει στο έργο σας.
Σε αυτό το διδακτικό, R- Δέκτης & Τ-Πομπός
Βήμα 6: ΕΠΙΔΕΙΞΗ ΒΙΝΤΕΟ
Θα επισυνάψω το βίντεο αύριο. Ακολουθήστε με για να ειδοποιηθείτε.
Σας ευχαριστώ όλους!
Συνιστάται:
RS485 μεταξύ Arduino και Raspberry Pi: 7 βήματα
RS485 μεταξύ Arduino και Raspberry Pi: Για το σχολείο πρέπει να κάνω ένα έργο. Επιλέγω να φτιάξω έναν έξυπνο ελεγκτή θερμοκηπίου πλήρως ελεγχόμενο από ένα βατόμουρο πι. Οι αισθητήρες θα τροφοδοτούνται από arduino uno. Κατά τους μήνες που ακολουθούν θα δημοσιεύσω την κατασκευή αυτού του έργου βήμα προς βήμα
Έλεγχος φωτεινότητας Έλεγχος LED βασισμένος σε PWM χρησιμοποιώντας κουμπιά, Raspberry Pi και Scratch: 8 βήματα (με εικόνες)
Έλεγχος φωτεινότητας PWM Βασισμένος έλεγχος LED χρησιμοποιώντας κουμπιά, Raspberry Pi και Scratch: Προσπαθούσα να βρω έναν τρόπο να εξηγήσω πώς λειτουργούσε το PWM στους μαθητές μου, οπότε έθεσα τον εαυτό μου στην προσπάθεια να ελέγξω τη φωτεινότητα ενός LED χρησιμοποιώντας 2 κουμπιά - το ένα κουμπί αυξάνει τη φωτεινότητα ενός LED και το άλλο το μειώνει. Για να προχωρήσει
ESP8266 NODEMCU BLYNK IOT Φροντιστήριο - Esp8266 IOT χρησιμοποιώντας Blunk και Arduino IDE - Έλεγχος LED μέσω Διαδικτύου: 6 βήματα
ESP8266 NODEMCU BLYNK IOT Φροντιστήριο | Esp8266 IOT χρησιμοποιώντας Blunk και Arduino IDE | Έλεγχος LED μέσω Διαδικτύου: Γεια σας παιδιά σε αυτό το εγχειρίδιο θα μάθουμε πώς να χρησιμοποιούμε το IOT με το ESP8266 ή το Nodemcu. Θα χρησιμοποιήσουμε την εφαρμογή blynk για αυτό. Έτσι, θα χρησιμοποιήσουμε το esp8266/nodemcu μας για να ελέγξουμε τις λυχνίες LED στο διαδίκτυο. Έτσι, η εφαρμογή Blynk θα συνδεθεί με το esp8266 ή το Nodemcu
8 Έλεγχος ρελέ με NodeMCU και δέκτη IR χρησιμοποιώντας WiFi και IR Τηλεχειριστήριο και εφαρμογή Android: 5 βήματα (με εικόνες)
8 Έλεγχος ρελέ με δέκτη NodeMCU και IR χρησιμοποιώντας WiFi και IR Τηλεχειριστήριο και εφαρμογή Android: Έλεγχος 8 διακοπτών ρελέ χρησιμοποιώντας nodemcu και δέκτη ir μέσω wifi και ir απομακρυσμένης και εφαρμογής Android. Το ir remote λειτουργεί ανεξάρτητα από τη σύνδεση wifi. ΕΔΩ ΕΙΝΑΙ ΕΝΗΜΕΡΩΜΕΝΗ ΚΛΙΚ ΕΔΩ
Αντιγραφή και επικόλληση και πρόσβαση σε αρχεία μεταξύ πολλών υπολογιστών: 3 βήματα
Αντιγραφή και επικόλληση και πρόσβαση σε αρχεία μεταξύ πολλών υπολογιστών: Βρήκα μόλις έναν ιστότοπο που επιτρέπει στους χρήστες να αντιγράφουν και να επικολλούν οποιοδήποτε κείμενο, εικόνες, βίντεο κ.λπ. μεταξύ πολλών υπολογιστών. Σας επιτρέπει επίσης να δημιουργήσετε έναν πίνακα μηνυμάτων, να ανεβάσετε αρχεία και να εκτυπώσετε την ιστοσελίδα σας. Και το καλύτερο είναι ότι δεν έχετε καν