Daftar Isi:

Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi: 15 Langkah (dengan Gambar)
Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi: 15 Langkah (dengan Gambar)

Video: Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi: 15 Langkah (dengan Gambar)

Video: Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi: 15 Langkah (dengan Gambar)
Video: Building a Speech & Web Controlled Surveillance Spider Robot using Raspberry Pi & Arduino 2024, November
Anonim
Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi
Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi
Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi
Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi
Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi
Bangun Robot Streaming Video Terkendali Internet Anda Dengan Arduino dan Raspberry Pi

Saya @RedPhantom (alias LiquidCrystalDisplay / Itay), seorang siswa berusia 14 tahun dari Israel yang belajar di SMP Max Shein untuk Sains dan Matematika Lanjutan. Saya membuat proyek ini untuk dipelajari dan dibagikan semua orang!

Anda mungkin berpikir sendiri: hmm… Saya seorang geek… Dan anak-anak saya ingin saya membuat proyek dengan mereka… Dia ingin membuat robot. Dia ingin mendandaninya seperti anak anjing kecil. Ini proyek akhir pekan yang bagus!

Raspberry Pi sempurna untuk setiap penggunaan: hari ini kami akan mengungkapkan kemampuan komputer mikro ini untuk membuat robot. Robot ini dapat:

  • Berkeliling dan dikendalikan melalui LAN (WiFi) menggunakan komputer mana pun yang terhubung ke jaringan WiFi yang sama dengan Raspberry Pi.
  • Streaming video langsung menggunakan Modul Kamera Raspberry Pi
  • Kirim data sensor menggunakan Arduino

Untuk melihat apa yang Anda butuhkan untuk proyek ringan yang bagus ini, baca saja langkah berikutnya (peringatan) dan setelah itu langkah Dicari: Komponen.

Ini repo GitHub: REPO GITHUB OLEH SAYA

Berikut adalah Situs Proyek: SITUS PROYEK OLEH SAYA

Langkah 1: Peringatan: Hati-hati Mencoba Ini di Rumah

PERINGATAN:

PENULIS TUTORIAL INI MENGAsumsikan ANDA MEMILIKI PENGETAHUAN YANG CUKUP TENTANG LISTRIK DAN PENGOPERASIAN DASAR ALAT LISTRIK. JIKA ANDA TIDAK HATI-HATI DAN TIDAK MENGIKUTI PETUNJUK DALAM TUTORIAL INI ANDA MUNGKIN: MERUSAK PERALATAN ELEKTRONIK, MEMBUAT DIRI SENDIRI ATAU MENYEBABKAN KEBAKARAN. Harap berhati-hati dan gunakan akal sehat. Jika Anda tidak memiliki pengetahuan yang diperlukan untuk tutorial ini (menyolder, dasar-dasar elektronika), silakan lakukan dengan individu yang memilikinya. Terima kasih.

PENULIS INSTRUCTABLE INI MENGHILANGKAN TANGGUNG JAWAB DIRINYA ATAS KERUSAKAN YANG DISEBABKAN ATAU HILANG PROPERTI ATAU KERUSAKAN FISIK. GUNAKAN Akal Sehat

Langkah 2: Komponen

Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi

Sebelum kita memanaskan Besi solder, kita perlu membahas apa yang harus dihubungkan ke apa. Saya membuat bagan sederhana ini (MS Paint tidak pernah mengecewakan saya) yang menjelaskan di mana bagian tertentu berada di dalam robot.

Gambar dibuat sehingga Anda dapat memperbesar dan melihat dalam resolusi penuh dan membaca teks.

Langkah 6: Alamat untuk Pi

Arduino berbicara dengan Pi sesuai dengan rencana. Dan Pi berbicara ke komputer, jadi bagaimana semua ini bekerja?

Mari kita lihat Urutan Inisiasi Koneksi kami:

  1. Raspberry Pi dimulai
  2. Arduino Mulai
  3. Raspberry Pi memulai Klien TCP. Ini menembakkan alamat IP-nya melalui LED.
  4. Raspberry Pi memulai layanan Komunikasi Serial dan terhubung ke Arduino

Oleh karena itu kami telah menjalin semacam komunikasi:

Komputer Raspberry Pi Arduino

Saya telah menggunakan Visual Basic. NET (Microsoft Visual Studio 2013 Community) untuk menulis program yang berbicara dengan Raspberry Pi dan Python untuk menulis protokol Arduino/Raspberry Pi.

Yang perlu Anda lakukan untuk mengetahui alamat IP Pi Anda, adalah menghubungkannya ke layar HDMI, masuk ke Shell dan ketik perintah:

nama host -I

Langkah 7: Rencana

Sekarang setelah kita mendapatkan alamat IP Pi, kita akan memasukkan SSH ke dalamnya (SSH adalah Secure Shell - kita terhubung dari jarak jauh ke shell Linux) dan menulis file yang menampilkan alamat IP Server. Pi, saat startup akan melakukannya juga dan menulis port yang didengarkannya. Di sini saya hanya akan memberikan beberapa contoh dari kode tetapi tersedia untuk diunduh dari langkah ini dan dari cabang GitHub yang saya buat. Detailnya nanti.

Ini bekerja seperti:

  1. RPi dimulai.
  2. RPi memulai program TCP pada IP lokal dan port yang ditunjuk.
  3. RPI mulai streaming video
  4. RPI dimatikan.

Langkah 8: Menjadi Fisik

Sekarang, kami siap untuk mulai secara fisik membangun semuanya. Jika Anda belum membaca langkah 1 (teks peringatan dan lisensi), lakukan sebelum melanjutkan. Saya tidak bertanggung jawab atas kerusakan yang terjadi. Dan jika ragu, robot ini tidak boleh digunakan untuk tujuan militer kecuali itu adalah kiamat zombie. Dan itupun gunakan akal sehat.

Disarankan Anda membaca instruksi mendengarkan di Daftar Bacaan.

Unduh skema koneksi dari langkah "Koneksi".

MOTOR

Motor yang Anda beli mungkin terlihat seperti ini, dan tidak apa-apa jika tidak: jika hanya memiliki dua kabel (dalam kebanyakan kasus hitam dan merah), itu akan berfungsi. Cari lembar data mereka secara online untuk melihat tegangan dan arus operasinya. Jangan ragu untuk mengajukan pertanyaan di bagian komentar. Saya selalu membacanya.

H-BRIDGE

Saya belum pernah bekerja dengan H-Bridge sebelumnya. Saya mencari di Google sedikit dan menemukan instruksi bagus yang menjelaskan prinsip-prinsip HB. Anda dapat melihat di sana juga (lihat langkah Daftar Bacaan) dan kaitkan juga milik Anda. Saya tidak akan menjelaskan banyak. Anda dapat membaca di sana dan mengetahui semua yang Anda harus tentang sirkuit ini.

LED

Bola lampu kecil ini dapat berjalan dari tegangan logis hanya karena hampir tidak memerlukan arus, dan tegangan 3V-5V 4mA-18mA. Opsional.

ARDUINO

Arduino akan mendapatkan sinyal dan perintah melalui koneksi Serial dari Raspberry Pi. Kami menggunakan Arduino untuk mengontrol motor kami karena Raspberry Pi tidak dapat mengeluarkan nilai analog melalui GPIO.

Langkah 9: Memulai Otomatis Raspberry Pi

Setiap kali Anda menyalakan Raspberry Pi, Anda harus mengetikkan nama pengguna dan kata sandi. Kami tidak ingin melakukan itu karena terkadang kami tidak dapat menghubungkan keyboard ke Pi, jadi kami akan mengikuti langkah-langkah dari tutorial ini untuk memulai secara otomatis program yang menyiapkan Pi. Jika itu akan tetap dalam satu lingkaran, kita selalu dapat Ctrl+C untuk menginterupsinya.

  • sudo crontab -e
  • Dan kemudian kita akan memasukkan perintah yang menambahkan file itu ke auto-stratup di cron manager.

Kami akan memanggil file pibot.sh yang akan memberikan perintah untuk memulai semua jenis skrip python untuk mengoperasikan robot. Mari kita bahas: (Kami sudo dengan program Python tirai untuk memungkinkan program mengakses GPIO)

raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264

Kode yang melakukan semua pekerjaan di sisi pi akan dipanggil upon_startup.sh.

Ini adalah skrip shell sederhana yang menjalankan semuanya.

Langkah 10: Houeston, Kami Punya Masalah… Motor DC Bukan Model yang Sama

Saya sudah menguji H-Bridge dan berfungsi dengan baik, tetapi ketika saya mengaitkan motor yang saya dapatkan dari platform robot, saya memesan secara online kedua motor itu berputar dengan kecepatan yang berbeda dan membuat suara yang berbeda. Saya mengubah throttle menjadi 100% pada motor. Keduanya tidak bisa berjalan dengan kemampuan maksimalnya.

Sepertinya ini adalah dua motor yang berbeda. Yang satu memiliki torsi yang lebih besar yang bagus untuk jenis robot ini tetapi yang lain tidak akan menggerakkan robot. Jadi itu berputar-putar.

Pada titik ini, yang saya dapatkan adalah program serial pada Arduino bekerja dengan baik tetapi server TCP pada PC dan Klien TCP pada Pi belum dikodekan. Pada saya harus menyelesaikan entri ini untuk kompetisi. Apa yang saya lakukan?

  1. Pertama, saya tiga kali lipat tegangan untuk motor. Lembar data mengatakan 3V, 6V tidak memindahkannya. Ini 9V kemudian. Saya menghubungkan baterai teo secara paralel untuk menggandakan arus dan tegangan tetap sama.
  2. Apakah saya memiliki motor lain yang cocok untuk dipasang di platform? Mungkin saya bisa melihat Jika mereka adalah model yang serupa.
  3. Saya dapat mengganti ke Servos jika cokelatnya benar-benar mengenai kipas.

Sekolah dimulai. Aku harus melihat apa yang harus dilakukan.

Catatan: Mengapa saya menulis masalah yang saya temui di sini? Jadi jika Anda kurang berpengalaman dan memiliki masalah yang sama juga Anda akan tahu apa yang harus dilakukan.

Solusinya:

Jadi saya telah membuat tes lain. Saya telah mengadaptasi perbedaan kecepatan dalam kode Arduino.

CATATAN: motor dapat berputar dalam kecepatan yang berbeda untuk Anda! Ubah nilai dalam sketsa Arduino.

Langkah 11: [TCP]: Mengapa TCP dan Bukan Shell yang Aman? Apa Itu TCP?

Saya punya dua penjelasan mengapa menggunakan Tcp dan bukan SSH untuk P. C. - Komunikasi Pi.

  1. Pertama, SSH (Secure Shell, lihat Penjelasan) dimaksudkan untuk meluncurkan perintah dari komputer jarak jauh. Membuat Pi merespons dengan informasi yang kita inginkan lebih sulit karena satu-satunya pilihan kita untuk menganalisis data adalah melalui pemrosesan string yang sulit dan membosankan.
  2. Kedua, kita sudah tahu cara menggunakan SSH dan kita ingin mempelajari lebih banyak cara komunikasi antar perangkat dalam tutorial ini.

TCP, atau Transmission Control Protocol, adalah protokol inti dari Internet Protocol Suite. Itu berasal dari implementasi jaringan awal yang melengkapi Internet Protocol (IP). Oleh karena itu, seluruh rangkaian biasanya disebut sebagai TCP/IP. TCP menyediakan pengiriman aliran oktet yang andal, teratur, dan diperiksa kesalahan antara aplikasi yang berjalan pada host yang berkomunikasi melalui jaringan IP.

(Dari Wikipedia)

Jadi TCP Pro adalah:

  • Aman
  • Cepat
  • Bekerja di mana saja di jaringan
  • Menyediakan metode untuk memeriksa transmisi data yang benar
  • Flow Control: memiliki perlindungan jika pengirim data mengirimkan data terlalu cepat untuk didaftarkan dan diproses oleh klien.

Dan kontranya adalah:

  • Di TCP Anda tidak dapat menyiarkan (Mengirim data ke semua perangkat di jaringan) dan multicast (sama tetapi sedikit berbeda- memberikan kemampuan untuk setiap perangkat disiarkan seperti server).
  • Bug di perpustakaan program dan sistem operasi Anda (yang mengelola sendiri komunikasi TCP, router Anda hampir tidak melakukan apa pun kecuali menghubungkan dua [atau lebih] perangkat)

Mengapa tidak menggunakan UDP, Anda mungkin bertanya? Tidak seperti TCP, UDP tidak memastikan klien Anda mendapatkan data sebelum mengirim lebih banyak. Seperti mengirim Email dan tidak tahu apakah klien menerimanya. Selain itu, UDP kurang aman. Untuk info lebih lanjut, baca posting ini dari Pengguna Super Stack Exchange

Artikel ini bagus dan direkomendasikan.

Langkah 12: [TCP]: Mari Membuat Klien

Klien (Raspberry Pi dalam kasus kami), yang menerima data dari server (PC kami dalam kasus kami) akan mendapatkan data untuk dikirim ke Pi (Perintah serial yang akan dilakukan pada Arduino) dan menerima data kembali (Bacaan Sensor dan feedback langsung dari Arduino. Skema terlampir menunjukkan hubungan antara ketiganya.

Artikel Python Wiki TcpCommunication menunjukkan bahwa sangat mudah untuk membuat komunikasi semacam itu dengan beberapa baris kode menggunakan modul soket bawaan. Kami akan memiliki program di PC dan program lain di Pi.

Kami akan bekerja dengan interupsi. Pelajari lebih lanjut di langkah Penjelasan tentang mereka. Baca di sana tentang buffer juga. Sekarang, kita dapat membaca data yang kita miliki menggunakan data=s.recv(BUFFER_SIZE) tetapi itu akan menjadi berapa banyak karakter yang telah kita definisikan dengan gigitan kosong. Bisakah kita menggunakan interupsi? Pertanyaan lain: apakah buffer akan kosong atau akan menunggu server mengirim lebih banyak data dalam hal ini server/klien akan mengeluarkan pengecualian batas waktu?

Mari kita atasi itu satu per satu. Sebelum kita melakukannya, saya telah melihat artikel Wikipedia ini yang mencantumkan port TCP dan UDP yang digunakan. Setelah melihat sekilas, saya memutuskan bahwa proyek ini akan berkomunikasi pada port 12298 karena tidak digunakan oleh Sistem Operasi dan layanan lokal.

Langkah 13: Coba Komunikasi TCP Kami

Untuk melihat apakah kita dapat menggunakan interupsi, mari kita buat klien dan server sederhana menggunakan Baris Perintah Python. Saya akan melakukannya dalam langkah-langkah berikut:

  1. Mulai program yang mengirim teks melalui TCP dalam satu lingkaran melalui port tirai
  2. Mulai program lain (secara paralel) yang membaca semua teks dalam satu lingkaran dan mencetaknya ke layar.

Hanya segmen program yang akan ditampilkan. Semua program dijalankan dengan Python 3. Semua program ini lakukan adalah mengirimkan perintah serial dari keyboard pengguna PC ke Arduino melalui Pi.

  • SBcontrolPC.py - Untuk dijalankan di PC. Memulai koneksi TCP pada alamat lokal dan pada port yang ditentukan (saya menggunakan port 12298, lihat langkah sebelumnya mengapa)
  • SBcontrolPi.py - Untuk dijalankan di Pi. Membaca buffernya setiap setengah detik (0,5 detik). Memulai skrip shell yang mengelola hal-hal seperti streaming video, dll.

Direkomendasikan: