سلام. دو عدد ماژول گیرنده مشابه همدیگه با فرکانس متفاوت 433 و 315 رو به میکروکنترلر وصل کردم اما وقتی همزمان پایه دیتای هر دو گیرنده به میکروکنترلر وصل باشه دیتایی دریافت نمیشه از هر دوتای اونها. توجه کنید مشکلی از لحاظ جریان و ولتاژ وجود نداره و هنگامی که اتصال پایه دیتای هر کدوم رو از برد جدا میکنم اون یکی دیگه کار میکنه. گیرنده ها rxb61 هستن و پایه های دیتاشون رو به D1 و D2 برد nodemcu esp8266 وصل کردم. چطور میتونم مشکل رو برطرف کنم؟ علتش چیه؟
با سلام
این مورد به قدرت خوندن سرعت پالس این ماژول ها برمیگردد.
قبلا عرض کردم بهتون که اگر همزمان SoftwareSerial را با یکی از این ماژول ها استفاده کنید تداخل خواهید داشت.
به احتمال زیاد برای اینکه 2 عدد گیرنده بخواهید استفاده کنید نیز همین مشکل پیش می اید و میکرو نمیتواند همزمان دیتا هر 2 را آنالیز کند.
پیشنهاد میکنم با ESP32 نیز همین موضوع را بررسی کنید. احتمال زیاد مشکلی نخواهید داشت.
تشکر تصور کردم منظورتون استفاده از دستور های AT هست.
فقط یکی از استفاده های softwareSerial ارتباط با ماژول های GSM هست، برای اینکه میکرو متوجه ترتیب 0و 1 های لاین های دیتا بشود نیاز دارد مقداری از قدرت پردازشی را برای این موضوع تخصیص بدهد، بعضی از این دیتا ها بیسیار پر نویز هستن مانند ماژول های RF که برای میکرو بار سنگینی حساب میشن.
ممنون. اگر توی esp32 هم مشکل پابرجا بود باید چیکار کنم؟ نیاز هست کامپوننتی چیزی استفاده کنم؟
جسارتا پایه های انتخابی مناسب بودن؟ برای فرستنده هم پایه های gpio 15 و 12 رو انتخاب کردم.
بعید هست سمت ESP32 مشکلی پیش بیاید. فقط این نکته را در نظر داشته باشید که در ESP32 تغذیه ماژول های گیرنده رو بهتر هست بر روی 3.3 الی 4 ولت بذارید، چون 5 ولت نویزی می شود ولی باید بررسی کنید. پایه های انتخابی هم اوکی هستن.
وقت بخیر . با ماژول قیمت و خرید برد توسعه ESP32-WROOM-32 و مبدل CP2102 که دارم تست کردم متاسفانه نتیجه esp8266 مشابه بود . کدم رو هم ارسال می کنم مشاهده کنید لطفا .
#include <RCSwitch.h>
RCSwitch rtx433 = RCSwitch();
RCSwitch rtx315 = RCSwitch();
void setup()
{
Serial.begin(9600);
rtx433.enableReceive(32);
rtx315.enableReceive(33);
}
void loop()
{
if (rtx433.available())
{
Serial.print("Received ");
Serial.print(rtx433.getReceivedValue());
Serial.print(" / ");
Serial.print(rtx433.getReceivedBitlength());
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println(rtx433.getReceivedProtocol());
Serial.print("Freq : 433 MHz\n");
rtx433.resetAvailable();
}
if (rtx315.available())
{
Serial.print("Received ");
Serial.print(rtx315.getReceivedValue());
Serial.print(" / ");
Serial.print(rtx315.getReceivedBitlength());
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println(rtx315.getReceivedProtocol());
Serial.print("Freq : 315 MHz\n");
rtx315.resetAvailable();
}
}
کد رو یکم مرتب تر کردم ( nekobin ) که یه چیز جالب توجه تر دیدم . همونطور که گفتم وقتی یه گیرنده جدا میشه اونی که وصله شروع می کنه به کار کردن . توی این کد ها مشاهده کنید به وضوح شرط شده اگر فلان فرکانس رو دریافت کردی شمارش رو هم پرینت کن اما فرقی نمی کنه کدوم پایه رو جدا کنم توی ترمینال رندوم مینویسه 433 Mhz حتی اگر پایه مربوط به 315 وصل باشه یا بالعکس . ویدئو از ستاپم رو حتما مشاهده کنید لطفا https://uupload.ir/view/20231106_191200_ql6.mp4/
جناب این لینکی برای بنده ارسال کردید مربوط به اکانت شما می باشد. برای بنده چیزی نشون نمیده
می توانید با ایجاد یک سوال جدید و قرار دادن کد این بحث را ادامه بدهیم
بله الان متوجه این موضوع شدم. چشم حتما انجام میدم ممنون از شما.