תוכן עניינים:
- שלב 1: אודות הפרויקט הזה
- שלב 2: נדרשת חומרה
- שלב 3: מעגל וחיבורים
- שלב 4: עבודה
- שלב 5: קוד
- שלב 6: הפגנת וידיאו
וִידֵאוֹ: שליטה בסרוו באמצעות MPU6050 בין Arduino ל- ESP8266 עם HC-12: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
בפרויקט זה, אנו שולטים במיקום של מנוע סרוו באמצעות mpu6050 ו- HC-12 לתקשורת בין Arduino UNO ו- ESP8266 NodeMCU.
שלב 1: אודות הפרויקט הזה
זהו פרויקט IoT נוסף המבוסס על מודול RF-12 RF. כאן, נתוני imu (mpu6050) מארדואינו משמשים לשליטה במנוע הסרוו (המחובר ל- Nodemcu). כאן, ויזואליזציית הנתונים מתבצעת גם בצד arduino שבו נתוני המגרש mpu6050 (סיבוב סביב ציר ה- x) מדומיינים בעזרת סקיצה לעיבוד (נדון בהמשך). בעיקרון הפרויקט הזה הוא רק התחממות קטנה לזכור היבטים שונים של בקרת Imu & Servo עם Arduino ו- ESP8266 nodemcu.
מַטָרָה
המטרה של זה די ברור, אנו שולטים במיקום של מנוע סרוו באמצעות ערך המגרש של IMU. וסך הכל המיקום והמקום המוטורי המסונכרן הזה מדמיינים עם עיבוד.
שלב 2: נדרשת חומרה
NodeMCU מודול Wifi ESP8266 12E
קרש לחם ללא הלחמה
כבל מגשר
MPU6050 accelo+gyro
מודולי RF HC-12 (זוג)
מנוע סרוו SG90
שלב 3: מעגל וחיבורים
החיבורים ישירים קדימה. אתה יכול להפעיל את סרוו עם 3.3V של Nodemcu שלך. אתה יכול גם להשתמש ב- Vin כדי להפעיל את הסרוו אם ל- nodemcu שלך יש כל כך הרבה מתח על הסיכה הזו. אבל לרוב הלוחות Lolin אין 5V ב Vin (תלוי ביצרן).
תרשימי מעגלים אלה נעשים באמצעות EasyADA.
שלב 4: עבודה
ברגע שהסקיצה של הארדואינו החלה, היא תשלח את זווית המגרש (שנעה בין -45 ל -45) למקלט hc12 של Nodemcu שממופה עם מיקום סרוו 0 עד 180 מעלות. כאן השתמשנו בזווית המגרש מ -45 עד +45 מעלות כך שנוכל למפות זאת לעמדת סרוו.
כעת, אתם חושבים מדוע אנו יכולים פשוט להשתמש בשיטת המפה כדלקמן:-
int pos = מפה (val, -45, 45, 0, 180);
מכיוון שהזווית השלילית שנשלחת על ידי משדר hc12 מתקבלת כ:
מחצית ראשונה: (T) 0 עד 45 => 0 עד 45 (R)
מחצית שנייה: (T) -45 עד -1 => 255 עד 210 (R)
אז אתה צריך למפות אותו ל 0 עד 180 כמו
אם (val> = 0 && val <= 45) pos = (val*2) +90; אחרת pos = (val-210)*2;
אני נמנע משיטת המפה בגלל שגיאה לא רלוונטית. אתה יכול לנסות את זה ולהעיר שזה עובד איתך
if (val> = 0 && val <= 45) pos = map (val, 0, 45, 90, 180); אחרת pos = מפה (val, 255, 210, 0, 90); // הארגומנט הרביעי יכול להיות 2 (אתה יכול לבדוק)
חישוב זווית המגרש MPU6050
אני משתמש בספריית MPU6050_tockn המבוססת על מסירת נתונים גולמיים מה- IMU.
int pitchAngle = mpu6050.getAngleX ()
זה יביא לנו את זווית הסיבוב סביב ציר ה- x. כפי שראית באיור, האימו שלי ממוקם אנכית על קרש הלחם, כך שלא תבלבל עם המגרש והגליל. למעשה אתה תמיד צריך לראות את הציר מודפס על לוח הפריצה.
באמצעות ספרייה זו, אינך צריך להתעסק באלקטרוניקה הפנימית של קריאת אוגרים ספציפיים להפעלה ספציפית. אתה רק מציין את העבודה וסיימת!
Btw אם אתה רוצה לחשב את הזווית בעצמך. אתה יכול לעשות זאת בקלות כדלקמן:
#לִכלוֹל
const int MPU6050_addr = 0x68; int16_t AcX, AcY, AcZ, Temp, GyroX, GyroY, GyroZ; הגדרת חלל () {Wire.begin (); שידור Wire.beginTransmission (MPU6050_addr); Wire.write (0x6B); Wire.write (0); Wire.endTransmission (true); Serial.begin (9600); } לולאת חלל () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmission (שקר); 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 = map (AcX, minVal, maxVal, -90, 90); int yAng = map (AcY, minVal, maxVal, -90, 90); int zAng = map (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 ="); // רול Serial.println (y); Serial.print ("AngleZ ="); // Yaw Serial.println (z); }
אבל, אין צורך שתכתוב קוד כה רב כדי לקבל את הזווית. אתה צריך לדעת את העובדות מאחורי הקלעים, אך השימוש בספרייה של אנשים אחרים יעיל מאוד בפרויקטים רבים. אתה יכול לקרוא על imu זה ועל אישורים אחרים לקבל נתונים מסוננים יותר מהקישור הבא: Explore-mpu6050.
קוד הארדואינו שלי בקצה השידור כולל רק 30 שורות בעזרת ספריית MPU6050_tockn כך שהשימוש בספרייה הוא טוב, אלא אם כן לא צריך כמה שינויים מרכזיים בפונקציונליות של IMU. ספרייה בשם I2Cdev מאת ג'ף רווברג עוזרת מאוד אם אתה רוצה נתונים מסוננים באמצעות DMP (מעבד תנועה דיגיטלי) של ה- 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 (dataStrings [i+1]); }} else {println (inString); }}} catch (חריגה ה) {println ("תפס חריג"); }}
כאן תוכל לראות הדמיה בתמונה המצורפת בשלב זה. נתוני המיקום המתקבלים בקצה nodemcu נראים גם על הצג הסדרתי כפי שמוצג בתמונה.
שלב 5: קוד
צירפתי את מאגר github. אתה יכול לשבט ולזלג אותו לשימוש בפרויקטים שלך.
קוד my_code
הריפו כולל 2 סקיצות ארדואינו למשדר (arduino+IMU) ומקלט (Nodemcu+Servo).
ומערכון עיבוד אחד. סמן את כוכב הריפו אם זה עוזר בפרויקט שלך.
בהנחיה זו, R- מקלט & T- משדר
שלב 6: הפגנת וידיאו
אני מצרף את הסרטון מחר. עקוב אחריי כדי לקבל הודעה.
תודה לכולכם!
מוּמלָץ:
שליטה באורות הבית באמצעות Google Assistant באמצעות Arduino: 7 שלבים
שליטה על אורות הבית באמצעות Google Assistant באמצעות Arduino: (עדכון ב- 22 באוגוסט 2020: ההוראה היא בת שנתיים ומסתמכת על כמה אפליקציות של צד שלישי. כל שינוי מהצד שלהם עלול לגרום לכך שהפרויקט הזה לא יעבוד. יתכן ויתכן שלא. תעבוד עכשיו אבל תוכל לעקוב אחריו כהפניה ולשנות בהתאם
שליטה בסרוו באמצעות 555 טיימר IC: 3 שלבים
שליטת סרוו באמצעות 555 טיימר IC: ההוראה הראשונה שלי הייתה " שליטה בסרוווס באמצעות ג'ויסטיק אנלוגי ". מאז שיתפתי כמה פרויקטים שהיו צריכים סרווס למשל: זרוע רובוטית ומעקב פנים. תמיד השתמשנו במיקרו -בקר לשליטה בסרווואים. אבל כדי
שליטה הובילה בכל רחבי העולם באמצעות אינטרנט באמצעות Arduino: 4 שלבים
השליטה הובילה בכל רחבי העולם באמצעות האינטרנט באמצעות Arduino: היי, אני Rithik. אנו הולכים לייצר LED הנשלט על ידי האינטרנט באמצעות הטלפון שלך. אנו הולכים להשתמש בתוכנות כמו Arduino IDE ו- Blynk. זה פשוט ואם הצלחת אתה יכול לשלוט בכמה רכיבים אלקטרוניים שאתה רוצה דברים שאנחנו צריכים: חומרה:
כיצד לספור בין 0 ל -99 באמצעות מיקרו -בקר 8051 עם תצוגת 7 פלחים: 5 שלבים (עם תמונות)
כיצד לספור מ -0 עד 99 באמצעות 8051 מיקרו -בקר עם תצוגת 7 פלחים: שלום לכולם, במדריך זה אנו הולכים לספר לכם כיצד לספור מ -0 עד 99 באמצעות שתי תצוגות של 7 קטעים
שליטה בסרוו באמצעות גיטרה של להקת ארדואינו ורוק: 5 שלבים
שליטה בסרוו באמצעות גיטרה של ארדואינו ורוק להקת: זהו ההוראה הראשונה שלי ללא הוראה מגעילה איך הכנתי תוכנית