Daftar Isi:
- Langkah 1: Instal Raspbian dan Siapkan Alamat IP Statis
- Langkah 2: Instal dan Konfigurasikan Gerakan
- Langkah 3: Instal Apache dan Atur Halaman Kontrol Web
- Langkah 4: Siapkan dan Uji Kode
- Langkah 5: Perakitan
- Langkah 6: Memulai Kode Python saat Boot / Menyelesaikan
Video: Robot Roomba yang Dikendalikan Browser Dengan Raspberry Pi Model 3 A+: 6 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Gambaran
Instruksi ini akan fokus pada bagaimana memberi Roomba yang mati otak baru (Raspberry Pi), mata (Webcam), dan cara untuk mengontrol semuanya dari browser web.
Ada banyak peretasan Roomba yang memungkinkan kontrol melalui antarmuka serial. Saya belum cukup beruntung untuk menemukan Roomba yang memiliki firmware saat ini atau motherboard yang berfungsi. Entah Roomba terlalu tua atau Roomba sudah mati. Saya menemukan Roomba yang saya gunakan untuk proyek ini di toko barang bekas lokal seharga $5. Itu masih memiliki baterai yang layak, tetapi motherboard mati. (Saya juga menemukan webcam di toko barang bekas yang sama dengan harga sekitar $5). Semua yang saya gunakan dari Roomba asli adalah motor, sasis, dan baterai. Anda tidak harus menggunakan Roomba untuk proyek ini. Anda dapat menggunakan motor, roda, dan sasis yang berbeda jika Anda mau. Saya hanya ingin mengubah sepotong sampah menjadi sesuatu yang berguna.
Untuk build ini saya menggunakan Raspberry Pi Model 3 A+ dan controller motor Riorand. Saya menggunakan kode dari Robot Terkendali Browser Dexter Industries yang saya modifikasi. Versi Dexter Industries mengatur Pi sebagai server websocket yang memungkinkan Anda untuk mengontrol robot mereka (platform pi bata) dari file html klien yang menjalankan komputer lain.
Saya telah mengubah kode menggunakan pin GPIO dan menambahkan cara agar Pi mati saat tombol diklik / saat tombol escape ditekan di browser. Saya juga membuat beberapa perubahan pada halaman web kontrol untuk memungkinkan melihat aliran gerakan melalui iframe, sambil mengontrol robot semua dalam satu halaman. Saya mengatur Pi dengan IP statis untuk meng-host file klien sehingga saya dapat terhubung menggunakan komputer atau perangkat apa pun di jaringan saya.
Saya mendokumentasikan prosesnya di sini dengan harapan menunjukkan cara membuat robot dasar yang sederhana dan murah.
Bagian yang Digunakan
Raspberry Pi 3 A+ (Adafruit Link) $30
Riorand Dual Motor Driver Controller H-Bridge (Amazon Link) $22
Baterai 12V untuk Motor (Amazon Link) $19
Baterai 5V untuk Raspberry Pi (Amazon Link) $10
Kartu Micro SD 8GB (Amazon Link) $5
Kabel Jumper (Tautan Amazon) $7
Seri Roomba 500
. Semua bersama-sama hanya di bawah $100.
Langkah 1: Instal Raspbian dan Siapkan Alamat IP Statis
Saya menggunakan Raspbian Stretch Lite. Saya tidak melihat kebutuhan untuk desktop, tetapi Anda dapat menginstal versi desktop jika Anda mau.
Saya akan menganggap Anda sudah tahu cara menginstal Raspbian. Jika Anda memerlukan bantuan, Anda dapat menemukan panduan Raspberry Pi Foundation di sini.
Setelah Anda menjalankan dan menjalankan Raspbian, login dan jalankan program raspi-config.
pi@raspberrypi:~ $ sudo raspi-config
Siapkan koneksi WiFi Anda di raspi-config
Pilih
2 Opsi Jaringan
Pilih
Wifi N2
Pilih Negara, masukkan SSID Anda, dan masukkan frasa sandi Anda
Siapkan SSH di raspi-config
Setelah saya melakukan konfigurasi awal, saya menggunakan SSH untuk mengatur semuanya tanpa kepala. (Anda dapat melewati ini jika Anda menggunakan monitor. Lebih mudah bagi saya untuk mengubah kode tanpa harus menghentikan robot dan mencolokkannya ke monitor.)
Kembali ke menu utama raspi-config
Pilih
5 Opsi Antarmuka
Pilih
P2 SSH
Pilih
Ya
Kembali ke menu utama raspi-config pilih
Pastikan Anda terhubung ke jaringan Anda
pi@raspberrypi:~ $ ifconfig
Anda akan menerima output yang mirip dengan ini. (Perhatikan alamat IP; Anda mungkin memerlukannya nanti. mis.192.168.1.18)
wlan0: bendera = 4163 mtu 1500
inet 192.168.1.18 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::c74f:42ec:8cd3:2fda prefixlen 64 scopeid 0x20 ether b8:27:eb:6a:a4:95 txqueuelen 1000 (Ethernet) Paket RX 443772696 (byte 584772696 byte 5,5 MiB) RX error 0 turun 0 overruns 0 frame 0 paket TX 30530 byte 39740576 (37,8 MiB) TX error 0 turun 0 overruns 0 pembawa 0 tabrakan 0
Pastikan Anda dapat menjangkau internet.
pi@raspberrypi:~ $ ping google.com
Anda akan menerima output yang mirip dengan ini.
PING google.com (216.58.194.110) 56(84) byte data.
64 byte dari dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=1 ttl=54 waktu=18,2 ms 64 byte dari dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=2 ttl =54 waktu=19,4 md 64 byte dari dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=3 ttl=54 waktu=23.6 md 64 byte dari dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=4 ttl=54 waktu=30,2 md ^C --- statistik ping google.com --- 4 paket terkirim, 4 diterima, 0% kehilangan paket, waktu 3004ms rtt min/avg/max/mdev = 18,209/ 22.901/30.267/4.715 mdtk
Siapkan IP Statis
Agar dapat terhubung secara konsisten ke robot Anda menggunakan alamat yang sama di jaringan Anda, Anda perlu menyiapkan IP statis.
Dapatkan alamat jaringan Anda saat ini, mis.192.168.1.18
Saya menggunakan alamat yang secara otomatis ditetapkan oleh DHCP ketika Pi terhubung ke jaringan saya. Anda dapat mengubahnya ke apa pun yang Anda suka selama cocok dengan jaringan Anda dan tidak bertentangan dengan alamat lain yang ditetapkan.
Buka dhcp.conf di editor teks. (Saya menggunakan nano)
pi@raspberrypi:~ $ sudo nano /etc/dhcpcd.conf
Gulir ke bawah ke #Contoh konfigurasi IP statis dan ubah baris berikut.
#antarmuka eth0
#static ip_address=192.168.11.13 #router statis=192.168.11.1 #static domain_name_servers=192.168.11.1 8.8.8.8
Ubah agar sesuai dengan jaringan Anda dan hapus # di awal setiap baris.
Contoh:
antarmuka wlan0
ip_address statis=192.168.1.18 static routers=192.168.1.1 static domain_name_servers=192.168.1.1 8.8.8.8
Simpan dan keluar.
Nyalakan ulang dan sambungkan ke Pi melalui SSH
pi@raspberrypi:~ $ sudo reboot
Hubungkan dari komputer lain menggunakan SSH. Pengguna Windows dapat menggunakan Putty atau Subsistem Windows untuk Linux (Windows10).
ian@komputer:~$ ssh [email protected]
Masukkan kata sandi Anda (defaultnya adalah raspberry).
kata sandi [email protected]:
Anda seharusnya sekarang berada di command prompt Pi Anda.
pi@raspberrypi:~$
Langkah 2: Instal dan Konfigurasikan Gerakan
Motion adalah program yang digunakan di banyak proyek kamera / webcam keamanan. Gerak memiliki banyak fitur. Namun, kami mengaturnya untuk hanya melakukan streaming video dari webcam ke port 8081.
Uji Webcam Anda
Colokkan webcam Anda dan daftarkan perangkat usb yang terhubung (Anda mungkin perlu reboot setelah terhubung).
pi@raspberrypi:~ $ lsusb
Anda harus mendapatkan output yang mirip dengan ini. Perhatikan Logitech C210.
Bus 001 Perangkat 002: ID 046d:0819 Logitech, Inc. Webcam C210
Bus 001 Perangkat 001: ID 1d6b:0002 hub root Linux Foundation 2.0
Jika kamera Anda tidak muncul, itu mungkin tidak kompatibel atau Anda mungkin perlu menginstal driver tambahan.
Instal Gerakan
Perbarui paket.
pi@raspberrypi:~ $ sudo apt-get update
Instal Gerakan.
pi@raspberrypi:~ $ sudo apt-get install motion -y
Setelah Motion diinstal, edit file konfigurasi.
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
Ubah baris berikut untuk mencocokkan di bawah ini.
daemon aktif
lebar 640 tinggi 480 framerate 100 output_pictures mati ffmpeg_output_movies mati text_right stream_port 8081 stream_quality 100 stream_localhost mati webcontrol_localhost mati
Mulai Motion Daemon saat Boot
Buka file /etc/default/motion.
pi@raspberrypi:~ $ sudo nano /etc/default/motion
Mengubah
start_motion_daemon=ya
Simpan file dan keluar
Menyalakan ulang
pi@raspberrypi:~ $ sudo reboot
Setelah Pi reboot, buka browser dan verifikasi bahwa Anda memiliki streaming video ke browser pada port 8081
Contoh:
192.168.1.18:8081
Memecahkan masalah Motion Daemon
Saya mengalami masalah saat memulai daemon gerakan saat boot ketika saya mencoba opsi yang berbeda di file motion.conf.
Jika Anda memulai gerakan sebelum daemon gerakan di Raspian Stretch, Anda mungkin akan mengalami masalah untuk memulainya saat boot nanti. Menjalankan "sudo motion" tanpa mengonfigurasi daemon untuk melakukannya terlebih dahulu membuat direktori /var/log/motion tanpa memberikan izin menulis kepada pengguna.
Langkah 3: Instal Apache dan Atur Halaman Kontrol Web
Apache adalah server web untuk halaman web kontrol robot. Kami akan mengganti file index.html Apache default dengan file yang diunduh dari github. Anda juga akan mengubah beberapa baris kode untuk menampilkan aliran video gerak dan menetapkan ke mana harus mengirim perintah untuk mengontrol robot.
Instal Apache dan Git
pi@raspberrypi:~ $ sudo apt-get install apache2 git -y
Setelah apache dan git diinstal, unduh file.
pi@raspberrypi:~ $ git clone
Buka direktori roombarrobot.
pi@raspberrypi:~ $ cd roombarrobot
Ganti file index.html di folder /var/www/html dengan file index.html di /home/pi/roombarbot
pi@raspberrypi:~/roombarbot $ sudo cp index.html /var/www/html
Edit file index.html
Buka file index.html dengan editor teks.
pi@raspberrypi:~/roombarobot $ sudo nano /var/www/html/index.html
Temukan dua baris ini
var host = "ws://YOURIPADDRESS:9093/ws";
Ubah "YOURIPADDRESS" ke alamat IP statis yang Anda siapkan di Langkah 1 dan simpan file.
Contoh:
var host = "ws://192.168.1.18:9093/ws";
Di komputer lain, buka browser dan masukkan alamat IP Pi Anda. Anda akan melihat halaman web kontrol dengan kotak di sebelah kiri, streaming video dari webcam Anda, dan tombol kontrol web di sebelah kanan.
Langkah 4: Siapkan dan Uji Kode
Kode ini ditulis dengan python dan membutuhkan perpustakaan tornado. Kode menggunakan perpustakaan untuk menyiapkan server untuk mendengarkan perintah dari halaman web kontrol melalui soket web pada port 9093.
Instal PIP dan Perpustakaan Tornado
Instal pip
pi@raspberrypi:~ $ sudo apt-get install python-pip
Instal perpustakaan tornado
pi@raspberrypi:~ $ sudo pip install tornado
Mulai Program Roombabot dan Uji Koneksi
Mulai program roombabot.py
pi@raspberrypi:~$ sudo python /home/pi/roombarrobot/roombabot.py
Setelah berjalan, Anda akan melihat "Siap" di terminal. Buka halaman web kontrol di browser dan klik sambungkan. Kemudian klik salah satu tombol arah pada halaman. Anda juga dapat menggunakan tombol panah pada keyboard Anda.
Anda akan melihat output di terminal yang mirip dengan ini.
Siap
koneksi dibuka… koneksi dibuka… diterima: u 8 Berjalan Maju koneksi dibuka… diterima: l 6 Belok Kiri koneksi dibuka… diterima: d 2 Berjalan Koneksi terbalik dibuka… diterima: r 4 Belok Kanan
Tekan ctrl+c untuk menghentikan program.
Setelah Anda selesai menguji matikan Pi.
pi@raspberrypi:~$ sudo matikan
Bug
Saya melihat ada masalah dengan tombol shutdown pada halaman web kontrol. Terkadang tombol shutdown tidak melakukan apa-apa saat diklik atau diketuk. Saya belum dapat menemukan apa yang menyebabkan ini, tetapi ada solusi. Jika Anda ingin mematikan robot dan tombol shutdown tidak berfungsi, muat ulang halaman, klik / ketuk tombol sambungkan lalu klik / ketuk tombol matikan. Itu harus dimatikan.
Langkah 5: Perakitan
Seperti yang disebutkan sebelumnya, Anda tidak harus menggunakan Roomba untuk proyek ini. Apa pun dengan dua motor, dua roda, dan bingkai akan berfungsi. Saya membongkar Roomba dan melepas semuanya kecuali modul roda dan baterai.
Modul Roda
Roda dan motor Roomba ditempatkan bersama dalam modul yang dapat dilepas. Setiap modul memiliki rumah luar berwarna biru yang berisi motor, gearbox, roda, pegas suspensi, dan papan antarmuka.
Papan Antarmuka
Setiap papan antarmuka memiliki enam kabel yang mengalir ke sana. Ada dua kabel (Merah[+], Hitam[-]) yang memutar motor, satu kabel data untuk sensor efek hall, satu kabel untuk wheel drop switch, satu kabel 5V, dan satu kabel GND untuk menyalakan sensor. Anda harus membongkar modul untuk mengakses papan antarmuka. Saya melepas semuanya kembali ke motor dan menyolder kabel [+] dan [-] baru ke motor (lihat foto). Terserah Anda apakah Anda ingin mempertahankan sensor atau tidak.
pegas suspensi
Setelah Anda menghapus bagian vakum, berat Roomba akan terlempar. Jika Anda tidak melepas pegas, Roomba akan duduk miring. Saya awalnya menghapus ini, tetapi kemudian menambahkannya kembali ketika saya merasa kesulitan untuk menggulingkan karpet. Mengembalikan pegas memperbaiki masalah.
Menghubungkan motor ke Pengendali Motor
Motor saling berhadapan. Itu berarti bahwa untuk menggerakkan Roomba ke arah depan, satu motor harus berputar ke depan sementara yang lain berputar ke belakang. Saya tidak terlalu memikirkan hal ini sampai setelah saya menghubungkan semuanya. Saya akhirnya hanya menulis kode tentang bagaimana saya awalnya menghubungkan motor. Ini adalah kecelakaan yang menyenangkan karena setiap kali Raspberry Pi hidup/mati, ada output tegangan ke pin GPIO. Cara saya memasang kabel, Roomba berputar hingga Raspberry Pi melakukan booting (sekitar tiga puluh detik) dan berputar saat dimatikan hingga daya dimatikan. Jika kabel berbeda, itu akan berpotensi berguling ke depan / ke belakang yang akan menjengkelkan. Saya berencana untuk memperbaikinya pada akhirnya dengan sakelar sederhana untuk pengontrol motor.
Menghubungkan Motor dan Baterai ke Pengendali Motor
Daya- - - - - - - - - - - - - - - 12V [+]- - - - - - - - - - - -Roomba Baterai [+]
Motor 2- - - - - - - - - - - - - - - Hitam- - - - - - - - - - - - -Motor Kiri [-] Motor 2- - - - - - - - - - - - - - - Merah- - - - - - - - - - - - - - -Motor Kiri [+] Motor 1- - - - - - - - - - - - - - Hitam- - - - - - - - - - - - - -Motor Kanan[-] Motor 1- - - - - - - - - - - - - - Merah- - - - - - - - - - - - - -Motor Kanan[+] GND- - - - - - - - - - - - - - - - - 12V [-]- - - - - - - - - - - -Roomba Battery [-]
Menghubungkan Pengontrol Motor ke Raspberry Pi
Pin Pengontrol Motor Warna Kawat (lihat foto) Pin Raspberry Pi
GND- - - - - - - - - - - - - - - - - Hitam- - - - - - - - - - - - -GND PWM 2- - - - - - - - - - - - - - - Biru - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - Hijau- - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - Kuning - - - - - - - - - - - -GPIO 24 DIR 1- - - - - - - - - - - - - - - - Oranye - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - Merah- - - - - - - - - - - - - - -5V
Memasang Elektronik
Tidak banyak yang masuk ke dalam menempatkan semuanya bersama-sama. Saya menanggalkan roomba di sasisnya. Dengan penutup dilepas, Anda dapat dengan mudah memotong penyangga plastik yang ada dan mengebor lubang untuk memasang elektronik. Ada port yang ada untuk menjalankan kabel dari motor. Jika Anda menggunakan baterai Roomba stok, sudah ada celah untuk akses ke terminal baterai.
Baterai
Saya menggunakan baterai terpisah untuk Raspberry Pi dan pengontrol motor. Baterai Pi hanyalah paket baterai 5V yang digunakan untuk meningkatkan ponsel. Untuk pengontrol motor saya menggunakan baterai Roomba asli yang menyertainya. Terminal baterai tidak diberi label, jadi sebaiknya periksa voltase dengan voltmeter sebelum Anda menghubungkannya ke pengontrol motor. Untuk memasang kabel ke baterai Roomba, saya menggunakan empat magnet neodymium (lihat foto). Saya menyolder dua magnet ke kabel dan dua lainnya saya menempelkan ke terminal baterai. Solder merusak magnet. Namun, lapisan di luar masih bisa menempel pada magnet di terminal dan menghantarkan listrik. Ini membuat menghubungkan dan melepaskan baterai menjadi hal yang mudah.
Pengujian
Setelah Anda memiliki semuanya bersama-sama, verifikasi bahwa Anda memiliki semuanya terhubung dengan benar, menopang robot Anda pada sesuatu (sehingga tidak menggelinding), dan nyalakan.
Masuk dan mulai program roombabot.py
pi@raspberrypi:~$ sudo python /home/pi/roombarrobot/roombabot.py
Buka halaman kontrol web dan ujilah. Jika semuanya terhubung dengan benar, roda harus berputar ke arah yang sesuai saat tombol diklik / tombol panah ditekan (jangan lupa klik sambungkan).
Langkah 6: Memulai Kode Python saat Boot / Menyelesaikan
Hal terakhir yang perlu kita lakukan adalah memberitahu Raspbian untuk memulai program python saat boot. Untuk melakukan ini, kita akan membuat skrip dan menjadwalkannya untuk dijalankan saat reboot menggunakan crontab.
Buat Scriptnya
Buat file skrip baru bernama startrobot.sh di direktori pengguna pi
pi@raspberrypi:~ $ sudo nano startrobot.sh
Salin baris berikut ke dalam file
#!/bin/sh
#startrobot.sh cd / cd /home/pi/roombarobot sudo python roombabot.py cd /
Simpan file dan keluar
Jadikan file startrobot.sh dapat dieksekusi
pi@raspberrypi:~$ sudo chmod 755 startrobot.sh
Ujilah (Tekan ctrl + c untuk berhenti)
pi@raspberrypi:~$ sh startrobot.sh
Edit file crontab
pi@raspberrypi:~$ sudo crontab -e
Tambahkan baris berikut ke bagian bawah file
# mh dom mon dow perintah
@reboot sh /home/pi/startrobot.sh
Simpan dan keluar
Program roombabot.py sekarang harus dimulai ketika Pi di-boot ulang atau didaur ulang daya.
Menyelesaikan
Pada titik ini Anda harus memiliki robot fungsional yang dapat Anda kendalikan menggunakan browser dari perangkat apa pun di jaringan Anda. Saya telah mengambil ini sedikit lebih jauh sejak membangun dan mengatur VPN asli untuk dapat mengakses robot ketika saya jauh dari rumah. Saya berniat untuk membuat beberapa perubahan tambahan di masa depan. Saya berencana untuk membuatnya otonom dan mungkin mengikuti gerakan sambil tetap bisa mengambil alih kendali saat saya mau.
Direkomendasikan:
Lift Model yang Dikendalikan Arduino: 7 Langkah (dengan Gambar)
Lift Model yang Dikontrol Arduino: Dalam Instruksi ini saya akan menunjukkan kepada Anda bagaimana saya membangun lift mainan dua tingkat, dengan pintu geser yang berfungsi dan mobil yang bergerak naik turun sesuai permintaan. Jantung lift adalah Arduino Uno (atau dalam hal ini Metro Adafruit), dengan Moto Adafruit
Tangan Robot yang Dikendalikan Suara: 8 Langkah (dengan Gambar)
Tangan Robot yang Dikendalikan Suara: a.articles {ukuran font: 110,0%; font-berat: tebal; gaya font: miring; dekorasi teks: tidak ada; background-color: red;} a.articles:hover {background-color: black;} Instruksi ini menjelaskan cara membuat tangan robot yang dikendalikan suara menggunakan
Bangun Robot Telepresence yang Dikendalikan Melalui Wifi: 11 Langkah (dengan Gambar)
Membangun Robot Telepresence yang Dikendalikan Melalui Wifi: Proyek ini adalah tentang membangun robot yang dapat berinteraksi dengan lingkungan jarak jauh dan dikendalikan dari belahan dunia mana pun menggunakan Wifi. Ini adalah proyek rekayasa tahun terakhir saya dan saya belajar banyak tentang elektronik, IoT dan pemrograman meskipun saya
Lengan Robot yang Dikendalikan Arduino dengan 6 Derajat Kebebasan: 5 Langkah (dengan Gambar)
Lengan Robot yang Dikendalikan Arduino dengan 6 Derajat Kebebasan: Saya adalah anggota grup robotika dan setiap tahun grup kami berpartisipasi dalam Pameran Mini-Maker tahunan. Mulai tahun 2014, saya memutuskan untuk membangun proyek baru untuk acara setiap tahun. Saat itu, saya punya waktu sekitar satu bulan sebelum acara untuk mempersiapkan sesuatu
Mobil Robot yang Dikendalikan Bluetooth: 13 Langkah (dengan Gambar)
Mobil Robot yang Dikendalikan Bluetooth: apakah Anda selalu terpesona dengan mobil RC? Pernah ingin membuatnya sendiri? dikendalikan oleh smartphone Anda sendiri? ----> mari kita mulai Jadi, hai teman-teman, di sini di proyek ini saya telah mencoba membuat mobil yang dikendalikan Bluetooth dengan bantuan Arduino. saya punya inc