Daftar Isi:
- Perlengkapan
- Langkah 1: Mendapatkan Data GPS
- Langkah 2: Mengirim Data GPS Melalui Radio
- Langkah 3: Menyimpan Data Menggunakan Modul Kartu SD
- Langkah 4: Mengirim dan Menyimpan Data GPS
- Langkah 5: Terima kasih
Video: Smart Buoy [GPS, Radio (NRF24) dan Modul Kartu SD]: 5 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:53
Seri Pelampung Cerdas ini memetakan upaya (ambisius) kami untuk membangun pelampung ilmiah yang dapat melakukan pengukuran bermakna tentang laut menggunakan produk yang tersedia. Ini adalah tutorial dua dari empat - pastikan Anda mengetahui informasi terbaru, dan jika Anda memerlukan pengenalan proyek yang cepat, lihat ringkasan kami.
Bagian 1: Membuat pengukuran gelombang dan suhu
Dalam tutorial ini, kami menunjukkan cara mendapatkan data GPS, menyimpannya di kartu SD dan mengirimkannya ke suatu tempat menggunakan radio.
Kami melakukan ini agar kami dapat melacak lokasi Pelampung kami di laut. Radio berarti bahwa kita dapat menontonnya dari jarak jauh dan kartu SD berarti bahwa jika ada sesuatu yang rusak dan berjalan-jalan, kita dapat mengunduh data yang dikumpulkan selama perjalanan yang tidak direncanakan - jika kita dapat mengambilnya kembali!
Perlengkapan
Modul GPS - Amazon
Modul kartu SD - Amazon
Kartu SD - Amazon
2 X modul Radio (NRF24L01+) - Amazon
2 X Arduino - Amazon
Langkah 1: Mendapatkan Data GPS
Pelampung pintar membuat pengukuran sensor saat berada di laut, termasuk lokasi GPS dan waktu. Lihatlah skema yang menunjukkan bagaimana kami mengatur sirkuit. Modul GPS berkomunikasi melalui koneksi serial, jadi kami menggunakan perpustakaan serial perangkat lunak Arduino serta perpustakaan GPS kecil untuk berkomunikasi dengannya. Pustaka ini membuat semuanya menjadi sangat sederhana. Mari kita membawa Anda melalui kode …
#termasuk
#include // Objek TinyGPS++ TinyGPSplus gps; // Koneksi serial ke perangkat GPS SoftwareSerial ss(4, 3); struct dataStruct{ garis lintang ganda; bujur ganda; tanggal panjang yang tidak ditandatangani; lama tidak ditandatangani; }gpsData; void setup(){ Serial.begin(115200); ss.begin(9600); } void loop(){ while (ss.available() > 0){ if (gps.encode(ss.read())){ getInfo(); printResult(); } } } void getInfo(){ if (gps.location.isValid()){ gpsData.latitude = gps.location.lat(); gpsData.longitude = gps.location.lng(); } else{ Serial.println("Lokasi salah"); } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ Serial.println("Tanggal salah"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ Serial.println("Waktu tidak valid"); } } void printResults(){ Serial.print("Lokasi: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print("Tanggal: "); Serial.print(gpsData.date); Serial.print("Waktu: "); Serial.print(gpsData.time); Serial.println(); }
(Lihat video untuk kode ini di
Langkah 2: Mengirim Data GPS Melalui Radio
Misalkan pelampung di laut melakukan pengukuran, tetapi kami ingin melihat datanya tanpa membuat kaki kami basah atau membawa pelampung ke darat. Untuk mendapatkan pengukuran dari jarak jauh, kami menggunakan modul radio yang terhubung ke Arduino di kedua sisi komunikasi. Di masa depan, kami akan mengganti Arduino sisi penerima dengan raspberry pi. Radio bekerja sama dengan kedua antarmuka ini sehingga menukarnya cukup mudah.
Modul radio berkomunikasi menggunakan SPI, yang memerlukan beberapa koneksi lebih banyak daripada I2C tetapi masih sangat mudah digunakan karena perpustakaan NRF24. Menggunakan modul GPS untuk pengukuran sensor, kami mengirimkan datanya dari satu Arduino ke Arduino lainnya. Kami akan menghubungkan modul GPS dan radio ke Arduino dan di sisi lain Arduino dengan modul radio - lihat skema.
Pemancar
#termasuk
#sertakan #sertakan #sertakan #sertakan gps TinyGPSPlus; SoftwareSerial ss(4, 3); radio RF24 (8, 7); // CE, CSN struct dataStruct{ garis lintang ganda; bujur ganda; tanggal panjang yang tidak ditandatangani; lama tidak ditandatangani; }gpsData; void setup() { Serial.begin(115200); ss.begin(9600); Serial.println("Menyiapkan radio"); // Atur radio pemancar radio.begin(); radio.openWritingPipe(0xF0F0F0F0E1LL); radio.setChannel(0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.stopListening(); radio.enableDynamicPayloads(); radio.powerUp(); Serial.println("Mulai mengirim"); } 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.tanggal = 0; } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ gpsData.waktu = 0; } }
PENERIMA
#termasuk
#sertakan #sertakan radio RF24 (8, 7); // CE, CSN struct dataStruct{ garis lintang ganda; bujur ganda; tanggal panjang yang tidak ditandatangani; lama tidak ditandatangani; }gpsData; void setup() { Serial.begin(115200); // Atur radio penerima 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("Lokasi: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print("Tanggal: "); Serial.print(gpsData.date); Serial.print("Waktu: "); Serial.print(gpsData.time); Serial.println();} }
(Lihat video untuk kode ini di
Langkah 3: Menyimpan Data Menggunakan Modul Kartu SD
Modul radio cukup andal, tetapi terkadang Anda memerlukan rencana darurat jika terjadi pemadaman listrik di sisi penerima atau jika radio bergerak di luar jangkauan. Rencana darurat kami adalah modul kartu SD yang memungkinkan kami menyimpan data yang kami kumpulkan. Jumlah data yang dikumpulkan tidak terlalu besar, sehingga kartu SD kecil pun dapat dengan mudah menyimpan data sehari.
#termasuk
#sertakan #sertakan #sertakan gps TinyGPSPlus; Perangkat LunakSerial ss(4, 3); struct dataStruct{ garis lintang ganda; bujur ganda; tanggal panjang yang tidak ditandatangani; lama tidak ditandatangani; }gpsData; void setup() { Serial.begin(115200); ss.begin(9600); if (!SD.begin(5)) { Serial.println("Kartu gagal, atau tidak ada"); kembali; } Serial.println("kartu diinisialisasi."); File dataFile = SD.open("gps_data.csv", FILE_WRITE); if (dataFile) { dataFile.println("Lintang, Bujur, Tanggal, Waktu"); dataFile.close(); } else{ Serial.println("tidak bisa membuka file"); } } void loop() { while (ss.available() > 0){ if (gps.encode(ss.read())){ getInfo(); printResult(); simpanInfo(); } } } void getInfo(){ if (gps.location.isValid()){ gpsData.latitude = gps.location.lat(); gpsData.longitude = gps.location.lng(); } else{ Serial.println("Lokasi salah"); } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ Serial.println("Tanggal salah"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ Serial.println("Waktu tidak valid"); } } void printResults(){ Serial.print("Lokasi: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print("Tanggal: "); Serial.print(gpsData.date); Serial.print("Waktu: "); Serial.print(gpsData.time); Serial.println(); } void saveInfo(){ File 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("tidak ada file data"); } }
(Kami berbicara melalui kode ini dalam video
Langkah 4: Mengirim dan Menyimpan Data GPS
Langkah 5: Terima kasih
Mendaftar untuk mailing list kami!
Bagian 1: Membuat Pengukuran Gelombang Dan Suhu
Bagian 2: Radio GPS NRF24 dan Kartu SD
Bagian 3: Menjadwalkan Daya ke Pelampung
Bagian 4: Menyebarkan Pelampung
Direkomendasikan:
Smart Buoy [Ringkasan]: 8 Langkah (dengan Gambar)
Smart Buoy [Ringkasan]: Kita semua menyukai pantai. Secara kolektif, kami berduyun-duyun ke sana untuk liburan, menikmati olahraga air, atau mencari nafkah. Tapi pantai adalah daerah yang dinamis di bawah belas kasihan ombak. Naiknya permukaan laut menggerogoti pantai dan peristiwa ekstrem yang kuat seperti badai
Pemindai Kartu untuk Mesin Kartu Trading: 13 Langkah (dengan Gambar)
Pemindai Kartu untuk Mesin Kartu Trading: Pemindai Kartu untuk Mesin Kartu TradingLog Perubahan dapat ditemukan di langkah terakhir.Latar BelakangSaya menjelaskan motivasi utama proyek saya di Intro Pengumpan Kartu. Tapi singkatnya, anak-anak saya dan saya telah mengumpulkan sejumlah besar Kartu Perdagangan b
Pengumpan Kartu untuk Mesin Kartu Trading: 10 Langkah (dengan Gambar)
Card Feeder untuk Mesin Trading Card: Card Feeder untuk Mesin Trading CardLatar Belakang Ketika saya masih muda, saya mengumpulkan banyak kartu trading, tetapi selama beberapa tahun, hasrat untuk mengoleksi telah menurun. Sementara itu saya punya anak dan perlahan tapi pasti mereka juga mulai
Penyortir Kartu untuk Mesin Kartu Trading (Pembaruan 10-01-2019): 12 Langkah (dengan Gambar)
Card Sorter untuk Mesin Trading Card (Update 2019-01-10): Card Sorter untuk Mesin Trading CardLog Perubahan dapat ditemukan di langkah terakhir.Latar BelakangSaya sudah menjelaskan motivasi proyek saya di artikel Card Feeder. Tapi singkatnya, saya dan anak-anak saya telah mengumpulkan sejumlah besar Kartu Perdagangan
Pencatat Data Suhu dan Kelembaban Dari Arduino ke Ponsel Android Dengan Modul Kartu SD Melalui Bluetooth: 5 Langkah
Pencatat Data Suhu dan Kelembaban Dari Arduino ke Ponsel Android Dengan Modul Kartu SD Melalui Bluetooth: Halo Semua, Ini adalah Instruksi pertama saya, Semoga saya membantu komunitas pembuat karena saya telah diuntungkan dengannya. Seringkali kami menggunakan sensor dalam proyek kami tetapi menemukan cara untuk mengumpulkan data, menyimpannya, dan mentransfernya Ponsel atau perangkat lain segera