Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Roomberry Pengawasan Robot:Roomba + Pi Zero + Kamera

Roomberry adalah robot pengintai berbasis Roomba menggunakan Raspberry Pi Zero W dan modul kamera. Bertahun-tahun yang lalu saya mulai melakukan beberapa pengujian untuk mengontrol Roomba dari jarak jauh menggunakan Arduino One dengan modul RN-VX WiFly.

 Bulan lalu saya memutuskan untuk menghidupkan kembali ide tersebut tetapi dengan tujuan baru:untuk mengubah Roomba menjadi robot pengintai dengan kemampuan untuk mengambil foto dan video. Ide pertama adalah tetap menggunakan Arduino sebagai mikrokontroler yang menggunakan modul Arducam untuk mengambil gambar. Namun saya segera menemukan bahwa kapasitas pemrosesan gambar Arduino terlalu terbatas untuk minat saya. Opsi kedua adalah mengubah platform dan menggunakan Raspberry Pi Zero W dengan modul kamera. Alternatif ini berarti beberapa tantangan, khususnya mengenai powering tetapi juga menawarkan lebih banyak kemungkinan. Dalam postingan ini saya akan menjelaskan cara membuat Roomberry,  robot pengawasan berbasis Roomba menggunakan Raspberry Pi Zero W dan modul kamera.

Demonstrasikan kemampuan Roomberry dan antarmuka web dikembangkan untuk berinteraksi dengannya dapat dilihat pada video berikut.

iRobot Roomba

Robot iRobot menawarkan Antarmuka Terbuka (OI) untuk berinteraksi dengan robot melalui konektor DIN mini. OI adalah antarmuka perangkat lunak yang dirancang untuk pembuat Roomba 2 (adaptasi dari seri 600). Namun, ini sepenuhnya kompatibel dengan seri 500 dan 700 juga. Namun ada beberapa bug tergantung pada platform dan versi firmware yang digunakan. Antarmuka perangkat lunak memungkinkan Anda memanipulasi perilaku Roomba dan membaca sensornya. Deskripsi lengkap tentang kemampuannya dapat ditemukan di dokumen ini.

Konektor DIN Mini

Roomba konektor DIN mini terletak di sisi kanan depan Roomba seri 700 dan memiliki 7 pin. Posisinya sedikit berbeda di seri 600, yang letaknya di sisi kanan belakang Roomba, di bawah pelindung plastik snap-away. Mini DIN 7 konektor male sulit dibeli, namun konektor male mini DIN 8 pin male yang lebih umum  juga kompatibel.

Untuk memastikan koneksi/pemutusan port yang lancar dan andal, saya menyolder kabel 5 pin (dirancang untuk strip LED) dengan konektor female ke konektor male mini DIN 8 pin menggunakan pin 1-2 (daya), 6-7 (tanah), 3 (RxD), 4 (TxD) dan 5 (BRC). Namun, seperti yang dikomentari kemudian, koneksi daya/tanah akhirnya tidak diperlukan. Kabel yang dihasilkan dapat dilihat pada gambar berikut.


Port Serial Roomba

Untuk menggunakan OI, perintah harus dikirim melalui komunikasi serial dua arah dibuat dalam mini DIN 7 pin 3 (RxD) dan 4 (TxD). Port UART ini berfungsi pada tingkat TTL (0 – 5V). Tegangan ini sangat cocok untuk mikrokontroler yang menggunakan logika 5V, seperti kebanyakan papan Arduino. Namun ini tidak baik untuk mereka yang memiliki level logika tegangan rendah (seperti Raspberry Pi).

Secara teori, pin 3 (RxD) akan mengambil 3,3 V sebagai level logika tinggi. Tetapi Roomba akan mengeluarkan 5V pada pin 4 (TxD), yang dapat merusak Raspberry Pi Zero. Untuk menjaga keamanan perangkat keras, pengalih level logika seharusnya digunakan. Cara termudah untuk melakukannya adalah dengan pembagi resistor, seperti yang telah diterapkan di proyek saya sebelumnya Calduino, tetapi ini mungkin tidak berfungsi pada kecepatan tinggi (port serial Roomba berfungsi pada 115200 baud).

