جدول المحتويات:

Récupérer Les Codes Infra-Rouge Et 433 ميجا هرتز: 4 خطوات
Récupérer Les Codes Infra-Rouge Et 433 ميجا هرتز: 4 خطوات

فيديو: Récupérer Les Codes Infra-Rouge Et 433 ميجا هرتز: 4 خطوات

فيديو: Récupérer Les Codes Infra-Rouge Et 433 ميجا هرتز: 4 خطوات
فيديو: Comment capturer et générer des codes RF 433 Mhz avec un Raspberry pi 3 ? 2024, شهر نوفمبر
Anonim
Récupérer Les Codes Infra-Rouge Et 433 ميجا هرتز
Récupérer Les Codes Infra-Rouge Et 433 ميجا هرتز

لو تم تخصيصه لأكواد الأجهزة المحمولة على غرار قيادة لامب ، ميناء المرآب وآخرون fonctionnant sous 433 ميجاهرتز (RX433) رئيس مكتب الاتصالات تحت الحمراء للتليفزيون au autre.

على مطعم pourra donc، grâce à une autre montage، encoder ces code et piloter n’importe quoi!

الخطوة 1: Le Montage

لو مونتاج
لو مونتاج

بسيطة ، غير اردوينو نانو ، ديود une réceptrice infra-rouge et un récepteur 433 ميجا هرتز.

الخطوة 2: Le Code Arduino

// InfraRouge

#يشمل

int recvPin = 11 ؛ // pin Arduino pour récepteur InfraRouge (TOSP4838)

IRrecv irrecv (recvPin) ؛

// RX433

#يشمل

RCSwitch mySwitch = RCSwitch () ،

نتائج decode_results ؛

الإعداد باطل ()

{

Serial.begin (9600) ؛

irrecv.enableIRIn () ،

irrecv.blink13 (صحيح) ؛ // allume la LED interne lors de l'envoie InfraRouge

mySwitch.enableReceive (0) ، // Récepteur RX433 (XY-MK-5V) sur pin 2 de Arduino Uno et Nano

}

// وضع رموز InfraRouge

ircode باطل (نتائج * فك التشفير)

{

// باناسونيك

إذا (النتائج-> decode_type == PANASONIC) {

Serial.print (النتائج-> العنوان ، HEX) ؛

Serial.print (":") ؛

}

Serial.print (النتائج-> القيمة ، HEX) ؛

}//فارغ

// afficahge des code encodés

ترميز باطل (نتائج * فك التشفير)

{

التبديل (النتائج-> decode_type) {

إفتراضي:

الحالة غير معروفة: Serial.print ("Inconnu") ؛ استراحة ؛

الحالة NEC: Serial.print ("NEC") ؛ استراحة ؛

الحقيبة SONY: Serial.print ("SONY") ؛ استراحة ؛

الحالة RC5: Serial.print ("RC5") ؛ استراحة ؛

الحالة RC6: Serial.print ("RC6") ؛ استراحة ؛

حالة DISH: Serial.print ("DISH") ؛ استراحة ؛

الحالة SHARP: Serial.print ("SHARP") ؛ استراحة ؛

الحالة JVC: Serial.print ("JVC") ؛ استراحة ؛

الحالة سانيو: Serial.print ("سانيو") ؛ استراحة ؛

حالة MITSUBISHI: Serial.print ("MITSUBISHI") ؛ استراحة ؛

الحالة SAMSUNG: Serial.print ("SAMSUNG") ؛ استراحة ؛

الحالة LG: Serial.print ("LG") ؛ استراحة ؛

الحالة WHYNTER: Serial.print ("WHYNTER") ؛ استراحة ؛

الحالة AIWA_RC_T501: Serial.print ("AIWA_RC_T501") ؛ استراحة ؛

حالة باناسونيك: Serial.print ("باناسونيك") ؛ استراحة ؛

الحالة DENON: Serial.print ("دينون") ؛ استراحة ؛

}

}

// dump les résultats

void dumpInfo (نتائج * decode_results)

{

// تحقق مما إذا كان المخزن المؤقت قد فاض

إذا (النتائج-> تجاوز) {

Serial.println ("رمز IR طويل جدًا. قم بتحرير IRremoteInt.h وزيادة RAWBUF")؛

إرجاع؛

}

// إظهار معيار الترميز

Serial.print ("التشفير:") ؛

ترميز (النتائج) ؛

Serial.println ("") ؛

// إظهار الكود والطول

Serial.print ("الرمز:") ؛

ircode (النتائج) ؛

Serial.print ("(") ؛

Serial.print (النتائج-> بت ، DEC) ؛

Serial.println ("بت)") ؛

}

//بنية

تفريغ باطل (نتائج * فك الترميز)

{

// طباعة البيانات الأولية

Serial.print ("التوقيت [") ؛

Serial.print (النتائج-> رولين -1 ، ديسمبر) ؛

Serial.println ("]:") ؛

لـ (int i = 1 ؛ i rawlen ؛ i ++) {

طويلة بدون علامة x = نتائج-> rawbuf * USECPERTICK ؛

إذا (! (i & 1)) {// حتى

Serial.print ("-") ؛

إذا (× <1000) Serial.print ("") ؛

إذا (x <100) Serial.print ("") ؛

Serial.print (x ، DEC) ؛

} else {// odd

Serial.print ("") ؛

Serial.print ("+") ؛

إذا (× <1000) Serial.print ("") ؛

إذا (x <100) Serial.print ("") ؛

Serial.print (x ، DEC) ؛

إذا (i rawlen-1) Serial.print ("،") ؛ // '،' غير مطلوب لآخر واحد

}

إذا (! (i٪ 8)) Serial.println ("")؛

}

Serial.println ("") ؛ // خط جديد

}

//+=============================================================================

// تفريغ بنية decode_results.

//

تفريغ باطل (نتائج * فك الشفرة)

{

// إعلان البدء

Serial.print ("غير موقع int") ؛ // نوع المتغير

Serial.print ("rawData [") ؛ // اسم المصفوفة

Serial.print (النتائج-> رولين - 1 ، ديسمبر) ؛ // حجم المصفوفة

Serial.print ("] = {") ؛ // إعلان البدء

// تفريغ البيانات

لـ (int i = 1 ؛ i rawlen ؛ i ++) {

Serial.print (results-> rawbuf * USECPERTICK، DEC) ؛

إذا (i rawlen-1) Serial.print ("،") ؛ // '،' غير مطلوب في آخر واحد

إذا (! (i & 1)) Serial.print ("") ؛

}

// إعلان النهاية

Serial.print ("} ؛") ؛ //

// تعليق

Serial.print ("//") ؛

ترميز (النتائج) ؛

Serial.print ("") ؛

ircode (النتائج) ؛

// خط جديد

Serial.println ("") ؛

// الآن تفريغ الرموز "المعروفة"

إذا (النتائج-> decode_type! = غير معروف) {

// بعض البروتوكولات لها عنوان

إذا (النتائج-> decode_type == PANASONIC) {

Serial.print ("عنوان int غير الموقع = 0 x") ؛

Serial.print (النتائج-> العنوان ، HEX) ؛

Serial.println ("؛") ؛

}

// تحتوي جميع البروتوكولات على بيانات

Serial.print ("بيانات int غير موقعة = 0 ×") ؛

Serial.print (النتائج-> القيمة ، HEX) ؛

Serial.println ("؛") ؛

}

}

حلقة فارغة ()

/ *************************************************** * InfraRouge ******************************************** /

{

نتائج decode_results ؛ // في مكان ما لتخزين النتائج

if (irrecv.decode (& results)) {// احصل على رمز IR

DumpInfo (والنتائج) ؛ // إخراج النتائج

dumpRaw (والنتائج) ؛ // إخراج النتائج بتنسيق RAW

DumpCode (والنتائج) ؛ // إخراج النتائج ككود مصدر

Serial.println ("") ؛ // سطر فارغ بين الإدخالات

irrecv.resume () ؛ // الاستعداد للقيمة التالية

}

/ *************************************************** *** RX433 ********************************************** /

إذا (mySwitch.available ())

{

قيمة int = mySwitch.getReceivedValue () ،

Serial.println ("RX433") ؛

إذا (القيمة == 0) {

Serial.print ("Codage inconnu") ؛

} آخر

{

Serial.print ("Reçu") ؛

Serial.print (mySwitch.getReceivedValue ()) ؛

Serial.print ("/") ؛

Serial.print (mySwitch.getReceivedBitlength ()) ،

Serial.print ("بت") ؛

Serial.print ("بروتوكول:") ؛

Serial.println (mySwitch.getReceivedProtocol ()) ؛

}

mySwitch.resetAvailable () ،

} // RX433

}//حلقة

الخطوة 3: Infos Sur Les Codes Infra-Rouge

Il y a plusieurs protocoles:

NEC: 32 بت (تفاصيل البروتوكول)

سوني: 12 ou 20 بت (تفاصيل البروتوكول) (فهم رموز التحكم عن بعد بالأشعة تحت الحمراء من Sony.)

RC5: 12 بت (تفاصيل البروتوكول)

RC6: 20 ou 36 بت (تفاصيل البروتوكول)

صب Sony et RC5 / 6 ، انتقال chaque يفعل ذلك من خلال 3 قطع!

تنبيه: la librairie IRremote.h ne semble pas pouvoir envoyer des codees sur plus de 32bits. Les RC6 ، 36 مبعوثًا مبعوثًا في الخام ، qui prennent plus de taille mémoire.

L’envoie desodes se fera avec la librairie IRremote.h

مثال: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7، 32) ؛

الخطوة 4: أكواد Infos Sur RX433

L’envoie se fera avec la librairie RCSwitch.h

مثال على mySwitch.send (1975778 ، 24) ؛

على طيار التسهيلات avec cela des prises commandés.

موصى به: