eitaa logo
🔷تکنو الکترونیک🔷
612 دنبال‌کننده
216 عکس
87 ویدیو
28 فایل
گروه مهندسی تکنو الکترونیک: https://eitaa.com/joinchat/1738277395C59f6f9bce5 کانال های پیشنهادی: https://eitaa.com/Techno_Electronic/596
مشاهده در ایتا
دانلود
🗯چاپ پی سی بی پذرفته میشود در دونوع فیبر فایبر گلاس‌ و فنولی با کیفیت بالا و قیمت مناسب ابعاد از ۰تا ۶۰۰ سانتی متر مربع تعداد از ۱ تا بینهایت تعداد بالا تخفیف هم داره 📭ارسال به هرجا که باشی 🖥طراحی پی سی بی های ساده هم پذیرفته میشود (با نرم افزار آلتیوم دیزاینر) نمونه کار هم خواستی بیا ببین اگه بد بود سفارش نده مونتاژ انواع برد هم پذیرفته میشود جهت سفارش بپر تو آیدی پایین @Etelaat_ir_z 🔸تکنو الکترونیک @Techno_Electronic
874.5K حجم رسانه بالاست
مشاهده در ایتا
تست چند مدل سیم لحیم با درصد های مختلف (این درصدی که تو فیلم زده درصد قلعه) 🔸تکنو الکترونیک @Techno_Electronic
564.4K حجم رسانه بالاست
مشاهده در ایتا
🛰چگونه ماهواره‌ها نقشه کاملی از سطح زمین تهیه می‌کنند!؟ تکنو الکترونیک🔹 @Techno_Electronic
هدفش موفقیت خودش و تشکیلاتش نبود. حتی هدفش سربلندی سپاه و نیروی های مسلح ایران و خاورمیانه قدرتمند هم نبود. صاف و پوست کنده ، می‌خواست دشمنان قسم خورده اسلام جرئت نکنند به مسلمانان نگاه چپ بیندازند. او کسی است که گفته بود : من اگر مُردم هم روی قبرم بنویسید ، اینجا مدفن کسی است که میخواست اسرائیل را نابود کند .
مدار رادیو کنترل به همراه کد که در زیر قرار میدهیم نوشته شده توسط یه بنده خدا که دمش گرم 🔸تکنو الکترونیک @Techno_Electronic
کد فرستنده👇🏻
<SPI.h> <nRF24L01.h> <RF24.h> RF24 radio(7, 8); // CE, CSN pin const byte address[6] = "00001"; struct Signal { byte throttle; byte pitch; byte roll; byte yaw; byte aux1; byte aux2; }; Signal data; void ResetData() { data.throttle = 127; data.pitch = 127; data.roll = 127; data.yaw = 127; data.aux1 = 127; data.aux2 = 127; } // map function int mapJoystickValues(int val, int lower, int middle, int upper , bool reverse) { val = constrain(val, lower, upper); if ( val < middle ) val = map(val, lower, middle, 0, 128); else val = map(val, middle, upper, 128, 255); return ( reverse ? 255 - val : val ); // *255 صحیح* } void setup() { Serial.begin(9600); radio.begin(); radio.openWritingPipe(address); radio.stopListening(); ResetData(); } void loop() { // read analog input & map data.throttle = mapJoystickValues( analogRead(A0), 12, 524, 1020, true ); data.roll = mapJoystickValues( analogRead(A3), 12, 524, 1020, true ); data.pitch = mapJoystickValues( analogRead(A2), 12, 524, 1020, true ); data.yaw = mapJoystickValues( analogRead(A1), 12, 524, 1020, true ); data.aux1 = mapJoystickValues( analogRead(A4), 12, 524, 1020, true ); data.aux2 = mapJoystickValues( analogRead(A5), 12, 524, 1020, true ); // debug print Serial.print(data.throttle); Serial.print('\t'); Serial.print(data.roll); Serial.print('\t'); Serial.print(data.pitch); Serial.print('\t'); Serial.print(data.yaw); Serial.print('\t'); Serial.print(data.aux1); Serial.print('\t'); Serial.println(data.aux2); // send radio.write(&data, sizeof(Signal)); }
کد گیرنده👇🏻
<SPI.h> <nRF24L01.h> <RF24.h> <Servo.h> Servo ch1, ch2, ch3, ch4, ch5, ch6; int ch_width_1, ch_width_2, ch_width_3, ch_width_4, ch_width_5, ch_width_6; struct Signal { byte throttle; byte pitch; byte roll; byte yaw; byte aux1; byte aux2; }; Signal data; // تعریف ماژول nRF24L01 (CE=7, CSN=8) RF24 radio(7, 8); const byte address[6] = "00001"; unsigned long lastRecvTime = 0; void ResetData() { data.roll = 127; data.pitch = 127; data.throttle = 127; data.yaw = 127; data.aux1 = 127; data.aux2 = 127; } void recvData() { if (radio.available()) { radio.read(&data, sizeof(Signal)); lastRecvTime = millis(); } } void setup() { Serial.begin(9600); ch1.attach(2); ch2.attach(3); ch3.attach(4); ch4.attach(5); ch5.attach(6); ch6.attach(9); ResetData(); ch1.writeMicroseconds(1500); ch2.writeMicroseconds(1500); ch3.writeMicroseconds(1500); ch4.writeMicroseconds(1500); ch5.writeMicroseconds(1500); ch6.writeMicroseconds(1500); radio.begin(); radio.openReadingPipe(0, address); radio.startListening(); } void loop() { recvData(); unsigned long now = millis(); if (now - lastRecvTime > 1000) { ResetData(); } ch_width_1 = map(data.roll, 0, 255, 1000, 2000); ch_width_2 = map(data.pitch, 0, 255, 1000, 2000); ch_width_3 = map(data.throttle, 0, 255, 1000, 2000); ch_width_4 = map(data.yaw, 0, 255, 1000, 2000); ch_width_5 = map(data.aux1, 0, 255, 1000, 2000); ch_width_6 = map(data.aux2, 0, 255, 1000, 2000); ch1.writeMicroseconds(ch_width_1); ch2.writeMicroseconds(ch_width_2); ch3.writeMicroseconds(ch_width_3); ch4.writeMicroseconds(ch_width_4); ch5.writeMicroseconds(ch_width_5); ch6.writeMicroseconds(ch_width_6); Serial.print(ch_width_1); Serial.print('\t'); Serial.print(ch_width_2); Serial.print('\t'); Serial.print(ch_width_3); Serial.print('\t'); Serial.print(ch_width_4); Serial.print('\t'); Serial.print(ch_width_5); Serial.print('\t'); Serial.println(ch_width_6); }
کد فرستنده (Transmitter – Tx) این کد مربوط به دسته کنترل (فرستنده دستی) هستش. وظیفه اصلی کد فرستنده اینه: ۱. خواندن مقدار جوی‌استیک‌ها از پین‌های آنالوگ ۲. تبدیل مقادیر 0–1023 به بازه 0–255 3. ساختن بسته داده شامل 6 کانال (Throttle, Roll, Pitch, Yaw, AUX1, AUX2) 4. ارسال وایرلس این داده‌ها از طریق nRF24L01 چیزی که دقیقاً انجام می‌ده اینه: خواندن جوی‌استیک‌ها هر جوی‌استیک روی یک محور، مقدار آنالوگ می‌ده مثل: A0 → throttle A1 → yaw A2 → pitch A3 → roll A4 → aux1 A5 → aux2 مثلاً: data.throttle = mapJoystickValues( analogRead(A0), 12, 524, 1020, true ); یعنی مقدار جوی‌استیک گرفته می‌شه و به عدد 0–255 تبدیل می‌شه. ۲.تابع mapJoystickValues این تابع کار زیر را می‌کنه: محدوده جوی‌استیک رو به 0–255 تبدیل می‌کنه نقطه وسط جوی‌استیک را 128 قرار می‌ده اگر سوراخ محور معکوسه، اونو برعکس می‌کنه این دقیقاً همون کاری است که فرستنده‌های حرفه‌ای RC انجام می‌دن. ۳. ارسال داده‌ها radio.write(&data, sizeof(Signal)); داده‌های ساختار Signal شامل 6 کانال، هر کدام یک بایت، ارسال می‌شه. کد گیرنده (Receiver – Rx) این کد روی هواپیما قرار می‌گیره و سیگنال‌های کنترلی را دریافت و تبدیل به PWM جهت سرووها یا کنترلر موتور می‌کنه. وظیفه اصلی کد گیرنده اینه: ۱. دریافت بسته داده از nRF24L01 ۲. تبدیل هر مقدار (0–255) به پالس PWMاستاندارد (1000–2000µs) ارسال پالس‌ها به سرووها یا ESC اگر سیگنال قطع شد → تمام کانال‌ها به نقطه امن (Failsafe) بروند توضیح عملکرد بخش‌ها ساختار Signal دقیقاً مشابه فرستنده هستش: struct Signal { byte throttle; byte pitch; byte roll; byte yaw; byte aux1; byte aux2; }; تابع recvData اگر پاکت دریافتی موجود باشد، اونو می‌خونه: if (radio.available()) { radio.read(&data, sizeof(Signal)); lastRecvTime = millis(); } ۳. سیستم FailSafe اگر بیش از ۱ ثانیه داده‌ای نیاد: if (now - lastRecvTime > 1000) { ResetData(); } یعنی همه کانال‌ها روی مقدار وسط (127) قرار می‌گیرن. این کار از سقوط هواپیما جلوگیری می‌کنه. ۴.تبدیل سیگنال‌ها به پالس 1000–2000 میکروثانیه ch_width_1 = map(data.roll, 0, 255, 1000, 2000); این تبدیل دقیقاً همون فرم پالس استاندارد سروو و ESC هست. ۵. ارسال پالس‌ها به سروو و ESC ch1.writeMicroseconds(ch_width_1); ch2.writeMicroseconds(ch_width_2); ... پس: CH1 → Roll CH2 → Pitch CH3 → Throttle CH4 → Yaw CH5 → AUX1 CH6 → AUX2 جمع‌بندی عملکرد نهایی سیستم فرستنده مقدار جوی‌استیک‌ها رو می‌خونه اونا رو به 0–255 تبدیل می‌کنه بسته رو از طریق nRF24L01 ارسال می‌کنه گیرنده بسته رو دریافت می‌کنه اون رو از 0–255 به پالس‌های 1000–2000µs تبدیل می‌کنه به سرووها و ESC میده اگه سیگنال قطع شه → failsafe فعال می‌شه و هواپیما امن می‌شه. 🔹تکنو الکترونیک @Techno_Electronic