Daftar Isi:

Robot Kehadiran Virtual: 15 Langkah
Robot Kehadiran Virtual: 15 Langkah

Video: Robot Kehadiran Virtual: 15 Langkah

Video: Robot Kehadiran Virtual: 15 Langkah
Video: Fakta AI Robot Yang Mengerikan Nih Kak 2024, November
Anonim
Image
Image
Mobil Robot Seluler
Mobil Robot Seluler

Robot bergerak ini berinteraksi dengan lingkungan fisiknya, dengan merepresentasikan "kehadiran virtual" orang yang mengendalikannya dari jarak jauh. Itu dapat diakses oleh siapa saja, di mana saja di dunia, untuk membagikan suguhan dan bermain dengan Anda.

Pekerjaan di sini dikembangkan oleh dua orang (satu di Jerman dan satu di AS) sebagai upaya untuk bergerak melampaui cara tradisional komunikasi berbasis internet dengan menciptakan antarmuka fisik untuk interaksi jarak jauh. Karena COVID-19 terus memengaruhi dunia, dan setiap orang bertanggung jawab untuk membatasi paparan fisik kita kepada orang-orang, kami mencoba mengembalikan koneksi nyata yang merupakan bagian dari interaksi fisik.

Ini didasarkan pada ESP32-Camera-Robot-FPV-Teacher-Entry Instructable dan dimodifikasi untuk memasukkan sensor jarak, memperlakukan dispenser dan kemampuan "kontrol dari mana saja di dunia", asalkan Anda memiliki koneksi internet yang agak stabil.

Perlengkapan

Proyek ini memiliki 4 bagian utama - Mobil Robot Bergerak, Dispenser Chip, Joystick, dan Pengaturan Komunikasi Jaringan.

Mobil Robot Seluler

  • Papan tempat memotong roti
  • 2 Wheel Drive Motor dan Chassis Robot Kit (termasuk roda, motor DC, papan pemasangan dan sekrup)
  • Arduino Mega 2560 (jika Anda membangun tanpa sensor jarak atau Dispenser Chip, Uno akan memiliki cukup pin)
  • (3) Baterai 9V (memiliki beberapa baterai lagi karena Anda akan mengurasnya saat debugging)
  • Modul Catu Daya LM2596 DC/DC Buck 3A Regulator (atau serupa)
  • Modul Wifi ESP32-CAM
  • FT232RL FTDI USB to TTL Serial Converter (untuk memprogram ESP32-CAM)
  • Sensor Jarak Ultrasonik HC-SR04
  • Pengemudi Motor L298N
  • (3) LED (warna apa saja)
  • (3) Resistor 220 Ohm

Dispenser Chip

  • (2) Servo SG90
  • Karton / Karton

Joystik

  • Arduino Uno
  • Modul Joystick
  • Papan tempat memotong roti mini, (1) LED, (1) Resistor 220 Ohm (opsional)

Lainnya

Banyak Kabel Jumper Papan Tempat memotong rotiKarton Ekstra / KartonTapeGuntingPenggaris / Pita Ukur Obeng Philips Kecil Obeng Pipih Kecil

Sabar =)

Langkah 1: Mobil Robot Seluler

Sasis Mobil Robot berfungsi sebagai platform seluler, dengan Arduino MEGA sebagai pengontrol mikro utama yang menggerakkan motor, membaca nilai sensor, dan menggerakkan servo. Sebagian besar tindakan dilakukan dengan meminta Arduino MEGA menerima perintah melalui komunikasi serial, yang dikirim dari ESP32-CAM. Sementara ESP32 menyediakan streaming langsung kamera untuk mengontrol robot, fungsi lainnya adalah mengelola koneksi nirkabel antara robot dan server, sehingga memungkinkan pengguna untuk mengontrolnya dari mana saja di dunia. ESP32 menerima perintah dari halaman web melalui penekanan tombol dan mengirimkannya ke Arduino MEGA sebagai nilai karakter. Berdasarkan nilai yang diterima, mobil akan maju, mundur, dll. Karena kendali jarak jauh melalui internet bergantung pada banyak faktor eksternal termasuk latensi tinggi, kualitas aliran yang buruk, dan bahkan pemutusan, sensor jarak dimasukkan untuk menjaga robot agar tidak menabrak ke objek.*Karena kebutuhan daya chip ESP32 yang tinggi dan berfluktuasi, Regulator Catu Daya direkomendasikan untuk digunakan dengan daya baterai (lihat diagram pengkabelan).

Langkah 2: Mobil Robot Seluler - Diagram Sirkuit

Mobil Robot Seluler - Diagram Sirkuit
Mobil Robot Seluler - Diagram Sirkuit

Kami akan memandu Anda melalui perakitan ini langkah demi langkah.

Langkah 3: Mobil Robot Seluler - Perakitan (Motor)

Mobil Robot Seluler - Perakitan (Motor)
Mobil Robot Seluler - Perakitan (Motor)

Setelah Anda merakit sasis 2WD, kita mulai dengan menghubungkan motor dan baterai ke Arduino MEGA melalui driver L298N.

Langkah 4: Mobil Robot Seluler - Perakitan (Sensor Jarak)

Mobil Robot Seluler - Perakitan (Sensor Jarak)
Mobil Robot Seluler - Perakitan (Sensor Jarak)

Karena ada beberapa komponen yang harus disambungkan, mari tambahkan papan tempat memotong roti, sehingga kita dapat menghubungkan daya dan arde bersama dengan lebih mudah. Setelah kami mengatur ulang kabel, sambungkan sensor jarak dan pasang di depan robot.

Langkah 5: Mobil Robot Seluler - Perakitan (ESP32 CAM)

Mobil Robot Seluler - Perakitan (ESP32 CAM)
Mobil Robot Seluler - Perakitan (ESP32 CAM)

Selanjutnya, sambungkan modul ESP32-CAM, dan pasang di sebelah sensor jarak di dekat bagian depan robot. Ingat komponen yang haus daya ini membutuhkan baterai sendiri dan pengatur DC.

Langkah 6: Mobil Robot Seluler - Perakitan (Chip Dispenser)

Mobil Robot Seluler - Perakitan (Chip Dispenser)
Mobil Robot Seluler - Perakitan (Chip Dispenser)

Sekarang, mari tambahkan chip-dispenser (lebih lanjut tentang ini di bagian "Chip Dispenser"). Pasang kedua servo sesuai dengan diagram Fritzing, dan pasang dispenser di bagian ekor robot.

Langkah 7: Mobil Robot Seluler - Perakitan (Cookie!)

Mobil Robot Seluler - Perakitan (Kue!)
Mobil Robot Seluler - Perakitan (Kue!)

Akhirnya, kami menambahkan suguhan ke dispenser!

Langkah 8: Mobil Robot Seluler - Kode Arduino

RobotCar_Code adalah kode yang perlu Anda muat di Arduino Mega.

Begini cara kerjanya: Arduino mendengarkan byte yang dikirim dari ESP32 melalui komunikasi serial pada pita 115200. Berdasarkan byte yang diterima, mobil akan bergerak maju, mundur, kiri, kanan dll dengan mengirimkan tegangan TINGGI atau RENDAH ke motor untuk mengontrol arah, serta variabel PWM antara 0-255 untuk mengontrol kecepatan. Untuk menghindari tabrakan kode ini juga membaca nilai yang masuk dari sensor jarak dan jika jaraknya kurang dari ambang batas yang ditentukan, robot tidak akan bergerak maju. Terakhir, jika Arduino menerima perintah untuk mengeluarkan camilan, maka akan mengaktifkan servos di Dispenser Chip.

Langkah 9: Mobil Robot Seluler - Kode ESP32

ESP32 memungkinkan komunikasi antara server dan Arduino melalui Wifi. Ini diprogram secara terpisah dari Arduino, dan memiliki kode sendiri:

  • ESP32_Code.ino adalah kode untuk ESP32 untuk mengirim informasi ke Arduino
  • app_httpd.cpp adalah kode yang diperlukan untuk server web ESP32 default dan mengatur fungsi untuk mendengarkan penekanan tombol. Baik untuk debugging dan pengujian pada wifi lokal. Itu tidak digunakan untuk komunikasi di luar jaringan lokal.
  • camera_index.h adalah kode html untuk aplikasi web default
  • camera_pins.h mendefinisikan pin tergantung pada model ESP32

Kode ESP32 menggunakan library Wifi serta Add-on ESP32, yang dapat diinstal di Arduino IDE dengan mengikuti langkah-langkah berikut:

  1. Di Arduino IDE, buka File > Preferences
  2. Kemudian pada tab Settings di bawah Additional Boards Manager URL masukkan berikut "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Sekarang buka Boards Manager dan pergi ke Tools > Board > Boards Manager dan cari ESP32 dengan mengetik "ESP32"
  4. Anda akan melihat "esp32 oleh Sistem Espressif". Klik Instal.
  5. Sekarang add-on ESP32 harus diinstal. Untuk memeriksa kembali ke Arduino IDE dan pergi ke Tools > Board dan pilih "ESP32 Wrover Module".
  6. Sekali lagi, buka Alat > Kecepatan Unggah dan atur ke "115200".
  7. Terakhir, buka Tools > Partition Scheme dan atur ke "Huge APP (3MB No OTA/1MB SPIFFS)
  8. Setelah Anda menyelesaikan ini, saya sarankan mengikuti tutorial ini oleh RandomNerdTutorials yang menjelaskan secara rinci cara menyelesaikan pengaturan ESP32 dan mengunggah kode dengan FTDI ProgrammerProgramming the ESP32

Langkah 10: Dispenser Chip

Dispenser Chip
Dispenser Chip

Chip Dispenser adalah tambahan murah untuk robot seluler yang memungkinkannya memengaruhi lingkungan lokal dan berinteraksi dengan orang / hewan dengan meninggalkan makanan lezat. Ini terdiri dari kotak eksterior karton dengan 2 servo yang dipasang di dalamnya, serta kartrid karton interior yang menampung barang-barang (seperti permen atau makanan anjing) untuk dikeluarkan. Satu servo bertindak sebagai gerbang sementara yang lain mendorong item keluar.

*Semua dimensi dalam milimeter

Langkah 11: Joystick

Joystik
Joystik

Meskipun menyenangkan untuk mengontrol robot dengan keyboard, bahkan lebih menyenangkan dan intuitif untuk menggunakan joystick, di mana robot bereaksi langsung berdasarkan arah yang Anda dorong. Karena robot ini digerakkan melalui penekanan tombol yang direkam di halaman web, kami membutuhkan joystick untuk meniru keyboard. Dengan cara ini pengguna tanpa joystick masih dapat mengontrol robot langsung dari keyboard, tetapi orang lain dapat menggunakan joystick.

Untuk ini kami hanya memiliki Arduino Uno yang tidak memiliki kemampuan untuk menggunakan perpustakaan sehingga kami memprogramnya secara langsung menggunakan protokol USB yang dikenal sebagai Device Firmware Update (DFU) yang memungkinkan arduino untuk di-flash dengan firmware keyboard USB HID generik.. Dengan kata lain, ketika arduino dicolokkan ke usb itu tidak lagi dikenali sebagai arduino tetapi sebagai keyboard!

Langkah 12: Joystick - Diagram Sirkuit

Joystick - Diagram Sirkuit
Joystick - Diagram Sirkuit

Inilah cara kami memasang joystick.

Langkah 13: Joystick - Emulator Keyboard

Agar Arduino Uno Anda dapat meniru keyboard, Anda perlu memprogram secara langsung chip Atmega16u2 di Arduino melalui Manual Device Firmware Update (DFU). Langkah-langkah berikut akan menjelaskan proses untuk mesin Windows, dan semoga membantu Anda menghindari beberapa masalah yang kami alami.

Langkah pertama adalah menulis manual driver usb Atmel ke Arduino sehingga dikenali sebagai USB dan bukan Arduino yang memungkinkannya untuk di-flash dengan programmer FLIP.

  1. Unduh Programmer FLIP Atmel dari sini
  2. Colokkan Arduino Uno Anda
  3. Buka Device Manager dan temukan Arduino. Itu akan berada di bawah COM atau Perangkat Tidak Dikenal. Pasang masuk dan keluar untuk memastikan ini adalah perangkat yang benar.
  4. Setelah Anda menemukan Arduino Uno di Device Manager, klik kanan dan pilih properties > Driver > Update Driver > Browse My Computer For Driver Software > Biarkan saya memilih dari daftar driver yang tersedia di komputer saya > Have Disk > Browse to the file "atmel_usb_dfu.inf" dan pilih. Ini harus berada di folder tempat Programmer Atmel FLIP Anda diinstal. Di komputer saya ada di sini: C:\Program Files (x86)\Atmel\Flip 3.4.7\usb\atmel_usb_dfu.inf
  5. Instal drivernya
  6. Sekarang kembali ke Pengelola Perangkat Anda akan melihat "Perangkat USB Atmel" dengan Arduino Uno yang sekarang diberi label sebagai ATmega16u2!

Sekarang komputer mengenali Arduino Uno sebagai Perangkat USB, kita dapat menggunakan Programmer FLIP untuk mem-flash-nya dengan 3 file terpisah dan mengubahnya menjadi keyboard.

Jika Anda mencabut Arduino Uno Anda setelah bagian pertama, pasang kembali.

  1. Buka FLIP
  2. Setel ulang Arduino Uno dengan menghubungkan daya ke ground secara singkat.
  3. Klik Pilihan Perangkat (ikon seperti microchip) dan pilih ATmega16U2
  4. Klik Pilih Media Komunikasi (ikon seperti kabel usb) dan pilih USB. Jika Anda menyelesaikan bagian pertama dengan benar, tombol abu-abu lainnya akan dapat digunakan.
  5. Buka File > Load Hex File > dan upload file Arduino-usbserial-uno.hex
  6. Di jendela FLIP Anda akan melihat tiga bagian: Alur Operasi, Informasi Penyangga FLASH, dan ATmega16U2. Di Alur Operasi, centang kotak untuk Hapus, Program, dan Verifikasi, lalu klik Jalankan.
  7. Setelah proses ini selesai, klik Mulai Aplikasi di bagian ATmega16U2.
  8. Pasang siklus arduino dengan mencabutnya dari komputer dan mencolokkannya kembali.
  9. Setel ulang Arduino Uno dengan menghubungkan daya ke ground secara singkat.
  10. Buka Arduino IDE dan unggah file JoyStickControl_Code.ino ke board.
  11. Pasang siklus arduino dengan mencabutnya dari komputer dan mencolokkannya kembali.
  12. Setel ulang arduino dengan menghubungkan daya ke ground secara singkat.
  13. Kembali ke FLIP, pastikan Pilihan Perangkat mengatakan Atmega16U2
  14. Klik Pilih Media Komunikasi dan pilih USB.
  15. Buka File > Load Hex File > dan unggah file Arduino-keyboard-0.3.hex
  16. Di jendela FLIP Anda akan melihat tiga bagian: Alur Operasi, Informasi Penyangga FLASH, dan ATmega16U2. Di Alur Operasi, centang kotak untuk Hapus, Program, dan Verifikasi, lalu klik Jalankan.
  17. Setelah proses ini selesai, klik Mulai Aplikasi di bagian ATmega16U2.
  18. Pasang siklus arduino dengan mencabutnya dari komputer dan mencolokkannya kembali.
  19. Sekarang ketika Anda pergi ke Pengelola Perangkat harus ada Perangkat Keyboard HID baru di bawah Keyboard.
  20. Buka notepad atau editor teks apa pun dan mulai gerakkan joystick. Anda akan melihat nomor sedang diketik!

Jika Anda ingin mengubah kode di sketsa Arduino, misalnya menulis perintah baru ke joystick, Anda harus mem-flash-nya dengan semua 3 file setiap kali.

Beberapa tautan berguna: Arduino DFUAtLibUsbDfu.dll tidak ditemukan

Emulator keyboard ini didasarkan pada tutorial ini oleh Michael pada 24 Juni 2012.

Langkah 14: Komunikasi Jaringan

Jaringan komunikasi
Jaringan komunikasi

Untuk menerima aliran video dan mengirim perintah ke robot dari mana saja di dunia, kita memerlukan cara untuk mendapatkan data ke dan dari ESP32-CAM. Ini dilakukan dalam dua bagian, pengendali koneksi di jaringan lokal Anda, dan server publik. Unduh tiga file untuk mencapai ini:

  • Handlers.py: menyampaikan informasi dari ESP32-CAM dan server publik (diuji pada Python 3.8)
  • Flask_app.py: mendefinisikan bagaimana aplikasi Anda merespons permintaan yang masuk.
  • Robot_stream.html: merender video di browser Anda dan mendengarkan perintah melalui keyboard / joystick (diuji di Chrome)

Connection HandlerAnda dapat mengkodekannya secara langsung di app_httpd.cpp, tetapi untuk debugging yang lebih mudah, kami menggunakan skrip Python yang berjalan di PC yang terhubung ke jaringan yang sama. Buka handlers.py dan perbarui alamat IP dan nama pengguna menjadi milik Anda, dan Anda siap melakukannya. Streaming akan dimulai saat Anda menjalankan file ini.

Server Publik Untuk mengakses semua yang ada di internet, Anda dapat memulai server dengan PaaS pilihan Anda. Di pythonanywhere (PA) pengaturan ini membutuhkan waktu kurang dari 5 menit:

  1. Mendaftar untuk akun dan masuk
  2. Buka tab "Web" dan tekan "Tambahkan Aplikasi Web baru", pilih Flask dan Python 3.6
  3. Salin flask_app.py ke direktori /mysite
  4. Salin robot_stream.html ke direktori /mysite/templates
  5. Klik "Muat Ulang"

Dan … Anda sudah siap!

Penafian: Alur kerja jaringan ini cepat dan sederhana tetapi sangat jauh dari ideal. RTMP atau soket akan lebih sesuai untuk streaming, tetapi tidak didukung di PA dan memerlukan beberapa pengalaman dengan pengaturan jaringan dan server. Anda juga disarankan untuk menambahkan beberapa mekanisme keamanan untuk mengontrol akses.

Langkah 15: Menyatukan Semuanya

Sekarang, hidupkan robot Anda, jalankan handlers.py di komputer (terhubung ke jaringan yang sama dengan robot), dan Anda dapat mengontrol robot dari browser berdasarkan url yang Anda tetapkan dari mana saja yang Anda inginkan. (mis.

Direkomendasikan: