Isi kandungan:

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

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

Video: ☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit: 7 Langkah (dengan Gambar)
Video: Голубая стрела (1958) фильм 2024, November
Anonim
☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit
☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit
☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit
☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit
☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit
☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit
☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit
☠WEEDINATOR☠ Bahagian 2: Navigasi Satelit

Sistem navigasi Weedinator dilahirkan!

Robot pertanian bergerak yang boleh dikawal dengan telefon pintar.

… Dan daripada hanya melalui proses biasa bagaimana ia disatukan, saya fikir saya akan mencuba dan menerangkan bagaimana ia benar-benar berfungsi - jelas bukan SEGALANYA tetapi bit yang paling penting dan menarik. Maafkan saya, tetapi bagaimana data mengalir antara modul individu yang saya rasa menarik dan dipecah menjadi penyebut terendahnya kita berakhir dengan "bit" sebenar - nol dan yang lain. Sekiranya anda pernah keliru mengenai bit, bait, watak dan rentetan maka sekarang mungkin masa untuk menjadi tidak bingung? Saya juga akan mencuba dan membingungkan konsep yang agak abstrak yang disebut 'Error Cancelling'.

Sistem itu sendiri mempunyai:

  • GPS / GNSS: Ublox C94 M8M (Rover dan Pangkalan)
  • Kompas digital 9DOF Razor IMU MO
  • Fona 800H 2G GPRS selular
  • Skrin TFT 2.2"
  • Arduino Due 'Master'
  • Pelbagai Arduino 'Budak'.

Anehnya, banyak Sat Nav tidak mempunyai kompas digital yang bermaksud jika anda tidak bergerak, dan hilang, anda harus berjalan atau memandu ke arah mana-mana secara rawak sebelum peranti dapat menunjukkan arah yang betul dari satelit. Sekiranya anda tersesat di hutan tebal atau tempat letak kereta bawah tanah anda akan disumbat!

Langkah 1: Bagaimana Ia Berfungsi

Bagaimana ia berfungsi
Bagaimana ia berfungsi

Pada masa ini, sepasang koordinat mudah dimuat naik dari telefon pintar atau komputer, yang kemudian dimuat turun oleh Weedinator. Ini kemudian ditafsirkan menjadi tajuk dalam darjah dan jarak perjalanan dalam mm.

GPRS fona digunakan untuk mengakses pangkalan data dalam talian melalui rangkaian selular 2G dan menerima dan menghantar koordinat ke Arduino Due melalui Arduino Nano. The Due is the Master dan mengendalikan pelbagai Arduino lain sebagai Budak melalui I2C dan bas bersiri. The Due dapat berinteraksi dengan data langsung dari Ublox dan Razor dan menampilkan tajuk yang dikira oleh salah seorang hamba Arduino.

Penjejak satelit Ublox sangat pintar kerana menggunakan pembatalan ralat untuk mendapatkan pembetulan yang sangat tepat - jumlah penyimpangan akhir kira-kira 40mm. Modul terdiri daripada pasangan yang serupa, salah satunya, 'rover', bergerak dengan Weedinator, dan yang lain, 'base' dipasang pada tiang di suatu tempat di tempat terbuka. Pembatalan ralat dicapai oleh pangkalan yang dapat mencapai pembetulan yang sangat tepat dengan menggunakan sejumlah besar sampel dari masa ke masa. Sampel ini kemudian rata-rata untuk mengimbangi perubahan keadaan atmosfera. Sekiranya peranti bergerak, jelas tidak akan dapat memperoleh rata-rata apa pun dan akan mendapat belas kasihan sepenuhnya dari persekitaran yang berubah. Walau bagaimanapun, jika peranti statik dan bergerak bekerja sama, selagi mereka dapat berkomunikasi antara satu sama lain, mereka dapat memperoleh keuntungan dari keduanya. Pada masa tertentu, unit asas masih mempunyai ralat tetapi ia juga mempunyai pembetulan super tepat yang telah dikira sebelumnya sehingga dapat mengira kesalahan sebenar dengan mengurangkan satu set koordinat dari yang lain. Ia kemudian menghantar ralat yang dihitung ke rover melalui pautan radio, yang kemudian menambah ralat ke koordinatnya sendiri dan hei presto, kami mempunyai kesilapan membatalkan! Secara praktikal, pembatalan ralat membuat perbezaan antara penyimpangan total antara 3 meter dan 40 mm.

Sistem yang lengkap kelihatan rumit, tetapi sebenarnya agak mudah dibina, sama ada longgar pada permukaan yang tidak konduktif atau menggunakan PCB yang saya reka, yang membolehkan semua modul dipasang dengan selamat. Perkembangan masa depan dibangun di atas PCB, memungkinkan sejumlah besar Arduino dimasukkan untuk mengendalikan motor untuk kemudi, gerakan maju dan mesin CNC on-board. Navigasi juga akan dibantu oleh sekurang-kurangnya satu sistem pengenalan objek yang menggunakan kamera untuk merasakan objek berwarna, misalnya bola golf pendarfluor, yang diletakkan dengan hati-hati dalam beberapa jenis grid - Tonton ruang ini!

Langkah 2: Komponen

Komponen
Komponen
Komponen
Komponen
Komponen
Komponen
  • Ublox C94 M8M (Rover dan Pangkalan) x 2 dari
  • Kompas digital 9DOF Razor IMU MO
  • Fona 800H 2G GPRS selular 1946
  • Arduino Kerana
  • Arduino Nano x 2 dari
  • SparkFun Pro Mikro
  • Adafruit 2.2 "TFT IL1940C 1480
  • PCB (lihat fail Gerber yang dilampirkan) x 2 dari
  • 1206 perintang sifar ohm SMD x 12 dari
  • 1206 LED x 24 dari

Fail PCB dibuka dengan perisian 'Design Spark'.

Langkah 3: Memasang Modul

Memasang Modul
Memasang Modul

Ini adalah bahagian yang mudah - terutamanya mudah dengan PCB yang saya buat - ikuti rajah di atas. Perhatian diperlukan untuk mengelakkan pendawaian modul 3v hingga 5v, walaupun pada rangkaian bersiri dan I2C.

Langkah 4: Kod

Kod
Kod

Sebilangan besar kod berkenaan dengan mendapatkan data untuk bergerak di sekitar sistem dengan teratur dan sering kali terdapat keperluan untuk menukar format data dari bilangan bulat ke terapung ke rentetan dan watak, yang sangat membingungkan! Protokol 'Serial' hanya akan menangani watak dan sementara I2Protokol C akan menangani bilangan bulat yang sangat kecil, saya merasa lebih baik menukarnya menjadi bilangan bulat dan kemudian menukar kembali ke bilangan bulat di hujung talian penghantaran yang lain.

Pengawal Weedinator pada dasarnya adalah sistem 8 bit dengan banyak Arduino individu, atau 'MCU. Apabila 8 bit digambarkan sebagai sifar binari sebenar dan ia boleh kelihatan seperti ini: B01100101 yang sama:

(1x2) + (0x2)2+ (1x2)3+ (0x2)4+ (0x2)5+ (1x2)6+ (1x2)7+ (0x2)8 =

Nilai Digit Perpuluhan 128 64 32 16 8 4 2 1
Nilai Digit Perduaan 0 1 1 0 0 1 0 1

= 101

Dan nilai maksimum yang mungkin ialah 255…. Jadi 'byte' bilangan bulat maksimum yang dapat kita hantar melalui I2C ialah 255, yang sangat mengehadkan!

Pada Arduino kita dapat mengirimkan hingga 32 karakter ASCII, atau byte, pada satu masa menggunakan I2C, yang jauh lebih berguna, dan set watak merangkumi nombor, huruf dan watak kawalan dalam format 7 bit seperti di bawah:

Imej
Imej

Nasib baik, penyusun Arduino melakukan semua kerja penukaran dari watak ke binari di latar belakang, tetapi ia masih mengharapkan jenis watak yang betul untuk penghantaran data dan ia tidak akan menerima 'Strings'.

Sekarang adalah ketika keadaan boleh membingungkan. Karakter boleh dinyatakan sebagai watak tunggal menggunakan definisi char atau sebagai susunan satu dimensi 20 watak menggunakan char [20]. String Arduino sangat mirip dengan susunan watak dan secara harfiah merupakan rentetan watak yang sering ditafsirkan oleh otak manusia sebagai 'kata-kata'.

// Membina watak 'distanceCharacter':

Pemula rentetan = ""; jarakString = pemula + jarakString; int n = jarakString.length (); untuk (int aa = 0; aa <= n; aa ++) {jarakCharacter [aa] = jarakString [aa]; }

Kod di atas dapat mengubah rentetan watak panjang menjadi susunan watak watak yang kemudian dapat dihantar melalui I2C atau siri.

Di hujung saluran penghantaran yang lain, data dapat ditukarkan kembali ke tali menggunakan kod berikut:

jarakString = jarakString + c; // string = string + watak

Susunan watak tidak dapat ditukarkan secara langsung ke bilangan bulat dan harus masuk ke format rentetan terlebih dahulu, tetapi kod berikut akan berubah dari rentetan menjadi bilangan bulat:

hasil int = (jarakString).toInt ();

int jarakMetres = hasil;

Sekarang kita mempunyai bilangan bulat yang dapat kita gunakan untuk membuat pengiraan. Terapung (nombor dengan titik perpuluhan) perlu ditukar menjadi bilangan bulat pada peringkat penghantaran dan kemudian dibahagi dengan 100 untuk dua tempat perpuluhan misalnya:

jarak apunganMetres = jarakMm / 1000;

Terakhir, rentetan dapat dibuat dari gabungan watak dan bilangan bulat seperti:

// Di sinilah data disusun menjadi watak:

dataString = pemula + "BEAR" + zbearing + "DIST" + zdistance; // Terhad kepada 32 aksara // String = rentetan + aksara + intereger + aksara + bilangan bulat.

Selebihnya kod adalah barang Arduino standard yang boleh didapati dalam pelbagai contoh di perpustakaan Arduino. Lihat contoh 'string >>>> Strings' dan contoh library 'wire'.

Inilah keseluruhan proses untuk menghantar dan menerima pelampung:

Tukar Float ➜ Integer ➜ String ➜ Character array….. kemudian TRANSMIT array array dari Master ➜➜

➜➜ MENERIMA watak individu di Slave…. kemudian tukar Watak ➜ String ➜ Integer ➜ Float

Langkah 5: Pangkalan Data dan Halaman Web

Pangkalan Data dan Halaman Web
Pangkalan Data dan Halaman Web
Pangkalan Data dan Halaman Web
Pangkalan Data dan Halaman Web

Di atas ditunjukkan struktur pangkalan data dan fail kod php dan html dilampirkan. Nama pengguna, nama pangkalan data, nama jadual dan kata laluan dikosongkan untuk keselamatan.

Langkah 6: Ujian Navigasi

Ujian Navigasi
Ujian Navigasi
Ujian Navigasi
Ujian Navigasi
Ujian Navigasi
Ujian Navigasi

Saya berjaya menyambungkan mesin pencatat ke papan kawalan Weedinator melalui I2C dan mendapat idea mengenai prestasi kedudukan satelit Ublox M8M:

Pada 'Cold Start', ditunjukkan oleh grafik hijau, modul dimulakan dengan banyak ralat, hampir sama dengan GPS 'normal', dan secara beransur-ansur ralat menjadi berkurang sehingga, setelah sekitar 2 jam, ia mendapat perbaikan RTK antara rover dan pangkalan (ditunjukkan sebagai salib merah). Dalam tempoh 2 jam itu, modul asas terus membangun dan mengemas kini nilai rata-rata untuk garis lintang dan garis bujur dan setelah selang waktu yang diprogramkan memutuskan bahawa ia telah mendapat pembaikan yang baik. 2 graf seterusnya menunjukkan tingkah laku selepas 'Permulaan panas 'di mana modul asas telah mengira purata yang baik. Grafik teratas adalah dalam jangka masa 200 minit dan kadang-kadang perbaikan hilang dan rover menghantar mesej NMEA kepada Weedinator bahawa pembaikan itu tidak dapat dipercayai buat sementara waktu.

Grafik biru yang lebih rendah adalah 'zoom in' pada kotak merah di grafik atas dan menunjukkan gambaran pantas prestasi Ublox, dengan penyimpangan total 40 mm, yang lebih dari cukup baik untuk memandu Weedinator untuk mereda, tetapi mungkin tidak cukup baik untuk mengusahakan tanah di sekitar tanaman individu?

Grafik ketiga menunjukkan data yang dikumpulkan dengan Rover dan Pangkalan yang berjarak 100 meter - Tiada ralat tambahan dikesan - jarak pemisahan tidak membuat perbezaan dengan ketepatan.

Langkah 7: Akhir

Disyorkan: