Სარჩევი:

Smart Buoy [GPS, რადიო (NRF24) და SD ბარათის მოდული]: 5 ნაბიჯი (სურათებით)
Smart Buoy [GPS, რადიო (NRF24) და SD ბარათის მოდული]: 5 ნაბიჯი (სურათებით)

ვიდეო: Smart Buoy [GPS, რადიო (NRF24) და SD ბარათის მოდული]: 5 ნაბიჯი (სურათებით)

ვიდეო: Smart Buoy [GPS, რადიო (NRF24) და SD ბარათის მოდული]: 5 ნაბიჯი (სურათებით)
ვიდეო: Smart Buoy [Episode 2] - GPS, Radio (NRF24) and a SD card module tutorial 2024, ნოემბერი
Anonim
Image
Image

ეს Smart Buoy სერია ასახავს ჩვენს (ამბიციურ) მცდელობას ავაშენოთ სამეცნიერო ბუეტი, რომელსაც შეუძლია მიიღოს მნიშვნელოვანი გაზომვები ზღვის შესახებ თაროზე გასული პროდუქტების გამოყენებით. ეს არის მეოთხე ოთხიდან ორი - დარწმუნდით, რომ განახლებული ხართ და თუ გჭირდებათ პროექტის სწრაფი გაცნობა, გადახედეთ ჩვენს რეზიუმეს.

ნაწილი 1: ტალღისა და ტემპერატურის გაზომვები

ამ გაკვეთილში ჩვენ გაჩვენებთ თუ როგორ მიიღოთ GPS მონაცემები, შეინახოთ იგი SD ბარათზე და გაგზავნოთ სადმე რადიოს გამოყენებით.

ჩვენ ეს გავაკეთეთ, რათა შეგვეძლო თვალყური ადევნებინა ჩვენი ზღვისპირა ბუიოს ადგილმდებარეობას. რადიო ნიშნავს იმას, რომ ჩვენ შეგვიძლია დისტანციურად ვუყუროთ მას და SD ბარათი ნიშნავს იმას, რომ შემთხვევით რაღაც გაფუჭდება და ბობოქრობს, ჩვენ შეგვიძლია გადმოვიწეროთ მისი შეგროვებული მონაცემები მისი დაუგეგმავი ექსკურსიის დროს - თუკი ოდესმე შევძლებთ მის ამოღებას!

მარაგები

GPS მოდული - ამაზონი

SD ბარათის მოდული - Amazon

SD ბარათი - ამაზონი

2 X რადიო მოდული (NRF24L01+) - ამაზონი

2 X Arduino - ამაზონი

ნაბიჯი 1: მიიღეთ GPS მონაცემები

GPS მონაცემების გაგზავნა რადიოს საშუალებით
GPS მონაცემების გაგზავნა რადიოს საშუალებით

ჭკვიანი ბუია ზღვაში ზის სენსორულ გაზომვებს, მათ შორის GPS ადგილმდებარეობას და თარიღს. შეხედეთ სქემატურს, რომელიც გვიჩვენებს, თუ როგორ ვაყენებთ წრეს. GPS მოდული კომუნიკაციას ახდენს სერიული კავშირის საშუალებით, ამიტომ ჩვენ ვიყენებთ Arduino პროგრამული უზრუნველყოფის სერიულ ბიბლიოთეკას, ასევე პატარა GPS ბიბლიოთეკას მასთან კომუნიკაციისთვის. ეს ბიბლიოთეკები ყველაფერს ძალიან მარტივად აქცევს. მოგიყვანთ კოდს …

#ჩართეთ

#მოიცავს // TinyGPS ++ ობიექტი TinyGPSPlus gps; // სერიული კავშირი GPS მოწყობილობასთან SoftwareSerial ss (4, 3); სტრუქტურა dataStruct {ორმაგი გრძედი; ორმაგი გრძედი; ხელმოუწერელი გრძელი თარიღი; ხელმოუწერელი დიდი ხნის განმავლობაში; } gpsData; void setup () {Serial.begin (115200); ს.ს.დაწყება (9600); } void loop () {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 მონაცემები რადიოს საშუალებით

GPS მონაცემების გაგზავნა რადიოს საშუალებით
GPS მონაცემების გაგზავნა რადიოს საშუალებით

დავუშვათ, რომ ბუიე ზომავს ზღვაში, მაგრამ ჩვენ გვსურს მონაცემების ნახვა ფეხების დასველების გარეშე ან ბუიას ნაპირზე გამოყვანის გარეშე. დისტანციური გაზომვების მისაღებად, ჩვენ ვიყენებთ რადიოს მოდულს, რომელიც დაკავშირებულია არდუინოსთან კომუნიკაციის ორივე მხარეს. მომავალში, ჩვენ შეცვლის მიმღების მხარეს Arduino ჟოლოს pi. რადიო ანალოგიურად მუშაობს ორივე ამ ინტერფეისზე, ასე რომ მათი შეცვლა საკმაოდ მარტივია.

რადიოს მოდული კომუნიკაციას ახდენს SPI– ით, რომელიც მოითხოვს რამდენიმე მეტ კავშირს ვიდრე I2C, მაგრამ მაინც მართლაც ადვილი გამოსაყენებელია NRF24 ბიბლიოთეკის გამო. სენსორის გაზომვისთვის GPS მოდულის გამოყენებით, ჩვენ ვაგზავნით მის მონაცემებს ერთი არდუინიდან მეორეზე. ჩვენ ვაპირებთ GPS და რადიო მოდულის დაკავშირებას Arduino– სთან, ხოლო მეორე მხრივ Arduino– ს რადიო მოდულთან - გადახედეთ სქემატურს.

გადამცემი

#ჩართეთ

#მოიცავს #მოიცავს #მოიცავს #მოიცავს #მოიცავს TinyGPSPlus gps; პროგრამული უზრუნველყოფა სერიული ss (4, 3); RF24 რადიო (8, 7); // CE, CSN struct dataStruct {ორმაგი გრძედი; ორმაგი გრძედი; ხელმოუწერელი გრძელი თარიღი; ხელმოუწერელი დიდი ხნის განმავლობაში; } gpsData; void setup () {Serial.begin (115200); ს.ს.დაწყება (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 loop () {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 (); } else {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {gpsData.date = 0; } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {gpsData.time = 0; }}

მიმღები

#ჩართეთ

#ჩართეთ #ჩართეთ RF24 რადიო (8, 7); // CE, CSN struct dataStruct {ორმაგი გრძედი; ორმაგი გრძედი; ხელმოუწერელი გრძელი თარიღი; ხელმოუწერელი დიდი ხნის განმავლობაში; } gpsData; void setup () {Serial.begin (115200); // მიმღების დაყენება რადიო radio.begin (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } void loop () {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 ბარათის მოდულის გამოყენებით

რადიოს მოდული საკმაოდ საიმედოა, მაგრამ ხანდახან გჭირდებათ საგანგებო გეგმა იმ შემთხვევაში, თუ მიმღების მხარეზე დენი გაწყდება ან რადიო დიაპაზონიდან გადადის. ჩვენი საგანგებო გეგმა არის SD ბარათის მოდული, რომელიც საშუალებას გვაძლევს შევინახოთ ჩვენ მიერ შეგროვებული მონაცემები. შეგროვებული მონაცემების რაოდენობა არც თუ ისე დიდია, ამიტომ მცირე ზომის SD ბარათიც კი ადვილად შეძლებს დღის მონაცემების შენახვას.

#ჩართეთ

#მოიცავს #მოიცავს #მოიცავს #TinyGPSPlus gps; პროგრამული უზრუნველყოფა სერიული ss (4, 3); სტრუქტურა dataStruct {ორმაგი გრძედი; ორმაგი გრძედი; ხელმოუწერელი გრძელი თარიღი; ხელმოუწერელი დიდი ხნის განმავლობაში; } gpsData; void setup () {Serial.begin (115200); ს.ს.დაწყება (9600); if (! SD.begin (5)) {Serial.println ("ბარათი ვერ მოხერხდა, ან არ არის"); დაბრუნების; } Serial.println ("ბარათის ინიციალიზაცია."); ფაილის მონაცემები ფაილი = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("გრძედი, გრძედი, თარიღი, დრო"); dataFile.close (); } else {Serial.println ("არა ფაილის გახსნა არ შეიძლება"); }} void loop () {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 მონაცემების გაგზავნა და შენახვა

GPS მონაცემების გაგზავნა და შენახვა
GPS მონაცემების გაგზავნა და შენახვა
GPS მონაცემების გაგზავნა და შენახვა
GPS მონაცემების გაგზავნა და შენახვა

ნაბიჯი 5: მადლობა

მადლობა!
მადლობა!

დარეგისტრირდით ჩვენს საფოსტო სიაში!

ნაწილი 1: ტალღისა და ტემპერატურის გაზომვა

ნაწილი 2: GPS NRF24 რადიო და SD ბარათი

ნაწილი 3: სიმძლავრის დაგეგმვა ფლოტზე

ნაწილი 4: ბუიოს განლაგება

გირჩევთ: