Saya ingin mempresentasikan proyek saya platform universal terbuka untuk robot rumah (mesin pemotong rumput, penyedot debu dan sejenisnya). Proyek ini masih dalam proses perakitan dan penulisan perangkat lunak, saya berharap komentar dan saran yang bermanfaat.

Saya baru-baru ini berkenalan dengan proyek Ardumower (
Artikel tentangnya ) dan mendapat banyak pengalaman menarik. Namun, sayangnya, robot ini memiliki banyak batasan yang berbeda, jadi pelanggan "rumah pintar" saya mensponsori proyek robot yang benar-benar baru dan jauh lebih kuat yang dapat mengatasi pemotongan rumput dengan baik dan dengan berbagai tugas lain (misalnya, ada ide mengantar minuman ke tamu di rumah :)). Proyek ini sedang dikembangkan sebagai platform universal dan dapat dikembangkan, dengan sirkuit terbuka dan SDK untuk menulis opsi perangkat lunaknya sendiri.
Elemen utama robot adalah papan dengan prosesor ATSAM3X8E 32-bit yang identik dengan yang digunakan di Arduino Due, yang memungkinkan Anda untuk menggunakan lingkungan pengembangan yang sederhana dan akrab, dan juga menghilangkan banyak masalah dengan masalah teknis karena komunitas besar orang yang menulis program untuk platform ini. Karena banyaknya port mikrokontroler, Anda dapat menghubungkan hampir semua hal ke board. Spesifikasi Papan:
Didukung oleh 12 hingga 30 volt, pengisi daya baterai bawaan dengan arus hingga 5 ampere, dan bahkan penguat untuk pengisian daya dari baterai surya selama operasi.
Dua kursi untuk pengontrol motor kolektor Polulu Dual MC33926 yang banyak digunakan, dengan kemampuan untuk mengendalikan hingga empat motor (dalam dua versi - dua motor di atas roda, pengontrol kedua mengendalikan motor yang memotong; atau empat motor di atas roda dengan saluran terpisah). Konektor motor memiliki lead untuk menghubungkan odometer.
Tapak kaki untuk pengontrol motor stepper (drive untuk mengubah ketinggian rumput yang memotong, misalnya).
Konektor untuk memasang Orange Pi Zero (untuk mendukung GPS RTK dengan akurasi sentimeter dan beberapa algoritma kontrol kompleks eksternal) dengan kemampuan untuk memperbarui firmware melalui komputer mikro ini.
6 output sinyal PPM untuk mengendalikan motor dan servos brushless.
6 port untuk sonars HC-SR04, 2 port untuk sensor tubrukan (ardumower bumper dengan sensor pneumatiknya, misalnya), dua sensor rumput kapasitif, 2 input untuk sensor jarak analog inframerah, empat input untuk sensor perimeter kabel, dua konektor termistor terkontrol port untuk kipas, pager, dan tiga LED (20 dan 70 mA). Tentu saja, banyak port dapat digunakan untuk menghubungkan sensor lain, dengan batasan tertentu.
Hampir semua port eksternal yang didukung oleh mikrokontroler juga terhubung ke konektor:
3 port serial, dua bus I2C dengan 9 konektor (salah satunya disangga dengan konektor untuk perangkat lima volt dan tiga volt), 2 SPI, CAN bus (tanpa transceiver fisik), USB, dua DAC terpisah (hanya dibawa ke konektor karena ada, Anda dapat memutar musik di sana atau sesuatu seperti itu).
Regulator switching 5 volt 2 ampere tambahan dengan enam konektor untuk perangkat eksternal. Nah, relay dengan kait, untuk pemadaman darurat baterai, untuk mencegah pengisian berlebih jika Anda tidak mencapai stasiun pengisian daya. Secara alami, konsumsi tegangan dan arus dikontrol oleh mikrokontroler (sebagian melalui ADC multi-channel terintegrasi, sebagian melalui MAX11617EE tambahan).
Dalam mode siaga (driver motor tidak aktif) - konsumsi saat ini adalah 130-140 miliamp.
Skema (melemparkan semuanya pada satu lembar, untuk kenyamanan):

Dalam proses menyolder papan, saya menemukan fakta bahwa beberapa elemen terlalu kecil untuk penyolderan manual dengan pengering rambut, dan sesuatu mungkin terlalu panas (seperti dioda di unit pengisian daya), sehingga beberapa perubahan kecil mungkin terjadi.
Pengembangan SDK untuk menulis firmware robot sedang dilakukan, dengan bantuannya akan memungkinkan untuk sepenuhnya melepaskan diri dari manajemen perangkat keras pada level rendah, setelah menerima serangkaian kelas untuk semua perangkat periferal dan sensor. Sebagai contoh, sepotong kode yang membuat robot berbelok ke utara akan terlihat seperti ini (contoh-contoh ini sudah berfungsi, walaupun tanpa beberapa pemeriksaan yang berlebihan dan sejenisnya):
course = 0.0; imuSens.setCourse(course); motWheel.rollCourse((navThing *) &imuSens, 9000);
Dan untuk pergi sepanjang perimeter kabel ke stasiun, mengangkat motor memotong:
mow.setHeight(0); perSens.setTracking(true); motWheel.moveCourse((navThing *) &perSens, 120000);
Sayangnya, saya belum bisa menata SDK sendiri, banyak yang belum ditulis (seperti kode untuk mendukung tag RFID Decawave DW1000 dan sensor sekunder apa pun). Tetapi saya dapat mengatakan bahwa semua fungsi tingkat rendah berfungsi dan setelah waktu yang singkat saya dapat meletakkannya di github.
Pemikat: