Membangun Internet Controlled Robot Video-Streaming dengan Arduino dan Raspberry Pi

Picture of Build your Internet Controlled Video-Streaming Robot with Arduino and Raspberry Pi

IMG_1351.JPGIMG_1528.JPG

 

 

 

 

Langkah 1: Dicari: Komponen

Semua yang Anda butuhkan untuk proyek cahaya akhir minggu adalah:

Sebuah Raspberry Pi

Model akan melakukan: kita akan menggunakan dua port USB: satu untuk adaptor WiFi dan satu lagi untuk Arduino.

Saya menggunakan Raspberry Pi Model B 2

Sebuah Adapter WiFi untuk Anda Raspberry Pi. Menempati 1 port USB Pi. (Terhubung dengan Raspberry Pi)

Sebuah USB-A ke kabel pendek B USB. Menempati 1 port USB Pi. (Terhubung dengan Raspberry Pi)

Arduino

(Terhubung dengan Raspberry Pi)

Sekali lagi, model apapun akan dilakukan. Ini micro-controller kecil akan menerima output dari sensor dan mengirimkan sinyal ke motor DC kami.

Saya menggunakan Uno Arduino.

Sensor (pilihan). (Terhubung dengan Arduino)

Ini akan mendapatkan informasi dari lingkungan dan mengumpulkan bagi kita.

Ganda H-Bridge

H-Bridge digunakan untuk mengontrol motor, seperti transistor besar. Arduino mengirimkan pulsa (PWM, lihat langkah akhir untuk penjelasan) dengan H-Bridge yang kekuatan motor DC dari sumber eksternal. (Lihat TEGANGAN LOGIS dan TEGANGAN OPERASIONAL di langkah terakhir (Penjelasan)).

Saya menggunakan dual H-jembatan L298N Berbasis.

(Terhubung dengan Arduino)

DC Motors

Catatan: Mereka harus menjadi orang-orang model yang sama sehingga mereka kecepatan adalah sama. Menggunakan motor Servo juga pilihan: Hook up GND (Ground) kawat ke Arduino dan sumber poer. Sinyal untuk pin PWN-bisa pada micro-controller dan kawat PWR untuk sumber daya eksternal. Metode ini tidak memerlukan H-Bridge.

Sebuah Pack Baterai untuk Pi dan Arduino.

Saya sarankan Bank Battery karena dilengkapi dengan rangkaian pengisian dan dapat diisi dari komputer manapun

Saya menggunakan 5V 5000mAh 1A Baterai Bank.

Catatan: minimum untuk 1A diperlukan untuk robot untuk beroperasi secara normal. Kurang dari itu akan menyebabkan pemanasan dan dapat merusak baterai.

(Terhubung dengan H-Bridge)

Breadboard jumper

Mereka bajingan kecil yang sangat berguna. Mereka menghubungkan semua komponen Anda bersama-sama tanpa solder – solusi utama untuk prototyping.

Pack 6V Battery Pack / Baterai untuk motor Anda

Seperti yang saya menggunakan 4 baterai AA, Anda harus menggunakan baterai yang sesuai motor DC Anda. Catatan: Tidak seperti komponen lainnya, DC motor (seperti LED) menggunakan semua saat ini diberikan kepada mereka dan sehingga Anda harus menggunakan baterai Alkaline biasa dan sel tidak dapat diisi ulang. Hanya berhati-hati |

(Terhubung dengan H-Bridge)

Peron

Seperti Raspberry Pi adalah platform yang besar untuk membuat robot ini, kita perlu platform fisik untuk menempatkan semua komponen di. Anda dapat menggunakan apapun yang Anda inginkan: kayu dan aluminium hanya untuk materi yang besar.

CATATAN: Jika Anda memutuskan untuk membangun robot Anda dengan logam atau bahan budidaya, menutupinya dengan lapisan plastik transparan / bahan non-konduktif lainnya seperti ketika Anda menempatkan papan di atasnya, melalui lubang pin bisa pendek dan menghancurkan forum Anda. Tidak baik.

Saya menggunakan dasar plastik saya beli dari E-Bay untuk 12 $. Ada banyak untuk memilih dari luar sana. Bahkan orang yang datang dengan motor (seperti saya).

Pengetahuan

Anda kebanyakan perlu pemahaman pemrograman sederhana dan keterampilan operasi Linux lingkungan dasar. Ini adalah sederhana untuk acquire– saya belajar Python dan bahasa pemrograman lain melalui e-book!

 

Langkah 2: Membaca Bahan

Picture of Wanted: Components

Apakah dianjurkan bahwa Anda akan pergi:

 

The L298N H-jembatan

Elektronika Dasar

Ultrasonic Sensor Jarak tutorial

Dan kunjungi:

 

situs Raspberry Pi

situs Arduino

situs Python

The GitHub repo dan situs untuk proyek ini tersedia di halaman pertama!

 

Langkah 3: Daya Manajemen

 

Garpu kami di GitHub!

 

Pertama, kita harus melihat lebih penggunaan daya komponen kami. Biasanya mereka semua beroperasi pada 5V.

 

Raspberry Pi 2 B (Setiap model akan melakukan): ~ 500mA

Modul Kamera: ~ 250mA

Arduino (Uno): ~ 150mA

Ultrasonic Sensor Jarak: ~ 50mA

 

Sum: 950mA. Baterai saya mampu memberikan hingga 1A sehingga itu semua baik. Jika setup Anda membutuhkan lebih dari 10% apa baterai yang mampu, pertimbangkan menghubungkan dua secara paralel atau membeli yang lebih tinggi-ampere.

 

Catatan penting mengenai H-Bridge: Jika motor Anda membutuhkan lebih dari 6V, kemudian menghubungkan kekuatan untuk H-Bridge dengan 12 Dalam DC Pin dan tidak 5V input. Dalam hal ini, 5V di bertindak sebagai 5V Output. Lihat datasheet satu Anda dan / atau instructable.

 

Langkah 4: Koneksi

Picture of Power Managment

Sebelum kita memanaskan solder besi, kita perlu untuk membahas apa yang harus dihubungkan dengan apa. Saya membuat grafik sederhana ini (MS Cat tidak pernah membuat saya) yang menggambarkan Dimana bagian tirai berada dalam robot ini (btw, adikku calles itu FartBot karena suara lucu ban membuat. Ibu meyakinkan saya untuk mengubah nama untuk SmartBot )

 

Gambar dibangun sehingga Anda dapat memperbesar dan melihat dalam resolusi penuh dan membaca pesan kecil aku pergi sana.

 

Langkah 5: Alamat untuk Pi

Picture of Connections

Arduino berbicara dengan Pi menurut rencana. Dan pembicaraan Pi ke komputer, jadi bagaimana melakukan ini semua pekerjaan?

 

Mari kita melihat CIS kami (Connection Inisiasi Urutan):

 

Raspberry Pi dimulai

Arduino Mulai

Raspberry Pi dimulai TCP Client. Tunas keluar alamat IP-nya melalui LED.

Raspberry Pi mulai layanan Comms Serial dan menghubungkan ke Arduino

Oleh karena itu kami telah menetapkan semacam komunikasi:

 

Komputer <-> Raspberry Pi <-> Arduino

 

Saya telah menggunakan Visual Basic .NET (Microsoft Visual Studio 2013 Komunitas) 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 untuk menghubungkannya ke layar HDMI, login ke Shell dan ketik perintah:

 

hostname -I

 

Pastikan untuk menggunakan modal “Aku” (huruf “Eye”) untuk perintah untuk bekerja.

 

Langkah 6: Rencana

 

Sekarang kita punya alamat IP Pi kami akan SSH ke dalamnya (mendapatkan akses ke file, SSH Secure Shell) dan menulis sebuah file yang mencakup alamat IP Server. Pi, pada startup akan melakukannya juga dan menulis port itu mendengarkan. Di sini saya hanya akan memberikan beberapa contoh dari kode tetapi tersedia untuk download dari langkah ini dan dari cabang github saya buat. Rincian nanti.

 

Ia bekerja seperti:

 

RPI dijalankan.

RPI dimulai program TCP IP lokal dan port yang ditunjuk.

RPI mulai streaming video

RPI dimatikan.

Langkah 7: Pergi Fisik

 

Sekarang, kami siap untuk memulai secara fisik membangun semuanya. Jika Anda belum membaca langkah 1 (peringatan teks dan perizinan) silahkan melakukannya sebelum melanjutkan. Saya tidak bertanggung jawab atas kerusakan yang disebabkan. Dan dalam kasus keraguan, robot ini tidak boleh digunakan untuk tujuan militer kecuali jika kiamat zombie. Dan bahkan kemudian menggunakan akal sehat.

 

Disarankan Anda membaca instructables mendengarkan dalam Daftar Bacaan.

 

Download skema sambungan dari “Connections” langkah.

 

MOTORS

 

Motor Anda membeli mungkin terlihat seperti ini, dan itu OK jika mereka tidak: jika mereka hanya memiliki dua kabel (hitam dan merah pada kebanyakan kasus) harus bekerja. Mencari datasheet mereka secara online untuk melihat tegangan operasi mereka dan saat ini. Jangan ragu untuk mengajukan pertanyaan di bagian komentar. Saya selalu membacanya.

 

H-BRIDGE

 

Aku tidak pernah bekerja dengan H-Bridge sebelumnya. I googled sedikit dan menemukan instructable baik menjelaskan prinsip-prinsip dari HB. Anda dapat melihat di sana juga (lihat Membaca Daftar langkah) dan menghubungkan Anda juga. Saya tidak akan menjelaskan banyak. Anda dapat membaca di sana dan tahu semua Anda harus tentang sirkuit ini.

 

LED

 

Lightbolb kecil ini dapat dijalankan dari tegangan logis hanya karena hampir tidak memerlukan saat ini, dan tegangan 3V-5V 4mA-18mA. Opsional.

 

Arduino

 

Arduino akan mendapatkan sinyal dan perintah melalui sambungan serial dari Raspberry Pi. Kami menggunakan Arduino untuk mengendalikan motor kami karena Raspberry Pi nilai analog tidak bisa output melalui GPIO.

 

Langkah 8: Autostarting Raspberry Pi

 

Setiap kali Anda akan hidup Raspberry Pi, Anda harus mengetikkan username dan password. Kami tidak ingin melakukan itu karena kadang-kadang kita tidak bisa menghubungkan keyboard ke Pi, jadi kita akan mengikuti langkah-langkah dari tutorial ini untuk auto-start program yang mempersiapkan Pi. Jika akan mendapatkan tongkat dalam satu lingkaran kita dapat selalu Ctrl + C untuk mengganggu itu.

 

sudo crontab -e

Dan kemudian kita akan masukkan perintah yang menambahkan bahwa file untuk auto-strartup pada manajer cron.

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

 

raspivid -o – t 0 -hf w 640 h 360 -fps 25 | cvlc -vvv aliran: /// dev / stdin –sout ‘#rtp {sdp = rtsp: //: 8554}’: demux = H264

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

 

Ini adalah script shell sederhana yang berjalan segalanya.

 

 

Langkah 9: [TCP]: Mengapa TCP tidak aman? Apa TCP?

 

Aku punya dua penjelasan mengapa menggunakan TCP dan tidak SSH untuk PC – Komunikasi Pi.

 

Pertama, SSH (Secure Shell, lihat Penjelasan) dimaksudkan untuk memulai perintah dari komputer remote. Membuat Pi merespon dengan informasi yang kami inginkan adalah lebih sulit karena satu-satunya pilihan kami untuk menganalisis data adalah melalui sulit dan membosankan pengolahan tali.

Kedua, kita sudah tahu bagaimana menggunakan SSH dan kami ingin belajar lebih banyak cara komunikasi antara perangkat di tutorial ini.

TCP, atau Transmission Control Protocol, adalah protokol inti dari Internet Protocol Suite. Ini berasal di implementasi jaringan awal yang dilengkapi Internet Protocol (IP). Oleh karena itu, seluruh paket sering disebut sebagai TCP / IP. TCP menyediakan handal, memerintahkan, dan pengiriman kesalahan-diperiksa dari aliran oktet antara aplikasi yang berjalan pada host yang berkomunikasi melalui jaringan IP.

 

(Dari Wikipedia)

 

Jadi TCP Pro adalah:

 

Aman

Cepat

Bekerja di mana saja pada jaringan

Menyediakan metode untuk memeriksa transmisi data yang benar

Flow Control: memiliki perlindungan dalam kasus pengirim data yang mengirimkan data terlalu cepat untuk klien untuk mendaftar dan proses.

Dan kontra adalah:

 

Dalam TCP Anda tidak dapat disiarkan (Kirim data ke semua perangkat pada jaringan) dan multicast (sama tapi sedikit berbeda- memberikan kemampuan untuk setiap siaran perangkat seperti server).

 

Bug dalam program dan sistem operasi perpustakaan (yang mengelola sendiri komunikasi TCP, router Anda tidak hampir tidak ada kecuali menghubungkan dua [atau lebih] perangkat)

Mengapa tidak menggunakan UDP, Anda mungkin bertanya? Nah, tidak seperti TCP, UDP tidak memastikan klien Anda mendapatkan data sebelum mengirim lebih. Seperti mengirim email dan tidak tahu apakah klien menerima itu. Selain itu, UDP kurang aman. Untuk info lebih lanjut, membaca posting ini dari Sign Super User

 

Artikel ini adalah baik dan dianjurkan.

 

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 mengirim ke Pi (perintah Serial yang akan dilakukan pada Arduino) dan menerima data kembali (Sensor Bacaan dan umpan balik langsung dari Arduino. Skema terlampir menunjukkan hubungan antara tiga.

 

Artikel Python Wiki TcpCommunication menunjukkan bahwa hal itu begitu sederhana untuk membuat komunikasi seperti dengan beberapa baris kode menggunakan modul socket built-in. Kami akan memiliki program di PC dan program lain pada Pi.

 

Kami akan bekerja dengan interupsi. Pelajari lebih lanjut di Penjelasan langkah tentang mereka. Baca sana tentang buffer juga.

Sekarang, kita dapat membaca data yang kita telah menggunakan data = s.recv (BUFFER_SIZE) tetapi akan berapa banyak karakter kita sudah didefinisikan dengan gigitan kosong. Dapat kita gunakan interupsi? Pertanyaan lain: akan buffer kosong atau akan menunggu server untuk mengirim data lebih dalam hal server / klien akan melempar pengecualian batas waktu?

 

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

 

Langkah 13: Coba TCP Comms kami

 

Dalam rangka untuk melihat apakah kita dapat menggunakan interupsi, memungkinkan membuat klien sederhana dan

server menggunakan Command Line Python. Saya akan melakukannya di langkah-langkah berikut:

 

Memulai program yang mengirim teks melalui TCP dalam satu lingkaran melalui port tirai

Mulai program lain (secara paralel) yang berbunyi semua teks dalam satu lingkaran dan cetakan yang ke layar.

Hanya segmen dari program akan ditampilkan. Semua program berjalan dengan Python 3.

Semua program ini dilakukan adalah untuk mengirim perintah serial dari keyboard dari pengguna PC ke Arduino melalui Pi.

 

SBcontrolPC.py – Untuk dijalankan di PC. Mulai koneksi TCP pada alamat lokal dan pada port tertentu (saya menggunakan port 12298, lihat langkah sebelumnya mengapa)

SBcontrolPi.py – Untuk dijalankan pada Pi. Membaca buffer setiap setengah detik (0,5 detik). Mulai shell script yang mengelola hal-hal seperti streaming video dll

Memeriksa script dari GitHub Repo! Ia bekerja dengan baik!

 

Langkah 14: Dan sekarang … Streaming Live!

 

Jadi kami ingin “Pelanggaran” kemampuan berikutnya dari Pi: Modul Kamera R-Pi. Sepotong rapi hardware yang dapat merekam 1080p @ 30fps atau 720p @ 60fps (!) Video dan menangkap gambar 5Mi Pixel. Mengesankan untuk ini 2,5 cm kuadrat papan (1 inci dengan 1 inci).

 

Mari kita ikuti langkah-langkah selanjutnya untuk mendapatkan semuanya bekerja. Anda selalu dapat asist internet dan situs resmi raspberrypi.org.

 

Hubungkan Ribbon Cable ke Kamera Serial Port (pelabuhan lama, paling dekat dengan port HDMI.)

Koneksi emas dari kabel harus menghadapi jauh dari port Ethernet.

Angkat dua pegangan kecil di tepi pelabuhan.

Masukkan kabel dengan satu tangan, dan pastikan bahwa itu duduk dengan aman dan semua jalan sampai akhir.

Mengatur bar plastik di tempat melalui mendorong pegangan kecil di sudut-sudut sambungan.

Anda telah terhubung Dewan Kamera!

 

Pada langkah berikutnya (WIP) kita akan menjalankan script shell yang mengalir video langsung ke jaringan lokal Anda di mana Anda dapat melihatnya di mana-mana dengan VLC Player.

 

Langkah 15: Penjelasan

 

Konten dari Wikipedia, Ensiklopedia bebas

 

SSH:

Secure Shell, atau SSH, adalah kriptografi (enkripsi) protokol jaringan untuk memulai berbasis teks sesi shell pada mesin remote dengan cara yang aman.

 

PWM:

Pulse-width modulation (PWM), atau modulasi pulsa-durasi (PDM), adalah teknik modulasi yang digunakan untuk mengkodekan pesan menjadi sinyal berdenyut.

 

Operasi Voltage VS. Tegangan logis

Tegangan logis adalah tegangan rendah arus rendah saat digunakan untuk mengirimkan data antara ke objek, Micro-controller dan komputer, misalnya. Tegangan ini adalah untuk yang lemah dan rendah untuk menjalankan perangkat seperti motor. Untuk menjalankan motor kita menggunakan Voltage Operasional: arus yang lebih tinggi aliran tegangan tinggi yang digunakan untuk perangkat listrik dan tidak mengirimkan data. Raspberry Pi dan Arduino baik tegangan output logis dan untuk mengendalikan motor kita menggunakan perangkat menjembatani seperti H-Bridge. Ia memeriksa untuk melihat: apakah ada tegangan logis menganalisis lebar pulsa dan mengendalikan motor.

 

Serial Komunikasi:

Dalam ilmu telekomunikasi dan komputer, komunikasi serial adalah proses pengiriman data satu bit pada satu waktu, secara berurutan, melalui orcomputer bus saluran komunikasi. Hal ini berbeda dengan komunikasi paralel, di mana beberapa bit dikirim secara keseluruhan, link dengan beberapa saluran paralel.

 

Interupsi

Menggunakan Interupsi adalah metode untuk memberitahu program untuk menunggu kondisi khusus untuk memanggil metode dalam kode. Ini seperti komputer menyala screen saver dan menunggu Anda untuk memindahkan mouse. Sampai saat itu melakukan sesuatu yang lain.

client

1 #!/usr/bin/env python
   2 
   3 import socket
   4 
   5 
   6 TCP_IP = '127.0.0.1'
   7 TCP_PORT = 5005
   8 BUFFER_SIZE = 1024
   9 MESSAGE = "Hello, World!"
  10 
  11 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  12 s.connect((TCP_IP, TCP_PORT))
  13 s.send(MESSAGE)
  14 data = s.recv(BUFFER_SIZE)
  15 s.close()
  16 
  17 print "received data:", data
server

1 #!/usr/bin/env python
   2 
   3 import socket
   4 
   5 
   6 TCP_IP = '127.0.0.1'
   7 TCP_PORT = 5005
   8 BUFFER_SIZE = 20  # Normally 1024, but we want fast response
   9 
  10 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  11 s.bind((TCP_IP, TCP_PORT))
  12 s.listen(1)
  13 
  14 conn, addr = s.accept()
  15 print 'Connection address:', addr
  16 while 1:
  17     data = conn.recv(BUFFER_SIZE)
  18     if not data: break
  19     print "received data:", data
  20     conn.send(data)  # echo
  21 conn.close()

6 Comments

Leave us a Comment

logged inYou must be to post a comment.