عناوين الدرس

اصنع راديو باستخدام اردوينو اونو ووحدة (TEA5767 FM)

مبتدئ

في هذا الدرس ستتعرف على وحدة راديو (TEA5767 FM) و كيف تبرمجها مع اردوينو اونو، بحيث تتمكن من صنع جهاز راديو يحتوي على شاشة عرض تعرض قيمة تردد الإشارة، مع اثنين من ضغاط التحكم، يعمل الضغاط الأول على تغير قيمة التردد بزيادة 0.1 والثاني تغير القيمة بتنقيص 0.1. و يعمل الجهاز على التقاط اشارة محطات الراديو المتوفرة بمنطقتك ضمن نطاق تردد من 87.5 ميجاهرتز إلى 108 ميجاهرتز

 

المواد و الأدوات

 

اردوينو

X1 اردوينو اونو

سلك اردوينو

X1 سلك اردوينو

tea5767 fm radio

1X وحدة راديو (TEA5767 FM)

push buttons

X2 ضغاط التحكم 

مقاومة 220

X1 مقاومة 220 اوم

10 كيلو أوم

X2 مقاومة 10 كيلو أوم 

breadboard

1X لوحة تجارب

مقاومة متغيرة

1X مقاومة متغيرة

2*12 lcd

X1 شاشة كرستالية

40 رأس دبوس

X1 40 رأس دبوس

أسلاك توصيل

مجموعة أسلاك توصيل (ذكر / ذكر)

أسلاك توصيل

مجموعة أسلاك توصيل (أنثى / ذكر)

speaker 3.5 mm jack

1 X1 مكبر صوت بمنفذ 3.5 مللي متر

 

توصيل الدائرة

توصيل الدائرة

وحدة (TEA5767 FM)

وحدة راديو (TEA5767 FM) عبارة عن شريحة واحدة، تدعم بروتوكول الاتصال IC للتطبيقات منخفضة الجهد وتمثل راديو مصغر مضبوط رقميًا. يعمل في نطاقات الترددات الأوروبية والأمريكية واليابانية. تتكون الوحدة من منفذين 3.5 ملم، يستخدم الأول لتوصيل الهوائي، و زيادة مساحة التقاط الموجات والآخر منفذ السماعات.

tea5767 ports

كما تحتوي على 4 دبابيس:

VCC: وحدة إمداد الطاقة – 5 فولت
GND: الأرض
SLC: تزامن بروتوكول I2C يوصل مع المنفذ التناظري A5
SDA: بيانات بروتوكول I2C يوصل مع المنفذ التناظري A4

tea5767 pins

البرمجة

بالبداية ستحتاج إلى تحميل مكتبة (TEA5767 FM) و من ثم تثبيتها في بيئة تطوير الاردوينو (اردوينو IDE) يمكنك الاطلاع على الدرس الأول -تنصيب برنامج اردوينو  لمعرفة كيف يتم تثبيت المكتبات

 

#include<Wire.h>

#include <TEA5767Radio.h> 

#include <LiquidCrystal.h>

TEA5767Radio radio = TEA5767Radio();            
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);              
float frequency = 0;                            
int fUP = A0;                                   
int fDOWN = A1;                                
int count = 0;                                   
void setup()
{
  delay(1000);
  Wire.begin();
  frequency = 91.1;                       //starting frequency
  radio.setFrequency(frequency);
  lcd.begin(16,2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("FM: ");
  lcd.setCursor(0, 1);
  lcd.print(frequency);
}void loop()
{
  
  if(digitalRead(fUP))                      
  {
    count=0;
    while (digitalRead(fUP))
    {
      count++;
      if(count > 0 && count <= 6)          
      {
        frequency += 0.1;
        frequencyUpdate();
        delay(200);
      }
      else if (count > 6 && count <= 2)   
      {
        frequency += 0.1;
        frequencyUpdate();
        delay(80);
      }
      else                                
      {
        frequency += 0.1;
        frequencyUpdate();
        delay(5);
      }
    }}
  
  
  
   if(digitalRead(fDOWN))                   
   {
     count = 0;
    while (digitalRead(fDOWN))            
    {
      count--;
      if(count < 0 && count >= -6)
      {
        frequency -= 0.1;
        frequencyUpdate();
        delay(200);
      }
      else if (count < -6 && count >= -12)
      {
        frequency -= 0.1;
        frequencyUpdate();
        delay(80);
      }
      else                                 
      {
        frequency -= 0.1;
        frequencyUpdate();
        delay(5);
      }
    }
   }  
  
}
void frequencyUpdate()                    
{
  frequency = constrain(frequency, 88.0, 108.0);
  lcd.setCursor(0,0);
  lcd.print("ESTACION DE FM:");
  lcd.setCursor(0,1);
  lcd.print(frequency);
  radio.setFrequency(frequency);
}

شرح الكود البرمجي

بالبدية سيتم استدعاء المكتبات الضرورية في المشروع

#include<Wire.h>
#include <TEA5767Radio.h> 
#include <LiquidCrystal.h>

نعرف كائن باسم (radio)

TEA5767Radio radio = TEA5767Radio();

نعرف منافذ الشاشة الكرستالية

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

نعرف متغيرات تشيل إلى التردد و منفذ ضغاط التحكم لزيادة و تنقيص قيمة التردد
يمثل ضغاط التحكم الموصل مع المنفذ A0 مفتاح التحكم بزيادة التردد بقيمة 0.1
و يمثل ضغاط التحكم الموصل مع المنفذ A1 مفتاح التحكم بتنقيص التردد بقيمة 0.1

float frequency = 0; 
int fUP = A0; 
int fDOWN = A1; 
int count = 0;

في دالة التهيئة نهيئة الاتصال و الشاشة الكرستالية

void setup()
{
delay(1000);
Wire.begin();
frequency = 91.1; //starting frequency
radio.setFrequency(frequency);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("FM: ");
lcd.setCursor(0, 1);
lcd.print(frequency);
}

في دالة ال(void loop) نبرمج دوال التحكم زيادة ونقصان قيمة التردد بناء على مدخلات مفاتيح التحكم

void loop()
{

if(digitalRead(fUP)) 
{
count=0;
while (digitalRead(fUP))
{
count++;
if(count > 0 && count <= 6) 
{
frequency += 0.1;
frequencyUpdate();
delay(200);
}
else if (count > 6 && count <= 2) 
{
frequency += 0.1;
frequencyUpdate();
delay(80);
}
else 
{
frequency += 0.1;
frequencyUpdate();
delay(5);
}
}}



if(digitalRead(fDOWN)) 
{
count = 0;
while (digitalRead(fDOWN)) 
{
count--;
if(count < 0 && count >= -6)
{
frequency -= 0.1;
frequencyUpdate();
delay(200);
}
else if (count < -6 && count >= -12)
{
frequency -= 0.1;
frequencyUpdate();
delay(80);
}
else 
{
frequency -= 0.1;
frequencyUpdate();
delay(5);
}
}
} 

}

في دالة (frequencyUpdate) يتم تحديث قيم التررد بناء على المدخلات من المفاتيح

void frequencyUpdate() 
{
frequency = constrain(frequency, 88.0, 108.0);
lcd.setCursor(0,0);
lcd.print("STACION FM:");
lcd.setCursor(0,1);
lcd.print(frequency);
radio.setFrequency(frequency);
}

 

X
Product added to the cart