תוכן עניינים:

מערכת בקרת אורות: 9 שלבים
מערכת בקרת אורות: 9 שלבים

וִידֵאוֹ: מערכת בקרת אורות: 9 שלבים

וִידֵאוֹ: מערכת בקרת אורות: 9 שלבים
וִידֵאוֹ: מערכת בקרת שיוט | תחבורה מתקדמת לכיתות י,יא,יב 2024, יולי
Anonim
מערכת בקרת אורות
מערכת בקרת אורות

לאחרונה עבדתי על הבנת מיקרו -בקרים והתקנים מבוססי IOT למטרות מחקר אבטחה. אז חשבתי לבנות מערכת אוטומציה ביתית קטנה לתרגול. אני עדיין לא צריך להשלים את זה, אך לצורך ההפעלה אשתף כיצד השתמשתי ב- Raspberry Pi 2 וכמה רכיבים חשמליים אחרים כדי לשלוט בתאורת החדר שלי בפוסט זה. כמו כן, לא אדבר כאן על התקנה ראשונית עבור פטל, ייתכן שתמצא הדרכות שונות לכך.

אבל בפרויקט הזה, אציג בפניכם את המוצר מסדרת pi docker הזו.

אספקה

רשימת רכיבים:

  • 1 x פטל פי 3B+/3B/אפס/אפס W/4B/
  • 1 x 16GB כרטיס TF מסוג Class 10
  • 1 x סדרת ממסר 4 ערוצים של DockerPi (HAT)
  • ספק כוח 1 x [email protected] שהוא מ- 52Pi
  • 4 x רצועת אור
  • 1 x מחבר DC
  • ספק כוח 1 x 12V לרצועות האור.
  • כמה חוטים.

שלב 1: היכרות עם לוח ממסר ערוצים מסדרת DockerPi 4

מידע על לוח ממסר ערוצים מסדרת DockerPi
מידע על לוח ממסר ערוצים מסדרת DockerPi
היכרות עם לוח ממסר ערוצים מסדרת DockerPi
היכרות עם לוח ממסר ערוצים מסדרת DockerPi
היכרות עם לוח ממסר ערוצים מסדרת DockerPi
היכרות עם לוח ממסר ערוצים מסדרת DockerPi

ממסר DockerPi 4 Channel הוא חבר בסדרת DockerPi, הנפוצה יותר ביישומי IOT.

ממסר DockerPi 4 Channel יכול להעביר AC/DC, במקום מתגים מסורתיים, כדי להשיג רעיונות נוספים. ממסר ערוץ DockerPi 4 יכול לערום עד 4, וניתן לערום אותו עם לוח הרחבה אחר של DockerPi. אם אתה צריך לרוץ במשך זמן רב, אנו ממליצים לך גם להשתמש בלוח הרחבה של DockerPi Power כדי לספק יותר כוח.

הערה זהירות לפני שנמשיך הלאה ברצוני להזהיר אותך לגבי הסכנה של התנסות ב"חשמל החשמלי ". אם משהו משתבש התוצאה הגרועה ביותר היא מוות או לכל הפחות שריפת הבית שלך. לכן, אנא אל תנסה לעשות שום דבר שהוזכר במאמר זה אם אינך מבין מה אתה עושה או מוטב להיעזר באיזה חשמלאי מנוסה. בואו נתחיל.

שלב 2: תכונות

מאפיינים
מאפיינים
מאפיינים
מאפיינים
מאפיינים
מאפיינים
  • סדרת DockerPi
  • ניתן לתכנות
  • שליטה ישירה (ללא תכנות)
  • הארך את סיכות GPIO
  • ממסר 4 ערוצים
  • 4 תמיכה ב- Alt I2C Addr
  • תמיכה ב- Leds Status Status
  • תמיכה 3A 250V AC
  • 3A 30V DC
  • יכול לערום עם לוח Stack אחר ללא תלות בחומרת לוח האם (דורש תמיכה ב- I2C)

שלב 3: מפת כתובת המכשיר

מפת כתובת המכשיר
מפת כתובת המכשיר
מפת כתובת המכשיר
מפת כתובת המכשיר

ללוח זה יש כתובת רישום נפרדת, ואתה יכול לשלוט בכל ממסר באמצעות פקודה אחת.

דרישות אחרות:

הבנה בסיסית של Python או C או shell או Java או כל שפה אחרת (אני אשתמש ב- C, python, shell ו- java)

  • הבנה בסיסית של מערכות לינוקס
  • קוֹר רוּחַ

כעת, לפני שתמשיך קדימה, עליך להבין את הרכיבים החשמליים בהם נשתמש:

1. ממסר:

ממסר הוא מכשיר חשמלי המשמש בדרך כלל לשליטה על מתח גבוה באמצעות מתח נמוך מאוד ככניסה. זה מורכב מסליל הכרוך סביב מוט ושני דשי מתכת קטנים (צמתים) המשמשים לסגירת המעגל. אחד הצמתים קבוע והאחר ניתן להזיז אותו. בכל פעם שמעביר חשמל דרך הסליל, הוא יוצר שדה מגנטי ומושך את הצומת הנע לעבר הצומת הסטטי והמעגל מסתיים. אז רק על ידי הפעלת מתח קטן להפעלת הסליל נוכל למעשה להשלים את המעגל למתח גבוה. כמו כן, מכיוון שהצומת הסטטית אינה מחוברת פיזית לסליל, יש הרבה פחות סיכוי שהמיקרו -בקר המפעיל את הסליל ייפגע אם משהו משתבש.

שלב 4: חבר את הממסר למחזיק הנורה המופעל על ידי אספקת חשמל ראשית

חבר את הממסר למחזיק הנורה המופעל על ידי אספקת החשמל הראשית
חבר את הממסר למחזיק הנורה המופעל על ידי אספקת החשמל הראשית
חבר את הממסר למחזיק הנורה המופעל על ידי אספקת החשמל הראשית
חבר את הממסר למחזיק הנורה המופעל על ידי אספקת החשמל הראשית

עכשיו לחלק המסובך, נחבר את הממסר למחזיק הנורה המונע על ידי אספקת החשמל הראשי. אבל קודם כל אני רוצה לתת לך מושג קצר על האופן שבו האורות מופעלים ומכבים באמצעות אספקת חשמל ישירה.

כעת, כאשר הנורה מחוברת לאספקה הראשית, בדרך כלל אנו עושים זאת על ידי חיבור שני חוטים לנורה. אחד החוטים הוא חוט "נייטרלי" ואחד הוא החוט ה"שלילי "אשר למעשה נושא את הזרם, כמו כן, יש מתג נוסף לכל המעגל לשליטה במנגנון ON ON OFF. לכן, כאשר הסווט מחובר (או מופעל) הזרם זורם דרך הנורה והחוט הנייטרלי, ומשלים את המעגל. זה מפעיל את הנורה. כאשר המתג מופעל, הוא שובר את המעגל והנורה נכבית. להלן תרשים מעגלים קטן המסביר זאת:

כעת, לצורך הניסוי שלנו, נצטרך לגרום ל"חוט השלילי "לעבור בממסר שלנו כדי לשבור את המעגל ולשלוט על זרימת הכוח באמצעות מיתוג ממסר. לכן, כאשר הממסר יופעל, הוא אמור להשלים את המעגל והנורה צריכה להידלק ולהיפך. עיין בתרשים שלהלן עבור מעגל מלא.

שלב 5: הגדרת I2C (פטל פטל)

הגדרת I2C (פטל פטל)
הגדרת I2C (פטל פטל)
הגדרת I2C (פטל פטל)
הגדרת I2C (פטל פטל)
הגדרת I2C (פטל פטל)
הגדרת I2C (פטל פטל)
הגדרת I2C (פטל פטל)
הגדרת I2C (פטל פטל)

הפעל את sudo raspi-config ופעל לפי ההנחיות להתקנת תמיכה i2c עבור ליבת ARM וליבת לינוקס

עבור אל אפשרויות ממשק

שלב 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"

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#הגדר DEVCIE_ADDR 0x10

#define RELAY1 0x01

#define RELAY2 0x02

#define RELAY3 0x03

#define RELAY4 0x04

#define ON 0xFF

#define OFF 0x00

int main (void)

{

printf ("הפעל ממסרים ב- C / n");

int fd;

int i = 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;

}

הידור זה

ממסר gcc.c -lwiringPi -o ממסר

להוציא אותו לפועל

./ממסר

שלב 8: תכנית ב- Python (Raspberry Pi)

מומלץ לבצע את הקוד הבא באמצעות Python 3 ולהתקין את ספריית smbus:

צור קובץ בשם: "relay.py" והדבק את הקוד הבא:

זמן הייבוא כ- t

יבוא smbus

ייבוא sys

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)

למעט KeyboardInrupt as e:

הדפס ("צא מהלולאה")

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;

Class 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;

פוסט סטטי ציבורי (String args) זורק InterruptedException, 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);

}

}

מוּמלָץ: