مشکل کار نکردن همزمان ماژول های گیرنده

6 ماه قبل
89 بازدید

0

سلام. دو عدد ماژول گیرنده مشابه همدیگه با فرکانس متفاوت 433 و 315 رو به میکروکنترلر وصل کردم اما وقتی همزمان پایه دیتای هر دو گیرنده به میکروکنترلر ( ESP8266 یا ESP32 ) وصل باشه دیتایی دریافت نمیشه از هر دوتای اونها. توجه کنید مشکلی از لحاظ جریان و ولتاژ وجود نداره و هنگامی که اتصال پایه دیتا یا VCC یا GND هر کدوم رو از برد جدا میکنم اون یکی دیگه کار میکنه. گیرنده ها rxb61 هستن و پایه های دیتاشون رو مطابق رفرنس های مربوطه که در این انجمن معرفی شد وصل کردم و حتی پایه های متعدد دیگه ای رو هم تست کردم . چطور میتونم مشکل رو برطرف کنم؟ علتش چیه؟ همچنین توی این کد زیر مشاهده کنید به وضوح شرط شده اگر فلان فرکانس رو دریافت کردی شمارش رو هم پرینت کن اما فرقی نمی کنه کدوم گیرنده رو جدا کنم توی ترمینال رندوم مینویسه 433 Mhz حتی اگر پایه مربوط به 315 وصل باشه یا بالعکس .

ویدیو از رفتار برد و ماژول ها

کدی که برای تست نوشتم این هست  : 

#include <RCSwitch.h>

RCSwitch rtx433 = RCSwitch();
RCSwitch rtx315 = RCSwitch();

void setup() {
  Serial.begin(9600);
  rtx433.enableReceive(4);
  rtx315.enableReceive(5);
}

void loop() {
  if (rtx433.available()) {
    Serial.print("rtx433 - ");
    printReceivedData(rtx433, 433);
    rtx433.resetAvailable();
  }
  delay(50);
  if (rtx315.available()) {
    Serial.print("rtx315 - ");
    printReceivedData(rtx315, 315);
    rtx315.resetAvailable();
  }
  delay(50);
}

void printReceivedData(RCSwitch& receiver, int freq) {
  int receivedValue = receiver.getReceivedValue();
  if (receivedValue != 0) {
    Serial.print("Received ");
    Serial.print(receivedValue);
    Serial.print(" / ");
    Serial.print(receiver.getReceivedBitlength());
    Serial.print(" bit ");
    Serial.print("Protocol: ");
    Serial.print(receiver.getReceivedProtocol());
    Serial.println(" Freq: " + String(freq) + " MHz");
  }
}
16 آبان 02 در 02:14
msmdi
15

افزودن دیدگاه

1 پاسخ ثبت شده است
1

با سلام

کد شما را بررسی کردم

مثل اینکه مشکل در سمت کتابخانه بود.

وقتی 2 بار این کتابخانه رو فراخوانی میکنید مقادیر دیتا های روی پین های ورودی را به هم میریزد و دیتا بهم ریخته می آورد.

برای تست این موضوع کافی است یکی از گیرنده ها را به میکرو وصل کنید.

سپس دیتا را ارسال کنید. مشاهده میکنید به صورت رندوم در فرکانس دیگر نیز دیتا نمایش میدهد درحالی که چیزی بهش وصل نیست.

برای شما کتابخانه را به صورت مجزا جدا کردم و دوباره ایجاد کردم و فراخوانی کردم. مشکل حل شد.

با هم‌زمان گیرنده نیز تست کردم و جواب داد.

می توانید کل پروژه را از این لینک دانلود کنید.

فقط این پروژه بر اساس PlatformIO نوشته شده است. در صورتی که میخواهید روی آردوینو اجرا کنید کافی هست محتویات پوشه src را بردارید و اسم فایل main.cpp را به src.ino تغییر بدهید، و با آردوینو اجرا کنید.

بدون مشکل اجرا می شود.

اگر سؤال دیگری نیز بود در خدمت هستم.

 

17 آبان 02 در 07:15
محمد دمیرچی
3670

خیلی ممنون واقعا سپاسگزارم ❤️❤️❤️ جسارتا مشکل برای فرستنده هم حل شده؟ چون فرستنده هم مشکل مشابه داشت.  – msmdi 02-08-17 در 09:04

سمت فرستنده رو تست نکردم. اگر فرستنده رو هم داخل همین برد میخواهید استفاده کنید فکر میکنم میتوانید جدا جدا دستور بدهید، اگر در برد دیگری هست فکر نمیکنم مشکلی باشه. میتونید این رو روی ESP8266 هم تست کنید شاید روی اون برد هم حل شد باشه.  – محمد دمیرچی 02-08-17 در 09:11

تست کردم موردی پیدا نکردم عالی شد . میگم برای استیبل شدن برد و کاهش خطای دیتای ورودی نیاز به استفاده از خازنی چیزی ندارم ؟ وقتی هم گیرنده ها وصلن به برد فکر کنم بخاطر جریان کشی زیاد کنترلر یکم بردش داغ میکنه پیش پایه ولتاژش . نیاز به استفاده از مقاومت هست ؟  – msmdi 02-08-17 در 09:47

جریان کشی خاصی اتفاق نمی افته، برای میکرو ESP32 یک مقدار منطقی هست که کمی داغ کنه، لود پردازشی داره به هر حال  – محمد دمیرچی 02-08-17 در 10:01

ماژول فرستنده fst8 ( https://forum.thecaferobot.com/api/upload/posts/upload_f777912725bf8fb6a4a049b8f6dbacffc.jpg ) آخه فکر کنم زیاد جریان بکشه . دو تا از اینا به پنج ولت ویموس وصل کردم .  – msmdi 02-08-17 در 10:15

دیتاشیتش رو بخونید. پایه 5 ولت تمامی سری های esp از کابل usb داره تامین میشه که البته از یک دیود 250 میلی آمپری داره رد میشه و اگر جریان کشی شما بیشتر بشود این دیود میسوزد.  – محمد دمیرچی 02-08-17 در 12:09

برای اینکه به این مشکل نخورم باید مقاومت بزارم؟ چند اهم باید باشه؟  – msmdi 02-08-17 در 01:15

مقاومت رو باید روی لاین دیتا بذارید و هر چیزی بین 1 تا 10 کیلو کافی هست  – محمد دمیرچی 02-08-17 در 01:59

افزودن دیدگاه


انجمن کافه‌ربات © 1400