Daripada itu, pengalih level aktif lebih disukai. Jika Anda ingin membuat sirkuit sendiri, gunakan transistor efek medan AN10441 seperti yang dijelaskan di sini. Opsi yang jauh lebih mudah adalah menggunakan salah satu konverter level logika dua arah yang ada seperti ini dari Adafruit. Perangkat ini dapat mengelola hingga 4 sinyal dan menurunkannya dengan aman dari 5V ke 3.3V. Pada saat yang sama, ia menaikkan sinyal dari 3.3V ke 5V.

Menghidupkan Raspberry Pi Dari Roomba

Ada beberapa alternatif untuk menyediakan catu daya melalui baterai Roomba:

Menghidupkan Dari Mini DIN 7

Mini DIN 7 menyediakan koneksi langsung yang tidak diatur di pin 1/2 (Vcc) – 6/7 (Gnd) ke baterai Roomba. Koneksi dibatasi hingga 200 mA melalui sekring PTC yang dapat disetel ulang . Ini menawarkan tegangan antara 20,5 dan 10V, terbatas pada 0,2A dengan kekuatan 2W. Penarikan terus menerus dari dua pin ini bersama-sama tidak boleh melebihi 200 mA. Menggambar puncak lebih besar dari 500 mA akan mengatur ulang sekering.

Raspberry Pi Zero W seharusnya dapat bekerja menggunakan persediaan ini. The Raspberry Pi Foundation menilai konsumsi arus aktif bare-board pada umumnya dalam 150 mA. Tolok ukur ini menempatkannya di antara 120 mA dalam menganggur status dan 180 mAunder stress (memutar video FullHD, misalnya). Namun, di sini konsumsi ekstra kamera tidak dipertimbangkan. Menurut pengukuran saya, kamera (saya menggunakan yang ini, dengan sensor yang sama dengan kamera Pi resmi versi 1) meningkatkan konsumsi daya hingga lebih dari 300 mA, dengan puncak 450 mA. Selama pengujian saya, sekring putus beberapa kali saat merekam video.

Sebagai kesimpulan, termofuse yang ada menolak penggunaan koneksi ini untuk memberi daya pada Raspberry Pi Zero W. Saya belum dapat mengetahui apakah mungkin dan aman untuk melepas sekring dari papan tanpa merusak komponen lain.

Memberi daya dari bank daya eksternal

Ada beberapa alternatif untuk menghindari batas sekering ini. Di satu sisi, solusi yang lebih mudah adalah menggunakan bank daya untuk memberikan daya eksternal ke Raspberry Pi Zero. Namun, itu akan mengharuskan pengguna untuk mengisi daya secara berkala. Pilihan lain adalah merancang koneksi serial antara catu daya mini DIN 7 dan bank daya. Dengan beberapa komponen elektronik, baterai Roomba seharusnya dapat digunakan untuk mengisi daya bank daya. Untuk menyederhanakan desain saya, saya memutuskan untuk menghindari penggunaan sumber daya tambahan.

Memberi Daya Dari Baterai

Saya akhirnya memutuskan untuk memotong  sekring dengan membangun koneksi langsung  kepaket baterai . Rekanan dari opsi ini adalah Anda harus membongkar sebagian robot . Di Roomba seri 600 ada dua bantalan besar yang terhubung langsung ke unit baterai di bawah tombol dok. Dalam seri Roomba 700/800 Anda harus membongkar beberapa komponen lagi. Lihat video berikut hingga menit ke-6 untuk melihat, langkah demi langkah, cara mengakses motherboard robot . Setelah selesai, cukup solder beberapa kabel ke bantalan baterai seperti yang ditunjukkan pada gambar berikutnya.


Kabel ini akan menyediakan koneksi langsung ke baterai yang tidak dibatasi oleh sekering apa pun. Mereka memasok antara 20,5 dan 10V, tergantung pada tingkat pengisian baterai. Namun, Raspberry Pi Zero W memerlukan sumber daya 5 V yang diatur. Untuk mengurangi voltase, turun digunakan. Ada banyak opsi untuk melakukan ini mulai dari penggunaan regulator linier yang murah (seperti 7805 TO-220) dengan beberapa kapasitor untuk memasang regulator sakelar .

