İçindekiler:
- Adım 1: Uyarı: Bunu Evde Denemeye Dikkat Edin
- 2. Adım: Bileşenler
- Adım 6: Pi'nin Adresi
- 7. Adım: Plan
- Adım 8: Fiziksel Harekete Geçmek
- 9. Adım: Raspberry Pi'yi Otomatik Başlatma
- Adım 10: Houeston, Bir Sorunumuz Var… DC Motorlar Aynı Model Değildir
- Adım 11: [TCP]: Neden Tcp ve Shell Güvenli Değil? TCP Nedir?
- Adım 12: [TCP]: Bir Müşteri Yapalım
- 13. Adım: Tcp İletişimlerimizi Deneyin
Video: Arduino ve Raspberry Pi ile İnternet Kontrollü Video Akış Robotunuzu Oluşturun: 15 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Ben @RedPhantom (aka LiquidCrystalDisplay / Itay), İsrail'den Max Shein İleri Bilim ve Matematik Ortaokulunda öğrenim gören 14 yaşında bir öğrenciyim. Bu projeyi herkesin öğrenmesi ve paylaşması için yapıyorum!
Kendi kendinize şöyle düşünmüş olabilirsiniz: hmm… Ben bir ineğim… Ve çocuklarım onlarla bir proje yapmamı istiyor… Bir robot yapmak istedi. Küçük bir köpek yavrusu gibi giyinmek istedi. Bu iyi bir hafta sonu projesi!
Raspberry Pi her kullanım için mükemmeldir: bugün bu mikro bilgisayarın robot yapma yeteneklerini açıklayacağız. Bu robot şunları yapabilir:
- Raspberry Pi ile aynı WiFi ağına bağlı herhangi bir bilgisayarı kullanarak LAN (WiFi) üzerinden dolaşın ve kontrol edin.
- Raspberry Pi Kamera Modülünü kullanarak canlı video akışı yapın
- Arduino kullanarak sensör verilerini gönderin
Bu güzel ışık projesi için neye ihtiyacınız olduğunu görmek için bir sonraki adımı (uyarıları) ve ondan sonra Aranıyor: Bileşenler adımını okuyun.
İşte GitHub deposu: GITHUB REPO BY ME
İşte Proje Sahası: BENİM PROJE SAHASI
Adım 1: Uyarı: Bunu Evde Denemeye Dikkat Edin
DİKKAT:
BU EĞİTİMİN YAZARI, ELEKTRİK VE ELEKTRİKLİ EKİPMANLARIN TEMEL ÇALIŞMASI HAKKINDA YETERLİ BİLGİYE SAHİP OLDUĞUNUZU VARSAYAR. DİKKATLİ DEĞİLSENİZ VE BU EĞİTİMDEKİ TALİMATLARI TAKİP ETMEZSENİZ: ELEKTRONİK CİHAZLARA ZARAR VEREBİLİR, KENDİNİZİ YAKABİLİR VEYA YANGINA NEDEN OLABİLİRSİNİZ. Lütfen dikkatli olun ve sağduyulu davranın. Bu eğitim için gerekli bilgiye sahip değilseniz (lehimleme, elektroniğin temelleri), lütfen bunu bilen bir kişiyle gerçekleştirin. Teşekkürler.
BU TALİMAT TABLOSUNUN YAZARI NEDEN OLDUĞU YA DA MAL KAYBI VEYA FİZİKSEL ZARARA İLİŞKİN HERHANGİ BİR SORUMLULUĞU KENDİNDEN KALDIRIR. SAĞDUYU KULLANIN
2. Adım: Bileşenler
Havyayı ısıtmadan önce, neyin neye bağlanması gerektiğini gözden geçirmeliyiz. Belirli bir parçanın robot içinde nerede olduğunu açıklayan bu basit grafiği (MS Paint beni asla yarı yolda bırakmaz) yaptım.
Görüntü, yakınlaştırıp tam çözünürlükte görebilmeniz ve metni okuyabilmeniz için oluşturulmuştur.
Adım 6: Pi'nin Adresi
Arduino, plana göre Pi ile konuşur. Ve Pi bilgisayarla konuşuyor, peki tüm bunlar nasıl çalışıyor?
Bağlantı Başlatma Sıramıza bakalım:
- Ahududu Pi başlar
- Arduino Başlıyor
- Raspberry Pi, TCP İstemcisini başlatır. IP adresini bir LED aracılığıyla gönderir.
- Raspberry Pi, Seri İletişim hizmetini başlatır ve Arduino'ya bağlanır
Bu nedenle bir tür iletişim kurduk:
Bilgisayar Ahududu Pi Arduino
Arduino/Raspberry Pi protokolünü yazmak için Raspberry Pi ve Python ile konuşan programı yazmak için Visual Basic. NET (Microsoft Visual Studio 2013 Community) kullandım.
Pi IP adresinizi öğrenmek için yapmanız gereken tek şey, onu bir HDMI ekranına bağlamak, Shell'e giriş yapmak ve şu komutu yazmaktır:
ana bilgisayar adı -I
7. Adım: Plan
Artık Pi'nin IP adresini aldığımıza göre, içine SSH yapacağız (SSH, Güvenli Kabuk - Linux kabuğuna uzaktan bağlanıyoruz) ve Sunucunun IP adresini görüntüleyen bir dosya yazacağız. Pi, başlangıçta da bunu yapacak ve dinlediği bağlantı noktasını yazacaktır. Burada koddan sadece birkaç örnek vereceğim ama bu adımdan ve oluşturduğum GitHub şubesinden indirilebilir. Bununla ilgili ayrıntılar daha sonra.
Şöyle çalışır:
- RPI başlar.
- RPi, Tcp programını yerel IP'sinde ve belirlenmiş bir bağlantı noktasında başlatır.
- RPI video akışı yapmaya başlar
- RPI kapanır.
Adım 8: Fiziksel Harekete Geçmek
Şimdi, fiziksel olarak her şeyi inşa etmeye başlamaya hazırız. 1. adımı (uyarı metni ve lisans) okumadıysanız, lütfen devam etmeden önce okuyun. Oluşabilecek herhangi bir hasardan sorumlu değilim. Ve şüphe durumunda, bu robot bir zombi kıyameti olmadığı sürece askeri amaçlar için kullanılmamalıdır. Ve o zaman bile sağduyuyu kullanın.
Okuma Listesindeki dinleme talimatlarını okumanız önerilir.
Bağlantı şemasını "Bağlantılar" adımından indirin.
MOTORLAR
Satın aldığınız motorlar muhtemelen şöyle görünürler ve yoksa sorun yok: eğer sadece iki kabloları varsa (çoğu durumda siyah ve kırmızı) çalışmalıdır. Çalışma voltajlarını ve akımlarını görmek için çevrimiçi veri sayfalarına bakın. Yorum bölümünde soru sormaktan çekinmeyin. Onları her zaman okurum.
H-KÖPRÜ
Daha önce hiç H-Bridge ile çalışmadım. Biraz googledim ve bir HB'nin ilkelerini açıklayan iyi bir talimat buldum. Oraya da bakabilirsiniz (Okuma Listesi adımına bakın) ve kendinizinkini de bağlayabilirsiniz. çok açıklamayacağım. Orada okuyabilir ve bu devre hakkında bilmeniz gereken her şeyi bilebilirsiniz.
LED
Bu küçük ampul, neredeyse hiç akım gerektirmediği için mantıksal voltajdan ve 3V-5V 4mA-18mA voltajdan çalışabilir. İsteğe bağlı.
arduino
Arduino, Raspberry Pi'den Seri bağlantı üzerinden sinyal ve komutları alacaktır. Raspberry Pi, GPIO üzerinden analog değerler veremediği için motorlarımızı kontrol etmek için Arduino kullanıyoruz.
9. Adım: Raspberry Pi'yi Otomatik Başlatma
Raspberry Pi'yi her açtığınızda, kullanıcı adı ve şifreyi yazmanız gerekecek. Bunu yapmak istemiyoruz çünkü bazen Pi'ye bir klavye bağlayamıyoruz, bu yüzden Pi'yi hazırlayan programı otomatik olarak başlatmak için bu öğreticideki bu adımları izleyeceğiz. Bir döngüye takılırsa, onu kesmek için her zaman Ctrl+C yapabiliriz.
- sudo crontab -e
- Ardından cron yöneticisinde o dosyayı otomatik başlatmaya ekleyen komutu gireceğiz.
Robotu çalıştırmak için her türlü python betiğini başlatmak için komutlar verecek olan pibot.sh dosyasını arayacağız. Üzerinden geçelim: (Programın GPIO'ya erişmesine izin vermek için perde Python programlarıyla sudo yapıyoruz)
raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv akışı:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
Pi tarafında tüm işleri yapan kod, upon_startup.sh olarak adlandırılacaktır.
Her şeyi çalıştıran basit bir kabuk betiğidir.
Adım 10: Houeston, Bir Sorunumuz Var… DC Motorlar Aynı Model Değildir
H-Bridge'i zaten test ettim ve iyi çalışıyor, ancak robot platformundan aldığım motorları bağladığımda çevrimiçi sipariş verdim, bu iki motor farklı hızlarda dönüyor ve farklı sesler çıkarıyor. Motorlarda gazı %100 olarak değiştirdim. İkisi de maksimum kapasitelerinde koşamadı.
Bu iki farklı motor gibi görünüyor. Birinin daha büyük bir torku var ki bu bu tür robotlar için harika ama diğeri robotu hareket ettirmiyor. Böylece daireler çiziyor.
Bu noktada, elimde Arduino'daki seri program tamamen iyi çalışıyor ancak PC'deki Tcp sunucusu ve Pi'deki Tcp İstemcisi henüz kodlanmadı. Yarışma için bu girişi tamamlamam gerekiyor. Ben ne yaparım?
- İlk önce, motorların voltajını üç katına çıkardım. Veri sayfası 3V, 6V'nin onları hareket ettirmediğini söyledi. 9V o zaman. Akımı ikiye katlamak için teo pilleri paralel bağladım ve voltaj aynı kalıyor.
- Platformdaki bağlantıya uyan başka motorlarım var mı? Belki benzer modeller olup olmadığını görebilirim.
- Çikolata gerçekten fanı vurursa, Servolara değiştirebilirim.
Okul başladı. Ne yapacağımı görmem gerekecek.
Not: Karşılaştığım sorunları neden buraya yazıyorum? Yani daha az deneyimliyseniz ve aynı sorunları yaşıyorsanız ne yapacağınızı bileceksiniz.
Çözüm:
Bu yüzden başka bir test yaptım. Arduino kodundaki hız farkını uyarladım.
NOT: motorlar sizin için farklı hızlarda dönebilir! Arduino çizimindeki değerleri değiştirin.
Adım 11: [TCP]: Neden Tcp ve Shell Güvenli Değil? TCP Nedir?
PC için neden SSH değil de Tcp kullanıldığını iki açıklamam var. - Pi iletişimi.
- İlk olarak, SSH (Güvenli Kabuk, Açıklamalara bakın) uzak bir bilgisayardan komutları başlatmak içindir. Pi'nin istediğimiz bilgilerle yanıt vermesini sağlamak daha zordur çünkü verileri analiz etmek için tek seçeneğimiz zorlu ve sıkıcı dize işlemedir.
- İkinci olarak, SSH'yi nasıl kullanacağımızı zaten biliyoruz ve bu eğitimde cihazlar arasında daha fazla iletişim yolu öğrenmek istiyoruz.
TCP veya İletim Kontrol Protokolü, İnternet Protokol Paketi'nin temel protokolüdür. İnternet Protokolünü (IP) tamamladığı ilk ağ uygulamasından kaynaklanmıştır. Bu nedenle, paketin tamamına yaygın olarak TCP/IP denir. TCP, bir IP ağı üzerinden iletişim kuran ana bilgisayarlarda çalışan uygulamalar arasında sekizli akışının güvenilir, düzenli ve hata denetimli teslimini sağlar.
(Wikipedia'dan)
Yani TCP Artıları:
- Güvenli
- Hızlı
- Ağ üzerinde herhangi bir yerde çalışır
- Doğru veri iletimini kontrol etmek için yöntemler sağlar
- Akış Kontrolü: Veri gönderenin, istemcinin kaydetmesi ve işlemesi için verileri çok hızlı göndermesi durumunda korumaya sahiptir.
Ve eksileri:
- TCP'de yayın yapamazsınız (bir ağdaki tüm cihazlara veri gönderin) ve çok noktaya yayın (aynı ama biraz farklı - her cihaza bir sunucu gibi yayın yapma yeteneği verir).
- Programınızdaki ve işletim sistemi kitaplıklarınızdaki hatalar (kendilerini TCP iletişimini yöneten, yönlendiriciniz iki [veya daha fazla] cihazı bağlamak dışında neredeyse hiçbir şey yapmaz)
Neden UDP kullanmıyorsunuz, sorabilirsiniz? TCP'den farklı olarak UDP, müşterinizin daha fazlasını göndermeden önce verileri aldığından emin olmaz. Bir E-posta göndermek ve müşterinin onu alıp almadığını bilmemek gibi. Ayrıca, UDP daha az güvenlidir. Daha fazla bilgi için Stack Exchange Super User'dan bu gönderiyi okuyun
Bu makale iyi ve tavsiye edilir.
Adım 12: [TCP]: Bir Müşteri Yapalım
Sunucudan (bizim durumumuzdaki PC'miz) verileri alan istemci (bizim durumumuzda Raspberry Pi), Pi'ye (Arduino üzerinde gerçekleştirilecek Seri komutlar) göndermek ve verileri geri almak (Sensör Okumaları) için veri alacaktır. ve doğrudan Arduino'dan geri bildirim Ekli şema, üçü arasındaki ilişkiyi gösterir.
Python Wiki TcpCommunication makalesi, yerleşik soket modülünü kullanarak birkaç satır kodla bu tür bir iletişim kurmanın çok basit olduğunu gösteriyor. PC'de bir programımız ve Pi'de başka bir programımız olacak.
Kesintilerle çalışacağız. Bunlar hakkında Açıklamalar adımında daha fazla bilgi edinin. Orada tamponlar hakkında da okuyun. Şimdi, data=s.recv(BUFFER_SIZE) kullanarak elimizdeki verileri okuyabiliyoruz, ancak boş bitlerle kaç karakter tanımladığımız olacak. Kesintileri kullanabilir miyiz? Başka bir soru: arabellek boş mu olacak yoksa sunucunun daha fazla veri göndermesini mi bekleyecek, bu durumda sunucu/istemci bir zaman aşımı istisnası atacak mı?
Bunu birer birer ele alalım. Bunu yapmadan önce, kullanılan TCP ve UDP bağlantı noktalarını listeleyen bu Wikipedia makalesine baktım. Hızlı bir bakışın ardından, İşletim Sistemi ve yerel hizmetler tarafından kullanılmadığı için bu projenin 12298 numaralı bağlantı noktasında iletişim kuracağına karar verdim.
13. Adım: Tcp İletişimlerimizi Deneyin
Kesintileri kullanıp kullanamayacağımızı görmek için Python Komut Satırını kullanarak basit bir istemci ve bir sunucu yapalım. Bunu aşağıdaki adımlarda yapacağım:
- Perde bağlantı noktası üzerinden bir döngü içinde Tcp aracılığıyla metin gönderen bir program başlatın
- Bir döngüdeki tüm metni okuyan ve bunu ekrana yazdıran başka bir program (paralel olarak) başlatın.
Programın sadece bölümleri gösterilecektir. Tüm programlar Python 3 ile çalışır. Bu programların tek yaptığı, PC kullanıcısının klavyesinden seri komutu Pi üzerinden Arduino'ya göndermektir.
- SBcontrolPC.py - PC'de çalıştırılacak. Yerel adreste ve belirtilen bağlantı noktasında bir TCP bağlantısı başlatır (12298 numaralı bağlantı noktasını kullanıyorum, neden önceki adıma bakın)
- SBcontrolPi.py - Pi üzerinde çalıştırılacak. Her yarım saniyede bir (0,5 saniye) arabelleğini okur. Video akışı vb. gibi şeyleri yöneten bir kabuk komut dosyası başlatır.
Önerilen:
20 £ Altındaki COVID-19 Vantilatör için Arduino ile Doğru Bir Hava Akış Hızı Sensörü Nasıl Yapılır: 7 Adım
20 £ Altındaki COVID-19 Vantilatör için Arduino ile Doğru Bir Hava Akış Hızı Sensörü Nasıl Yapılır: Lütfen bu orifis akış sensörünün en son tasarımı için bu rapora bakın: https://drive.google.com/file/d/1TB7rhnxQ6q6C1cNb. ..Bu talimat, düşük maliyetli bir diferansiyel basınç sensörü kullanarak bir hava akış hızı sensörünün nasıl oluşturulacağını gösterir ve kolayca
Raspberry Pi Web Akış Kiti - Bölüm 2 (Pi Video Akışı): 6 Adım
Raspberry Pi Web Akış Kiti - Bölüm 2 (Pi Video Akışı): Tamam, bunun fotoğrafa ihtiyacı olduğunu düşünmedim ama web sitesi resimleri seviyor. Bunlar çoğunlukla sizin için bir dizi komut ve adımdır. Herhangi bir özelliği ele alabilecek başka siteler de var. Bu benim için çalıştı. Bu, diğer
Raspberry Pi Wifi Kontrollü Video Akış Robotu: 8 Adım (Resimli)
Raspberry Pi Wifi Kontrollü Video Akış Robotu: Hiç üzerinde kamera olan havalı bir robot yapmayı düşündünüz mü? Pekala, doğru yere geldiniz, size bu robotu nasıl yapacağınızı adım adım göstereceğim. Bununla, geceleri kontrol ederek ve video akışını izleyerek hayalet avına çıkabilirsiniz
GoPiGo3 ile Tarayıcı Akış Robotu: 5 Adım
GoPiGo3 ile Tarayıcı Akış Robotu: GoPiGo3 Raspberry Pi Robot ile bu gelişmiş projede, bir tarayıcıya canlı video akışı yapan ve tarayıcıdan kontrol edilebilen bir Tarayıcı video akış robotu oluşturuyoruz. Bu projede bir Raspberry Pi Kamera modülü kullanıyoruz. GoPiG ile
Bir Akış Şeması ile Programlamaya Başlama: 7 Adım
Programlamaya Bir Akış Şeması İle Başlamak: Projeleriniz için PIC mikro denetleyicileri kullanmaya mı başlıyorsunuz? bunlar çok kullanışlıdır ama programınız çalışmadığında çok sinir bozucudur. Bu, bir akış şeması çizerek fikirlerinizi sıralamanın bir yoludur. Profesyonel programcıların sıklıkla kullandığı yol budur