الجمعة، 18 سبتمبر 2020

كيفية التوصيل بين اثنين من اردوينو على بعد 1000 متر

 تعرف على كيفية إنشاء اتصال بعيد المدى باستخدام اثنين من Arduinos من خلال وحدة HC-12.

غالبًا ما نرغب في تشغيل العديد من المشغلات عن بُعد مثل المصابيح والمحركات والمحركات الأخرى.

ومع ذلك ، هناك حالات يصبح فيها استخدام الأنظمة السلكية لقيادة هذه المشغلات غير عملي بسبب المسافة بين المشغل ونظام القيادة أو صعوبة تنفيذ تركيب الكابلات اللازمة لتنفيذ العملية المطلوبة.

في هذه الحالات ، يكون جهاز التحكم عن بعد بديلاً لاستخدامه ، وهناك العديد من أجهزة الإرسال والاستقبال اللاسلكية التي يمكن استخدامها ، مثل وحدة HC-12 و NRF24L01 و Lora وغيرها.

في هذه المقالة ، سوف نتعلم كيفية بناء NEXTPCB Electronic Board لإنشاء نظام أتمتة والتحكم في العديد من الأجهزة عن بعد.

سوف يحتوي NEXTPCBPCB على وحدة الإرسال / الاستقبال الراديوي HC-12 و Arduino Nano الذي سيكون المستقبل و HC-12 مع Arduino Uno الذي سيكون جهاز الإرسال لأداء تنشيط LEDs على مسافة

من خلال هذا المقال سوف:

قم بإجراء تجميع الدائرة على اللوحة الأولية

افهم كيف تعمل وحدة HC-12

قم بإجراء اتصال Arduino Nano / Arduino Nano بوحدة HC-12

تفعيل الجهاز عن بعد

افهم كيف يعمل الاتصال التسلسلي مع جهاز الإرسال والاستقبال اللاسلكي

قم بإنشاء NEXTPCB ثنائي الفينيل متعدد الكلور

بناء نظام أتمتة التحكم عن بعد

كما ذكرنا سابقًا ، يتكون المشروع من إنشاء نظام لتنشيط الأجهزة عن بُعد وإنشاء لوحة دوائر مطبوعة NEXTPCB للتحكم في الأجهزة.

وحدة HC-12 هي جهاز إرسال واستقبال لاسلكي وتردد تشغيلها من 433.4 ميجاهرتز إلى 473 ميجاهرتز.

من الممكن توصيل نوعين من الهوائيات في هذه الوحدة ، هوائي حلزوني يأتي مع الوحدة أو هوائي آخر يتم توصيله بموصل UFL.

يمكن أن يصل مدى هذه الوحدة إلى كيلومتر واحد حسب الإعدادات والهوائي المستخدم.

تأتي هذه الوحدات عادةً مع بعض إعدادات المصنع ، حتى نتمكن من التواصل بين وحدتي HC-12. على سبيل المثال ، يمكننا التواصل بين جهازي Arduinos.

لتنفيذ هذه العملية ، يجب علينا تعديل بعض المعلمات مثل سرعة الاتصال وقناة الاتصال ووضع التشغيل باستخدام أوامر AT.

لتكوين الوحدة النمطية ، يجب توصيل دبوس المجموعة بـ GND كما هو موضح في الشكل 1. تسمح هذه العملية للوحدة بالدخول في وضع التكوين.

يوصى بتزويد وحدة HC-12 بمصدر خارجي 5 فولت ، حيث تحتوي على بعض محولات USB-SERIAL التي لا توفر تيارًا كافيًا لتزويد الوحدة.

لتحسين التصميم ، سنقوم بإنشاء لوحة دوائر مطبوعة NEXTPCB لضمان الطاقة الكافية لـ HC

12.

يجب توصيل GND الخاص بمحول USB-SERIAL بـ GND الخاص بمصدر الطاقة.




قبل أن نبدأ في تكوين الوحدة ، يجب علينا تنزيل برنامج Termite المتاح على الرابط: تنزيل برنامج Termite

بعد إجراء التوصيلات بوحدة HC-12 ومحول USB التسلسلي ، افتح برنامج Termite.

تكوين وحدة HC-12 باستخدام برنامج Termite.


بعد فتح برنامج Termite ، يجب أن نضغط على Settings (الإعدادات) لعمل بعض الإعدادات وفقًا للشكل.


بعد إجراء الإعدادات في برنامج Termite ، انقر فوق Ok ثم COM3 لتوصيل المحول التسلسلي USB بوحدة HC-12 بالمنفذ التسلسلي المتصل.

انتظر لتوصيل المنفذ ببرنامج Termite ونكتب في شريط الأوامر الأمر AT

إذا سارت الأمور على ما يرام ، فستظهر OK كما في الشكل.



بعد هذا الاختبار الأولي ، سنقوم بتكوين وحدة HC-12 بالمعلمات التالية:

مسلسل Velocidad de comunicación: 9600 بت في الثانية
قناة de comunicação 5
بوتينسيا دي ترانسيسيون دي 11 ديسيبل
طريقة العمل FU3











بعد إجراء التكوين للوحدة الأولى ، نكرر الخطوات لتكوين الوحدة الثانية.

بعد تكوين كلتا الوحدتين ، يمكننا الاتصال بـ Arduino كما هو موضح في الشكل 8 لجهاز الإرسال والشكل 9 لجهاز الاستقبال

سيكون Arduino Uno هو جهاز الإرسال الذي سيقوم بقراءة زرين وعندما يتم الضغط على الزر B0 ، سيتم إرسال أمر لإضاءة المصباح الأحمر وعند الضغط على الزر B1 سيضيء المصباح الأزرق.

لإيقاف تشغيل المصابيح ، ما عليك سوى الضغط على B0 أو B1 لإيقاف تشغيل المصباح المعني.




في Arduino Uno ، سيكون لدينا زر B0 متصل بالدبوس الرقمي 2 من Arduino Uno والزر B1 متصل بالدبوس الرقمي 3 من Arduino Uno.

يتم تنشيط كلا الزرين عند مستوى منطقي منخفض عند الضغط على الأزرار.

لإنشاء اتصال تسلسلي ، سنستخدم المكتبة التي تسمى البرنامج التسلسلي لتكوين هذين المسامير 7 و 8 كدبابيس اتصال تسلسلي ، أي أننا سنحاكي اتصالًا تسلسليًا بواسطة البرنامج.

اتصال HC-12 على Arduino Nano الذي سيكون جهاز الاستقبال هو نفس دائرة الإرسال ، سيكون الاختلاف هو وجود مصابيح LED على المسامير الرقمية 4 و 3.



بعد تجميع دائرتي الإرسال والاستقبال ، سنبرمج الدائرتين.

أولاً ، لدينا كود المرسل. يتم تقديم رمز المصدر أدناه.

        #include <SoftwareSerial.h> // Inclui a biblioteca Software Serial
SoftwareSerial HC12(8,7); // 8 RX vai ligado no Tx do modulo HC 12, 7 TX vai
ligado no RX do módulo
#define B0 2
#define B1 3
void setup()
{
 pinMode(B0,INPUT);
 pinMode(B1,INPUT);
 Serial.begin(9600);
 HC12.begin(9600);
}
void loop() 
{
 if(!digitalRead(B0))
 {
 Serial.println("B0 pressionado ");
 Serial.print('1');
 HC12.print('1');

 while(digitalRead(B0)==0);
 }
if(!digitalRead(B1))
 {
 Serial.println("B1 pressionado ");
 Serial.print('2');
 HC12.print('2');

 while(digitalRead(B1)==0);
 }
}
         أولاً ، قمنا بتضمين مكتبة البرامج التسلسلية حتى نتمكن من استخدام أي دبوس رقمي كدبوس TX أو RX لاستخدامه كجهاز إرسال بيانات.   
#include <SoftwareSerial.h> // Inclui a biblioteca Software Serial
    
نقوم بإنشاء كائن باستخدام المسامير التي ستؤدي الاتصال التسلسلي.        SoftwareSerial HC12(8,7); // 8 RX vai ligado no Tx do modulo HC 12, 7 TX vai
ligado no RX do módulo
    
نقوم بتسمية المسامير 2 B0 و 3 B1 باستخدام التعريف ، كما هو موضح أدناه.        #define B0 2 
#define B1 3
    
في وظيفة الإعداد الفارغ ، يتم تكوين المسامير 2 و 3 كمدخلات ، وتكوين سرعة الاتصال التسلسلي لـ USB والاتصال التسلسلي مع وحدة HC-12.        void setup()
{
 pinMode(B0,INPUT);
 pinMode(B1,INPUT);
 Serial.begin(9600);
 HC12.begin(9600);
}




الجمعة، 11 سبتمبر 2020

مكتشف المسافة بالموجات فوق الصوتية في الزمن الحقيقي

 في هذا المشروع ، سنقوم بعمل مكتشف عن بعد قائم على جهاز استشعار بالموجات فوق الصوتية ، ولكن في الزمن الحقيقي ، أي - كائن قادم أو بعيدًا.

Ultra sonic distance finder with live status


الأشياء المستخدمة في هذا المشروع

جهاز الاستشعار بالموجات فوق الصوتية - HC-SR04 

اردوينو نانو R3


مشروعه بسيط ولكنه رائع وسهل للغاية. في هذا المشروع ، نستخدم مستشعرًا واحدًا بالموجات فوق الصوتية لتتبع كائن واحد في بُعد واحد ، وإيجاد المسافة.

من خلال هذا المشروع ، يمكننا معرفة ما إذا كان الجسم يتقدم أو يقترب ، أو أنه في نفس النقطة - إنه لا يتحرك.

في هذا المشروع ، نستخدم فقط 2mainhardware وهي:

يمكن استخدام أي نوع من لوحات Arduino (uno ، nano ، mega ، إلخ) ، ولكن يجب أن يكون لها خرج 5 فولت. لقد استخدمت اردوينو نانو.

جهاز استشعار بالموجات فوق الصوتية (HC-SRO-4)

ملامح المشروع:

This is HC-SR04


This is mother board:  (Arduino nano)


لبدء

1) كيف يعمل جهاز الاستشعار بالموجات فوق الصوتية؟

إنه يعمل عن طريق إرسال موجة صوتية ، موجة استقبال منعكسة بواسطة الكائن. وإذا لم يكن هناك جسم فلن تكون هناك موجة منعكسة.

تعمل أجهزة الاستشعار بالموجات فوق الصوتية عن طريق إصدار موجات صوتية بتردد عالٍ جدًا لا يستطيع البشر سماعه (الموجات فوق الصوتية). ثم ينتظرون حتى ينعكس الصوت مرة أخرى ، ويحسبون المسافة بناءً على الوقت المطلوب. هذا مشابه لكيفية قياس الرادار للوقت الذي تستغرقه موجة الراديو للعودة بعد اصطدامها بجسم ما.

إذا كنت بحاجة إلى قياس المسافة المحددة من المستشعر الخاص بك ، فيمكن حساب ذلك بناءً على هذه الصيغة:

المسافة = ½ T x C

T = الوقت و C = سرعة الصوت)

عند 20 درجة مئوية (68 درجة فهرنهايت) ، تبلغ سرعة الصوت 343 مترًا / ثانية (1125 قدمًا / ثانية) ، لكن هذا يختلف تبعًا لدرجة الحرارة والرطوبة.

يمكن أيضًا استخدام أجهزة الاستشعار بالموجات فوق الصوتية المعدلة خصيصًا تحت الماء. ومع ذلك ، فإن سرعة الصوت في الماء تبلغ 4.3 أضعاف سرعة الهواء ، لذلك يجب تعديل هذا الحساب بشكل كبير.

إنه يعمل عن طريق إرسال موجة صوتية ، موجة استقبال منعكسة بواسطة الكائن. وإذا لم يكن هناك جسم فلن تكون هناك موجة منعكسة.

connections

استكشاف الأخطاء وإصلاحها

تحقق من منفذ com أثناء التحميل.

تأكد من تحديد لوحة الكتابة.

تأكد من تحديد برنامج Wright bootloader.

// ---------------------------------------------------------------- //
// made by rho sigma electronics
// Arduino Ultrasoninc Sensor HC-SR04
// Using Arduino IDE 1.8.7
// Using HC-SR04 Module
// ---------------------------------------------------------------- //

#define echoPin 2 // attach pin D2 Arduino to pin Echo of HC-SR04
#define trigPin 3 //attach pin D3 Arduino to pin Trig of HC-SR04

// defines variables
long duration; // variable for the duration of sound wave travel
float distance, distance1, diff;//variable forthedistancemeasuremenorother
int i=0;

void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT
Serial.begin(9600); // // Serial Communication is starting with 9600 of baudrate speed
Serial.println("Ultrasonic Sensor HC-SR04 Test"); // print some text in Serial Monitor
Serial.println("with Arduino");
}
void loop() {
// Clears the trigPin condition
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin HIGH (ACTIVE) for 10 microseconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance = duration * 0.034 / 2; // Speed of sound wave divided by 2 (go and back)
// Displays the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");

if(distance <= 5.0){
Serial.println(" object is near");
}
if(distance >= 100.0){
Serial.println(" object is far");
}
if((distance < 100.0) && (distance >5.0)){
Serial.println(" object is in green zone");
}

if(i != 0)
{
diff=abs(distance-distance1);

if(diff > 0.4) //because sensor has an eorrer of 0.3 cm
{
if(distance < distance1)
Serial.println(" object is coming closer");
else
{
if(distance > distance1)
Serial.println(" object is going farther");
else
Serial.println(" object is not moving");
}
}
else
Serial.println(" object is not moving"); //print object is not moving
}

distance1=distance;
i=i+1;              

delay(1000); // delay 1 second
}