Karena efisiensinya yang lebih tinggi , dan mengingat itu akan selalu terhubung, saya sarankan untuk menggunakan/membeli kualitas bagus (hindari peniruan China) regulator switching step-down . Saya telah menggunakan regulator buck Pololu D24V5F5 yang mengambil input hingga 36 V dan menguranginya menjadi 5V untuk arus keluaran maksimum 500 mA. Efisiensinya dinilai antara 85% dan 90% dan memiliki putus sekolah yang sangat rendah. Anda juga dapat menggunakan UBEC (Universal Battery Elimination Circuit), seperti yang biasa digunakan di dunia RC. Saya menempatkan pengatur tegangan di ruang kosong yang terletak di tengah – sisi kanan robot.

Sambungan dilindungi dengan benar dengan heatshrink dan modul D24V5F5 ditutupi dengan plastik isolasi (saya tidak mengambil foto ini). Saya menyolder output modul ke kabel micro-USB, yang memungkinkan saya menghubungkannya langsung ke input daya Raspberry Pi Zero W.


Menggunakan alat bor dan amplas yang berputar, saya membuat lekukan kecil di penutup atas Roomba untuk memungkinkan outlet bersih dari kabel micro USB seperti yang dapat dilihat di gambar berikut.

Mode OI Roomba

OI Roomba memiliki empat mode pengoperasian:Mati, Pasif, Aman, dan Penuh.

Mode Nonaktif :Setelah baterai diganti atau saat pertama kali dinyalakan, OI dalam mode mati. Dalam status ini Roomba mendengarkan port pada baud rate default (115200) menunggu perintah anstart. Perintah reset dan stop dapat dikirim kapan saja dan akan mengaktifkan OI juga dalam mode nonaktif.

Mode Pasif: Setelah perintah Mulai dikirim, Roomba memasuki mode pasif . Dalam status ini Anda dapat meminta dan menerima data sensor menggunakan salah satu perintah sensor. Namun Anda tidak dapat mengubah parameter perintah saat ini untuk aktuator (motor, speaker, lampu, driver sisi rendah, output digital). Roomba akan memasuki mode pasif juga jika salah satu perintah mode pembersihan (Spot, Clean, Seek Dock, dll.) dikirim.

Saat dalam mode pasif, Roomba akan masuk ke mode nonaktif setelah lima menit tidak aktif untuk menghemat daya dan menghemat baterai. Menurut dokumentasi iRobot, mode tidur dapat dinonaktifkan hanya dengan menekan pin BRC ke level rendah secara berkala sebelum masa berlaku lima menit ini berakhir. Setiap pulsa harus mengatur ulang penghitung lima menit ini. Dalam pengujian yang saya lakukan (dengan Roomba 780), menarik BRC rendah hanya akan membangunkan robot, tetapi tidak mencegahnya beralih ke mode hemat daya. Robot akan berbunyi bip saat bangun  (jika tidak sedang diisi daya di stasiun dok).

Mode Aman :Roomba akan masuk dalam Safe mode jika perintah Aman dikirim. Mode aman memberi Anda kendali penuh atas robot dan mematikan semua motor dan LED. Namun, jika kondisi terkait keselamatan tidak terpenuhi, robot akan otomatis berubah menjadi mode pasif . Kondisi keamanan tersebut adalah:deteksi tebing saat bergerak maju, wheel drop dan koneksi charger. Dalam mode ini Roomba tidak akan mengisi daya (walaupun berada di dok) dan tidak akan menghemat daya dengan beralih ke mode mati setelah 5 menit tidak aktif. Poin ini sangat penting:Anda dapat menghabiskan baterai robot dan merusaknya jika tidak beralih ke mode pasif atau nonaktif.

Mode Penuh :Saat Anda mengirim perintah Penuh ke OI, Roomba memasuki mode Penuh . Robot akan berperilaku persis seperti dalam mode Aman, tetapi tidak akan mempertimbangkan kondisi terkait keselamatan yang disebutkan sebelumnya, jadi waspadalah terhadap risikonya!

Tindakan pencegahan baterai :Seperti yang dikomentari, dalam mode Pasif, Roomba akan tidur setelah 5 menit tidak aktif untuk menghemat daya baterai. Dalam mode Aman dan Penuh, Roomba tidak akan pernah tidur, dan jika dibiarkan dalam kondisi ini untuk waktu yang lama, baterainya akan habis, bahkan jika dicolokkan ke pengisi daya. Pengisi daya akan memberi daya pada Roomba dalam semua mode, tetapi tidak akan mengisi daya baterai dalam mode Aman atau Penuh. Penting untuk mengembalikan Roomba ke mode Pasif atau Nonaktif setelah pekerjaan selesai dan/atau saat level baterai hampir habis untuk melindunginya.

Raspberry Pi Zero W

The Raspberry Pi Zero W adalah versi terbaru dari Raspberry Pi Zero dengan LAN nirkabel  dan Bluetooth . Model ini mencakup CPU single-core 1 GHz, RAM 512MB, mini-HDMI, port OTG micro-USB, micro-USB untuk daya, header 40-pin, video komposit, header reset, konektor kamera, serta fitur nirkabel baru. Ini menggunakan chip nirkabel Cypress CYW43438 yang mendukung Wi-Fi 802.11b/g/n (khusus 2.4GHz) dan Bluetooth 4.0 (chip yang sama dengan Raspberry Pi 3 Model B). Saya membelinya di Pimoroni dengan header (tidak disolder) dan adaptor seharga 16€.

Kamera

Konektor kamera Raspberry Pi Zero W CSI lebih kecil dari konektor Pi 3. Jika Anda sudah memiliki kamera, Anda harus membeli adaptor untuk menggunakannya. Jika tidak, saya akan merekomendasikan untuk membeli modul kamera ini, yang dilengkapi sensor 5MP (sama seperti kamera Pi resmi versi 1) dan dapat merekam video pada 1080p. Biayanya € 18. Saya memilih kamera sudut lebar dengan potongan IR. Saya tahu bahwa saya tidak akan dapat melihat apa pun di malam hari tetapi penggunaan LED IR akan meningkatkan konsumsi energi, yang ingin saya pertahankan agar tetap rendah. Anda selalu dapat menggunakan lampu Philips HUE untuk mengontrol lampu rumah Anda dari jarak jauh.

Menghidupkan Raspberry Pi Zero W

Ada beberapa pertimbangan yang harus dibuat terkait catu daya Pi Zero. Pertama-tama, dan tidak seperti model yang lebih besar, Pi Zero tidak memiliki regulasi atau sekring untuk melindunginya dari tegangan berlebih atau lonjakan arus. Artinya, Anda harus menyediakan sumber daya yang stabil dengan 5 V. Sumber daya dapat dihubungkan ke micro USB sisi kanan (Pwr In) atau ke pin 5V pada header GPIO. Keduanya adalah garis yang sama. Pastikan bahwa jika voltase yang salah diterapkan atau lonjakan arus terjadi di saluran, Anda mungkin akan kerusakan Raspberry Pi Anda secara permanen .

Seperti yang telah dikomentari, puncak konsumsi 400 mA dengan kamera terhubung telah diukur saat menjalankan tes stres. Yayasan Raspberry Pi merekomendasikan catu daya minimal 1,2 A. Namun, 0,5 A yang disediakan oleh regulator uang sudah cukup bagi saya. Sampai saat ini saya tidak menemukan masalah apapun yang berhubungan dengan power supply.

Mengurangi Konsumsi Daya

Mengingat bahwa Raspberry akan dijalankan dari baterai Roomba, akan menarik untuk mengurangi  konsumsi daya  sebanyak mungkin. Misalnya, mengetahui bahwa Pi Zero akan berjalan tanpa kepala (tanpa monitor terhubung) dan hanya akan diakses melalui SSH, tidak perlu menyalakan sirkuit tampilan. Menonaktifkan port HDMI dapat menghemat hingga 25 mA. Untuk melakukannya, cukup jalankan /usr/bin/tvservice -o (atau dengan -p untuk mengaktifkan kembali). Saya telah menempatkan skrip pendek di /etc/rc.local yang memeriksa apakah kabel HDMI terhubung atau tidak dan menonaktifkan port HDMI yang sesuai.

# Dapatkan jenis keluaran video saat ini dan singkirkan bit yang tidak penting
video=“$(tvservice -s | sed “s/^.*\[\([^ ]*\) .*$/\1/ ” )“

if [ “$video“ !=“HDMI” ]; lalu
printf “HDMI tidak terdeteksi. Mematikan.\n”
tvservice -off> /dev/null
else
printf “HDMI terdeteksi.\n”
fi

Cara lain untuk mengurangi konsumsi daya adalah menonaktifkan LED Pi. Raspberry Pi Zero hanya memiliki satu, LED aktivitas, yang berkedip setiap kali kartu SD diakses. Konsumsinya sekitar 5 mA. Untuk menonaktifkannya sepenuhnya, tambahkan baris ini di file /etc/rc.local Anda:

# Atur pemicu LED Pi Zero ACT ke 'tidak ada'
echo none | sudo tee /sys/class/leds/led0/trigger

# Matikan LED Pi Zero ACT
echo 1 | sudo tee /sys/class/leds/led0/brightness

Anda juga dapat melakukannya dengan mengedit file /etc/config.txt :

# Nonaktifkan LED ACT pada Pi Zero

dtparam=act_led_trigger=none
dtparam=act_led_activelow=on

Saya tidak yakin apakah ini akan berarti pengurangan konsumsi yang nyata, tetapi karena tidak akan digunakan, Anda dapat menonaktifkan modul bluetooth Pi Zero dengan menambahkan baris berikut ke /etc/config .txt:

# Nonaktifkan bluetooth di Pi Zero

dtoverlay=pi3-disable-bt

Terakhir, coba kurangi software yang diinstal dan dijalankan di Pi Zero. Misalnya, gunakan Raspbian lite alih-alih versi desktop dan jangan menginstal perangkat lunak tambahan kecuali Anda benar-benar membutuhkannya. Semakin banyak proses yang berjalan di mesin Anda, semakin besar konsumsinya.

Pertimbangan Lainnya

Membangun Roomberry

Setelah semua bagian telah dijelaskan, mari kita lihat cara membuat dan menjalankan Roomberry, antarmuka Raspberry Anda dengan Roomba.

Tujuan saya adalah untuk mengenkapsulasi komponen (Raspberry Pi Zero, modul kamera, konverter level logika, dan tombol sakelar) dalam wadah yang stabil dengan akses mudah ke semua port dan kartu SD. Satu-satunya pilihan yang saya temukan, tidak termasuk mencetak desain 3D saya sendiri, adalah yang ini. Kasing ini memenuhi semua persyaratan dan memungkinkan saya untuk memasang HAT (Hardware Attached on Top), papan tambahan dengan beberapa komponen elektronik yang diperlukan. Gambar berikut menunjukkan skema PCB. Perhatikan bahwa pin Run terletak di Pi Zero dan bukan di HAT. Untuk membuatnya, sepotong Papan PCB dengan 12 x 10 pin sudah cukup. Untuk memotong PCB saya menggunakan alat putar.

The Konverter tingkat logika akan membutuhkan tegangan tinggi dan rendah, yang dapat diperoleh dari GPIO (Pi Zero menyertakan konverter step-down dari 5 ke 3,3 V bernama  PAM2306AYPKE). Saya telah menempatkan tombol pengalih di tengah Pi Zero, karena merupakan perpanjangan dari HAT. Dengan demikian, batang tombol menonjolkan casing sehingga dapat ditekan secara eksternal. Anda harus mengebor beberapa lubang di casing:satu untuk lubang uap tombol dan lubang lainnya (dan lebih besar) untuk kamera. Selain itu, saya harus mengampelas dengan hati-hati ruang casing yang dirancang untuk konektor CSI untuk memberi ruang bagi putaran kabel 180 derajat. Gambar berikut menunjukkan hasilnya:


Mengonfigurasi Peregangan Raspbian

Sebelum menghubungkan Roomberry ke konektor mini DIN 7 Roomba, beberapa langkah konfigurasi harus dilakukan. Dengan asumsi bahwa Raspberry Pi Zero W menjalankan Raspbian versi terakhir dan sudah disiapkan tanpa kepala.

Hubungkan catu daya USB mikro dibangun sebelumnya ke Pi Zero. Setelah beberapa detik, sistem akan aktif dan berjalan. Buka koneksi SSH ke pi Zero Anda.

Secara default, port serial Pi dikonfigurasi untuk digunakan untuk input/output konsol . Untuk berkomunikasi dengan Roomba melalui port ini, login konsol serial harus dinonaktifkan. Anda dapat melakukannya dengan raspi-configchoosing menu 5 – Interfacing options dan P6 – Serial. Jawab Tidak untuk pertanyaan "Apakah Anda ingin login shell agar dapat diakses melalui serial?" dan Ya ke “Apakah Anda ingin perangkat keras port serial diaktifkan?”. Jangan restart sistem dulu. Atau Anda juga dapat mengomentari definisi konsol dan menambahkan ke akhir file  /boot/config baris berikut:

#Temukan dan komentari definisi konsol
#console=serial0,115200
...
enable_uart=1

Jika Anda belum melakukannya, aktifkan modul kamera . Sekali lagi, Anda dapat melakukannya meskipun raspi-config memilih menu 5 dan opsi P1. Di sisi lain, Anda juga dapat mengedit file /boot/config dan menyertakan perubahan ini (menonaktifkan led kamera tidak diperlukan tetapi disarankan untuk menghemat daya):

start_x=1
gpu_mem=128
disable_camera_led=1

Saya tidak yakin berapa jumlah RAM yang optimal untuk ditetapkan sebagai gpu_memory saat modul kamera sedang digunakan. Sampai saat ini saya belum menemukan kesalahan "Kehabisan sumber daya" saat mengoperasikan kamera, jadi saya menganggap 128 Mb adalah pilihan yang baik.

Nonaktifkan semua swap dan pasang direktori /tmp di Disk RAM dengan ruang 50 megabita. Lokasi ini akan digunakan untuk menyimpan file sementara, seperti jepretan kamera dan file status Roomba. Tingkatkan waktu commit di etc/fstab menjadi 30 menit dan sertakan opsi noatime di partisi SD. Temukan perintah di postingan ini.

Sekarang saatnya menguji apakah semuanya berfungsi dengan benar. Matikan Pi Anda dan sambungkan port serial ke Roomba. Tempatkan Roomba di dok pengisi daya . Boot sistem dan periksa apakah semuanya berfungsi seperti yang diharapkan (dan robot tidak melakukan sesuatu yang aneh).

Uji pembacaan dari port serial :Saya telah menggunakan minicom untuk membaca data yang dikirim oleh Roomba. Untuk menginstalnya cukup ketik:

sudo apt-get minicom

Hubungkan dengan port serial Roomba dengan melakukan:

minicom –b 115200 -o -D /dev/serial0

Jika Roomba Anda sedang diisi, Anda akan melihat teks yang mirip dengan gambar berikut yang melaporkan status pengisian Roomba setiap detik. Tekan CTRL + A dan X untuk keluar dari minicom.

Read More Detail  :Roomberry Surveillance Robot:Roomba + Pi Zero + Camera


Proses manufaktur

  1. Cara Membuat Platform Robot Arduino+Raspberry Pi
  2. BrickPi Bookreader
  3. Robot Kotak CD Raspberry Pi
  4. Robot Alarm Bergulir
  5. Membuat Robot Creeper Minecraft
  6. Archimedes:AI Robot Owl
  7. Roomberry Pengawasan Robot:Roomba + Pi Zero + Kamera
  8. Buka CV Robot
  9. Robot ROS
  10. Robot Pi Sederhana