Სარჩევი:
- მარაგები
- ნაბიჯი 1: მიიღეთ GPS მონაცემები
- ნაბიჯი 2: გაგზავნეთ GPS მონაცემები რადიოს საშუალებით
- ნაბიჯი 3: მონაცემების შენახვა SD ბარათის მოდულის გამოყენებით
- ნაბიჯი 4: GPS მონაცემების გაგზავნა და შენახვა
- ნაბიჯი 5: მადლობა
ვიდეო: Smart Buoy [GPS, რადიო (NRF24) და SD ბარათის მოდული]: 5 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:15
ეს Smart Buoy სერია ასახავს ჩვენს (ამბიციურ) მცდელობას ავაშენოთ სამეცნიერო ბუეტი, რომელსაც შეუძლია მიიღოს მნიშვნელოვანი გაზომვები ზღვის შესახებ თაროზე გასული პროდუქტების გამოყენებით. ეს არის მეოთხე ოთხიდან ორი - დარწმუნდით, რომ განახლებული ხართ და თუ გჭირდებათ პროექტის სწრაფი გაცნობა, გადახედეთ ჩვენს რეზიუმეს.
ნაწილი 1: ტალღისა და ტემპერატურის გაზომვები
ამ გაკვეთილში ჩვენ გაჩვენებთ თუ როგორ მიიღოთ GPS მონაცემები, შეინახოთ იგი SD ბარათზე და გაგზავნოთ სადმე რადიოს გამოყენებით.
ჩვენ ეს გავაკეთეთ, რათა შეგვეძლო თვალყური ადევნებინა ჩვენი ზღვისპირა ბუიოს ადგილმდებარეობას. რადიო ნიშნავს იმას, რომ ჩვენ შეგვიძლია დისტანციურად ვუყუროთ მას და SD ბარათი ნიშნავს იმას, რომ შემთხვევით რაღაც გაფუჭდება და ბობოქრობს, ჩვენ შეგვიძლია გადმოვიწეროთ მისი შეგროვებული მონაცემები მისი დაუგეგმავი ექსკურსიის დროს - თუკი ოდესმე შევძლებთ მის ამოღებას!
მარაგები
GPS მოდული - ამაზონი
SD ბარათის მოდული - Amazon
SD ბარათი - ამაზონი
2 X რადიო მოდული (NRF24L01+) - ამაზონი
2 X Arduino - ამაზონი
ნაბიჯი 1: მიიღეთ 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 მონაცემები რადიოს საშუალებით
დავუშვათ, რომ ბუიე ზომავს ზღვაში, მაგრამ ჩვენ გვსურს მონაცემების ნახვა ფეხების დასველების გარეშე ან ბუიას ნაპირზე გამოყვანის გარეშე. დისტანციური გაზომვების მისაღებად, ჩვენ ვიყენებთ რადიოს მოდულს, რომელიც დაკავშირებულია არდუინოსთან კომუნიკაციის ორივე მხარეს. მომავალში, ჩვენ შეცვლის მიმღების მხარეს 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 ბარათიც კი ადვილად შეძლებს დღის მონაცემების შენახვას.
#ჩართეთ
#მოიცავს #მოიცავს #მოიცავს #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 მონაცემების გაგზავნა და შენახვა
ნაბიჯი 5: მადლობა
დარეგისტრირდით ჩვენს საფოსტო სიაში!
ნაწილი 1: ტალღისა და ტემპერატურის გაზომვა
ნაწილი 2: GPS NRF24 რადიო და SD ბარათი
ნაწილი 3: სიმძლავრის დაგეგმვა ფლოტზე
ნაწილი 4: ბუიოს განლაგება
გირჩევთ:
ბარათის სკანერი სავაჭრო ბარათის აპარატისთვის: 13 ნაბიჯი (სურათებით)
ბარათის სკანერი სავაჭრო ბარათის აპარატისთვის: ბარათის სკანერი სავაჭრო ბარათის აპარატისთვის ცვლილებების ჟურნალი შეგიძლიათ იხილოთ ბოლო საფეხურზე. ფონი მე განვმარტე ჩემი პროექტის მთავარი მოტივაცია ბარათის მიმწოდებლის შესავალში. მოკლედ, მე და ჩემმა შვილებმა მოვაგროვეთ დიდი რაოდენობით სავაჭრო ბარათი
ბარათის მიმწოდებელი სავაჭრო ბარათის აპარატისთვის: 10 ნაბიჯი (სურათებით)
ბარათის მიმწოდებელი სავაჭრო ბარათის აპარატისთვის: ბარათის მიმწოდებელი სავაჭრო ბარათის აპარატისთვის ფონი როდესაც მე ვიყავი ახალგაზრდა, მე ვაგროვებდი ტონა სავაჭრო ბარათებს, მაგრამ რამდენიმე წლის განმავლობაში, შეგროვების ვნება მცირდება. ამასობაში მე მყავს ბავშვები და ნელ -ნელა, მაგრამ ისინიც იწყებენ დაბადებას
ბარათის დამლაგებელი სავაჭრო ბარათის აპარატისთვის (განახლება 2019-01-10): 12 ნაბიჯი (სურათებით)
ბარათის დამლაგებელი სავაჭრო ბარათის აპარატისთვის (განახლება 2019-01-10): ბარათის დამლაგებელი სავაჭრო ბარათის აპარატისთვის ცვლილებების ჟურნალი შეგიძლიათ იხილოთ ბოლო საფეხურზე. ფონი მე უკვე ავუხსენი ჩემი პროექტის მოტივაცია ბარათის მიმწოდებლის სტატიაში. მოკლედ, მე და ჩემმა შვილებმა მოვაგროვეთ დიდი რაოდენობით სავაჭრო ბარათი
NRF24 ორმხრივი რადიო ტელემეტრიისთვის: 9 ნაბიჯი (სურათებით)
NRF24 ორმხრივი რადიო ტელემეტრიისთვის: გამარჯობა ბიჭებო, მე მქვია პედრო კასტელანი და მე მოგიყვანთ ჩემს პირველ სასწავლებელს: არდუინოსთან ერთად ორმხრივი რადიოს აშენება, რაც თქვენ გჭირდებათ. ამ პროექტში ჩვენ გავაკეთებთ ორი ცალკეული სქემა, რომელიც იქნება როგორც მიმღები, ასევე გადამცემი
Geek - საკრედიტო ბარათის/სავიზიტო ბარათის მფლობელი ძველი ლეპტოპის მყარი დისკიდან: 7 ნაბიჯი
Geek - საკრედიტო ბარათის / სავიზიტო ბარათის მფლობელი ძველი ლეპტოპის მყარი დისკიდან. მე მივიღე ეს გიჟური იდეა, როდესაც ჩემი ლეპტოპის მყარი დისკი მოკვდა და ძირითადად უსარგებლო გახდა. მე დავამატე დასრულებული სურათები აქ