جدول المحتويات:

نظام التحكم في الأضواء: 9 خطوات
نظام التحكم في الأضواء: 9 خطوات

فيديو: نظام التحكم في الأضواء: 9 خطوات

فيديو: نظام التحكم في الأضواء: 9 خطوات
فيديو: زر التحكم في ارتفاع أضواء السيارة 2024, يوليو
Anonim
نظام التحكم في الأضواء
نظام التحكم في الأضواء

كنت أعمل مؤخرًا على فهم أجهزة التحكم الدقيقة والأجهزة القائمة على إنترنت الأشياء لأغراض البحث الأمني. لذلك ، فكرت في بناء نظام أتمتة منزلي صغير للممارسة. لم أكمل هذا بعد ، ولكن بالنسبة لبدء التشغيل ، سأشارك كيف استخدمت Raspberry Pi 2 وبعض المكونات الكهربائية الأخرى للتحكم في إضاءة غرفتي في هذا المنشور. أيضًا ، لن أتحدث عن الإعداد الأولي لـ Raspberry هنا ، فقد تجد العديد من البرامج التعليمية لذلك.

لكن في هذا المشروع ، سأقدم لك منتج docker pi series هذا.

اللوازم

قائمة المكونات:

  • 1 x Raspberry Pi 3B + / 3B / Zero / Zero W / 4B /
  • 1 × 16 جيجا فئة 10 بطاقة TF
  • 1 × سلسلة DockerPi ذات 4 قنوات مرحل (HAT)
  • 1 × [email protected] مصدر طاقة من 52Pi
  • 4 × شريط إضاءة
  • 1 × موصل تيار مستمر
  • 1 × 12 فولت إمدادات الطاقة لشرائط الإضاءة.
  • عدة أسلاك.

الخطوة 1: التعرف على لوحة الترحيل DockerPi Series 4 Channel Relay Board

التعرف على لوحة الترحيل DockerPi Series 4 Channel Relay Board
التعرف على لوحة الترحيل DockerPi Series 4 Channel Relay Board
التعرف على لوحة الترحيل DockerPi Series 4 Channel Relay Board
التعرف على لوحة الترحيل DockerPi Series 4 Channel Relay Board
التعرف على لوحة الترحيل DockerPi Series 4 Channel Relay Board
التعرف على لوحة الترحيل DockerPi Series 4 Channel Relay Board

DockerPi 4 Channel Relay هو عضو في سلسلة DockerPi ، الأكثر استخدامًا في تطبيقات IOT.

يمكن لـ DockerPi 4 Channel Relay ترحيل AC / DC ، بدلاً من المفاتيح التقليدية ، لتحقيق المزيد من الأفكار. يمكن لـ DockerPi 4 Channel Relay تكديس ما يصل إلى 4 ، ويمكن تكديسها مع لوحة توسيع DockerPi أخرى. إذا كنت بحاجة إلى الجري لفترة طويلة ، فإننا نوصيك أيضًا باستخدام لوحة التوسيع DockerPi Power الخاصة بنا لتوفير المزيد من الطاقة.

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

الخطوة 2: الميزات

سمات
سمات
سمات
سمات
سمات
سمات
  • سلسلة DockerPi
  • قابل للبرمجة
  • تحكم مباشر (بدون برمجة)
  • قم بتمديد دبابيس GPIO
  • 4 قنوات تتابع
  • 4 دعم العنوان البديل I2C
  • دعم حالة التتابع
  • دعم 3A 250V AC
  • 3A 30V DC
  • يمكن تكديسها مع لوحة Stack أخرى مستقلة عن أجهزة اللوحة الأم (تتطلب دعم I2C)

الخطوة 3: خريطة عنوان الجهاز

خريطة عنوان الجهاز
خريطة عنوان الجهاز
خريطة عنوان الجهاز
خريطة عنوان الجهاز

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

متطلبات اخرى:

الفهم الأساسي للغة Python أو C أو shell أو Java أو أي لغة أخرى (سأستخدم C و python و shell و java)

  • الفهم الأساسي لأنظمة Linux
  • حضور الذهن

الآن ، قبل المضي قدمًا ، ستحتاج إلى فهم المكونات الكهربائية التي سنستخدمها:

1. التتابع:

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

الخطوة 4: قم بتوصيل المرحل بحامل المصباح المدعوم من التيار الكهربائي الرئيسي

قم بتوصيل المرحل بحامل المصباح المزود بمصدر كهربائي رئيسي
قم بتوصيل المرحل بحامل المصباح المزود بمصدر كهربائي رئيسي
قم بتوصيل المرحل بحامل المصباح المدعوم بمصدر كهربائي رئيسي
قم بتوصيل المرحل بحامل المصباح المدعوم بمصدر كهربائي رئيسي

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

الآن ، عندما يتم توصيل المصباح الكهربائي بالمصدر الرئيسي ، فإننا نقوم بذلك عادةً عن طريق توصيل سلكين بالمصباح. أحد السلكين هو سلك "محايد" والآخر هو السلك "السلبي" الذي يحمل التيار بالفعل ، كما يوجد مفتاح مضاف إلى الدائرة بأكملها للتحكم في آلية التشغيل وإيقاف التشغيل. لذلك ، عندما يتم توصيل swith (أو تشغيله) ، يتدفق التيار عبر المصباح والسلك المحايد ، مما يكمل الدائرة. يؤدي هذا إلى تشغيل المصباح الكهربائي. عندما يتم تشغيل المفتاح ، فإنه يكسر الدائرة وينطفئ المصباح الكهربائي. إليك مخطط دائرة صغيرة لشرح ذلك:

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

الخطوة 5: تكوين I2C (Raspberry Pi)

تكوين I2C (Raspberry Pi)
تكوين I2C (Raspberry Pi)
تكوين I2C (Raspberry Pi)
تكوين I2C (Raspberry Pi)
تكوين I2C (Raspberry Pi)
تكوين I2C (Raspberry Pi)
تكوين I2C (Raspberry Pi)
تكوين I2C (Raspberry Pi)

قم بتشغيل sudo raspi-config واتبع التعليمات لتثبيت دعم i2c لنواة ARM و linux kernel

انتقل إلى خيارات التواصل

الخطوة 6: التحكم المباشر بدون برمجة (Raspberry Pi)

قم بتشغيل القناة رقم 1 التتابع

i2cset -y 1 0x10 0x01 0xFF

قم بإيقاف تشغيل التتابع رقم 1

i2cset -y 1 0x10 0x01 0x00

قم بتشغيل القناة رقم 2 التتابع

i2cset -y 1 0x10 0x02 0xFF

قم بإيقاف تشغيل القناة رقم 2 التتابع

i2cset -y 1 0x10 0x02 0x00

قم بتشغيل القناة رقم 3 التتابع

i2cset -y 1 0x10 0x03 0xFF

قم بإيقاف تشغيل القناة رقم 3 التتابع

i2cset -y 1 0x10 0x03 0x00

قم بتشغيل القناة رقم 4 التتابع

i2cset -y 1 0x10 0x04 0xFF

قم بإيقاف تشغيل القناة رقم 4 التتابع

i2cset -y 1 0x10 0x04 0x00

الخطوة 7: البرنامج في اللغة C (Raspberry Pi)

إنشاء كود المصدر وتسميته "relay.c"

#يشمل

#يشمل

#يشمل

#define DEVCIE_ADDR 0x10

#define RELAY1 0x01

#define RELAY2 0x02

#define RELAY3 0x03

#define RELAY4 0x04

#define ON 0xFF

#define OFF 0x00

int main (باطل)

{

printf ("تشغيل المرحلات في C / n") ؛

كثافة العمليات

كثافة العمليات أنا = 0 ؛

fd = wiringPiI2CSetup (DEVICE_ADDR) ؛

ل(؛؛){

لـ (i = 1 ؛ i <= 4 ؛ i ++)

{

printf ("تشغيل التتابع رقم $ d"، i)؛

wiringPiI2CWriteReg8 (fd، i، ON) ؛

ينام (200) ؛

printf ("إيقاف تشغيل المرحل رقم $ d"، i)؛

wiringPiI2CWriteReg8 (fd، i، OFF) ؛

ينام (200) ؛

}

}

العودة 0 ؛

}

تجميعها

تتابع دول مجلس التعاون الخليجي -lwiringPi -o relay

إكسيك إت

./تناوب

الخطوة 8: البرنامج في Python (Raspberry Pi)

يوصى بتنفيذ الكود التالي باستخدام Python 3 وتثبيت مكتبة smbus:

قم بإنشاء ملف يسمى: "relay.py" والصق الكود التالي:

وقت الاستيراد كما ر

استيراد smbus

استيراد النظم

DEVICE_BUS = 1

DEVICE_ADDR = 0x10

الحافلة = smbus. SMBus (DEVICE_BUS)

احيانا صحيح:

محاولة:

بالنسبة لـ i في النطاق (1 ، 5):

bus.write_byte_data (DEVICE_ADDR، i، 0xFF)

t.sleep (1) النوم

bus.write_byte_data (DEVICE_ADDR، i، 0x00)

t.sleep (1) النوم

باستثناء KeyboardInterrupt كـ e:

print ("Quit the Loop")

sys.exit ()

* احفظه ثم قم بتشغيله كـ python3:

python3 relay.py

الخطوة 9: البرنامج في Java (Raspberry Pi)

قم بإنشاء ملف جديد باسم: I2CRelay.java والصق الكود التالي:

استيراد java.io. IOException ؛

استيراد java.util. Arrays ؛

استيراد com.pi4j.io.i2c. I2CBus ؛

استيراد com.pi4j.io.i2c. I2CDevice ؛

استيراد com.pi4j.io.i2c. I2CFactory ؛

استيراد com.pi4j.io.i2c. I2CFactory. UnsupportedBusNumberException ؛

استيراد com.pi4j.platform. PlatformAlreadyAssignedException ؛

استيراد com.pi4j.util. Console ؛

فئة عامة I2CRelay {

// عنوان سجل الترحيل.

النهائي العام الثابت DOCKER_PI_RELAY_ADDR = 0x10 ؛

// قناة التتابع.

البايت النهائي العام الثابت DOCKER_PI_RELAY_1 = (بايت) 0x01 ؛

البايت النهائي العام الثابت DOCKER_PI_RELAY_2 = (بايت) 0x02 ؛

البايت النهائي العام الثابت DOCKER_PI_RELAY_3 = (بايت) 0x03 ؛

البايت النهائي العام الثابت DOCKER_PI_RELAY_4 = (بايت) 0x04 ؛

// حالة التتابع

البايت النهائي العام الثابت DOCKER_PI_RELAY_ON = (بايت) 0xFF ؛

البايت النهائي العام الثابت DOCKER_PI_RELAY_OFF = (بايت) 0x00 ؛

يطرح public static void main (String args) InterruptException و PlatformAlreadyAssignedException و IOException و UnsupportedBusNumberException {

وحدة التحكم النهائية = وحدة تحكم جديدة () ؛

I2CBus i2c = I2CFactory.getInstance (I2CBus. BUS_1) ،

جهاز I2CDevice = i2c.getDevice (DOCKER_PI_RELAY_ADDR) ،

console.println ("تشغيل الترحيل!") ؛

device.write (DOCKER_PI_RELAY_1 ، DOCKER_PI_RELAY_ON) ؛

Thread.sleep (500) ؛

console.println ("إيقاف تشغيل الترحيل!") ؛

device.write (DOCKER_PI_RELAY_1 ، DOCKER_PI_RELAY_OFF) ؛

}

}

موصى به: