Isi kandungan:

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

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

Video: Bina Robot Streaming Video Terkawal Internet Anda Dengan Arduino dan Raspberry Pi: 15 Langkah (dengan Gambar)
Video: PENGATURCARAAN ARDUINO MENGGUNAKAN MBLOCK 2024, September
Anonim
Bina Robot Streaming Video Terkawal Internet Anda Dengan Arduino dan Raspberry Pi
Bina Robot Streaming Video Terkawal Internet Anda Dengan Arduino dan Raspberry Pi
Bina Robot Streaming Video Terkawal Internet Anda Dengan Arduino dan Raspberry Pi
Bina Robot Streaming Video Terkawal Internet Anda Dengan Arduino dan Raspberry Pi
Bina Robot Streaming Video Terkawal Internet Anda Dengan Arduino dan Raspberry Pi
Bina Robot Streaming Video Terkawal Internet Anda Dengan Arduino dan Raspberry Pi

Saya @RedPhantom (aka LiquidCrystalDisplay / Itay), seorang pelajar berusia 14 tahun dari Israel yang belajar di Sekolah Menengah Max Shein untuk Sains dan Matematik Lanjutan. Saya membuat projek ini untuk semua orang belajar dan berkongsi!

Anda mungkin berfikir pada diri sendiri: hmm … Saya seorang geek … Dan anak-anak saya mahu saya membuat projek dengan mereka … Dia mahu membina robot. Dia mahu menggayakannya seperti anak anjing. Ini adalah projek hujung minggu yang baik!

Raspberry Pi sangat sesuai untuk setiap kegunaan: hari ini kita akan menyatakan kemampuan komputer mikro ini untuk membuat robot. Robot ini boleh:

  • Berkeliling dan dikendalikan melalui LAN (WiFi) menggunakan komputer yang disambungkan ke rangkaian WiFi yang sama dengan Raspberry Pi.
  • Streaming video secara langsung menggunakan Modul Kamera Raspberry Pi
  • Hantar data sensor menggunakan Arduino

Untuk melihat apa yang anda perlukan untuk projek cahaya yang bagus ini, bacalah langkah seterusnya (amaran) dan selepas itu langkah Wanted: Components.

Inilah repo GitHub: GITHUB REPO BY ME

Inilah Laman Projek: LAMAN PROJEK OLEH SAYA

Langkah 1: Amaran: Berhati-hati Mencuba Ini di Rumah

PERHATIAN:

PENULIS ASAS TUTORIAL INI ANDA MEMPUNYAI PENGETAHUAN YANG SESUAI TENTANG ELEKTRIK DAN OPERASI ASAS PERALATAN ELEKTRIK. JIKA ANDA TIDAK BERHATI-HATI DAN TIDAK MENGIKUTI ARAHAN DALAM TUTORIAL INI ANDA MUNGKIN: KEROSAKAN ELEKTRONIK KEROSAKAN, MEMBAKAR DIRI ANDA ATAU MENYEBABKAN KEBAKARAN. Harap berhati-hati dan gunakan akal. Sekiranya anda tidak mempunyai pengetahuan yang diperlukan untuk tutorial ini (pematerian, asas elektronik), lakukan dengan individu yang melakukannya. Terima kasih.

PENULIS INSTRUCTABLE INI MENGHAPUSKAN SETIAP TANGGUNGJAWAB DARI DIA DENGAN KEROSAKAN YANG DIBERIKAN ATAU HILANG HARTA ATAU KEROSAKAN FIZIKAL. GUNAKAN SENSE UMUM

Langkah 2: Komponen

Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan

Sebelum kita memanaskan besi pematerian, kita perlu melihat apa yang harus disambungkan ke apa. Saya membuat carta ringkas ini (MS Paint tidak pernah mengecewakan saya) yang menerangkan di mana bahagian tertentu berada di dalam robot.

Imej dibina supaya anda dapat memperbesar dan melihat dalam resolusi penuh dan membaca teksnya.

Langkah 6: Alamat untuk Pi

Arduino bercakap dengan Pi mengikut rancangannya. Dan Pi bercakap dengan komputer, jadi bagaimana semua ini berfungsi?

Mari lihat Urutan Permulaan Sambungan kami:

  1. Raspberry Pi bermula
  2. Arduino Bermula
  3. Raspberry Pi memulakan TCP Client. Ia mengeluarkan alamat IP melalui LED.
  4. Raspberry Pi memulakan perkhidmatan Serial Communications dan bersambung ke Arduino

Oleh itu, kami telah mewujudkan beberapa jenis komunikasi:

Raspberry Komputer Pi Arduino

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

Yang perlu anda lakukan untuk mengetahui alamat IP IP anda, adalah menyambungkannya ke skrin HDMI, log masuk ke Shell dan ketik perintah:

nama hos -I

Langkah 7: Rancangan

Sekarang setelah kami mendapat alamat IP Pi, kami akan memasukkan SSH ke dalamnya (SSH adalah Secure Shell - kami menyambung dari jauh ke shell Linux) dan menulis fail yang memaparkan alamat IP Server. Pi, pada permulaan akan melakukannya juga dan menulis port yang didengarnya. Di sini saya hanya akan memberikan beberapa contoh dari kod tersebut tetapi tersedia untuk dimuat turun dari langkah ini dan dari cawangan GitHub yang telah saya buat. Perinciannya kemudian.

Ia berfungsi seperti ini:

  1. RPi bermula.
  2. RPi memulakan program Tcp di IP tempatan dan port yang ditentukan.
  3. RPI mula menstrim video
  4. RPI dimatikan.

Langkah 8: Melangkah Fizikal

Sekarang, kita sudah bersedia untuk mula membina secara fizikal semuanya. Sekiranya anda belum membaca langkah 1 (teks amaran dan pelesenan) sila lakukan sebelum meneruskan. Saya tidak bertanggungjawab atas kerosakan yang berlaku. Dan sekiranya ada keraguan, robot ini tidak boleh digunakan untuk tujuan ketenteraan melainkan ia kiamat zombie. Walaupun begitu, gunakan akal fikiran.

Dicadangkan anda membaca arahan yang didengar dalam Daftar Bacaan.

Muat turun skema sambungan dari langkah "Sambungan".

MOTOR

Motor yang anda beli mungkin kelihatan seperti ini, dan tidak mengapa jika tidak: jika mereka hanya mempunyai dua wayar (kebanyakannya hitam dan merah) ia mesti berfungsi. Cari lembaran data mereka dalam talian untuk melihat voltan dan arus operasi mereka. Jangan ragu untuk bertanya di bahagian komen. Saya selalu membacanya.

H-BRIDGE

Saya tidak pernah bekerja dengan H-Bridge sebelum ini. Saya sedikit googled dan menemui petunjuk yang baik untuk menerangkan prinsip-prinsip HB. Anda juga boleh melihat di sana (lihat langkah Daftar Bacaan) dan memikat anda juga. Saya tidak akan banyak menerangkan. Anda boleh membaca di sana dan mengetahui semua yang anda perlukan mengenai litar ini.

LED

Bola lampu kecil ini dapat berjalan dari voltan logik hanya kerana ia memerlukan hampir tidak ada arus, dan voltan 3V-5V 4mA-18mA. Pilihan.

ARDUINO

Arduino akan mendapat isyarat dan arahan melalui sambungan Serial dari Raspberry Pi. Kami menggunakan Arduino untuk mengawal motor kami kerana Raspberry Pi tidak dapat mengeluarkan nilai analog melalui GPIO.

Langkah 9: Memulakan Raspberry Pi secara automatik

Setiap kali anda menghidupkan Raspberry Pi, anda perlu menaip nama pengguna dan kata laluan. Kami tidak mahu melakukannya kerana kadang-kadang kami tidak dapat menyambungkan papan kekunci ke Pi, jadi kami akan mengikuti langkah-langkah ini dari tutorial ini untuk memulakan program yang menyiapkan Pi secara automatik. Sekiranya ia akan tetap berada dalam satu gelung, kita selalu dapat Ctrl + C untuk mengganggunya.

  • sudo crontab -e
  • Dan kemudian kita akan memasukkan perintah yang menambahkan fail tersebut ke auto-strartup di cron manager.

Kami akan memanggil fail pibot.sh yang akan memberikan arahan untuk memulakan semua jenis skrip python untuk mengoperasikan robot. Mari kita selesaikan: (Kami sudo dengan program tirai Python untuk membolehkan program mengakses GPIO)

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

Kod yang melakukan semua kerja di sisi pi akan dipanggil upon_startup.sh.

Ini adalah skrip shell sederhana yang menjalankan semuanya.

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

Saya sudah menguji H-Bridge dan ia berfungsi dengan baik, tetapi ketika saya menyambungkan motor yang saya dapat dari platform robot, saya memesan dalam talian kedua-dua motor itu dengan kelajuan yang berbeza dan membuat bunyi yang berbeza. Saya menukar pendikit kepada 100% pada motor. Kedua-duanya tidak dapat berjalan dengan kemampuan maksimum.

Nampaknya ini adalah dua motor yang berbeza. Satu mempunyai tork yang lebih besar yang bagus untuk robot jenis ini tetapi yang lain tidak akan menggerakkan robot. Jadi ia bertukar dalam bulatan.

Pada ketika ini, apa yang saya dapat ialah program bersiri di Arduino berfungsi dengan baik tetapi pelayan Tcp di PC dan Tcp Client di Pi belum dikodkan. Pada saya perlu melengkapkan penyertaan ini untuk pertandingan. Apa yang saya buat?

  1. Pertama, saya menaikkan voltan tiga kali ganda untuk motor. Lembar data mengatakan 3V, 6V tidak menggerakkannya. Ia 9V ketika itu. Saya menyambungkan bateri teo secara selari untuk menggandakan arus dan voltan tetap sama.
  2. Adakah saya mempunyai motor lain yang sesuai dengan pelantar di platform? Mungkin saya dapat melihat Sekiranya mereka adalah model yang serupa.
  3. Saya boleh mengganti Servos jika coklat benar-benar memukul kipas.

Sekolah dimulakan. Saya mesti melihat apa yang perlu dilakukan.

Catatan: Mengapa di bumi saya menulis masalah yang saya hadapi di sini? Oleh itu, jika anda kurang berpengalaman dan mempunyai masalah yang sama, anda pasti tahu apa yang harus dilakukan.

Penyelesaian:

Oleh itu, saya telah membuat ujian lain. Saya telah menyesuaikan perbezaan kelajuan dalam kod Arduino.

CATATAN: motor mungkin berputar dengan kelajuan yang berbeza untuk anda! Ubah nilai dalam lakaran Arduino.

Langkah 11: [TCP]: Mengapa Tcp dan Shell Tidak Selamat? Apa itu TCP?

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

  1. Pertama, SSH (Secure Shell, lihat Penjelasan) dimaksudkan untuk melancarkan perintah dari komputer jauh. Membuat Pi bertindak balas dengan maklumat yang kita mahukan lebih sukar kerana satu-satunya pilihan untuk menganalisis data adalah melalui pemprosesan rentetan yang sukar dan membosankan.
  2. Kedua, kami sudah tahu bagaimana menggunakan SSH dan kami ingin mempelajari lebih banyak cara komunikasi antara peranti dalam tutorial ini.

TCP, atau Transmission Control Protocol, adalah protokol teras Internet Protocol Suite. Ini berasal dari implementasi jaringan awal di mana melengkapi Internet Protocol (IP). Oleh itu, keseluruhan suite biasanya disebut sebagai TCP / IP. TCP menyediakan penghantaran oktet yang dipercayai, teratur, dan diperiksa oleh ralat antara aplikasi yang berjalan pada host yang berkomunikasi melalui rangkaian IP.

(Dari Wikipedia)

Jadi TCP Pro adalah:

  • Selamat
  • Pantas
  • Berfungsi di mana sahaja di rangkaian
  • Menyediakan kaedah untuk memeriksa penghantaran data yang betul
  • Flow Control: mempunyai perlindungan sekiranya pengirim data mengirimkan data terlalu cepat untuk klien mendaftar dan memproses.

Dan keburukannya adalah:

  • Dalam TCP anda tidak dapat menyiarkan (Kirim data ke semua perangkat di rangkaian) dan multicast (sama tetapi sedikit berbeza - memberikan kemampuan untuk setiap peranti disiarkan seperti pelayan).
  • Bug dalam pustaka program dan sistem operasi anda (yang menguruskan komunikasi TCP, penghala anda hampir tidak melakukan apa-apa kecuali menghubungkan dua [atau lebih] peranti)

Mengapa tidak menggunakan UDP, anda mungkin bertanya? Tidak seperti TCP, UDP tidak memastikan pelanggan anda mendapat data sebelum menghantar lebih banyak. Seperti menghantar E-mel dan tidak mengetahui sama ada pelanggan menerimanya. Selain itu, UDP kurang selamat. Untuk maklumat lebih lanjut, baca catatan ini dari Stack Exchange Super User

Artikel ini bagus dan disyorkan.

Langkah 12: [TCP]: Mari Buat Pelanggan

Pelanggan (Raspberry Pi dalam kes kami), yang menerima data dari pelayan (PC kami dalam kes kami) akan mendapatkan data untuk dihantar ke Pi (perintah Serial yang akan dilakukan di Arduino) dan menerima kembali data (Sensor Readings dan maklum balas secara langsung dari Arduino. Skema yang dilampirkan menunjukkan hubungan antara mereka bertiga.

Artikel Komunikasi Python Wiki Tcp menunjukkan bahawa sangat mudah untuk membuat komunikasi seperti itu dengan beberapa baris kod menggunakan modul soket terbina dalam. Kami akan mempunyai program di PC dan program lain di Pi.

Kami akan bekerja dengan gangguan. Ketahui lebih lanjut dalam langkah Penjelasan mengenainya. Baca juga mengenai penampan. Sekarang, kita dapat membaca data yang kita ada menggunakan data = s.recv (BUFFER_SIZE) tetapi akan menjadi berapa banyak watak yang telah kita tentukan dengan gigitan kosong. Bolehkah kita menggunakan gangguan? Soalan lain: adakah penyangga akan kosong atau akan menunggu pelayan menghantar lebih banyak data dalam hal ini pelayan / pelanggan akan membuang pengecualian waktu tunggu?

Mari kita atasi satu persatu. Sebelum melakukannya, saya telah melihat artikel Wikipedia ini yang menyenaraikan port TCP dan UDP yang digunakan. Setelah melihat dengan cepat saya memutuskan bahawa projek ini akan berkomunikasi di port 12298 kerana ia tidak digunakan oleh Sistem Operasi dan perkhidmatan tempatan.

Langkah 13: Cubalah Tcp Comms kami

Untuk melihat apakah kita dapat menggunakan gangguan, mari buat pelanggan dan pelayan yang mudah menggunakan Python Command Line. Saya akan melakukannya dalam langkah berikut:

  1. Mulakan program yang menghantar teks melalui Tcp dalam satu gelung melalui port tirai
  2. Mulakan program lain (selari) yang membaca semua teks dalam satu gelung dan mencetaknya ke skrin.

Hanya segmen program yang akan ditunjukkan. Semua program dijalankan dengan Python 3. Semua program ini dilakukan adalah dengan menghantar arahan bersiri dari papan kekunci pengguna PC ke Arduino melalui Pi.

  • SBcontrolPC.py - Untuk dijalankan di PC. Memulakan sambungan TCP pada alamat tempatan dan pada port yang ditentukan (saya menggunakan port 12298, lihat langkah sebelumnya mengapa)
  • SBcontrolPi.py - Untuk dijalankan pada Pi. Membaca buffernya setiap setengah saat (0.5 saat). Memulakan skrip shell yang menguruskan perkara seperti streaming video dll.

Disyorkan: