Membuat modul ekspansi untuk Raspberry Pi dengan Arduino di papan

Di hackspace , kami memiliki banyak Raspberry Pi yang berbeda, yang kami ajarkan kepada anak-anak untuk memprogram dengan python, membuat robot, dan berbagai gadget berguna. Tentu saja, kami melakukan hal yang sama pada Arduino. Selama tiga tahun kehidupan, jiwa ke jiwa dengan platform yang sangat berbeda ini, kami memiliki beberapa ide tentang cara membuat robot pelatihan lebih benar, dengan mempertimbangkan pro dan kontra dari setiap potongan besi. Semua pemikiran ini terwujud dalam perangkat baru, yang akan dibahas nanti.



Pada dasarnya, kami merancang modul ekspansi yang kompatibel dengan Arduino untuk RPi, yang berisi driver mesin dan pengatur daya. Jelas bahwa modul ini adalah pengontrol mandiri untuk robot pendidikan, tetapi itu adalah sandwich RPi + Arduino yang menunjukkan pendekatan ideologis yang benar untuk membuat robot. Bagaimana hal ini terlihat, apa karakteristiknya, dan di mana itu dapat diterapkan, baca terus.


Sedikit sejarah

4 tahun telah berlalu sejak rilis seri Raspberry Pi Model B. Pada suatu waktu, hype di sekitar RPi yang sebagian mendorong kami untuk membuat ruang hack kami. Lagipula, hal pertama yang kami mulai lakukan adalah mengajarkan robotika anak-anak tentang RPi. Setelah pelajaran pertama dengan siswa sekolah menengah atas dasar Sekolah Komputer Ural N.N.Krasovsky, kami mulai berpikir tentang laboratorium-bengkel kami, terbuka untuk semua yang menderita.

Pelajaran kami telah berkembang menjadi kursus dasar, yang kemudian diadaptasi ke Arduino. Kelanjutan dari kursus ini seharusnya merupakan proyek khusus di mana anak-anak dapat menerapkan pengetahuan yang diperoleh dari pengoperasian mikrokontroler dan berbagai komponen yang bermanfaat. Kami mengabdikan seluruh kelas proyek pelatihan tersebut untuk pembuatan robot seluler, baik berdasarkan Raspberry Pi dan pada Arduino.

Robot berbasis RPi pertama kami dibuat khusus sebagai manual untuk bekerja dengan siswa. Itu adalah robot roda dua, di mana orang-orang berlatih bekerja dengan mesin dan semua jenis sensor, secara bersamaan mempersiapkan kompetisi. Sebagai sasis, motor tamiya gear digunakan. Pengemudi mesin adalah drv8833 dari TI. Dalam versi untuk robot LineFollower, ada dua sensor refleksi buatan sendiri. Di dek atas robot dipasang papan tempat memotong roti tanpa solder dengan 400 poin.



Robot terbukti sangat baik, sehingga seiring waktu platform mencoba pada kit yang berbeda. Selain LineFollower, yang dengan cara kita memanggil pelacak dengan cara kita sendiri, robot mengenakan sensor refleksi optik, pengukur jarak ultrasonik, dicat dengan pena ujung di kertas, dan akhirnya dikendalikan melalui wifi, mentransmisikan gambar dari webcam.

Seiring waktu, menjadi jelas bahwa gear motor bukan yang paling populer, tetapi juga sangat bising. Tubuh robot tidak mengakomodasi semua Daftar Keinginan, dan tidak kompatibel dengan perancang umum. Dan yang paling penting, muncul ide untuk membuat modul ekstensi untuk RPi, yang akan menyelamatkan robot dari komunikasi dan perangkat “rutin” yang tidak perlu. Maka dimulailah proyek robot roda, bernama kode MR-K-1, dan kemudian MR-K-2. Sejak awal, kami mulai menyediakan lubang pendaratan untuk kedua platform, dan model robot dengan Arduino di papan disajikan di bawah ini.



Ini adalah modifikasi untuk pertempuran, di mana siswa mengendalikan robot melalui bluetooth cenderung meledak balon yang dipasang pada mesin musuh. Bingkai diperbesar, motor gir diganti dengan mesin kuning China (dan terkadang putih). Kasing ini diadaptasi untuk konstruktor multiplo, jadi sekarang ditutupi dengan lubang persegi. Semua ini memakan waktu beberapa minggu. Tetapi pekerjaan pada modul ekspansi agak tertunda. Dan masalahnya bukan pada kerumitan implementasi, tetapi karena kurangnya waktu, diperburuk oleh perfeksionisme :) Modul

ekstensi RPiDuino

Alexander Vasiliev, blog alex-exe.ru terkemuka yang sangat berguna, menjadi pengembang utama modul. Pada saat proyek dimulai, dia sudah memiliki pengalaman luas dalam mengembangkan driver mesin, stabilisator daya, dan banyak perangkat lain yang menarik untuk robotika. Dewan diputuskan untuk dipanggil RPiDuino, karena papan itu seharusnya memberikan simbiosis Raspberry Pi dan Arduino.

Jadi, apa yang kami putuskan untuk ditempatkan di papan tulis.

Modul harus mengambil kendali langsung dari pengemudi motor, servo dan sensor. Semua ini membutuhkan mikrokontroler. Dan karena kita sedang melakukan robot pendidikan dan pengontrol ini harus dengan mudah di-flash oleh siswa kita, pilihannya jatuh pada atmega328 yang terkenal dengan arduino bootloader di dalamnya. Kehadiran atmega membuat modul pengontrol mandiri untuk mengendalikan robot pelatihan kecil.



Karena atmega muncul di papan, jembatan USB-UART juga diperlukan, yang kami atur CP2102. Tanda lain kompatibilitas Arduino adalah konektor yang sudah dikenal di sisi papan, memungkinkan Anda untuk mendorong modul ekspansi di bagian atas.

Modul harus mengendalikan motor, sehingga driver yang sesuai muncul. Driver modern telah menjadi sangat mikroskopis dalam ukuran, sehingga mereka dapat dengan mudah dipasang di papan tanpa banyak kerusakan pada komponen tetangga. Mereka memilih DRV8833 dari Pololu, karena mereka sudah memiliki pengalaman dengan mereka. Pengemudi adalah dua saluran, dengan arus kerja saluran - 1A.



Akhirnya, regulator tegangan hanya diperlukan di papan tulis. Awalnya, itu seharusnya membuat daya terpisah untuk bagian komputasi dan untuk servos, tetapi kami mengalami masalah kecil dengan tata letak. Jadi hanya ada satu stabilizer LM2596, yang memberi makan RPi, mikrokontroler, bagian logis dari penggerak mesin dan sensor.



Juga, tombol power switching dan bel menemukan tempat mereka di papan, dengan bantuan yang terakhir robot mengeluh tentang masalahnya.



RPiDuino dihubungkan ke slot GPIO Raspberry Pi, seperti semua modul serupa. Atmega328 dan RPi berkomunikasi melalui UART.



Kaki-kaki GPIO yang tersisa ditarik masuk, sehingga mereka dapat digunakan sesuai kebijaksanaan Anda.

Bagan Fitur Utama RPiDuino

Nutrisi
Tegangan suplai7.5-24 ( )
7.5-10.5 ( )
0,5 4, , ,
5
: //1.5/2/3
1%
5.52.1
2,7-10,5
/1/2
50
855622
855633 ( RaspberryPi)
49


Robot yang dikendalikan dari jarak jauh berdasarkan RPi + RPiDuino

. Demonstrasi kemampuan RPi yang baik adalah robot yang dikendalikan dari jarak jauh. Ini dapat menunjukkan pekerjaan terkoordinasi dari RPi dan Arduino, di mana platform yang lebih tua terlibat dalam pemrosesan video dan antarmuka pengguna, dan yang kedua melakukan tugas robot rutinnya.



Sekarang robot memiliki webcam dengan dukungan perangkat keras untuk kompresi mjpg, terhubung ke Raspberry via USB. Robot menempel ke WiFi melalui router USB TL-WN722N. Mesin diperkuat, dengan rasio 1: 120. Roda-rodanya besar dengan karet lunak untuk melekat pada linoleum di ruang hack kami. Encoder pada engine membantu meratakan variasi dalam dorongan mesin. Semua ini ditenagai oleh dua baterai LiIon ukuran 18650.

Bagaimana semuanya bekerja

Pada RPiDuino, sebuah program berputar yang mendengarkan perintah gerak dari UART dan mengirimkan beberapa telemetri kembali. Dalam proyek saya, saya menggunakan perpustakaan SerialFlow , ditulis untuk quadrocopter pertama saya. Kode program untuk RPiDuino juga dapat ditemukan di github.

Di sisi Raspberry Pi, hal-hal sedikit lebih rumit. Pertama, robot dikendalikan melalui antarmuka web, jadi saya harus membesarkan server web kecil dengan python. Layar kontrol memiliki panah untuk mengatur arah gerakan, pengatur kecepatan, telemetri, dan jendela untuk menampilkan aliran dari webcam. Untuk menyiarkan video, saya biasanya menggunakan mjpg-streamer.

Jika Anda ingin mengulangi sesuatu yang serupa pada robot Anda, algoritme pemasangannya adalah sebagai berikut.
1) Instal mjpg-streamer, dan konfigurasikan transfer aliran video ke http.
2) Instal paket pyserial.
3) Unduh dan buka paket arsip dengan bagian server dari program kontrol.
4) Kami mengisi sketsa kontrol RPIDuino.
5) Konfigurasikan wifi di RPi.
6) Konfigurasikan autorun program kontrol pada RPi.



RPiDuino dan ROS

Alasan lain kami membutuhkan modul ekstensi ini adalah kemampuan untuk menunjukkan kepada siswa kami konsep robot yang tepat. Sekarang kedengarannya seperti ini: “Lihat teman-teman, robot memiliki komputer host yang mengelola perhitungan yang rumit. Itu dapat mengenali gambar, membangun peta menggunakan Lidar dan SLAM. Semua ini menghilangkan banyak sumber daya darinya, sehingga ia tidak dapat lagi mengontrol roda robot berbasis darat secara sensitif, dan Tuhan melarang, menstabilkan quadrocopter dalam penerbangan. Untuk operasi ini pada tingkat sumsum tulang belakang ada komputer lain yang berspesialisasi dalam tugas-tugas sederhana khusus dan tidak terganggu oleh hal lain. "Dua komputer ini dihubungkan oleh bus data, yang melaluinya mereka saling berkomunikasi dan modul lainnya."

Di sinilah konsep ROS muncul. Dalam hal ini, inti dari sistem berputar pada RPi, dan RPiDuino adalah simpul ROS. Omong-omong, kami telah membuat paket kecil untuk mengelola RPIDuino melalui ROS. Kami akan segera menerbitkan artikel terpisah tentang topik ini.

Apa selanjutnya

Versi beta modul terbukti layak. Sekarang sejumlah kecil papan dapat diperoleh di ruang hack kami , tulis dalam pribadi yang tertarik. Kami berencana untuk membuat versi berikutnya, dengan driver engine baru, dengan indikator tambahan dan beberapa barang lainnya. Kode sumber papan pasti akan dipublikasikan. Kami akan dengan senang hati menerima kritik dan partisipasi apa pun!

Source: https://habr.com/ru/post/id393947/


All Articles