Isi kandungan:
- Bekalan
- Langkah 1: Mendapatkan Data GPS
- Langkah 2: Menghantar Data GPS Melalui Radio
- Langkah 3: Menyimpan Data Menggunakan Modul Kad SD
- Langkah 4: Menghantar dan Menyimpan Data GPS
- Langkah 5: Terima kasih
Video: Smart Buoy [GPS, Radio (NRF24) dan Modul Kad SD]: 5 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Siri Smart Buoy ini melakarkan percubaan kami (bercita-cita tinggi) untuk membina pelampung saintifik yang dapat melakukan pengukuran yang bermakna tentang laut menggunakan produk luar rak. Ini adalah tutorial dua daripada empat - pastikan anda terkini, dan jika anda memerlukan pengenalan yang cepat untuk projek ini, lihat ringkasan kami.
Bahagian 1: Membuat pengukuran gelombang dan suhu
Dalam tutorial ini, kami menunjukkan kepada anda cara mendapatkan data GPS, menyimpannya pada kad SD dan mengirimkannya ke suatu tempat menggunakan radio.
Kami melakukan ini supaya kami dapat menjejaki lokasi Pelabuhan laut kami. Radio bermaksud bahawa kita dapat menontonnya dari jarak jauh dan kad SD bermaksud sekiranya berlaku sesuatu yang rosak dan berjalan-jalan, kita boleh memuat turun data yang dikumpulkannya semasa lawatannya yang tidak dirancang - jika kita dapat mengambilnya!
Bekalan
Modul GPS - Amazon
Modul kad SD - Amazon
Kad SD - Amazon
2 modul Radio X (NRF24L01 +) - Amazon
2 X Arduino - Amazon
Langkah 1: Mendapatkan Data GPS
Pelampung pintar membuat pengukuran sensor ketika berada di laut, termasuk lokasi GPS dan waktu data. Lihat skema yang menunjukkan bagaimana kita mengatur litar. Modul GPS berkomunikasi melalui sambungan bersiri, jadi kami menggunakan perpustakaan bersiri perisian Arduino serta perpustakaan GPS kecil untuk berkomunikasi dengannya. Perpustakaan ini menjadikan semuanya sangat sederhana. Mari bawa anda melalui kod …
#sertakan
#include // Objek TinyGPS ++ TinyGPSPlus gps; // Sambungan bersiri ke peranti GPS SoftwareSerial ss (4, 3); struct dataStruct {dua lintang; bujur berganda; tarikh panjang yang tidak ditandatangani; lama tidak ditandatangani; } gpsData; persediaan tidak sah () {Serial.begin (115200); ss.begin (9600); } gelung void () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); }}} batal getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } lain {Serial.println ("Lokasi tidak sah"); } jika (gps.date.isValid ()) {gpsData.date = gps.date.value (); } lain {Serial.println ("Tarikh tidak sah"); } jika (gps.time.isValid ()) {gpsData.time = gps.time.value (); } lain {Serial.println ("Masa tidak sah"); }} batal printResults () {Serial.print ("Lokasi:"); Serial.print (gpsData.latitude, 6); Cetakan bersiri (","); Serial.print (gpsData.longitude, 6); Cetakan bersiri ("Tarikh:"); Serial.print (gpsData.date); Serial.print ("Masa:"); Serial.print (gpsData.time); Bersiri.println (); }
(Lihat video untuk kod ini di
Langkah 2: Menghantar Data GPS Melalui Radio
Katakan pelampung di laut mengambil ukuran, tetapi kami ingin melihat data tanpa kaki basah atau membawa pelampung ke darat. Untuk mendapatkan pengukuran dari jarak jauh, kami menggunakan modul radio yang disambungkan ke Arduino di kedua sisi komunikasi. Pada masa akan datang, kami akan menggantikan Arduino sisi penerima dengan pi raspberry. Radio berfungsi sama dengan kedua-dua antara muka ini sehingga menukarnya cukup mudah.
Modul radio berkomunikasi menggunakan SPI, yang memerlukan lebih banyak sambungan daripada I2C tetapi masih sangat mudah digunakan kerana perpustakaan NRF24. Dengan menggunakan modul GPS untuk pengukuran sensor, kami mengirimkan datanya dari satu Arduino ke yang lain. Kami akan menghubungkan modul GPS dan radio ke Arduino dan di sisi lain Arduino dengan modul radio - lihat skema.
Pemancar
#sertakan
#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Radio RF24 (8, 7); // CE, CSN struct dataStruct {double latitude; bujur berganda; tarikh panjang yang tidak ditandatangani; lama tidak ditandatangani; } gpsData; persediaan tidak sah () {Serial.begin (115200); ss.begin (9600); Serial.println ("Menyiapkan radio"); // Siapkan radio radio pemancar. Mulakan (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Mula menghantar"); } gelung void () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); radio.write (& gpsData, sizeof (gpsData)); }}} batal getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } lain {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } jika (gps.date.isValid ()) {gpsData.date = gps.date.value (); } lain {gpsData.date = 0; } jika (gps.time.isValid ()) {gpsData.time = gps.time.value (); } lain {gpsData.time = 0; }}
PENERIMA
#sertakan
#masuk #masuk radio RF24 (8, 7); // CE, CSN struct dataStruct {double latitude; bujur berganda; tarikh panjang yang tidak ditandatangani; lama tidak ditandatangani; } gpsData; persediaan tidak sah () {Serial.begin (115200); // Siapkan radio radio penerima. Mulakan (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } gelung void () {if (radio.available ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("Lokasi:"); Serial.print (gpsData.latitude, 6); Cetakan bersiri (","); Serial.print (gpsData.longitude, 6); Cetakan bersiri ("Tarikh:"); Serial.print (gpsData.date); Serial.print ("Masa:"); Serial.print (gpsData.time); Bersiri.println ();}}
(Lihat video untuk kod ini di
Langkah 3: Menyimpan Data Menggunakan Modul Kad SD
Modul radio cukup dipercayai, tetapi kadang-kadang anda memerlukan rancangan luar jangka sekiranya berlaku pemotongan kuasa di sisi penerima atau jika radio bergerak di luar jangkauan. Pelan luar jangkaan kami adalah modul kad SD yang membolehkan kami menyimpan data yang kami kumpulkan. Kuantiti data yang dikumpulkan tidak begitu besar, malah kad SD kecil akan dapat menyimpan data bernilai sehari dengan mudah.
#sertakan
#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dua lintang; bujur berganda; tarikh panjang yang tidak ditandatangani; lama tidak ditandatangani; } gpsData; persediaan tidak sah () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Kad gagal, atau tidak hadir"); kembali; } Serial.println ("kad dimulakan."); Data failFile = SD.open ("gps_data.csv", FILE_WRITE); jika (dataFile) {dataFile.println ("Lintang, Bujur, Tarikh, Masa"); dataFile.close (); } lain {Serial.println ("nope tidak dapat membuka fail"); }} gelung void () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); simpanInfo (); }}} batal getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } lain {Serial.println ("Lokasi tidak sah"); } jika (gps.date.isValid ()) {gpsData.date = gps.date.value (); } lain {Serial.println ("Tarikh tidak sah"); } jika (gps.time.isValid ()) {gpsData.time = gps.time.value (); } lain {Serial.println ("Masa tidak sah"); }} batal printResults () {Serial.print ("Lokasi:"); Serial.print (gpsData.latitude, 6); Cetakan bersiri (","); Serial.print (gpsData.longitude, 6); Cetakan bersiri ("Tarikh:"); Serial.print (gpsData.date); Serial.print ("Masa:"); Serial.print (gpsData.time); Bersiri.println (); } batal saveInfo () {File dataFile = SD.open ("gps_data.csv", FILE_WRITE); jika (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 (); } lain {Serial.println ("nope no datafile"); }}
(Kami membincangkan kod ini dalam video
Langkah 4: Menghantar dan Menyimpan Data GPS
Langkah 5: Terima kasih
Daftar ke Daftar Mel Kami!
Bahagian 1: Membuat Gelombang Dan Pengukuran Suhu
Bahagian 2: Radio NRF24 Radio dan Kad SD
Bahagian 3: Penjadualan Kuasa ke Pelampung
Bahagian 4: Menyebarkan Pelampung
Disyorkan:
Smart Buoy [Ringkasan]: 8 Langkah (dengan Gambar)
Smart Buoy [Ringkasan]: Kita semua menyukai pantai. Sebagai kolektif, kami berduyun-duyun ke sana untuk bercuti, menikmati sukan air atau mencari nafkah. Tetapi pantai adalah kawasan yang dinamis di bawah gelombang. Naiknya permukaan laut menggigil di pantai dan peristiwa ekstrem yang hebat seperti hurri
Pengimbas Kad untuk Mesin Kad Dagangan: 13 Langkah (dengan Gambar)
Pengimbas Kad untuk Mesin Kad Dagangan: Pengimbas Kad untuk Mesin Kad DaganganLog Perubahan boleh didapati pada langkah terakhir. Latar BelakangSaya menerangkan motivasi utama projek saya di Pengenalan Pemakanan Kad. Tetapi ringkasnya, anak-anak saya dan saya telah mengumpulkan sejumlah besar Kad Dagangan
Pengumpan Kad untuk Mesin Kad Dagangan: 10 Langkah (dengan Gambar)
Pengumpan Kad untuk Mesin Kad Dagangan: Pengumpan Kad untuk Mesin Kad Dagangan Latar Belakang Ketika saya masih muda, saya mengumpulkan banyak kad perdagangan, tetapi selama beberapa tahun, minat untuk mengumpulkan semakin menurun. Sementara itu saya mempunyai anak dan perlahan-lahan tetapi mereka juga mula mendapat
Penyusun Kad untuk Mesin Kad Dagangan (Kemas kini 2019-01-10): 12 Langkah (dengan Gambar)
Penyusun Kad untuk Mesin Kad Dagangan (Kemas kini 2019-01-10): Penyortir Kad untuk Mesin Kad DaganganLog Perubahan boleh didapati di langkah terakhir. Latar belakangSaya telah menjelaskan motivasi projek saya dalam artikel Pengumpan Kad. Tetapi ringkasnya, saya dan anak-anak telah mengumpulkan sejumlah besar Kad Dagangan
Bagaimana Membina Quadcoptor. (NTM 28-30S 800kV 300W dan Arducopter APM 2.6 & 6H GPS 3DR Radio dan FlySky TH9X): 25 Langkah (dengan Gambar)
Bagaimana Membina Quadcoptor. (NTM 28-30S 800kV 300W dan Arducopter APM 2.6 & 6H GPS 3DR Radio dan FlySky TH9X): Ini adalah tutorial mengenai cara membina Quadcopter menggunakan motor NTM 28-30S 800kV 300W dan Arducopter APM 2.6 & GPS 6H & Radio 3DR. Saya telah cuba menerangkan setiap langkah dengan sejumlah gambar. Sekiranya anda mempunyai pertanyaan atau komen, balas