Daftar Isi:

WEEDINATOR☠ Bagian 2: Navigasi Satelit: 7 Langkah (dengan Gambar)
WEEDINATOR☠ Bagian 2: Navigasi Satelit: 7 Langkah (dengan Gambar)

Video: WEEDINATOR☠ Bagian 2: Navigasi Satelit: 7 Langkah (dengan Gambar)

Video: WEEDINATOR☠ Bagian 2: Navigasi Satelit: 7 Langkah (dengan Gambar)
Video: Угрюм-река (1969) (1 серия) фильм 2024, Juli
Anonim
WEEDINATOR☠ Bagian 2: Navigasi Satelit
WEEDINATOR☠ Bagian 2: Navigasi Satelit
WEEDINATOR☠ Bagian 2: Navigasi Satelit
WEEDINATOR☠ Bagian 2: Navigasi Satelit
WEEDINATOR☠ Bagian 2: Navigasi Satelit
WEEDINATOR☠ Bagian 2: Navigasi Satelit
WEEDINATOR☠ Bagian 2: Navigasi Satelit
WEEDINATOR☠ Bagian 2: Navigasi Satelit

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

Bagaimana itu bekerja
Bagaimana itu bekerja

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

Komponen
Komponen
Komponen
Komponen
Komponen
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

Menghubungkan Modul
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

Kode
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:

Gambar
Gambar

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

Basis Data dan Halaman Web
Basis Data dan Halaman Web
Basis Data dan Halaman Web
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

Tes Navigasi
Tes Navigasi
Tes Navigasi
Tes Navigasi
Tes Navigasi
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: