با سلام ایا با دو ماژول گیرنده مادون قرمز و فرستنده مادون قرمز سیگنال ارسالی از ریموت کنترل دریافت و بعد ارسال کرد توسط اردینو؟؟؟
اطلاعیه
Collapse
No announcement yet.
ارسال و دریافت مادون قرمز با اردینو
Collapse
X
-
پاسخ : ارسال و دریافت مادون قرمز با اردینو
نوشته اصلی توسط farzintey نمایش پست هابا سلام ایا با دو ماژول گیرنده مادون قرمز و فرستنده مادون قرمز سیگنال ارسالی از ریموت کنترل دریافت و بعد ارسال کرد توسط اردینو؟؟؟
بله امکانش هست
هر کلیدی که توسط ریموت زده میشه یه پک از دیتا ارسال میشه که بسته پروتکلی که هست متفاوته و فرکانسشون هم معمولا بین 36 تا 38 کیلیوهرتز هست
برای راحتی کار میتونید از گیرنده های سری tsop استفاده کنید که فیلتر و تقویت کننده داخلی دارن
زمانی که پالسها رو دریافت میکنید باید طول هر پالس رو با استفاده از تایمر به دست بیارین و یه جا ذخیره کنید
بعد بسته به فرکانس کاری گیرنده با آی سی 555 همون فرکانس رو میسازید و پالسها رو روی این فرکانس مدوله میکنید و توسط فرستنده ارسال میکنید
این کلیت کاری هست که باید انجام بدین
-
پاسخ : ارسال و دریافت مادون قرمز با اردینو
نوشته اصلی توسط M3R-E نمایش پست هاسلام
بله امکانش هست
هر کلیدی که توسط ریموت زده میشه یه پک از دیتا ارسال میشه که بسته پروتکلی که هست متفاوته و فرکانسشون هم معمولا بین 36 تا 38 کیلیوهرتز هست
برای راحتی کار میتونید از گیرنده های سری tsop استفاده کنید که فیلتر و تقویت کننده داخلی دارن
زمانی که پالسها رو دریافت میکنید باید طول هر پالس رو با استفاده از تایمر به دست بیارین و یه جا ذخیره کنید
بعد بسته به فرکانس کاری گیرنده با آی سی 555 همون فرکانس رو میسازید و پالسها رو روی این فرکانس مدوله میکنید و توسط فرستنده ارسال میکنید
این کلیت کاری هست که باید انجام بدین
/* record.ino Example sketch for IRLib2 * Illustrate how to record a signal and then play it back.
*/
#include <IRLibDecodeBase.h> //We need both the coding and
#include <IRLibSendBase.h> // sending base classes
#include <IRLib_P01_NEC.h> //Lowest numbered protocol 1st
#include <IRLib_P02_Sony.h> // Include only protocols you want
#include <IRLib_P03_RC5.h>
#include <IRLib_P04_RC6.h>
#include <IRLib_P05_Panasonic_Old.h>
#include <IRLib_P07_NECx.h>
#include <IRLib_HashRaw.h> //We need this for IRsendRaw
#include <IRLibCombo.h> // After all protocols, include this
// All of the above automatically creates a universal decoder
// class called "IRdecode" and a universal sender class "IRsend"
// containing only the protocols you want.
// Now declare instances of the decoder and the sender.
IRdecode myDecoder;
IRsend mySender;
// Include a receiver either this or IRLibRecvPCI or IRLibRecvLoop
#include <IRLibRecv.h>
IRrecv myReceiver(11); //pin number for the receiver
// Storage for the recorded code
uint8_t codeProtocol; // The type of code
uint32_t codeValue; // The data bits if type is not raw
uint8_t codeBits; // The length of the code in bits
//These flags keep track of whether we received the first code
//and if we have have received a new different code from a previous one.
bool gotOne, gotNew;
void setup() {
gotOne=false; gotNew=false;
codeProtocol=UNKNOWN;
codeValue=0;
Serial.begin(9600);
delay(2000);while(!Serial);//delay for Leonardo
Serial.println(F("Send a code from your remote and we will record it."));
Serial.println(F("Type any character and press enter. We will send the recorded code."));
Serial.println(F("Type 'r' special repeat sequence."));
myReceiver.enableIRIn(); // Start the receiver
}
// Stores the code for later playback
void storeCode(void) {
gotNew=true; gotOne=true;
codeProtocol = myDecoder.protocolNum;
Serial.print(F("Received "));
Serial.print(Pnames(codeProtocol));
if (codeProtocol==UNKNOWN) {
Serial.println(F(" saving raw data."));
myDecoder.dumpResults();
codeValue = myDecoder.value;
}
else {
if (myDecoder.value == REPEAT_CODE) {
// Don't record a NEC repeat value as that's useless.
Serial.println(F("repeat; ignoring."));
} else {
codeValue = myDecoder.value;
codeBits = myDecoder.bits;
}
Serial.print(F(" Value:0x"));
Serial.println(codeValue, HEX);
}
}
void sendCode(void) {
if( !gotNew ) {//We've already sent this so handle toggle bits
if (codeProtocol == NEC) {
codeValue ^= 0x0800;
}
else if (codeProtocol == RC6,RC5,NEC) {
switch(codeBits) {
case 20: codeValue ^= 0x10000; break;
case 24: codeValue ^= 0x100000; break;
case 28: codeValue ^= 0x1000000; break;
case 32: codeValue ^= 0x8000; break;
}
}
}
gotNew=false;
if(codeProtocol== UNKNOWN) {
//The raw time values start in decodeBuffer[1] because
//the [0] entry is the gap between frames. The address
//is passed to the raw send routine.
codeValue=(uint32_t)&(recvGlobal.decodeBuffer[1]);
//This isn't really number of bits. It's the number of entries
//in the buffer.
codeBits=recvGlobal.decodeLength-1;
Serial.println(F("Sent raw"));
}
mySender.send(codeProtocol,codeValue,codeBits);
if(codeProtocol==UNKNOWN) return;
Serial.print(F("Sent "));
Serial.print(Pnames(codeProtocol));
Serial.print(F(" Value:0x"));
Serial.println(codeValue, HEX);
}
void loop() {
if (Serial.available()) {
uint8_t C= Serial.read();
if(C=='r')codeValue=REPEAT_CODE;
if(gotOne) {
sendCode();
myReceiver.enableIRIn(); // Re-enable receiver
}
}
else if (myReceiver.getResults()) {
myDecoder.decode();
storeCode();
myReceiver.enableIRIn(); // Re-enable receiver
}
}
GitHub - cyborg5/IRLib2: Library for receiving, decoding, and sending infrared signals using ArduinoLibrary for receiving, decoding, and sending infrared signals using Arduino - cyborg5/IRLib2
این لینک فایل کتابخانه ای برای اردینو هست میتونید از این لینک دانلود کنید در مورد مادون قرمز و بعد دانلود و از زیپ خارج کردن در قسمت libraries اردینو قرار بدید تا برای کد بالا ایراد نگیرهجدیدترین ویرایش توسط farzintey; ۰۳:۴۶ ۱۳۹۶/۱۱/۰۷.
دیدگاه
-
پاسخ : ارسال و دریافت مادون قرمز با اردینو
نوشته اصلی توسط farzintey نمایش پست هاتنها مشکل من این هست که با دستکاری این برنامه بتوان به محض دریافت همون سیگنال ارسال کرد
تو حلقه اصلی برنامتون دو تا شرط بزارید واسه ورودی 0 و 1.
تا زمانی که پایه 1 هست خروجی 1 و تا زمانی که 0 هست خروجی 0 باشه
یه فرکانس 38 کیلوهرتز هم با 555 بسازید و با خروجی که دارید مدوله کنید
دیدگاه
-
پاسخ : ارسال و دریافت مادون قرمز با اردینو
نوشته اصلی توسط M3R-E نمایش پست هاخوب پس کارتون خیلی ساده تر شد!
تو حلقه اصلی برنامتون دو تا شرط بزارید واسه ورودی 0 و 1.
تا زمانی که پایه 1 هست خروجی 1 و تا زمانی که 0 هست خروجی 0 باشه
یه فرکانس 38 کیلوهرتز هم با 555 بسازید و با خروجی که دارید مدوله کنید
دیدگاه
دیدگاه