Mündəricat:

Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın: 15 addım (şəkillərlə birlikdə)
Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın: 15 addım (şəkillərlə birlikdə)

Video: Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın: 15 addım (şəkillərlə birlikdə)

Video: Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın: 15 addım (şəkillərlə birlikdə)
Video: How to use 2 channel relay to control AC and DC loads in Arduino 2024, Noyabr
Anonim
Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın
Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın
Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın
Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın
Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın
Arduino və Raspberry Pi ilə İnternetə Nəzarət Edilən Video Streaming Robotunuzu yaradın

Mən @RedPhantom (aka LiquidCrystalDisplay / Itay), 14 yaşında İsraildən olan, Max Shein Junior Liseyində Qabaqcıl Elm və Riyaziyyat məktəbində təhsil alıram. Bu layihəni hər kəsin öyrənməsi və paylaşması üçün hazırlayıram!

Öz -özünə düşünmüş ola bilərsən: hmm… Mən bir geekəm … Və uşaqlarım onlarla birlikdə bir layihə etməyimi istəyirlər … O, robot qurmaq istəyirdi. Kiçik bir bala kimi bəzəmək istəyirdi. Yaxşı bir həftə sonu layihəsidir!

Raspberry Pi hər istifadə üçün idealdır: bu gün bu mikro kompüterin robot hazırlamaq qabiliyyətini açıqlayacağıq. Bu robot edə bilər:

  • Raspberry Pi ilə eyni WiFi şəbəkəsinə qoşulmuş hər hansı bir kompüterdən istifadə edərək gəzin və LAN (WiFi) vasitəsilə idarə olun.
  • Raspberry Pi Kamera Modulundan istifadə edərək videonu canlı yayımlayın
  • Arduino istifadə edərək sensor məlumatlarını göndərin

Bu gözəl işıq layihəsi üçün nəyə ehtiyacınız olduğunu görmək üçün növbəti addımı (xəbərdarlıqları) oxuyun və bundan sonra Aranan: Komponentlər addımını oxuyun.

Budur GitHub reposu: GITHUB REPO BİZDƏN

Budur Layihə Saytı: SİZİN BİZDƏN PROJƏ EDİN

Addım 1: Xəbərdarlıq: Bunu evdə sınayarkən diqqətli olun

DİQQƏT:

BU TUTORİAL TƏSVİRİNİN YAZARI ELEKTRİK VƏ ELEKTRİK TƏCİBATLARININ ƏSAS İSTİFADƏSİ HAQQINDA KAFİFATLI BİLGİNİZ VAR. DİQQƏTLİSİNİZƏ VƏ BU TUTORİALDAKİ TƏLİMATLARA İLƏ BAXMAYACAQSIZ: ELEKTRONİK TƏHVİZATLARA ZƏRAR VERİN, YANINIZI YANIN VƏ YANGINA SƏBƏB OLUN. Ehtiyatlı olun və sağlam düşüncədən istifadə edin. Bu dərs üçün lazım olan biliklərə malik deyilsinizsə (lehimləmə, elektronikanın əsasları), zəhmət olmasa bunu bilən bir şəxslə həyata keçirin. Çox sağ ol.

BU TƏLİMATIN YAZARI, SƏBƏBİ VƏ İTMƏSİ MALİYYƏTİ VƏ FİZİKSİ ZARARI İÇİN ÖZÜNDƏN HƏR MƏSULİYYƏTİ SİLİR. ÜMUMİ SENSE İSTİFADƏ EDİN

Addım 2: Komponentlər

Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr

Lehimləmə Dəmirini qızdırmazdan əvvəl nəyə bağlanmalı olduğumuzu keçməliyik. Robotun müəyyən hissələrinin harada yerləşdiyini təsvir edən bu sadə qrafiki (MS Paint məni heç vaxt əskik etməz) hazırladım.

Şəkil böyüdülüb və tam qətnamə ilə baxa və mətni oxuya bilərsiniz.

Addım 6: Pi üçün ünvan

Arduino, plana uyğun olaraq Pi ilə danışır. Və Pi kompüterlə danışır, bəs bütün bunlar necə işləyir?

Bağlantı başlatma ardıcıllığımıza baxaq:

  1. Raspberry Pi başlayır
  2. Arduino başlayır
  3. Raspberry Pi TCP Müştərisini işə salır. Bir LED vasitəsilə IP ünvanını çıxarır.
  4. Raspberry Pi Serial Communications xidmətinə başlayır və Arduinoya qoşulur

Buna görə bir növ əlaqə qurduq:

Kompüter Raspberry Pi Arduino

Arduino/Raspberry Pi protokolunu yazmaq üçün Raspberry Pi və Python ilə danışan proqramı yazmaq üçün Visual Basic. NET (Microsoft Visual Studio 2013 Community) istifadə etdim.

Pi IP ünvanınızı bilmək üçün etməli olduğunuz şey onu bir HDMI ekranına bağlamaq, Shell -ə daxil olmaq və əmri yazmaqdır:

ev sahibi -I

Addım 7: Plan

İndi Pi -nin IP ünvanına sahib olduğumuza görə SSH daxil edəcəyik (SSH Secure Shell - uzaqdan Linux qabığına qoşuluruq) və Serverin IP ünvanını göstərən bir fayl yazacağıq. Pi, başlanğıcda bunu da edəcək və dinlədiyi portu yazacaq. Burada koddan yalnız bir neçə nümunə verəcəyəm, ancaq bu addımdan və yaratdığım GitHub filialından yükləmək mümkündür. Bununla bağlı detallar daha sonra.

Bu kimi işləyir:

  1. RPi işə düşür.
  2. RPi, Tcp proqramını yerli IP -də və təyin edilmiş bir limanda başlayır.
  3. RPI video axını etməyə başlayır
  4. RPI bağlanır.

Addım 8: Fiziki fəaliyyətə keçin

İndi fiziki olaraq hər şeyi qurmağa başlamağa hazırıq. 1 -ci addımı (xəbərdarlıq mətni və lisenziyalaşdırma) oxumamısınızsa, davam etməzdən əvvəl bunu edin. Mən dəymiş ziyana görə məsuliyyət daşımıram. Şübhə yaranarsa, bu robot bir zombi apokalipsisi olmadığı təqdirdə hərbi məqsədlər üçün istifadə edilməməlidir. Və hətta sonra sağlam düşüncə istifadə edin.

Təlimat verənləri Oxu Siyahısında dinləməyiniz tövsiyə olunur.

Bağlantı sxemini "Əlaqələr" addımından yükləyin.

MOTORLAR

Aldığınız mühərriklər, yəqin ki, belə görünür və əgər olmasalar, heç bir problemi yoxdur: yalnız iki teli varsa (əksər hallarda qara və qırmızı) işləməlidir. İşləmə gərginliyini və cərəyanını görmək üçün məlumat cədvəlinə onlayn baxın. Şərh bölməsində suallar verməkdən çekinmeyin. Mən həmişə onları oxuyuram.

H-KÖPRÜ

Daha əvvəl H-Bridge ilə işləməmişəm. Bir az googled və HB -nin prinsiplərini izah edən yaxşı bir təlimat tapdım. Oraya da baxa bilərsiniz (Oxu Siyahısı addımına baxın) və özünüzü də bağlaya bilərsiniz. Çox izah etməyəcəyəm. Orada oxuya bilərsiniz və bu dövrə haqqında lazım olan hər şeyi bilə bilərsiniz.

LED

Bu kiçik lampa, demək olar ki, heç bir cərəyan və 3V-5V 4mA-18mA gərginlik tələb etmədiyi üçün məntiqi gərginlikdən işləyə bilər. İsteğe bağlı.

ARDUINO

Arduino, Raspberry Pi -dən Serial bağlantısı ilə siqnal və əmrlər alacaq. Raspberry Pi GPIO vasitəsilə analoq dəyərlər çıxara bilmədiyi üçün mühərriklərimizi idarə etmək üçün Arduinodan istifadə edirik.

Addım 9: Raspberry Pi -nin avtomatik işə salınması

Hər dəfə Raspberry Pi -ni işə salanda istifadəçi adı və şifrənizi yazmalı olacaqsınız. Bunu etmək istəmirik, çünki bəzən Pi-yə bir klaviatura bağlaya bilmirik, buna görə də Pi-ni hazırlayan proqramı avtomatik başlatmaq üçün bu təlimatdan bu addımları izləyəcəyik. Bir döngədə yapışacaqsa, hər zaman Ctrl+C düymələrini kəsə bilərik.

  • sudo crontab -e
  • Və sonra bu faylı cron menecerində avtomatik yükləməyə əlavə edən əmri daxil edəcəyik.

Robotu işlətmək üçün hər cür python skriptini başlatma əmrləri verəcək pibot.sh faylını çağıracağıq. Bunun üzərinə keçək: (Proqramın GPIO -ya daxil olmasına icazə vermək üçün Python proqramları ilə sudo edirik)

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

Pi tərəfindəki bütün işləri yerinə yetirən koda_startup.sh deyilir.

Hər şeyi işlədən sadə bir qabıq skriptidir.

Addım 10: Houeston, Bir Problemimiz Var … DC Motors Eyni Model deyil

H-Bridge'i artıq sınamışam və yaxşı işləyir, amma robot platformasından aldığım mühərrikləri onlayn sifariş verdiyim zaman bu iki mühərrik fərqli sürətlərdə fırlanır və fərqli səslər çıxarır. Mühərriklərdə qazı 100% dəyişdim. Hər ikisi də maksimum qabiliyyətləri ilə qaça bilmədilər.

Görünür bunlar iki fərqli mühərrikdir. Birinin bu tip robot üçün əla olan daha böyük bir torku var, amma digəri robotu tərpətməz. Beləliklə, dairələrdə çevrilir.

Bu nöqtədə əldə etdiyim şey Arduino -da işləyən serial proqramıdır, amma PC -də Tcp serveri və Pi üzərindəki Tcp Müştəri hələ kodlaşdırılmamışdır. Müsabiqə üçün bu girişi tamamlamalıyam. Mən nə edirəm?

  1. Əvvəlcə mühərriklərin gərginliyini üç qat artırıram. Məlumat cədvəlində 3V, 6V deyildi, onları hərəkətə gətirmədi. Onda 9V. Cərəyanı ikiqat artırmaq üçün paralel olaraq teo batareyaları bağladım və gərginlik eyni olaraq qalır.
  2. Platformada montaja uyğun başqa mühərriklərim varmı? Bəlkə oxşar modellərdirsə görə bilərəm.
  3. Şokolad həqiqətən də fanata dəysə Servosu əvəz edə bilərəm.

Məktəb başladı. Nə edəcəyimi görməliyəm.

Qeyd: Qarşılaşdığım problemləri niyə yer üzündə yazıram? Beləliklə, daha az təcrübəniz varsa və eyni problemlərlə qarşılaşsanız nə edəcəyinizi də biləcəksiniz.

Həll:

Buna görə də başqa bir test etdim. Sürət fərqini Arduino koduna uyğunlaşdırdım.

QEYD: mühərriklər sizin üçün fərqli sürətlərdə fırlana bilər! Arduino eskizindəki dəyərləri dəyişdirin.

Addım 11: [TCP]: Niyə Tcp və Təhlükəsiz Shell deyil? TCP nədir?

Niyə PC üçün SSH deyil, Tcp istifadə etməyimin iki izahı var. - Pi ünsiyyəti.

  1. Birincisi, SSH (Secure Shell, izahlara baxın) uzaq bir kompüterdən əmrləri işə salmaq üçündür. Pi -ni istədiyimiz məlumatla cavablandırmaq daha çətindir, çünki məlumatları təhlil etmək üçün yeganə seçimimiz çətin və yorucu simli emaldır.
  2. İkincisi, SSH -dən necə istifadə edəcəyimizi artıq bilirik və bu təlimatda cihazlar arasında daha çox ünsiyyət qurmaq yollarını öyrənmək istəyirik.

TCP və ya Transmission Control Protocol, İnternet Protokol Suite -in əsas protokoludur. İnternet Protokolunu (IP) tamamladığı ilkin şəbəkə tətbiqindən yarandı. Buna görə də bütün dəstə ümumiyyətlə TCP/IP deyilir. TCP, IP şəbəkəsi ilə ünsiyyət quran hostlarda işləyən tətbiqlər arasında etibarlı, sifarişli və səhv yoxlanılmış bir oktet axınının çatdırılmasını təmin edir.

(Vikipediyadan)

Beləliklə, TCP üstünlükləri bunlardır:

  • Təhlükəsiz
  • Tez
  • Şəbəkənin istənilən yerində işləyir
  • Doğru məlumat ötürülməsini yoxlamaq üçün üsullar təqdim edir
  • Axın Nəzarəti: məlumat göndərən müştərinin qeydiyyatdan keçməsi və emal etməsi üçün məlumatları çox sürətli göndərməsi halında qorunması var.

Və mənfi cəhətləri bunlardır:

  • TCP-də yayımlaya bilməzsiniz (Şəbəkədəki bütün cihazlara məlumat göndərə bilərsiniz) və çoxlu yayım (eyni, lakin bir az fərqli- server kimi yayımlanan hər bir cihaza imkan verir).
  • Proqramınızdakı və əməliyyat sistemi kitabxanalarınızdakı səhvlər (özlərini TCP ünsiyyətini idarə edən, yönləndiriciniz iki [və ya daha çox cihazı birləşdirməkdən başqa demək olar ki, heç nə etmir)

Niyə UDP istifadə etmirsiniz, soruşa bilərsiniz? TCP -dən fərqli olaraq, UDP daha çox göndərməzdən əvvəl müştərinizin məlumatları aldığından əmin deyil. E -poçt göndərmək və müştərinin onu alıb -almadığını bilməmək kimi. Bundan əlavə, UDP daha az təhlükəsizdir. Daha çox məlumat üçün bu yazını Stack Exchange Super İstifadəçisindən oxuyun

Bu məqalə yaxşıdır və tövsiyə olunur.

Addım 12: [TCP]: Müştəri Edək

Serverdən məlumat alan müştəri (bizim vəziyyətimizdə Raspberry Pi) (bizim kompüterimiz), Pi -yə (Arduino -da yerinə yetiriləcək Serial əmrləri) göndərmək və məlumatları geri almaq üçün məlumatlar alacaq (Sensor Oxumaları) və birbaşa Arduinodan rəy. Əlavə edilmiş sxem bu üçlük arasındakı əlaqəni göstərir.

Python Wiki TcpCommunication məqaləsi, daxili yuva modulundan istifadə edərək bir neçə kod xətti ilə belə ünsiyyət qurmağın çox sadə olduğunu göstərir. PC -də bir proqramımız və Pi -də başqa bir proqramımız olacaq.

Fasilələrlə işləyəcəyik. Onlar haqqında izahlar addımında daha çox məlumat əldə edin. Orada tamponlar haqqında da oxuyun. İndi data = s.recv (BUFFER_SIZE) istifadə edərək əldə edə biləcəyimiz məlumatları oxuya bilərik, ancaq boş ısırıqlarla təyin etdiyimiz neçə simvol olacaq. Fasilələrdən istifadə edə bilərikmi? Başqa bir sual: tampon boş qalacaq və ya serverin daha çox məlumat göndərməsini gözləyəcək, bu halda server/müştəri zaman aşımı istisnası atacaq?

Gəlin bir -bir həll edək. Bunu etməzdən əvvəl, istifadə olunan TCP və UDP portlarının siyahısı olan bu Vikipediya məqaləsinə baxdım. Sürətlə baxdıqdan sonra bu layihənin Əməliyyat Sistemi və yerli xidmətlər tərəfindən istifadə edilmədiyi üçün 12298 portunda əlaqə quracağına qərar verdim.

Addım 13: Tcp Komutlarımızı sınayın

Fasilələrdən istifadə edə biləcəyimizi görmək üçün Python Komanda Satırından istifadə edərək sadə bir müştəri və bir server hazırlayaq. Bunu aşağıdakı addımlarda edəcəyəm:

  1. Tcp vasitəsilə bir pərdə limanı vasitəsilə döngə olaraq bir mətn göndərən bir proqrama başlayın
  2. Bütün mətni bir döngədə oxuyan və ekrana yazdıran başqa bir proqrama (paralel olaraq) başlayın.

Proqramın yalnız seqmentləri göstəriləcək. Bütün proqramlar Python 3. ilə işləyir. Bütün bu proqramlar, kompüter istifadəçisinin klaviaturasından ardıcıl əmri Pi vasitəsilə Arduinoya göndərməkdir.

  • SBcontrolPC.py - PC -də işlədilir. Yerli ünvanda və göstərilən limanda TCP bağlantısı başlayır (12298 portunu istifadə edirəm, niyə əvvəlki addıma baxın)
  • SBcontrolPi.py - Pi üzərində çalışmaq. Tamponu hər yarım saniyədə (0,5 saniyə) oxuyur. Video axını və s. Kimi şeyləri idarə edən bir qabıq skriptinə başlayır.

Tövsiyə: