תוכן עניינים:
- אספקה
- שלב 1: קבלת נתוני GPS
- שלב 2: שליחת נתוני GPS באמצעות רדיו
- שלב 3: אחסון נתונים באמצעות מודול כרטיס SD
- שלב 4: שליחה ושמירה של נתוני GPS
- שלב 5: תודה
וִידֵאוֹ: מצוף חכם [GPS, רדיו (NRF24) ומודול כרטיס SD]: 5 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
סדרת Smart Booy זו משרטטת את הניסיון (השאפתני) שלנו לבנות מצוף מדעי שיכול לבצע מדידות משמעותיות לגבי הים באמצעות מוצרי מדף. זהו מדריך שניים מתוך ארבעה - וודא שאתה מעודכן, ואם אתה צריך היכרות מהירה עם הפרויקט, עיין בסיכום שלנו.
חלק 1: ביצוע מדידות גל וטמפרטורה
במדריך זה אנו מראים כיצד ניתן להשיג נתוני GPS, לאחסן אותם בכרטיס SD ולשלוח אותם למקום כלשהו באמצעות רדיו.
עשינו זאת כדי שנוכל לעקוב אחר המיקום של המצוף הימי שלנו. הרדיו אומר שנוכל לצפות בו מרחוק וכרטיס ה- SD אומר שבמקרה הפסק משהו נשבר וזה יוצא לשיטוט, נוכל להוריד את הנתונים שאסף במהלך הטיול הבלתי מתוכנן שלו - אם נצליח אי פעם לאחזר אותו!
אספקה
מודול GPS - אמזון
מודול כרטיס SD - אמזון
כרטיס SD - אמזון
2 X מודולי רדיו (NRF24L01+) - אמזון
2 X Arduino - אמזון
שלב 1: קבלת נתוני GPS
המצוף החכם מבצע מדידות חיישנים כשהוא יושב בים, כולל מיקום GPS ותאריך זמן. תסתכל על סכמטי שמראה כיצד הגדרנו את המעגל. מודול ה- GPS מתקשר באמצעות חיבור טורי, כך שאנו משתמשים בספריית הטורד של תוכנת Arduino כמו גם בספריית ה- GPS הזעירה כדי לתקשר איתו. הספריות האלה הופכות את הכל לסופר פשוט. בואו ניקח אתכם דרך הקוד…
#לִכלוֹל
#include // אובייקט TinyGPS ++ TinyGPSPlus gps; // החיבור הטורי למכשיר ה- GPS SoftwareSerial ss (4, 3); struct dataStruct {קו רוחב כפול; אורך כפול; תאריך ארוך לא חתום; זמן לא חתום; } gpsData; הגדרת חלל () {Serial.begin (115200); ss.begin (9600); } לולאת void () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("מיקום לא חוקי"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("תאריך לא חוקי"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("זמן לא חוקי"); }} void printResults () {Serial.print ("מיקום:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("תאריך:"); Serial.print (gpsData.date); Serial.print ("זמן:"); Serial.print (gpsData.time); Serial.println (); }
(בדוק את הסרטון לקוד זה בכתובת
שלב 2: שליחת נתוני GPS באמצעות רדיו
נניח שהמצוף בים לוקח מדידות, אבל אנחנו רוצים לראות את הנתונים מבלי להרטיב את הרגליים או להביא את המצוף לחוף. כדי לקבל את המדידות מרחוק, אנו משתמשים במודול רדיו המחובר לארדואינו משני צידי התקשורת. בעתיד נחליף את הארדואינו בצד המקלט בפאי פטל. הרדיו פועל באופן דומה עם שני הממשקים הללו, כך שההחלפה עליהם היא פשוטה למדי.
מודול הרדיו מתקשר באמצעות SPI, הדורש כמה חיבורים יותר מאשר I2C אך עדיין קל מאוד לשימוש בגלל ספריית NRF24. באמצעות מודול ה- GPS למדידות החיישן, אנו מעבירים את נתוניו מארדואינו אחד לשני. אנו הולכים לחבר את מודול ה- GPS והרדיו לארדואינו ובצד השני ארדואינו עם מודול הרדיו - תסתכל על התרשים.
מַשׁדֵר
#לִכלוֹל
#include #include #include #include TinyGPSPlus gps; תוכנת Serial ss (4, 3); רדיו RF24 (8, 7); // CE, CSN struct dataStruct {קו רוחב כפול; אורך כפול; תאריך ארוך לא חתום; זמן לא חתום; } gpsData; הגדרת חלל () {Serial.begin (115200); ss.begin (9600); Serial.println ("הגדרת רדיו"); // הגדרת רדיו רדיו משדר. התחל (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("מתחיל לשלוח"); } לולאת void () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); radio.write (& gpsData, sizeof (gpsData)); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } אחר {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } אחר {gpsData.date = 0; } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } אחר {gpsData.time = 0; }}
מַקְלֵט
#לִכלוֹל
#include #include רדיו RF24 (8, 7); // CE, CSN struct dataStruct {קו רוחב כפול; אורך כפול; תאריך ארוך ללא חתום; זמן לא חתום; } gpsData; הגדרת חלל () {Serial.begin (115200); // הגדרת רדיו רדיו מקלט.התחל (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } לולאת void () {if (radio.available ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("מיקום:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("תאריך:"); Serial.print (gpsData.date); Serial.print ("זמן:"); Serial.print (gpsData.time); Serial.println ();}}
(בדוק את הסרטון לקוד זה בכתובת
שלב 3: אחסון נתונים באמצעות מודול כרטיס SD
מודול הרדיו די אמין, אך לפעמים אתה צריך תוכנית מגירה במקרה שיש הפסקת חשמל בצד המקלט או אם הרדיו זז מחוץ לטווח. תוכנית המגירה שלנו היא מודול כרטיס SD המאפשר לנו לאחסן את הנתונים שאנו אוספים. כמות הנתונים שנאספים אינה כה גדולה, כך שגם כרטיס SD קטן יוכל לאחסן נתונים בערך של יום אחד.
#לִכלוֹל
#include #include #include TinyGPSPlus gps; תוכנת Serial ss (4, 3); struct dataStruct {קו רוחב כפול; אורך כפול; תאריך ארוך לא חתום; זמן לא חתום; } gpsData; הגדרת חלל () {Serial.begin (115200); ss.begin (9600); אם (! SD.begin (5)) {Serial.println ("הכרטיס נכשל או לא קיים"); לַחֲזוֹר; } Serial.println ("כרטיס מאותחל."); קובץ dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("קו הרוחב, אורך, תאריך, שעה"); dataFile.close (); } else {Serial.println ("אין אפשרות לפתוח קובץ"); }} לולאת void () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); saveInfo (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("מיקום לא חוקי"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("תאריך לא חוקי"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("זמן לא חוקי"); }} void printResults () {Serial.print ("מיקום:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("תאריך:"); Serial.print (gpsData.date); Serial.print ("זמן:"); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {קובץ dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.print (gpsData.latitude); dataFile.print (","); dataFile.print (gpsData.longitude); dataFile.print (","); dataFile.print (gpsData.date); dataFile.print (","); dataFile.println (gpsData.time); dataFile.close (); } else {Serial.println ("אין קובץ נתונים"); }}
(אנו מדברים על קוד זה בסרטון
שלב 4: שליחה ושמירה של נתוני GPS
שלב 5: תודה
הירשם לרשימת התפוצה שלנו!
חלק 1: ביצוע מדידת גל וטמפרטורה
חלק 2: רדיו GPS NRF24 וכרטיס SD
חלק 3: תזמון כוח למצוף
חלק 4: פריסת המצוף
מוּמלָץ:
מצוף חכם [סיכום]: 8 שלבים (עם תמונות)
מצוף חכם [סיכום]: כולנו אוהבים את חוף הים. כקולקטיב, אנו נוהרים אליו לחגים, ליהנות מספורט ימי או לפרנסנו. אבל החוף הוא אזור דינאמי הנתון לחסדי הגלים. עליית מפלס הים נשמרת בחופים ואירועי קיצון עוצמתיים כמו הארי
כרטיס אינטראקטיבי באמצעות כרטיס מייקי ושריטה!: 3 שלבים
כרטיס אינטראקטיבי באמצעות כרטיס מייקי ומגרד !: צור כרטיס אינטראקטיבי שתוכל לשנות שוב ושוב ולשלוח למשפחה ולחברים :) בצע את השלבים הבאים כדי להתחיל יוצרים
רדיו דו כיווני NRF24 לטלמטריה: 9 שלבים (עם תמונות)
רדיו דו כיווני NRF24 לטלמטריה: היי חברים, שמי פדרו קסטלאני ואני מביא לכם את ההוראה הראשונה שלי: בניית רדיו דו כיווני עם ארדואינו בשביל, ובכן, לכל מה שתזדקקו לו. בפרויקט הזה, נכין שני מעגלים נפרדים אשר יפעלו הן כמקלט והן כטרנסמי
מחשב Trip - מחשב טיול GPS ומודול מזג אוויר לרכב שלך: 11 שלבים (עם תמונות)
TripComputer - מחשב טיול GPS ומודול מזג אוויר לרכב שלך: פרויקט פטל פטל מגניב שמשתמש במודול הפריצה של GPS ושני מסכי דיגול קטנים כדי שיהיה לך מחשב ניווט על המכשיר
חנון - מחזיק כרטיס אשראי/כרטיס ביקור מהכונן הקשיח של המחשב הנייד הישן: 7 שלבים
חנון - מחזיק כרטיס אשראי / כרטיס ביקור מהכונן הקשיח של מחשב נייד ישן: בעל עסק / חכם בעל כרטיס אשראי. עלה לי הרעיון המטורף הזה כשהכונן הקשיח של המחשב הנייד שלי מת ובעצם הופך להיות חסר תועלת. צירפתי כאן את התמונות שהושלמו