Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
Bir çox Arduino layihəsi bir neçə Arduino arasında məlumat ötürülməsinə əsaslanır.
İstər RC avtomobili, istər RC təyyarəsi quran, istərsə də uzaqdan displeyli bir hava stansiyası hazırlayan bir həvəskar olsanız da, ardıcıl məlumatları bir Arduinodan digərinə etibarlı şəkildə necə köçürməyi bilməlisiniz. Təəssüf ki, həvəskarların öz layihələrində işləyən serial məlumatları əldə etməsi çətindir, çünki serial məlumatları bayt axını olaraq göndərilir.
Bayt axını içərisində hər hansı bir kontekst olmadan, məlumatları şərh etmək demək olar ki, mümkün deyil. Veriləri şərh edə bilmədən Arduinosunuz etibarlı şəkildə əlaqə qura bilməyəcək. Əsas odur ki, bu kontekst məlumatlarını standart seriyalı paket dizaynından istifadə edərək bayt axınına əlavə edin.
Serial paket dizaynı, paket doldurulması və paket təhlili mürəkkəbdir və buna nail olmaq çətindir. Xoşbəxtlikdən Arduino istifadəçiləri üçün, bu mürəkkəb məntiqin hamısını pərdəarxasında edə biləcək kitabxanalar var, belə ki, layihənizi əlavə başlıq olmadan işləməyə yönəltmək olar. Bu Təlimat seriyalı paket emalı üçün SerialTransfer.h kitabxanasından istifadə edəcək.
Qısacası: Bu Təlimat, SerialTransfer.h kitabxanasından istifadə edərək, hər hansı bir layihədə möhkəm serial məlumatlarını necə asanlıqla tətbiq edə biləcəyinizi izah edəcək. Güclü serial ünsiyyətinin aşağı səviyyəli nəzəriyyəsi haqqında daha çox məlumat əldə etmək istəyirsinizsə, bu təlimata baxın.
Təchizat
-
2 Arduino
Birdən çox hardware UART (yəni Arduino Mega) olan Arduinolardan istifadə etməyiniz çox tövsiyə olunur
- Bağlama teli
-
SerialTransfer.h quraşdırın
Arduino IDE Kitabxanalar Meneceri vasitəsi ilə əldə edilə bilər
Addım 1: Fiziki Əlaqələr
Serial ünsiyyətdən istifadə edərkən bir neçə kabel nöqtəsini yadda saxlamaq lazımdır:
- Bütün əsasların əlaqəli olduğundan əmin olun!
- Arduino TX (Göndərmə) pininin digər Arduino RX (Qəbul) pininə bağlanması lazımdır
Addım 2: Kitabxanadan necə istifadə olunur
SerialTransfer.h, xüsusi bir paket protokolu istifadə edərək asanlıqla böyük miqdarda məlumat göndərməyə imkan verir. Aşağıda kitabxananın bütün xüsusiyyətlərinin təsviri verilmişdir - bir çoxunu bu dərsdə daha sonra istifadə edəcəyik:
SerialTransfer.txBuff
Bu, serial üzərindən göndəriləcək bütün yük məlumatlarının ötürülmədən əvvəl tamponlandığı bir bayt dizisidir. Bu tamponu başqa bir Arduinoya göndərmək üçün məlumat baytları ilə doldura bilərsiniz.
SerialTransfer.rxBuff
Bu, digər Arduinodan alınan bütün yük məlumatlarının tamponlandığı bir bayt dizisidir.
SerialTransfer.bytes Oxuyun
Digər Arduino tərəfindən alınan və SerialTransfer.rxBuff -də saxlanılan faydalı yük baytlarının sayı
SerialTransfer.begin (Axın və _port)
Kitabxana sinifinin bir nümunəsini işə salır. İstənilən "Serial" sinif obyektini parametr olaraq keçə bilərsiniz - hətta "SoftwareSerial" sinif obyektləri!
SerialTransfer.sendData (const uint16_t & messageLen)
Bu, Arduino -nu ötürmə tamponundakı "messageLen" bayt sayını digər Arduinoya göndərməsinə səbəb olur. Məsələn, "messageLen" 4 olarsa, SerialTransfer.txBuff -in ilk 4 baytı serial vasitəsilə digər Arduinoya göndəriləcək.
SerialTransfer.available ()
Bu, Arduino -nuzu digər Arduinodan alınan serial məlumatlarını təhlil etməyə məcbur edir. Bu funksiya boolean "doğru" dəyərini qaytararsa, bu, yeni bir paketin uğurla təhlil edildiyini və yeni alınan paketin məlumatlarının SerialTransfer.rxBuff -də saxlanıldığını/mövcud olduğunu bildirir.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
"İndeks" arqumentinin göstərdiyi kimi indeksdən başlayaraq ötürücü buferinə ixtiyari bir obyektin bayt sayını (bayt, int, float, double, struct və s.) "Len" qoyun.
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
"İndeks" arqumentinin göstərdiyi kimi indeksdən başlayaraq qəbul buferindən (rxBuff) baytların "len" sayını ixtiyari bir obyektə (bayt, int, float, double, struct və s.) Oxuyur.
QEYD:
Məlumat ötürməyin ən asan yolu, əvvəlcə göndərmək istədiyiniz bütün məlumatları ehtiva edən bir quruluşu təyin etməkdir. Qəbul edən tərəfdəki Arduino eyni quruluşa sahib olmalıdır.
Addım 3: Əsas məlumatları ötürün
Aşağıdakı eskiz, həm analogRead (0) ADC dəyərini, həm də gərginliyə çevrilən analogRead (0) dəyərini Arduino #2 -ə ötürür.
Aşağıdakı eskizi Arduino #1 -ə yükləyin:
#"SerialTransfer.h" daxil edin
SerialTransfer myTransfer; struktur STRUCT {uint16_t adcVal; üzmə gərginliyi; } məlumatlar; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (data, sizeof (data)); myTransfer.sendData (sizeof (data)); gecikmə (100); }
Addım 4: Əsas məlumatları əldə edin
Aşağıdakı kod, Arduino #1 -dən alınan ADC və gərginlik dəyərlərini yazdırır.
Aşağıdakı kodu Arduino #2 -ə yükləyin:
#"SerialTransfer.h" daxil edin
SerialTransfer myTransfer; struktur STRUCT {uint16_t adcVal; üzmə gərginliyi; } məlumatlar; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (data, sizeof (data)); Serial.print (data.adcVal); Serial.print (''); Serial.println (data.voltage); Serial.println (); } else if (myTransfer.status <0) {Serial.print ("ERROR:"); əgər (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); başqa halda (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); başqa halda (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
Addım 5: Test
Hər iki eskiz müvafiq Arduino -ya yükləndikdən sonra Arduino #1 -dən məlumat aldığınızı yoxlamaq üçün Arduino #2 -də Serial Monitordan istifadə edə bilərsiniz!
Tövsiyə:
MPU 6050 Gyro, Arduino ilə Akselerometr Əlaqəsi (Atmega328p): 5 addım
MPU 6050 Gyro, Arduino ilə Akselerometr Əlaqəsi (Atmega328p): MPU6050 IMU-da tək çipdə birləşdirilmiş 3-Eksenli akselerometr və 3-Eksenli giroskop var. X, Y və Z oxları. Jiroskopun nəticələri
Arduino və Mobil Bluetooth Əlaqəsi (peyğəmbər): 8 addım
Arduino və Mobil Bluetooth Əlaqəsi (messenger): Ünsiyyət gündəlik həyatımızda əhəmiyyətli bir amil oynayır. Ancaq bu kilidləmə dövründə öz ailəmizlə ünsiyyət qurmaq və ya evimizdəki insanlarla ünsiyyət qurmaq üçün bəzən cib telefonlarına ehtiyac var. Ancaq qısa müddətdə cib telefonlarından istifadə
Sadə Arduino LoRa Əlaqəsi (5 km -dən çox): 9 addım
Sadə Arduino LoRa Əlaqəsi (5 km-dən çox): E32-TTL-100-ü kitabxanamla sınaqdan keçirəcəyik. SEMTECH -dən orijinal RFIC SX1278 -ə əsaslanan 410 441 MHz (və ya 868MHz və ya 915MHz) sürətlə işləyən simsiz ötürücü moduldur, şəffaf ötürmə mövcuddur, TTL səviyyəsindədir. Modul LORA qəbul edir
Arduino və Sənaye Cihazları Arasında Modbus TCP Əlaqəsi: 3 Addım
Arduino və Sənaye Cihazları Arasında Modbus TCP Əlaqəsi: Sənaye HMI ilə bir Arduino lövhəsini idarə etməyin və bir Modbus TCP əlaqəsi olan bir sənaye şəbəkəsinə bağlamağın sənaye yolu
Arduino Nano ilə Asan RFID MFRC522 Əlaqəsi: 4 Addım (Şəkillərlə)
Arduino Nano ilə Asan RFID MFRC522 İnterfeys: Giriş nəzarəti fiziki təhlükəsizlik və məlumat təhlükəsizliyi sahələrində bir təşkilatın və ya coğrafi bir bölgənin mənbələrinə anonim girişi/girişi məhdudlaşdıran bir mexanizmdir. Giriş hərəkəti istehlak, girmək və ya istifadə etmək mənasına gələ bilər