فهرست مطالب:

سیستم کنترل چراغ: 9 مرحله
سیستم کنترل چراغ: 9 مرحله

تصویری: سیستم کنترل چراغ: 9 مرحله

تصویری: سیستم کنترل چراغ: 9 مرحله
تصویری: لزبازی لیلا اوتادی چه لبی میگیره (نبینی از دستت رفته) 2024, جولای
Anonim
سیستم کنترل چراغ
سیستم کنترل چراغ

اخیراً من برای اهداف تحقیق امنیتی بر روی درک میکروکنترلرها و دستگاه های مبتنی بر IOT کار می کردم. بنابراین ، من به فکر ساختن یک سیستم اتوماسیون خانگی کوچک برای تمرین بودم. من هنوز این را تکمیل نکرده ام ، اما برای راه اندازی نحوه استفاده از Raspberry Pi 2 و برخی دیگر از قطعات الکتریکی برای کنترل روشنایی اتاقم را در این پست به اشتراک خواهم گذاشت. همچنین ، من در مورد راه اندازی اولیه برای تمشک صحبت نمی کنم ، ممکن است آموزش های مختلفی برای آن پیدا کنید.

اما در این پروژه ، من این محصول سری docker pi را به شما معرفی می کنم.

تدارکات

لیست اجزاء:

  • 1 عدد Raspberry Pi 3B+/3B/Zero/Zero W/4B/
  • کارت TF 1 x 16 گیگابایت
  • 1 عدد تخته رله سری 4 DockerPi (HAT)
  • منبع تغذیه 1 x [email protected] که از 52Pi است
  • 4 x نوار نور
  • 1 x اتصال DC
  • منبع تغذیه 1 x 12V برای نوارهای نور.
  • چندین سیم

مرحله 1: آگاهی از برد رله سری 4 DockerPi Series

آگاهی از برد رله سری 4 DockerPi
آگاهی از برد رله سری 4 DockerPi
آگاهی از برد رله سری 4 DockerPi
آگاهی از برد رله سری 4 DockerPi
آگاهی از برد رله سری 4 DockerPi
آگاهی از برد رله سری 4 DockerPi

رله DockerPi 4 Channel یکی از سری DockerPi است که بیشتر در برنامه های IOT استفاده می شود.

رله DockerPi 4 Channel می تواند AC/DC را به جای سوئیچ های سنتی ، برای دستیابی به ایده های بیشتر رله کند. رله DockerPi 4 Channel می تواند تا 4 را روی هم قرار دهد و می تواند با سایر بردهای توسعه DockerPi روی هم چیده شود. اگر به مدت طولانی نیاز به اجرا دارید ، همچنین توصیه می کنیم از تخته توسعه DockerPi Power ما برای تأمین قدرت بیشتر استفاده کنید.

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

مرحله 2: ویژگی ها

امکانات
امکانات
امکانات
امکانات
امکانات
امکانات
  • سری DockerPi
  • قابل برنامه ریزی
  • کنترل مستقیم (بدون برنامه نویسی)
  • پین های GPIO را گسترش دهید
  • رله 4 کانال
  • 4 پشتیبانی Alt I2C Addr
  • پشتیبانی از وضعیت رله
  • پشتیبانی 3A 250V AC
  • 3A 30V DC
  • می تواند با سایر برد های Stack مستقل از سخت افزار مادربرد (نیاز به پشتیبانی I2C)

مرحله 3: نقشه آدرس دستگاه

نقشه آدرس دستگاه
نقشه آدرس دستگاه
نقشه آدرس دستگاه
نقشه آدرس دستگاه

این برد آدرس ثبت جداگانه دارد و فقط می توانید هر رله را با یک فرمان کنترل کنید.

ملزومات دیگر:

آشنایی اولیه با پایتون یا C یا پوسته یا جاوا یا هر زبان دیگر (من از C ، پایتون ، پوسته و جاوا استفاده می کنم)

  • آشنایی اولیه با سیستم های لینوکس
  • حضور ذهن

اکنون ، قبل از حرکت به جلو ، باید اجزای الکتریکی مورد استفاده خود را درک کنید:

1. رله:

رله یک وسیله الکتریکی است که معمولاً برای کنترل ولتاژهای بالا با استفاده از ولتاژ بسیار کم به عنوان ورودی استفاده می شود. این شامل یک سیم پیچ پیچیده در اطراف یک قطب و دو فلپ کوچک (گره) است که برای بستن مدار استفاده می شود. یکی از گره ها ثابت و دیگری متحرک است. هرگاه الکتریسیته ای از سیم پیچ عبور کند ، میدان مغناطیسی ایجاد می کند و گره متحرک را به سمت گره استاتیک جذب می کند و مدار کامل می شود. بنابراین ، فقط با اعمال ولتاژ کوچک برای تقویت سیم پیچ ، ما در واقع می توانیم مدار را برای حرکت ولتاژ بالا تکمیل کنیم. همچنین ، از آنجا که گره استاتیک از نظر فیزیکی به سیم پیچ متصل نیست ، احتمال اینکه میکروکنترلر تغذیه کننده سیم پیچ در صورت خرابی آسیب ببیند بسیار کم است.

مرحله 4: رله را به نگهدارنده لامپ متصل به منبع اصلی برق وصل کنید

رله را به نگهدارنده لامپ متصل به منبع تغذیه اصلی وصل کنید
رله را به نگهدارنده لامپ متصل به منبع تغذیه اصلی وصل کنید
رله را به نگهدارنده لامپ متصل به منبع تغذیه اصلی وصل کنید
رله را به نگهدارنده لامپ متصل به منبع تغذیه اصلی وصل کنید

حال به قسمت دشوار ، رله را به نگهدارنده لامپ متصل به منبع تغذیه Main Electric متصل می کنیم. اما ، ابتدا می خواهم یک ایده مختصر در مورد نحوه روشن و خاموش کردن چراغ ها از طریق منبع تغذیه مستقیم ارائه دهم.

حال وقتی لامپ به منبع اصلی وصل می شود ، معمولاً این کار را با اتصال دو سیم به لامپ انجام می دهیم. یکی از سیم ها یک سیم "خنثی" و دیگری سیم "منفی" است که در واقع جریان را حمل می کند ، همچنین یک کلید برای کنترل مکانیزم خاموش و روشن کردن به کل مدار اضافه شده است. بنابراین ، هنگامی که سوئیچ متصل است (یا روشن است) جریان از طریق لامپ و سیم خنثی عبور می کند و مدار را تکمیل می کند. با این کار لامپ روشن می شود. وقتی کلید روشن است ، مدار را خراب می کند و لامپ خاموش می شود. در اینجا یک نمودار مدار کوچک برای توضیح این امر آمده است:

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

مرحله 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 و هسته لینوکس دنبال کنید

به گزینه Interfacing Options بروید

مرحله 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 (تمشک پای)

کد منبع ایجاد کنید و نام آن را "relay.c" بگذارید

#عبارتند از

#عبارتند از

#عبارتند از

#تعریف DEVCIE_ADDR 0x10

#تعریف RELAY1 0x01

#تعریف RELAY2 0x02

#تعریف RELAY3 0x03

#تعریف RELAY4 0x04

#تعریف 0xFF

#تعریف 0x00 خاموش

int main (باطل)

{

printf ("روشن کردن رله ها در C / n") ؛

int fd؛

int i = 0 ؛

fd = wiringPiI2CSetup (DEVICE_ADDR) ؛

برای(؛؛){

برای (i = 1 ؛ i <= 4 ؛ i ++)

{

printf ("روشن کردن رله شماره $ d" ، i) ؛

سیم کشی Pii2CWriteReg8 (fd، i، ON)؛

خواب (200) ؛

printf ("خاموش کردن رله شماره $ d" ، i) ؛

سیم کشیPiI2CWriteReg8 (fd، i، OFF)؛

خواب (200) ؛

}

}

بازگشت 0 ؛

}

آن را کامپایل کنید

رله gcc.c -lwiringPi -o رله

اجرا کنید

./ رله

مرحله 8: برنامه در پایتون (Raspberry Pi)

کد زیر توصیه می شود با استفاده از پایتون 3 اجرا شده و کتابخانه smbus را نصب کنید:

فایلی با نام آن ایجاد کنید: "relay.py" و کد زیر را وارد کنید:

زمان واردات به عنوان t

smbus وارد کنید

واردات سیستم

DEVICE_BUS = 1

DEVICE_ADDR = 0x10

اتوبوس = smbus. SMBus (DEVICE_BUS)

در حالی که True:

تلاش كردن:

برای i در محدوده (1 ، 5):

bus.write_byte_data (DEVICE_ADDR ، i ، 0xFF)

t. خواب (1)

bus.write_byte_data (DEVICE_ADDR ، i ، 0x00)

t. خواب (1)

بجز KeyboardInterrupt as e:

چاپ ("خروج از حلقه")

sys.exit ()

* آن را ذخیره کرده و سپس به عنوان python3 اجرا کنید:

رله python3.py

مرحله 9: برنامه در جاوا (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) ؛

موضوع. خواب (500) ؛

console.println ("خاموش کردن رله!") ؛

device.write (DOCKER_PI_RELAY_1 ، DOCKER_PI_RELAY_OFF) ؛

}

}

توصیه شده: