مجله مطالب خواندنی

سبک زندگی، روانشناسی، سلامت،فناوری و ....

مجله مطالب خواندنی

سبک زندگی، روانشناسی، سلامت،فناوری و ....

با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید

[ad_1]

در این ساختنی یاد می‌گیرید چطور یک رسیور مادون قرمز USB کوچک و ارزان بسازید. از این رسیور می‌توانید در پروژه‌های مختلف مثل ربات‌ها، کوادکوپترها و سایر دستگاه‌های کنترلی استفاده کنید. این رسیور مادون قرمز کیبورد هم دارد و به همین خاطر می‌توانید از آن بدون کامپیوتر استفاده کنید.پس با ساختنی همراه باشید!

رسیور مادون قرمز USB بسازید
رسیور مادون قرمز USB بسازید

میکروکنترلری که برای ساخت رسیور استفاده می‌کنید، کار یک کیبورد استاندارد را می‌کند و به همین خاطر می‌توانید از آن به همراه هر کامپیوتری استفاده کنید. این یعنی با این رسیور مادون قرمز و یک کنترل می‌توانید کامپیوترتان را کنترل کنید.

گام اول : وسایل مورد نیاز

وسایل مورد نیاز
وسایل مورد نیاز
  • برد digispark
  • رسیور مادون قرمز ۳۸kHz
  • یک ریموت کنترل
  • دستگاه لحیم کاری
  • یک کامپیوتر با نرم افزار Arduino IDE

گام دوم : رسیور مادون قرمز را لحیم کنید

ابتدا یکی از پایه‌های رسیور (OUT) را خم کنید تا داخل پین P2 فرو برود. پایه‌های دیگر را هم داخل پین‌های ۵V و GND فرو کنید.

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

دوباره رسیور را روی digispark قرار بدهید و هر سه پایه را بهم لحیم کنید. سپس قسمت‌های اضافی پایه‌ها را ببرید. بخش سخت افزاری رسیور USB آماده است.

گام سوم : کد دکمه‌های کنترل را دریافت کنید

کدهای دکمه‌های ریموت کنترل را پیدا کنید
کدهای دکمه‌های ریموت کنترل را پیدا کنید

در این مرحله باید مشخص کنید چه کدی به هر دکمه ریموت کنترل مرتبط است. هر ریموت کنترل کدهای مخصوص برای دکمه‌هایش دارد و برای استفاده از یک کنترل با رسیور باید این کار را انجام بدهید. ساده ترین روش اینکار استفاده از یک برد آردوینو است. کافی است یک برنامه برای دریافت سیگنال‌های مادون قرمز بنویسید و سپس با فشردن هر دکمه، کد مخصوص آن را مشخص کنید.

اما اگر برد آردوینو نداشته باشید، کارتان کمی‌سخت می‌شود. در این صورت باید با همین قطعاتی که دارید، کدهای به خصوص هر دکمه را پیدا کنید. برای اینکار، ابتدا باید درایورهای digiusb را دانلود کنید. به این لینک بروید و روی دکمه download zipکلیک کنید. بعد از دانلود، محتوای پوشه DigisparkExamplePrograms-master را در هر دایرکتوری که می‌خواهید اکسترکت کنید.

سپس به مسیر DigisparkExamplePrograms-master/C++/DigiUSB Windows Driver بروید و روی installdriver کلیک کنید. حالا با کمک این راهنما، بردهای مناسب را در نرم افزار Arduino IDE نصب کنید.

کدهای زیر را در قالب یک پروژه آردوینوی جدید کپی کنید و آن را روی برد digispark آپلود کنید:

/*************************************
* This code is written by Laurens Wuyts
* For questions: laurens.wuyts@gmail.com
* 
* 
* Microcontroller: ATtiny85
* Dev board:       Digispark
* 
*************************************/
#include <DigiUSB.h>

uint8_t situation = 0;
uint8_t START = 0;
uint8_t x = 0;
uint8_t BIT = 0;
uint8_t Id = 0;
uint8_t Id_inv = 0;
uint8_t Data = 0;
uint8_t Data_back = 0;
uint8_t Data_inv = 0;
uint8_t Repeat = 0;
uint8_t sended = 0;

uint16_t Time_old = 0;
uint16_t Time = 0;
uint16_t TimeDelta = 0;
 
void setup(void) 
  attachInterrupt(0, IR_Read, FALLING);
  
  pinMode(1,OUTPUT);
  digitalWrite(1,LOW);

  DigiUSB.begin();

 
void loop(void) 
  if(sended == 1) 
    DigiUSB.println(Data_back, DEC);
    sended = 0;
   else 
    DigiUSB.delay(10);
  


void IR_Read(void) {
  digitalWrite(1,HIGH);
  Time = micros();
  if (Time_old != 0) 
    TimeDelta = Time - Time_old;
    if ((TimeDelta > 12000)&&(TimeDelta < 14000)) 
      START = 1;
      x = 0;
      situation = 1;
      Id = 0;
      Id_inv = 0;
      Data = 0;
      Data_inv = 0;
     else if ((TimeDelta > 10000)&&(TimeDelta < 12000)) 
      situation = 2; // repeat
     else if ((TimeDelta > 1500)&&(TimeDelta < 2500)) 
      situation = 3; //"1"
      BIT = 1;
     else if ((TimeDelta > 1000)&&(TimeDelta < 1500)) 
      situation = 3; //"0"
      BIT = 0;
     else situation = 5; 
    if (situation == 3) 
      if (x < 8) 
        Id  else if (x < 16) = BIT;
        if (x < 15) Id_inv <<= 1;
        x++;
       else if (x < 24) = BIT;
        if (x < 23) Data <<= 1;
        x++;
       else if (x < 32) = BIT;
        if (x < 31) 
          Data_inv <<= 1;
         else 
          
          /* DO SOMETHING HERE */
          sended = 1;
          
          Data_back = Data;
          Repeat = 0;
        
        x++;
      
     else if (situation == 2) 
      if(Repeat == 1) 
        
        /* DO SOMETHING HERE */
        /*sended = 1;*/
        
       else 
        Repeat = 1;
      
    
  
  Time_old = Time;
  digitalWrite(1,LOW);
}

بعد از آپلود کدها، به مسیر DigisparkExamplePrograms-master/Python/DigiUSB/Windows/ بروید و فایل monitor.exe را باز کنید. حالا یک پنجره جدید باز می‌شود که با فشردن هر دکمه، کد مخصوص دکمه در آن نمایش داده خواهد شد. کد هر دکمه را بنویسید چون بعداً به آن نیاز خواهید داشت.

گام چهارم : کدهای Digispark را آپلود کنید

برد Digispark را برنامه ریزی کنید
برد Digispark را برنامه ریزی کنید

حالا باید کدهای اصلی را روی Digispark آپلود کنید. در این کدها باید کدهای مخصوص ریموت کنترل خودتان که در مرحله قبل پیدا کرده اید را وارد کنید. برای مثال اگر کد دکمه mute کنترل شما ۱۰۰ باشد، باید کدهایی که دانلود می‌کنید را به این شکل تغییر بدهید:

#define mute	۲۴۰
این کد اصلی است که باید به حالت زیر تغییر پیدا کند:
#define mute	۱۰۰

دقت کنید که وقتی می‌خواهید یک دکمه جدید تعریف کنید، نمی‌توانید از فاصله در نام استفاده کنید.

برای اضافه کردن کارکردهای جدید، از loop function استفاده کنید و کارکرد دکمه‌ها را تغییر بدهید یا برای دکمه‌های جدید کارکرد تعریف کنید.

/*************************************
* This code is written by Laurens Wuyts
* For questions: laurens.wuyts@gmail.com
* 
* 
* Microcontroller: ATtiny85
* Dev board:       Digispark
* 
*************************************/

/**** Define Remote control keys ****/
#define Power     64
#define key_1     32
#define key_2     160
#define key_3     96
#define key_4     16
#define key_5     144
#define key_6     80
#define key_7     48
#define key_8     176
#define key_9     112
#define key_0     136
#define vol_up    224
#define vol_down  208
#define ch_up     72
#define ch_down   8
#define mute      240
#define next      172
#define prev      164
#define up        6
#define down      134
#define left      166
#define right     70
#define playpause 156
#define key_stop  180
/************************************/

#include "TrinketHidCombo.h"

uint8_t situation = 0;
uint8_t START = 0;
uint8_t x = 0;
uint8_t BIT = 0;
uint8_t Id = 0;
uint8_t Id_inv = 0;
uint8_t Data = 0;
uint8_t Data_back = 0;
uint8_t Data_inv = 0;
uint8_t Repeat = 0;
uint8_t sended = 0;

uint16_t Time_old = 0;
uint16_t Time = 0;
uint16_t TimeDelta = 0;
 
void setup(void) 
  /* Use INT0(P2) on the Digispark */
  attachInterrupt(0, IR_Read, FALLING);
  
  pinMode(1,OUTPUT);
  digitalWrite(1,LOW);

  TrinketHidCombo.begin();

 
void loop(void) 
  if(sended == 1) 
    /* Assign functions to the buttons */
    if(Data_back == vol_up) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_UP);
     else if(Data_back == vol_down) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_DOWN);
     else if(Data_back == next) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_NEXT_TRACK);
     else if(Data_back == prev) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_PREV_TRACK);
     else if(Data_back == key_stop) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_STOP);
     else if(Data_back == playpause) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_PLAYPAUSE);
     else if(Data_back == mute) 
      TrinketHidCombo.pressMultimediaKey(MMKEY_MUTE);
     else if(Data_back == Power) 
      TrinketHidCombo.pressSystemCtrlKey(SYSCTRLKEY_SLEEP);
     else if(Data_back == key_0) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_0);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_1) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_1);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_2) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_2);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_3) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_3);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_4) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_4);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_5) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_5);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_6) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_6);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_7) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_7);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_8) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_8);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == key_9) 
      TrinketHidCombo.pressKey(KEYCODE_MOD_LEFT_SHIFT, KEYCODE_9);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == up) 
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_UP);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == down) 
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_DOWN);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == left) 
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_LEFT);
      TrinketHidCombo.pressKey(0, 0);
     else if(Data_back == right) 
      TrinketHidCombo.pressKey(0, KEYCODE_ARROW_RIGHT);
      TrinketHidCombo.pressKey(0, 0);
    
    sended = 0;
   else 
      TrinketHidCombo.poll();
  


/* Read the IR code */
void IR_Read(void) {
  digitalWrite(1,HIGH);
  Time = micros();
  if (Time_old != 0) 
    TimeDelta = Time - Time_old;
    if ((TimeDelta > 12000)&&(TimeDelta < 14000)) 
      START = 1;
      x = 0;
      situation = 1;
      Id = 0;
      Id_inv = 0;
      Data = 0;
      Data_inv = 0;
     else if ((TimeDelta > 10000)&&(TimeDelta < 12000)) 
      situation = 2; // repeat
     else if ((TimeDelta > 1500)&&(TimeDelta < 2500)) 
      situation = 3; //"1"
      BIT = 1;
     else if ((TimeDelta > 1000)&&(TimeDelta < 1500)) 
      situation = 3; //"0"
      BIT = 0;
     else situation = 5; 
    if (situation == 3) 
      if (x < 8) 
        Id  else if (x < 16) = BIT;
        if (x < 15) Id_inv <<= 1;
        x++;
       else if (x < 24) = BIT;
        if (x < 23) Data <<= 1;
        x++;
       else if (x < 32) = BIT;
        if (x < 31) 
          Data_inv <<= 1;
         else 
          
          /* DO SOMETHING HERE */
          sended = 1;
          
          Data_back = Data;
          Repeat = 0;
        
        x++;
      
     else if (situation == 2) 
      if(Repeat == 1) 
        
        /* DO SOMETHING HERE */
        sended = 1;
        
       else 
        Repeat = 1;
      
    
  
  Time_old = Time;
  digitalWrite(1,LOW);
}

بعد از اینکه کدها را روی برد digispark آپلود کردید، رسیور مادون قرمز را یکبار از کامپیوتر جدا کنید و دوباره به آن وصل کنید. ۵ ثانیه صبر کنید و سپس ریموت کنترل و رسیور را تست کنید.

رسیور مادون قرمز USB آماده است

رسیور مادون قرمز آماده است
رسیور مادون قرمز آماده است

این رسیور بخاطر اندازه کوچکش تقریباً در هر پروژه ای قابل استفاده است. کارکردهای بسیار گسترده ای هم دارد و می‌توانید کلید حل مشکل بسیاری از پروژه‌های الکترونیکی باشد.

رمز فایل‌های دریافتی saakhtani.ir است.

منبع

نوشته با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید - #کاردستی #علمی #خبر


[ad_2]
لینک منبع
بازنشر: مفیدستان



لینک منبع :با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید

تصاویر برای با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید | ساختنی saakhtani.ir/archive/1395/09/49585‏ - ذخیره شده 6 دسامبر 2016 ... در این ساختنی یاد می‌گیرید چطور یک رسیور مادون قرمز USB کوچک و ارزان بسازید. از این رسیور می‌توانید در پروژه‌های مختلف مثل ربات‌ها، ... آموزش ساخت: 3 قفسه دیواری زیبا و کارآمد | ساختنی - خریدار kharidar.loger.ir/.../آموزش-ساخت-3-قفسه-دیواری-زیبا-و-کارآمد-ساختنی‏ - ذخیره شده 25 سپتامبر 2014 ... قفسه را با وسایلی که همیشه به آنها نیاز دارید، اشیای تزیینی و هر چیز دیگری که می‌خواهید پر .... با وسایل ساده و ارزان رسیور مادون قرمز USB بسازید. بلوتوث - ویکی‌پدیا، دانشنامهٔ آزاد https://fa.wikipedia.org/wiki/بلوتوث‏ - ذخیره شده - مشابه بلوتوث یا دندان آبی، نام بازرگانی بی‌سیمی با دوری کم برای فرستادن پیام، عکس یا ... بلوتوث یک رشته خصوصیت بی‌سیم است که ارتباطات کوتاه‌برد بین وسایل مجهز ... برای مصارف با توان پایین و برد کوتاه می‌باشد که با نصب یک میکروچیپ ارزان .... شئ OBEX))می‌باشند که از تجمیع داده توسط اشعهٔ مادون قرمز (IrDA)نتیجه می‌شوند. آپارات - وسایل ساده www.aparat.com/result/وسایل_ساده‏ - ذخیره شده ترفند های عالی و تماشایی با وسایل ساده · B-E-S-T ... چگونه با وسایل ساده یک موتور الکتریکی بسازیم · مهندس سلام ! ... گُل آرایی خانه با وسایل ساده و ارزان · خانواده یک. [PDF] دانشگاه آزاد اسالمی واحد معاونت پژوهشی پیشنهاد طرح پژوهشی Quad ... robomedal.com/up/tdp/5823456863.pdf‏ - ذخیره شده - مشابه این پرنده مناسب نمیباشند)البته با بکارگیری ترفند هایی مثل استفاده از یک موتور ... قویتر و البته ضخیمتر)سنگین( هستند که از این رو خیلی مناسب وسایل پرنده ..... مدار یک مدار کنترلر ربات پرنده بسازیم و بتوانیم بدون یک مدار کنترلر تجاری وارد .... در مدارات ساده ما از سه سنسور آ .... که وظیفه اندازه گیری دما توسط مادون قرمز را دارد. تکنولوژی ارتباطات و فنآوری رسانه www.arabiun.blogfa.com/8704.aspx?p=2‏ - ذخیره شده با توجه به سیگنال ها در فیبر نوری کمتر ضعیف می گردند ، بنابراین می توان از ..... جفت زوج خروجی LNB برای تغذیه کردن ۲ رسیور مورد استفاده قرار می گیرد هر ...... مواد جدیدی که از نانو ذرات ساخته شده‌اند، به میزان چشم گیری موجب کاهش وزن وسایل .... سیستم‌های مادون قرمز از تکنولوژیهای مختلفی برای سنجش فاصله جسم استفاده می‌کنند. آموزش دوربین مداربسته hiko.persianblog.ir/1390/9/‏ - مشابه 17 دسامبر 2011 ... آ شکارسازها وسایلی هستند که تابش مادون قرمز جمع آوری شده توسط مجموعه شیئی را ... اگر در یک دوربین حرارتی از یک آرایه دو بعدی آشکار ساز با تعداد المانهای زیاد ..... می‌توانید برای خودتان آلبوم عکس بسازید آن هم بدون هیچ محدودیتی! ...... یعنی به طور معمول یک RTU ساده و ارزان قیمت درداخل تابلو قرار می‌گیرد و به یک یا ... فرهنگ لغات تلفن همراه(جدید) - SAT2SAT www.sat2sat2017.tk/thread28884.html‏ - ذخیره شده 11 جولای 2017 ... سوالات مرتبط با رسیور XDSR420HD AVANT را در این بخش مطرح کنید. ... با توجه به اینکه اکثر خطوط هوایی و بسیاری از دولت ها استفاده از وسایل رادیویی بی سیم را در طول .... راه ساده برای انتقال آهنگ های بیشتر به گوشی استفاده از کابل USB ..... مادون قرمز از انواع قدیمی ارتباط بی سیم بین دو دستگاه الکتریکی ... الله اکبر - خامنه ای رهبر... - رایانه (نرم افزار-سخت افزار-سایت) www.irtaha.blogfa.com/cat-4.aspx?p=2‏ - ذخیره شده نکته ۳: شما می‌توانید نسخه بوت از روی USB سیستم عامل گوگل کروم را نیز از همین ... البته برای اینکه USBبوت بسازید لازم است که این نسخه در Linux یا Mac OS ..... در این بخش شما را با ساخت یک سخت افزار بسیار ساده ، پرکاربرد ، ارزان قیمت و جالب ... نظیر : تلویزیون ، ویدئو ، رسیور و به طور کلی هر ریموت کنترل از نوع مادون قرمز ...