Isi kandungan:

Robot Kehadiran Maya: 15 Langkah
Robot Kehadiran Maya: 15 Langkah

Video: Robot Kehadiran Maya: 15 Langkah

Video: Robot Kehadiran Maya: 15 Langkah
Video: BERPURA - PURA JADI ROBOT | ALUR FILM I AM NOT A ROBOT 2017 2024, November
Anonim
Image
Image
Kereta Robot Bergerak
Kereta Robot Bergerak

Robot mudah alih ini berinteraksi dengan persekitaran fizikalnya, dengan mewakili "kehadiran maya" orang yang mengendalikannya dari jauh. Ia dapat diakses oleh siapa saja, di mana saja di dunia, untuk membuang makanan dan bermain dengan anda.

Karya di sini dikembangkan oleh dua orang (satu di Jerman dan satu di AS) sebagai usaha untuk melampaui cara tradisional komunikasi berasaskan internet dengan membuat antara muka fizikal untuk interaksi jarak jauh. Oleh kerana COVID-19 terus mempengaruhi dunia, dan setiap orang bertanggungjawab untuk menghadkan pendedahan fizikal kita kepada orang, kita berusaha untuk mengembalikan hubungan nyata yang merupakan bahagian dari interaksi fizikal.

Ia didasarkan pada ESP32-Camera-Robot-FPV-Teacher-Entry yang diarahkan dan diubah untuk memasukkan sensor jarak, dispenser rawatan dan kemampuan "kawalan dari mana saja di dunia", dengan syarat anda mempunyai sambungan internet yang agak stabil.

Bekalan

Projek ini mempunyai 4 bahagian utama - Mobil Robot Bergerak, Chip Dispenser, Joystick, dan Rangkaian Komunikasi Rangkaian.

Kereta Robot Bergerak

  • Papan roti
  • 2 Wheel Drive Motor dan Chassis Robot Kit (termasuk roda, motor DC, papan pemasangan dan skru)
  • Arduino Mega 2560 (jika anda membina tanpa sensor jarak atau Chip Dispenser, Uno akan mempunyai pin yang mencukupi)
  • (3) Baterai 9V (ada beberapa lagi kerana anda akan menguruskannya debug)
  • Modul Bekalan Kuasa 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
  • Pemandu Motor L298N
  • (3) LED (warna apa pun)
  • (3) 220 Perintang Ohm

Chip Dispenser

  • (2) SG90 Servos
  • Kadbod / kadbod

Batang Joystick

  • Arduino Uno
  • Modul Joystick
  • Papan Roti Mini, (1) LED, (1) 220 Ohm Perintang (pilihan)

Yang lain

Banyak Breadboard Jumper WiresExtra Cardboard / PaperboardTapeScissorsRape / Measuring TapeSmall Philips ScrewdriverSmall Flathead Screwdriver

Sabar =)

Langkah 1: Kereta Robot Bergerak

Casis Robot Car berfungsi sebagai platform mudah alih, dengan Arduino MEGA sebagai pengawal mikro utama yang menggerakkan motor, membaca nilai sensor dan menggerakkan servo. Sebilangan besar tindakan dilakukan dengan meminta Arduino MEGA menerima arahan melalui komunikasi bersiri, yang dihantar dari ESP32-CAM. Walaupun ESP32 menyediakan live streaming kamera untuk mengawal robot, fungsi lain adalah untuk menguruskan sambungan tanpa wayar antara robot dan pelayan, oleh itu membolehkan pengguna mengendalikannya dari mana saja di dunia. ESP32 menerima arahan dari laman web melalui penekanan kekunci dan mengirimkannya ke Arduino MEGA sebagai nilai char. Berdasarkan nilai yang diterima, kereta akan bergerak maju, mundur dan lain-lain. Kerana kawalan jauh melalui internet bergantung pada banyak faktor luaran termasuk kependaman tinggi, kualiti aliran yang buruk, dan bahkan pemutusan, sensor jarak dimasukkan untuk mengelakkan robot daripada terhempas ke dalam objek. * Oleh kerana keperluan kuasa tinggi dan berfluktuasi cip ESP32, Power Supply Regulator disyorkan untuk digunakan dengan kuasa bateri (lihat gambarajah pendawaian).

Langkah 2: Robot Mudah Alih - Diagram Litar

Kereta Robot Bergerak - Rajah Litar
Kereta Robot Bergerak - Rajah Litar

Kami akan memandu anda untuk mengumpulkan langkah demi langkah ini.

Langkah 3: Kereta Robot Bergerak - Pemasangan (Motor)

Kereta Robot Bergerak - Perhimpunan (Motor)
Kereta Robot Bergerak - Perhimpunan (Motor)

Selepas anda memasang casis 2WD, kami mulakan dengan menyambungkan motor dan bateri ke Arduino MEGA melalui pemacu L298N.

Langkah 4: Kereta Robot Bergerak - Pemasangan (Sensor Jarak)

Kereta Robot Bergerak - Perhimpunan (Sensor Jarak)
Kereta Robot Bergerak - Perhimpunan (Sensor Jarak)

Oleh kerana terdapat beberapa komponen untuk disambungkan, mari kita tambahkan papan roti, supaya kita dapat menghubungkan kuasa dan tanah bersama dengan lebih mudah. Selepas kami menyusun semula wayar, sambungkan sensor jarak dan pasangkannya di bahagian depan robot.

Langkah 5: Kereta Robot Bergerak - Perhimpunan (ESP32 CAM)

Kereta Robot Bergerak - Perhimpunan (ESP32 CAM)
Kereta Robot Bergerak - Perhimpunan (ESP32 CAM)

Seterusnya, sambungkan modul ESP32-CAM, dan betulkan di sebelah sensor jarak berhampiran bahagian depan robot. Ingat, komponen yang cukup haus ini memerlukan bateri sendiri dan pengatur DC.

Langkah 6: Kereta Robot Bergerak - Pemasangan (Chip Dispenser)

Kereta Robot Bergerak - Pemasangan (Chip Dispenser)
Kereta Robot Bergerak - Pemasangan (Chip Dispenser)

Sekarang, mari kita tambahkan chip-dispenser (lebih lanjut mengenai ini di bahagian "Chip Dispenser"). Kabelkan dua servo mengikut rajah Fritzing, dan pasangkan dispenser di ekor robot.

Langkah 7: Kereta Robot Bergerak - Perhimpunan (Kuki!)

Kereta Robot Bergerak - Perhimpunan (Kuki!)
Kereta Robot Bergerak - Perhimpunan (Kuki!)

Akhirnya, kami menambah makanan ringan ke dispenser!

Langkah 8: Kereta Robot Bergerak - Kod Arduino

RobotCar_Code adalah kod yang perlu anda muatkan di Arduino Mega.

Inilah cara kerjanya: Arduino mendengar bait yang dihantar dari ESP32 melalui komunikasi bersiri pada jalur 115200. Berdasarkan bait yang diterima, kereta akan bergerak maju, mundur, kiri, kanan dan lain-lain dengan menghantar voltan TINGGI atau RENDAH ke motor untuk mengawal arah, serta pemboleh ubah PWM antara 0-255 untuk mengawal kelajuan. Untuk mengelakkan perlanggaran, kod ini juga membaca nilai yang masuk dari sensor jarak dan jika jaraknya kurang dari ambang yang ditentukan, robot tidak akan bergerak ke depan. Terakhir, jika Arduino menerima perintah untuk mengeluarkan makanan, ia akan mengaktifkan servo di Chip Dispenser.

Langkah 9: Kereta Robot Bergerak - Kod ESP32

ESP32 membolehkan komunikasi antara pelayan dan Arduino melalui Wifi. Ia diprogramkan secara berasingan dari Arduino, dan mempunyai kodnya sendiri:

  • ESP32_Code.ino adalah kod untuk ESP32 menghantar maklumat ke Arduino
  • app_httpd.cpp adalah kod yang diperlukan untuk pelayan web ESP32 lalai dan tetapkan fungsi untuk mendengar tekanan kekunci. Bagus untuk penyahpepijatan dan pengujian pada wifi tempatan. Ia tidak digunakan untuk komunikasi di luar rangkaian tempatan.
  • camera_index.h adalah kod html untuk aplikasi web lalai
  • camera_pins.h menentukan pin bergantung pada model ESP32

Kod ESP32 menggunakan perpustakaan Wifi dan juga Pengaya ESP32, yang boleh dipasang di Arduino IDE dengan mengikuti langkah-langkah berikut:

  1. Di Arduino IDE pergi ke Fail> Keutamaan
  2. Kemudian di tab Tetapan di bawah URL Pengurus Papan Tambahan masukkan "https://dl.espressif.com/dl/package_esp32_index.json" berikut
  3. Sekarang buka Pengurus Papan dan pergi ke Alat> Papan> Pengurus Papan dan cari ESP32 dengan menaip "ESP32"
  4. Anda mesti melihat "esp32 by Espressif Systems". Klik Pasang.
  5. Sekarang add-on ESP32 harus dipasang. Untuk memeriksa kembali ke Arduino IDE dan pergi ke Tools> Board dan pilih "ESP32 Wrover Module".
  6. Sekali lagi pergi ke Tools> Upload Speed dan tetapkan ke "115200".
  7. Terakhir, pergi ke Tools> Partition Scheme dan tetapkan ke "Huge APP (3MB No OTA / 1MB SPIFFS)
  8. Sebaik sahaja anda menyelesaikannya, saya cadangkan mengikuti tutorial ini oleh RandomNerdTutorials yang menerangkan secara terperinci cara menyelesaikan penyediaan ESP32 dan memuat naik kod dengan FTDI Programmer Memprogram ESP32

Langkah 10: Chip Dispenser

Chip Dispenser
Chip Dispenser

Chip Dispenser adalah tambahan yang murah untuk robot bergerak yang memungkinkannya mempengaruhi persekitaran setempat dan berinteraksi dengan orang / haiwan dengan meninggalkan makanan yang enak. Ini terdiri daripada kotak luaran karton dengan 2 servo dipasang di dalamnya, serta kartrij karton dalaman yang menyimpan barang-barang (seperti gula-gula atau makanan anjing) untuk dikeluarkan. Satu servo berfungsi sebagai gerbang sementara yang lain menolak item keluar.

* Semua dimensi adalah dalam milimeter

Langkah 11: Joystick

Batang Joystick
Batang Joystick

Walaupun dapat mengawal robot dengan papan kekunci, lebih menyenangkan dan intuitif untuk menggunakan kayu bedik, di mana robot bertindak balas secara langsung berdasarkan arah yang anda dorong. Oleh kerana robot ini digerakkan melalui penekanan kekunci yang dirakam di laman web, kami memerlukan kayu bedik kami untuk meniru papan kekunci. Dengan cara ini pengguna tanpa kayu bedik masih dapat mengawal robot secara langsung dari papan kekunci, tetapi yang lain dapat menggunakan kayu bedik.

Untuk ini, kami hanya memiliki Arduino Uno yang tidak memiliki kemampuan untuk menggunakan perpustakaan, jadi kami memprogramkannya secara langsung menggunakan protokol USB yang dikenali sebagai Device Firmware Update (DFU) yang membolehkan arduino dikedip dengan firmware keyboard USB HID generik. Dengan kata lain, apabila arduino dipasang ke usb, ia tidak lagi dikenali sebagai arduino tetapi sebagai papan kekunci!

Langkah 12: Joystick - Litar Diagram

Joystick - Rajah Litar
Joystick - Rajah Litar

Inilah cara kami memasang kayu bedik.

Langkah 13: Joystick - Emulator Papan Kekunci

Agar Arduino Uno anda meniru papan kekunci, anda perlu memprogramkan cip Atmega16u2 secara langsung di Arduino melalui Kemas kini Firmware Peranti Manual (DFU). Langkah-langkah berikut akan menerangkan proses untuk mesin Windows, dan diharapkan dapat membantu anda mengelakkan beberapa masalah yang kami hadapi.

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

  1. Muat turun Atmel's FLIP Programmer dari sini
  2. Pasangkan Arduino Uno anda
  3. Pergi ke Pengurus Peranti dan cari Arduino. Ini akan berada di bawah COM atau Peranti Tidak Diketahui. Pasang dan keluar untuk memastikan ini adalah peranti yang betul.
  4. Setelah anda menemui Arduino Uno di Device Manager, klik kanan dan pilih hartanah> Driver> Update Driver> Browse My Computer For Driver Software> Izinkan saya memilih dari senarai driver yang ada di komputer saya> Have Disk> Browse to the fail "atmel_usb_dfu.inf" dan pilih. Ini harus berada di folder di mana Atmel FLIP Programmer anda dipasang. Di komputer saya ada di sini: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Pasang pemacu
  6. Sekarang kembali ke Pengurus Peranti, anda akan melihat "Atmel USB Devices" dengan Arduino Uno kini dilabel sebagai ATmega16u2!

Setelah komputer mengenali Arduino Uno sebagai Peranti USB, kita dapat menggunakan Programmer FLIP untuk mem-flashnya dengan 3 fail berasingan dan mengubahnya menjadi papan kekunci.

Sekiranya anda mencabut Arduino Uno dari bahagian pertama, pasangkannya semula.

  1. Buka FLIP
  2. Tetapkan semula Arduino Uno dengan menghubungkan kuasa ke tanah secara ringkas.
  3. Klik Pemilihan Peranti (ikon seperti microchip) dan pilih ATmega16U2
  4. Klik Pilih Medium Komunikasi (ikon seperti tali usb) dan pilih USB. Sekiranya anda melengkapkan bahagian pertama dengan betul butang berwarna kelabu yang lain boleh digunakan.
  5. Pergi ke Fail> Muatkan Fail Hex> dan muat naik fail Arduino-usbserial-uno.hex
  6. Di tetingkap FLIP, anda akan melihat tiga bahagian: Aliran Operasi, Maklumat Buffer FLASH, dan ATmega16U2. Dalam Aliran Operasi centang kotak untuk Padam, Program, dan Sahkan, kemudian klik Jalankan.
  7. Setelah proses ini selesai, klik Mula Aplikasi di bahagian ATmega16U2.
  8. Pasangkan kitaran arduino dengan mencabutnya dari komputer dan memasangnya kembali.
  9. Tetapkan semula Arduino Uno dengan menyambungkan kuasa ke tanah secara ringkas.
  10. Buka Arduino IDE dan muat naik fail JoyStickControl_Code.ino ke papan.
  11. Pasangkan kitaran arduino dengan mencabutnya dari komputer dan memasangnya kembali.
  12. Tetapkan semula arduino dengan menyambungkan kuasa ke tanah secara ringkas.
  13. Kembali ke FLIP, pastikan Pemilihan Peranti mengatakan Atmega16U2
  14. Klik Pilih Medium Komunikasi dan pilih USB.
  15. Pergi ke Fail> Muatkan Fail Hex> dan muat naik fail Arduino-keyboard-0.3.hex
  16. Di tetingkap FLIP, anda akan melihat tiga bahagian: Aliran Operasi, Maklumat Buffer FLASH, dan ATmega16U2. Dalam Aliran Operasi centang kotak untuk Padam, Program, dan Sahkan, kemudian klik Jalankan.
  17. Setelah proses ini selesai, klik Mula Aplikasi di bahagian ATmega16U2.
  18. Pasangkan kitaran arduino dengan mencabutnya dari komputer dan memasangnya kembali.
  19. Sekarang apabila anda pergi ke Pengurus Peranti mesti ada Peranti Papan Kekunci HID baru di bawah Papan Kekunci.
  20. Buka notepad atau editor teks dan mulailah menggerakkan kayu bedik. Anda mesti melihat nombor ditaip!

Sekiranya anda ingin menukar kod dalam lakaran Arduino, misalnya menulis perintah baru ke kayu bedik, anda perlu memuatkannya dengan ketiga-tiga fail setiap kali.

Beberapa pautan berguna: Arduino DFUAtLibUsbDfu.dll tidak dijumpai

Emulator papan kekunci ini berdasarkan tutorial ini oleh Michael pada 24 Jun 2012.

Langkah 14: Komunikasi Rangkaian

Komunikasi Rangkaian
Komunikasi Rangkaian

Untuk menerima aliran video dan mengirim arahan ke robot dari mana saja di dunia, kami memerlukan cara untuk mendapatkan data ke dan dari ESP32-CAM. Ini dilakukan dalam dua bahagian, pengendali sambungan di rangkaian tempatan anda, dan pelayan awam. Muat turun tiga fail untuk mencapai ini:

  • Handlers.py: menyampaikan maklumat dari ESP32-CAM dan pelayan awam (diuji pada Python 3.8)
  • Flask_app.py: menentukan bagaimana aplikasi anda bertindak balas terhadap permintaan masuk.
  • Robot_stream.html: membuat video di penyemak imbas anda dan mendengar arahan melalui papan kekunci / kayu bedik (diuji pada Chrome)

Anda boleh membuat kod ini secara langsung di app_httpd.cpp, tetapi untuk penyahpepijatan yang lebih mudah, kami menggunakan skrip Python yang berjalan pada PC yang disambungkan ke rangkaian yang sama. Buka handlers.py dan kemas kini alamat IP dan nama pengguna anda sendiri, dan anda sudah bersedia. Aliran akan bermula semasa anda menjalankan fail ini.

Pelayan Awam Untuk mengakses semua yang ada di internet, anda boleh memulakan pelayan dengan PaaS pilihan anda. Pada pengaturan pythonanywhere (PA), masa ini mengambil masa kurang dari 5 minit:

  1. Daftar untuk akaun dan log masuk
  2. Pergi ke tab "Web" dan tekan "Tambah Aplikasi Web baru", pilih Flask dan Python 3.6
  3. Salin flask_app.py ke dalam direktori / mysite
  4. Salin robot_stream.html ke dalam direktori / mysite / templates
  5. Klik "Muat semula"

Dan … anda sudah bersedia!

Penafian: Alur kerja rangkaian ini cepat dan mudah tetapi jauh dari ideal. RTMP atau soket lebih sesuai untuk streaming, tetapi tidak disokong pada PA dan memerlukan beberapa pengalaman dengan penyediaan rangkaian dan pelayan. Sebaiknya anda menambahkan beberapa mekanisme keselamatan untuk mengawal akses.

Langkah 15: Menggabungkan Semuanya

Sekarang, hidupkan robot anda, jalankan handlers.py di komputer (disambungkan ke rangkaian yang sama dengan robot), dan anda boleh mengawal robot dari penyemak imbas berdasarkan url yang anda tetapkan dari mana sahaja yang anda mahukan. (mis.

Disyorkan: