İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Birçok Arduino projesi, birkaç Arduino arasında veri aktarımına dayanır.
İster bir RC araba, bir RC uçak inşa ediyor, ister uzaktan kumandalı bir hava istasyonu tasarlıyor olun, seri verileri bir Arduino'dan diğerine nasıl güvenilir bir şekilde aktaracağınızı bilmeniz gerekir. Ne yazık ki hobicilerin kendi projelerinde seri veri iletişimini kurmaları zordur. Bunun nedeni, seri verilerin bir bayt akışı olarak gönderilmesidir.
Bayt akışı içinde herhangi bir bağlam olmadan, verileri yorumlamak neredeyse imkansızdır. Verileri yorumlayamadan Arduino'larınız güvenilir bir şekilde iletişim kuramaz. Anahtar, standart bir seri paket tasarımı kullanarak bu bağlam verilerini bayt akışına eklemektir.
Seri paket tasarımı, paket doldurma ve paket ayrıştırma karmaşıktır ve elde edilmesi zordur. Neyse ki Arduino kullanıcıları için, tüm bu karmaşık mantığı sahne arkasında yapabilen kütüphaneler var, böylece projenizi fazladan baş ağrısı olmadan çalışmaya odaklanabilirsiniz. Bu Eğitilebilir Tablo, seri paket işleme için SerialTransfer.h kitaplığını kullanacaktır.
Kısacası: bu Eğitilebilir Tablo, SerialTransfer.h kitaplığını kullanarak herhangi bir projede sağlam seri verileri nasıl kolayca uygulayabileceğinizi gözden geçirecektir. Sağlam seri iletişim üzerine düşük seviyeli teori hakkında daha fazla bilgi edinmek istiyorsanız, bu eğiticiye bakın.
Gereçler
-
2 Arduino
Birden fazla donanım UART'ına (yani Arduino Mega) sahip Arduino'ları kullanmanız şiddetle tavsiye edilir
- Bağlantı teli
-
SerialTransfer.h'yi yükleyin
Arduino IDE'nin Kütüphaneler Yöneticisi aracılığıyla erişilebilir
Adım 1: Fiziksel Bağlantılar
Seri iletişimi kullanırken, birkaç kablolama noktasının akılda tutulması gerekir:
- Tüm topraklamaların bağlı olduğundan emin olun!
- Arduino TX (İletim) pininin diğer Arduino'nun RX (Alma) pinine bağlanması gerekiyor
Adım 2: Kitaplık Nasıl Kullanılır
SerialTransfer.h, özel bir paket protokolü kullanarak büyük miktarda veriyi kolayca göndermenizi sağlar. Aşağıda, birçoğunu bu eğitimde daha sonra kullanacağımız kitaplığın tüm özelliklerinin bir açıklaması bulunmaktadır:
SeriTransfer.txBuff
Bu, seri üzerinden gönderilecek tüm yük verilerinin iletimden önce arabelleğe alındığı bir bayt dizisidir. Bu arabelleği başka bir Arduino'ya göndermek için bayt veri ile doldurabilirsiniz.
SeriTransfer.rxBuff
Bu, diğer Arduino'dan alınan tüm yük verilerinin arabelleğe alındığı bir bayt dizisidir.
SeriTransfer.bytesOkuma
Diğer Arduino tarafından alınan ve SerialTransfer.rxBuff'ta depolanan yük baytlarının sayısı
SerialTransfer.begin(Akış &_port)
Kitaplığın sınıfının bir örneğini başlatır. Herhangi bir "Serial" sınıf nesnesini parametre olarak iletebilirsiniz - hatta "SoftwareSerial" sınıf nesnelerini bile!
SerialTransfer.sendData(const uint16_t &messageLen)
Bu, Arduino'nuzun iletim arabelleğindeki "messageLen" bayt sayısını diğer Arduino'ya göndermesini sağlar. Örneğin, "messageLen" 4 ise, SerialTransfer.txBuff'ın ilk 4 baytı seri olarak diğer Arduino'ya gönderilecektir.
SeriTransfer.mevcut()
Bu, Arduino'nuzun diğer Arduino'dan alınan tüm seri verileri ayrıştırmasını sağlar. Bu işlev boolean "true" döndürürse, yeni bir paketin başarıyla çözümlendiği ve yeni alınan paketin verilerinin SerialTransfer.rxBuff'ta depolandığı/mevcut olduğu anlamına gelir.
SerialTransfer.txObj(const T &val, const uint16_t &len, const uint16_t &index=0)
İsteğe bağlı bir nesnenin (byte, int, float, double, struct, vb.) bayt sayısını "len" olarak "index" argümanı tarafından belirtilen dizinden başlayarak gönderme arabelleğine yerleştirir.
SerialTransfer.rxObj(const T &val, const uint16_t &len, const uint16_t &index=0)
"index" bağımsız değişkeni tarafından belirtilen dizinden başlayarak alma arabelleğinden (rxBuff) "len" bayt sayısını rastgele bir nesneye (byte, int, float, double, struct, vb…) okur.
NOT:
Veri iletmenin en kolay yolu, önce göndermek istediğiniz tüm verileri içeren bir yapı tanımlamaktır. Alıcı uçtaki Arduino, tanımlanmış aynı yapıya sahip olmalıdır.
Adım 3: Temel Verileri İletin
Aşağıdaki çizim hem analogRead(0)'ın ADC değerini hem de voltaja dönüştürülen analogRead(0) değerini Arduino #2'ye iletir.
Aşağıdaki çizimi Arduino #1'e yükleyin:
#include "SerialTransfer.h"
Seri Transfer myTransfer; struct STRUCT { uint16_t adcVal; şamandıra gerilimi; } veri; geçersiz kurulum() { Serial.begin(115200); Seri1.başlangıç(115200); myTransfer.begin(Serial1); } void loop() { data.adcVal = analogRead(0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj(veri, sizeof(veri)); myTransfer.sendData(sizeof(veri)); gecikme(100); }
4. Adım: Temel Verileri Alın
Aşağıdaki kod Arduino #1'den alınan ADC ve voltaj değerlerini yazdırır.
Aşağıdaki kodu Arduino #2'ye yükleyin:
#include "SerialTransfer.h"
Seri Transfer myTransfer; struct STRUCT { uint16_t adcVal; şamandıra gerilimi; } veri; geçersiz kurulum() { Serial.begin(115200); Seri1.başlangıç(115200); myTransfer.begin(Serial1); } void loop() { if(myTransfer.available()) { myTransfer.rxObj(veri, sizeof(veri)); Serial.print(data.adcVal); Seri.print(' '); Seri.println(veri.voltaj); Seri.println(); } else if(myTransfer.status < 0) { Serial.print("HATA: "); if(myTransfer.status == -1) Serial.println(F("CRC_ERROR")); else if(myTransfer.status == -2) Serial.println(F("PAYLOAD_ERROR")); else if(myTransfer.status == -3) Serial.println(F("STOP_BYTE_ERROR")); } }
Adım 5: Test Etme
Her iki çizim de kendi Arduino'larına yüklendikten sonra, Arduino #1'den veri aldığınızı doğrulamak için Arduino #2'deki Seri Monitörü kullanabilirsiniz!
Önerilen:
PIC MCU ve Python Seri Haberleşme: 5 Adım
PIC MCU ve Python Seri İletişim: Merhaba arkadaşlar! Bu projemde PIC MCU ve Python seri haberleşme üzerine deneylerimi açıklamaya çalışacağım. İnternette, sanal terminal üzerinden PIC MCU ile nasıl iletişim kurulacağına dair çok faydalı olan birçok eğitim ve video var. Ancak
Arduino Tabanlı Projeler için NRF24L01 Alıcı-Verici Modülü ile Kablosuz Haberleşme: 5 Adım (Resimli)
Arduino Tabanlı Projeler için NRF24L01 Alıcı-Verici Modülünü Kullanan Kablosuz İletişim: Bu, robotlar ve mikro denetleyiciler hakkında ikinci öğretici öğreticim. Robotunuzu canlı ve beklendiği gibi çalışıyor görmek gerçekten harika ve robotunuzu veya diğer şeyleri kablosuz olarak hızlı ve hızlı bir şekilde kontrol etmenizin daha eğlenceli olacağına inanıyorum
Arduino ve Python Seri Haberleşme - Tuş Takımı Ekranı: 4 Adım
Arduino ve Python Seri Haberleşme - Tuş Takımı Ekranı: Bu proje mac kullanıcıları için yapılmıştır ancak Linux ve Windows için de uygulanabilir, farklı olması gereken tek adım kurulumdur
Düşük Güç Tüketimi Çağında Kablosuz Haberleşme Modüllerinin Güç Tüketimi Nasıl Doğru Ölçülür?: 6 Adım
Düşük Güç Tüketimi Çağında Kablosuz Haberleşme Modüllerinin Güç Tüketimi Nasıl Doğru Ölçülür?: Düşük güç tüketimi, Nesnelerin İnterneti'nde son derece önemli bir kavramdır. Çoğu IoT düğümünün pillerle çalıştırılması gerekir. Yalnızca kablosuz modülün güç tüketimini doğru bir şekilde ölçerek ne kadar pil kullandığımı doğru bir şekilde tahmin edebiliriz
LED'lerin Doğru Seri Bağlanması - Seri Vs Paralel Bağlantı: 6 Adım
LED'leri Doğru Seri Vs Paralel Bağlantıya Bağlama: Bu talimatta, LED - Işık Yayan Diyotlardan ve birden fazla ünitemiz varsa bunları nasıl bağlayabileceğimizden bahsediyoruz. Bu, keşke en başından bilseydim dediğim bir ders çünkü elektronik devrelerle uğraşmaya başladığımda birkaç tane inşa ettim