תוכן עניינים:

☠ WEEINATOR☠ חלק 2: ניווט בלוויין: 7 שלבים (עם תמונות)
☠ WEEINATOR☠ חלק 2: ניווט בלוויין: 7 שלבים (עם תמונות)

וִידֵאוֹ: ☠ WEEINATOR☠ חלק 2: ניווט בלוויין: 7 שלבים (עם תמונות)

וִידֵאוֹ: ☠ WEEINATOR☠ חלק 2: ניווט בלוויין: 7 שלבים (עם תמונות)
וִידֵאוֹ: ЧЕРЕП 💀— ЧТО ЗНАЧИТ? 2024, יולי
Anonim
EWEEDINATOR☠ חלק 2: ניווט לווייני
EWEEDINATOR☠ חלק 2: ניווט לווייני
EWEEDINATOR☠ חלק 2: ניווט לווייני
EWEEDINATOR☠ חלק 2: ניווט לווייני
EWEEDINATOR☠ חלק 2: ניווט לווייני
EWEEDINATOR☠ חלק 2: ניווט לווייני
☠ WEEINATOR☠ חלק 2: ניווט לווייני
☠ WEEINATOR☠ חלק 2: ניווט לווייני

מערכת הניווט Weedinator נולדה!

רובוט חקלאי מסתובב שניתן לשלוט בו באמצעות טלפון חכם.

… ובמקום פשוט לעבור את התהליך הרגיל של אופן חיבורו חשבתי שאנסה להסביר איך זה באמת עובד - ברור שלא הכל אלא החלקים החשובים והמעניינים ביותר. אנא סליחה, אבל איך הנתונים זורמים בין המודולים הבודדים, לדעתי מעניינים ומתפרקים למכנה הנמוך ביותר, בסופו של דבר אנחנו מקבלים "ביטים" בפועל - אפסים ואחד. אם אי פעם התבלבלת לגבי סיביות, בתים, תווים ומחרוזות, אז אולי עכשיו זה הזמן להתבלבל? אני גם אנסה לבלבל מושג מעט מופשט בשם 'ביטול שגיאות'.

המערכת עצמה כוללת:

  • GPS/GNSS: Ublox C94 M8M (רובר ובסיס)
  • מצפן דיגיטלי 9DOF תער IMU MO
  • Fona 800H 2G GPRS סלולרי
  • מסך TFT בגודל 2.2 אינץ '
  • Arduino Due 'Master'
  • 'עבדים' שונים של ארדואינו.

באופן מוזר, להרבה מנועי Sat אין מצפן דיגיטלי, מה שאומר שאם אתה נייח ואבד, עליך ללכת או לנסוע לכל כיוון אקראי לפני שהמכשיר יכול להראות לך את הכיוון הנכון מלוויינים. אם אתה הולך לאיבוד בג'ונגל עבה או בחניון תת קרקעי אתה ממולא!

שלב 1: איך זה עובד

איך זה עובד
איך זה עובד

נכון לעכשיו, זוג קואורדינטות פשוט מועלה מטלפון חכם או מחשב, ולאחר מכן הורדות על ידי ה- Weedinator. אלה מתפרשים לאחר מכן לכותרת במעלות ומרחק נסיעה במ מ.

הפונה GPRS משמשת לגשת למסד נתונים מקוון דרך הרשת הסלולרית 2G ולקבל ולשדר את הקואורדינטות ל- Arduino Due באמצעות Arduino Nano. The Due הוא המאסטר ושולט על מערך של ארדואינים אחרים כעבדים באמצעות I2C ואוטובוסים סדרתיים. ה- Due יכול לקיים אינטראקציה עם נתונים חיים מה- Ublox ו- Razor ולהציג כותרת המחושבת על ידי אחד מעבדי הארדואינו שלה.

גשש הלוויין Ublox חכם במיוחד מכיוון שהוא משתמש בביטול שגיאות כדי לקבל תיקונים מדויקים מאוד - סטייה סופית סופית של כ -40 מ"מ. המודול מורכב מצמד זהה, שאחד מהם, 'הרובר', נע עם מכשיר הווידינאטור, והשני, 'הבסיס' קבוע על מוט אי שם בחוץ. ביטול שגיאות מושגת על ידי כך שהבסיס יכול להשיג תיקון מדויק באמת באמצעות כמות גדולה של דגימות לאורך זמן. לאחר מכן ממוצעים של דגימות אלה כדי לפצות על שינוי האטמוספירה באטמוספירה. אם המכשיר היה זז, ברור שהוא לא היה מסוגל לקבל ממוצע כלשהו ויהיה נתון לחסדיה המוחלטים של סביבה משתנה. עם זאת, אם מכשיר סטטי ונע עובד יחד, כל עוד הם יכולים לתקשר ביניהם, הם יכולים להפיק תועלת משניהם. בכל זמן נתון, ליחידת הבסיס עדיין יש שגיאה אך יש לה גם תיקון סופר מדויק שחושב בעבר כך שהיא יכולה לחשב את השגיאה בפועל על ידי הפחתת סט קואורדינטות אחד משני. לאחר מכן הוא שולח את השגיאה המחושבת לרובר באמצעות קישור רדיו, ולאחר מכן מוסיף את השגיאה לקואורדינטות משלו והיי פרסטו, יש לנו ביטול שגיאות! מבחינה מעשית, ביטול שגיאות עושה את ההבדל בין 3 מטרים לסטייה כוללת של 40 מ"מ.

המערכת השלמה נראית מסובכת, אך למעשה די קלה לבנייה, משוחררת על משטח לא מוליך או באמצעות הלוח שעיצבתי, מה שמאפשר לברק היטב את כל המודולים. פיתוח עתידי בנוי על ה- PCB, ומאפשר לשלב מגוון עצום של Arduinos לשליטה במנועים להיגוי, לתנועה קדימה ומכונת CNC משולבת. הניווט יסייע גם לפחות במערכת זיהוי אובייקטים אחת באמצעות מצלמות לחישת אובייקטים צבעוניים, למשל כדורי גולף פלורסנט, הממוקמים בקפידה ברשת כלשהי - צפו בחלל הזה!

שלב 2: רכיבים

רכיבים
רכיבים
רכיבים
רכיבים
רכיבים
רכיבים
  • Ublox C94 M8M (רובר ובסיס) x 2 מתוך
  • מצפן דיגיטלי 9DOF תער IMU MO
  • Fona 800H 2G GPRS סלולרי 1946
  • Arduino Due
  • Arduino Nano x 2 מתוך
  • SparkFun Pro Micro
  • Adafruit 2.2 "TFT IL1940C 1480
  • PCB (ראה קובצי Gerber המצורפים) x 2 מתוך
  • נגדי 1206 SMD אפס אוהם x 12 אינץ '
  • 1206 נוריות x 24 מתוך

קובץ ה- PCB נפתח עם תוכנת 'Design Spark'.

שלב 3: חיבור המודולים

חיווט המודולים
חיווט המודולים

זהו החלק הקל - קל במיוחד עם הלוח שהכנתי - פשוט עקוב אחר התרשים לעיל. יש צורך בזהירות כדי להימנע מחוטי מודולים של 3V ל -5V, אפילו בקווים הטוריים וה- I2C.

שלב 4: קוד

קוד
קוד

רוב הקוד עוסק בהובלת נתונים מסודרים במערכת בצורה מסודרת ולעתים קרובות יש צורך להמיר פורמטים של נתונים ממספרים שלמים לצופים למחרוזות ולתווים, מה שעלול לבלבל מאוד! פרוטוקול 'סדרתי' יטפל רק בתווים ובזמן ה- I2פרוטוקול C יטפל במספרים שלמים קטנים מאוד, מצאתי שעדיף להמיר אותם לתווים ולאחר מכן להמיר חזרה למספרים שלמים בקצה השני של קו השידור.

בקר ה- Weedinator הוא בעצם מערכת של 8 ביט עם הרבה Arduinos בודדים, או 'MCU'. כאשר 8 סיביות מתוארות כאפסים בינאריים בפועל ואותם זה יכול להיראות כך: B01100101 שיהיה שווה:

(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =

ערך ספרתי עשרוני 128 64 32 16 8 4 2 1
ערך ספרות בינאריות 0 1 1 0 0 1 0 1

= 101

והערך המרבי האפשרי הוא 255…. כך שמספר ה'בייט 'המרבי שאנו יכולים לשדר מעל אני2C הוא 255, וזה מאוד מגביל!

על Arduino אנו יכולים לשדר עד 32 תווים ASCII, או בתים, בכל פעם באמצעות I2C, שהוא הרבה יותר שימושי, וערכת התווים כוללת מספרים, אותיות ותווי שליטה בפורמט 7 ביט כדלקמן:

תמונה
תמונה

למרבה המזל, מהדר Arduino מבצע את כל עבודות ההמרה מתו לבינארי ברקע, אך הוא עדיין מצפה לסוג התו הנכון להעברת נתונים והוא לא יקבל 'מחרוזות'.

עכשיו זה כאשר הדברים יכולים להסתבך. ניתן לבטא תווים כדמויות בודדות באמצעות הגדרת הצ'אר או כמערך חד ממדי של 20 תווים באמצעות תו [20]. מחרוזת ארדואינו דומה מאוד למערך תווים והיא ממש מחרוזת של דמויות המתפרשות לעתים על ידי המוח האנושי כ'מילים '.

// בונה את הדמות 'distanceCharacter':

יוזם מחרוזת = ""; distanceString = יוזם + distanceString; int n = distanceString.length (); עבור (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }

הקוד לעיל יכול להמיר מחרוזת תווים ארוכה למערך תווים של תווים שאפשר להעביר אותם מעל I2C או סדרתי.

בקצה השני של קו ההולכה, ניתן להמיר את הנתונים בחזרה למחרוזת באמצעות הקוד הבא:

distanceString = distanceString + c; // מחרוזת = מחרוזת + תו

לא ניתן להמיר מערך תווים ישירות למספר שלם ועליו להיכנס תחילה לתבנית המחרוזת, אך הקוד הבא יומר ממחרוז למספר שלם:

int result = (distanceString).toInt ();

int distanceMetres = result;

כעת יש לנו מספר שלם שנוכל להשתמש בו לביצוע חישובים. צריך להמיר צפים (מספרים עם נקודה עשרונית) למספרים שלמים בשלב השידור ולאחר מכן לחלק ב -100 לשני מקומות עשרוניים, למשל:

צף מרחק מטר = מרחק ממ / 1000;

לבסוף, ניתן ליצור מחרוזת מתערובת של תווים ומספרים שלמים, למשל:

// כאן הנתונים נאספים לתו:

dataString = יוזם + "BEAR" + zbearing + "DIST" + zdistance; // מוגבל ל 32 תווים // מחרוזת = מחרוזת + תווים + intereger + תווים + מספר שלם.

שאר הקוד הוא חומר רגיל של Arduino שניתן למצוא בדוגמאות השונות בספריות Arduino. בדוק את דוגמאות 'דוגמאות >>>> מחרוזות ודוגמאות הספרייה' חוט '.

להלן כל התהליך לשדר ולקבל ציפה:

המרת Float ➜ מספר שלם ➜ מחרוזת ➜ מערך תווים ….. ואז העבר מערך תווים ממאסטר ➜➜

➜➜ קבל תווים בודדים ב- Slave…. ואז להמיר תו ➜ מחרוזת ger מספר שלם ➜ צף

שלב 5: מסד נתונים ודף אינטרנט

מסד נתונים ודף אינטרנט
מסד נתונים ודף אינטרנט
מסד נתונים ודף אינטרנט
מסד נתונים ודף אינטרנט

למעלה מוצג מבנה מסד הנתונים וקובצי ה- php ו- html מצורפים. שמות משתמש, שמות מסדי נתונים, שמות טבלאות וסיסמאות נמחקים לאבטחה.

שלב 6: בדיקות ניווט

בדיקות ניווט
בדיקות ניווט
בדיקות ניווט
בדיקות ניווט
בדיקות ניווט
בדיקות ניווט

הצלחתי לחבר מחשב נתונים ללוח הבקרה של Weedinator באמצעות I2C ולקבל מושג לגבי ביצועי מיקום הלוויין Ublox M8M:

ב'התחלה קרה ', המוצג בתרשים הירוק, המודול התחיל עם הרבה שגיאות, די דומה ל- GPS' רגיל ', ובהדרגה הטעות הופחתה עד שאחרי כשעתיים הוא קיבל תיקון RTK בין רובר ובסיס (מוצג כצלב האדום). במהלך אותה תקופה של שעתיים, מודול הבסיס כל הזמן בונה ומעדכן ערך ממוצע לקו הרוחב והאורך ולאחר מרווח הזמן המתוכנת מראש מחליט שיש לו תיקון טוב. 2 הגרפים הבאים מראים התנהגות לאחר 'התחלה חמה' 'שבו מודול הבסיס כבר חישב ממוצע טוב. הגרף העליון הוא על פני 200 דקות ומדי פעם התיקון הולך לאיבוד והרובר שולח הודעת NMEA ל- Weedinator כי התיקון הפך באופן זמני לבלתי אמין.

הגרף הכחול התחתון הוא 'הגדלה' של התיבה האדומה בתרשים העליון ומראה תצלום מייצג טוב של ביצועי Ublox, עם סטייה כוללת של 40 מ מ, וזה יותר ממספיק טוב כדי להנחות את מכשיר הווידינאטור לאתר שלו., אבל אולי לא מספיק טוב כדי לעבד את האדמה סביב צמחים בודדים?

הגרף השלישי מציג נתונים שנאספו עם הרובר והבסיס במרחק של 100 מטרים זה מזה - לא זוהתה שגיאה נוספת - מרחק ההפרדה לא השפיע על הדיוק.

שלב 7: סופי

מוּמלָץ: