Daftar Isi:
- Langkah 1: Cara Kerjanya
- Langkah 2: Komponen
- Langkah 3: Menghubungkan Modul
- Langkah 4: Kode
- Langkah 5: Basis Data dan Halaman Web
- Langkah 6: Tes Navigasi
- Langkah 7: Akhir
Video: WEEDINATOR☠ Bagian 2: Navigasi Satelit: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:58
Sistem navigasi Weedinator lahir!
Robot pertanian keliling yang dapat dikendalikan oleh ponsel pintar.
… Dan daripada hanya melalui proses reguler tentang bagaimana itu disatukan, saya pikir saya akan mencoba dan menjelaskan cara kerjanya - jelas bukan SEMUANYA tetapi bagian yang paling penting dan menarik. Maafkan permainan kata-kata itu, tetapi bagaimana data mengalir di antara masing-masing modul yang menurut saya menarik dan dipecah menjadi penyebut terendahnya, kami berakhir dengan "bit" yang sebenarnya - nol dan satu. Jika Anda pernah bingung tentang bit, byte, karakter, dan string, mungkin sekarang saatnya untuk tidak bingung? Saya juga akan mencoba dan menghilangkan kebingungan konsep yang sedikit abstrak yang disebut 'Error Cancelling'.
Sistem itu sendiri memiliki:
- GPS/GNSS: Ublox C94 M8M (Rover dan Pangkalan)
- Kompas digital 9DOF Razor IMU MO
- Fona 800H 2G GPRS seluler
- 2.2" layar TFT
- Arduino Karena 'Tuan'
- Berbagai 'Budak' Arduino.
Anehnya, banyak Sat Navs tidak memiliki kompas digital yang berarti jika Anda tidak bergerak, dan tersesat, Anda harus berjalan atau mengemudi ke segala arah secara acak sebelum perangkat dapat menunjukkan arah yang benar dari satelit. Jika Anda tersesat di hutan lebat atau tempat parkir bawah tanah, Anda akan kekenyangan!
Langkah 1: Cara Kerjanya
Saat ini, sepasang koordinat sederhana diunggah dari ponsel pintar atau komputer, yang kemudian diunduh oleh Weedinator. Ini kemudian ditafsirkan menjadi pos dalam derajat dan jarak yang ditempuh dalam mm.
Fona GPRS digunakan untuk mengakses database online melalui jaringan seluler 2G dan menerima dan mengirimkan koordinat ke Arduino Due melalui Arduino Nano. Due adalah Master dan mengontrol array Arduino lain sebagai Slave melalui I2C dan bus serial. Due dapat berinteraksi dengan data langsung dari Ublox dan Razor dan menampilkan heading yang dihitung oleh salah satu slave Arduino-nya.
Pelacak satelit Ublox sangat pintar karena menggunakan pembatalan kesalahan untuk mendapatkan perbaikan yang sangat akurat - total deviasi nominal akhir sekitar 40mm. Modul ini terdiri dari pasangan yang identik, salah satunya, 'rover', bergerak dengan Weedinator, dan yang lainnya, 'base' dipasang pada tiang di suatu tempat di tempat terbuka. Pembatalan kesalahan dicapai dengan basis yang mampu mencapai perbaikan yang benar-benar akurat dengan menggunakan sejumlah besar sampel dari waktu ke waktu. Sampel ini kemudian dirata-ratakan untuk mengimbangi perubahan kondisi atmosfer. Jika perangkat bergerak, itu jelas tidak akan bisa mendapatkan rata-rata apa pun dan akan sepenuhnya bergantung pada lingkungan yang berubah. Namun, jika perangkat statis dan bergerak bekerja bersama, selama mereka dapat berkomunikasi satu sama lain, mereka dapat memperoleh manfaat dari keduanya. Pada waktu tertentu, unit dasar masih memiliki kesalahan tetapi juga memiliki perbaikan super akurat yang dihitung sebelumnya sehingga dapat menghitung kesalahan aktual dengan mengurangkan satu set koordinat dari yang lain. Itu kemudian mengirimkan kesalahan yang dihitung ke rover melalui tautan radio, yang kemudian menambahkan kesalahan ke koordinatnya sendiri dan hei presto, kami memiliki pembatalan kesalahan! Dalam istilah praktis, pembatalan kesalahan membuat perbedaan antara total deviasi 3 meter dan 40mm.
Sistem yang lengkap terlihat rumit, tetapi sebenarnya cukup mudah untuk dibangun, baik longgar di permukaan non konduktif atau menggunakan PCB yang saya rancang, yang memungkinkan semua modul dibaut dengan aman. Pengembangan masa depan dibangun ke dalam PCB, memungkinkan beragam Arduino untuk digabungkan untuk mengontrol motor untuk kemudi, gerakan maju, dan mesin CNC on-board. Navigasi juga akan dibantu oleh setidaknya satu sistem pengenalan objek yang menggunakan kamera untuk merasakan objek berwarna, misalnya bola golf berpendar, yang diposisikan dengan hati-hati di beberapa jenis kisi - Perhatikan ruang ini!
Langkah 2: Komponen
- Ublox C94 M8M (Rover dan Basis) x 2 dari
- Kompas digital 9DOF Razor IMU MO
- Fona 800H 2G GPRS seluler 1946
- Arduino Due
- Arduino Nano x 2 dari
- SparkFun Pro Mikro
- Adafruit 2.2" TFT IL1940C 1480
- PCB (lihat file Gerber terlampir) x 2 dari
- 1206 SMD nol ohm resistor x 12 dari
- 1206 LED x 24
File PCB terbuka dengan perangkat lunak 'Design Spark'.
Langkah 3: Menghubungkan Modul
Ini adalah bagian yang mudah - terutama mudah dengan PCB yang saya buat - ikuti saja diagram di atas. Perawatan diperlukan untuk menghindari pengkabelan modul 3v ke 5v, bahkan pada saluran serial dan I2C.
Langkah 4: Kode
Sebagian besar kode berkaitan dengan mendapatkan data untuk bergerak di sekitar sistem secara teratur dan cukup sering ada kebutuhan untuk mengubah format data dari bilangan bulat ke float ke string dan ke karakter, yang bisa sangat membingungkan! Protokol 'Serial' hanya akan menangani karakter dan sementara I2Protokol C akan menangani bilangan bulat yang sangat kecil, saya merasa lebih baik untuk mengubahnya menjadi karakter dan kemudian mengkonversi kembali ke bilangan bulat di ujung lain dari saluran transmisi.
Kontroler Weedinator pada dasarnya adalah sistem 8 bit dengan banyak Arduino individu, atau 'MCU's. Ketika 8 bit digambarkan sebagai nol biner yang sebenarnya dan yang dapat terlihat seperti ini: B01100101 yang akan sama dengan:
(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =
Nilai Angka Desimal | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
Nilai Angka Biner | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
= 101
Dan nilai maksimum yang mungkin adalah 255…. Jadi bilangan bulat maksimum 'byte' yang dapat kita kirimkan melalui I2C adalah 255, yang sangat membatasi!
Pada Arduino, kita dapat mengirimkan hingga 32 karakter ASCII, atau byte, sekaligus menggunakan I2C, yang jauh lebih berguna, dan set karakter mencakup angka, huruf, dan karakter kontrol dalam format 7 bit seperti di bawah ini:
Untungnya, kompiler Arduino melakukan semua pekerjaan konversi dari karakter ke biner di latar belakang, tetapi masih mengharapkan jenis karakter yang benar untuk transmisi data dan tidak akan menerima 'String'.
Sekarang adalah saat hal-hal bisa membingungkan. Karakter dapat diekspresikan sebagai karakter tunggal menggunakan definisi char atau sebagai array satu dimensi dari 20 karakter menggunakan char[20]. Sebuah String Arduino sangat mirip dengan array karakter dan secara harfiah string karakter sering ditafsirkan oleh otak manusia sebagai 'kata-kata'.
// Membangun karakter 'distanceCharacter':
Inisiator string = ""; distanceString = inisiator + distanceString; int n = distanceString.length(); for (int aa=0;aa<=n;aa++) { distanceCharacter[aa] = distanceString[aa]; }
Kode di atas dapat mengubah string panjang karakter menjadi array karakter karakter yang kemudian dapat ditransmisikan melalui I2C atau seri.
Di ujung lain saluran transmisi, data dapat diubah kembali menjadi string menggunakan kode berikut:
distanceString = distanceString + c; // string = string + karakter
Array karakter tidak dapat dikonversi langsung ke integer dan harus masuk ke format string terlebih dahulu, tetapi kode berikut akan dikonversi dari string ke integer:
int hasil = (jarakString).toInt();
int distanceMetres = hasil;
Sekarang kita memiliki bilangan bulat yang dapat kita gunakan untuk membuat perhitungan. Float (angka dengan titik desimal) perlu dikonversi ke bilangan bulat pada tahap transmisi dan kemudian dibagi dengan 100 untuk dua tempat desimal, misalnya:
float distanceMetres = jarakMm / 1000;
Terakhir, string dapat dibuat dari campuran karakter dan bilangan bulat misalnya:
// Di sinilah data dikompilasi menjadi karakter:
dataString = inisiator + "BEAR" + zbearing + "DIST" + zdistance; // Terbatas hingga 32 karakter // String = string + karakter + intereger + karakter + integer.
Sisa kode adalah barang Arduino standar yang dapat ditemukan di berbagai contoh di perpustakaan Arduino. Lihat contoh 'examples >>>> Strings' dan contoh library 'wire'.
Inilah seluruh proses untuk mengirim dan menerima float:
Konversi Float Integer String Character array ….. lalu TRANSMIT array karakter dari Master
MENERIMA karakter individu di Budak …. kemudian ubah Karakter String Integer Float
Langkah 5: Basis Data dan Halaman Web
Di atas ditunjukkan struktur database dan file kode php dan html dilampirkan. Nama pengguna, nama database, nama tabel, dan kata sandi dikosongkan untuk keamanan.
Langkah 6: Tes Navigasi
Saya berhasil menghubungkan datalogger ke papan kontrol Weedinator melalui I2C dan mendapatkan gambaran tentang kinerja penentuan posisi satelit Ublox M8M:
Pada 'Cold Start', yang ditunjukkan oleh grafik hijau, modul dimulai dengan banyak kesalahan, sangat mirip dengan GPS 'normal', dan secara bertahap kesalahan berkurang hingga, setelah sekitar 2 jam, ada perbaikan RTK antara rover dan alas (ditunjukkan sebagai palang merah). Selama periode 2 jam itu, modul dasar terus membangun dan memperbarui nilai rata-rata untuk garis lintang dan garis bujur dan setelah interval waktu yang telah diprogram memutuskan bahwa modul tersebut telah mendapatkan perbaikan yang baik. 2 grafik berikutnya menunjukkan perilaku setelah 'Mulai panas ' di mana modul dasar telah menghitung rata-rata yang baik. Grafik teratas adalah lebih dari periode 200 menit dan kadang-kadang perbaikan hilang dan rover mengirimkan pesan NMEA ke Weedinator bahwa perbaikan untuk sementara menjadi tidak dapat diandalkan.
Grafik biru bawah adalah 'zoom in' pada kotak merah di grafik atas dan menunjukkan snap shot representatif yang baik dari kinerja Ublox, dengan total deviasi 40 mm, yang lebih dari cukup untuk memandu Weedinator ke lokasinya., tetapi mungkin tidak cukup baik untuk mengolah tanah di sekitar masing-masing tanaman?
Grafik ketiga menunjukkan data yang dikumpulkan dengan Rover dan Pangkalan terpisah 100 meter - Tidak ada kesalahan tambahan yang terdeteksi - jarak pemisahan tidak membuat perbedaan pada akurasi.
Langkah 7: Akhir
Direkomendasikan:
Navigasi Suara Raspberry Pi Membantu Orang Buta: 7 Langkah (dengan Gambar)
Navigasi Suara Raspberry Pi Membantu Orang Buta: Hai Dalam instruksi ini kita akan melihat bagaimana raspberry pi dapat membantu orang buta menggunakan instruksi suara yang ditentukan pengguna. Di sini, Dengan bantuan input sensor Ultrasonik untuk mengukur jarak yang kita dapat panduan suara orang buta untuk mengikuti
Perangkat Ultrasonik untuk Meningkatkan Navigasi Tunanetra: 4 Langkah (dengan Gambar)
Perangkat Ultrasonik untuk Meningkatkan Navigasi Tunanetra: Hati kami tertuju kepada mereka yang kurang mampu saat kami menggunakan bakat kami untuk meningkatkan teknologi dan solusi penelitian untuk meningkatkan kehidupan mereka yang terluka. Proyek ini semata-mata dibuat untuk tujuan itu. Sarung tangan elektronik ini menggunakan deteksi ultrasonik untuk
Roomblock: Platform untuk Mempelajari Navigasi ROS Dengan Roomba, Raspberry Pi, dan RPLIDAR: 9 Langkah (dengan Gambar)
Roomblock: Platform untuk Mempelajari Navigasi ROS Dengan Roomba, Raspberry Pi, dan RPLIDAR: Apa ini?"Roomblock" adalah platform robot yang terdiri dari Roomba, Raspberry Pi 2, sensor laser (RPLIDAR) dan baterai ponsel. Bingkai pemasangan dapat dibuat dengan printer 3D. Sistem navigasi ROS memungkinkan untuk membuat peta kamar dan menggunakan
WEEDINATOR☠ Bagian 4: Kode Geometri Kemudi Diferensial: 3 Langkah
WEEDINATOR☠ Bagian 4: Kode Geometri Kemudi Diferensial: Jika Anda memiliki waktu untuk menonton video di atas, Anda akan melihat bahwa ada beberapa suara aneh yang disebabkan oleh motor di kemudi yang berhenti sesekali saat WEEDINATOR menavigasi 3 giliran titik. Motor pada dasarnya macet melawan
WEEDINATOR☠ Bagian 3: Pembuatan Sasis: 8 Langkah (dengan Gambar)
WEEDINATOR☠ Bagian 3: Pembuatan Sasis: Musim dingin adalah waktu yang tepat untuk membuat mesin, terutama saat pengelasan dan pemotongan plasma dilakukan karena keduanya memberikan kehangatan yang cukup. Jika Anda bertanya-tanya apa itu pemotong plasma, baca terus untuk mengetahui prosedur mendalamnya. Jika Anda telah f