Съдържание:

Система за управление на светлините: 9 стъпки
Система за управление на светлините: 9 стъпки

Видео: Система за управление на светлините: 9 стъпки

Видео: Система за управление на светлините: 9 стъпки
Видео: Използване на светлините. Управление в различни условия. 2024, Ноември
Anonim
Система за управление на светлините
Система за управление на светлините

Наскоро работих върху разбирането на микроконтролери и устройства, базирани на IOT, за целите на изследванията на сигурността. И така, мислех да изградя малка система за домашна автоматизация за практика. Тепърва ще завърша това, но за стартиране ще споделя как използвах Raspberry Pi 2 и някои други електрически компоненти, за да контролирам осветлението на стаята си в този пост. Също така няма да говоря за начална настройка за Raspberry тук, може да намерите различни уроци за това.

Но в този проект ще ви представя този продукт от серията docker pi.

Консумативи

Списък на компонентите:

  • 1 x Raspberry Pi 3B+/3B/Zero/Zero W/4B/
  • 1 x 16GB TF карта от клас 10
  • 1 x DockerPi серия 4 -канална релейна платка (HAT)
  • 1 x [email protected] захранване, което е от 52Pi
  • 4 x Светла лента
  • 1 x DC конектор
  • 1 x 12V захранване за светлинните ленти.
  • няколко проводника.

Стъпка 1: Познаване на 4 -каналната релейна платка на DockerPi Series

Знаете за 4 -каналната релейна платка на DockerPi Series
Знаете за 4 -каналната релейна платка на DockerPi Series
Знаете за 4 -каналната релейна платка на DockerPi Series
Знаете за 4 -каналната релейна платка на DockerPi Series
Знаете за 4 -каналната релейна платка на DockerPi Series
Знаете за 4 -каналната релейна платка на DockerPi Series

4 -каналното реле DockerPi е член на серията DockerPi, по -често използвана в IOT приложения.

4 -каналното реле DockerPi може да предава AC/DC, вместо традиционните превключватели, за постигане на повече идеи. 4 -каналното реле на DockerPi може да подрежда до 4 и може да бъде подредено с друга платка за разширение на DockerPi. Ако трябва да работите дълго време, препоръчваме също да използвате нашата платка за разширение DockerPi Power, за да осигурите повече енергия.

ЗАБЕЛЕЖКА ПРЕДУПРЕЖДЕНИЕ Преди да продължим по -нататък, бих искал да ви ПРЕДУПРЕЖДЯ ЗА ОПАСНОСТТА от експерименти с „Мрежово електричество“. Ако нещо се обърка, най -лошата последица може да бъде смърт или поне изгаряне на собствената ви къща. Така че, моля, НЕ се опитвайте да правите нищо, споменато в тази статия, ако не разбирате какво правите или по -добре се възползвайте от помощта на някой опитен електротехник. Да започваме.

Стъпка 2: Функции

Характеристика
Характеристика
Характеристика
Характеристика
Характеристика
Характеристика
  • DockerPi серия
  • Програмируеми
  • Управление директно (без програмиране)
  • Разширете GPIO щифтовете
  • 4 -канално реле
  • 4 Поддръжка на Alt I2C Addr
  • Поддръжка на светодиоди за състоянието на релето
  • 3A 250V AC поддръжка
  • 3A 30V DC
  • Може да се подрежда с друга стекова платка Независимо от хардуера на дънната платка (изисква поддръжка на I2C)

Стъпка 3: Карта на адреса на устройството

Карта на адреса на устройството
Карта на адреса на устройството
Карта на адреса на устройството
Карта на адреса на устройството

Тази платка има отделен адрес на регистър и можете просто да управлявате всяко реле с една команда.

Други изисквания:

Основно разбиране за Python или C или черупка или Java или друг език (ще използвам C, python, shell и java)

  • Основно разбиране за системите на Linux
  • Присъствие на ума

Сега, преди да продължите напред, ще трябва да разберете електрическите компоненти, които ще използваме:

1. Реле:

Релето е електрическо устройство, което обикновено се използва за управление на високо напрежение, като се използва много ниско напрежение като вход. Това се състои от бобина, увита около полюс и две малки метални клапи (възли), които се използват за затваряне на веригата. Единият възел е фиксиран, а другият е подвижен. Всеки път, когато електричество преминава през намотката, то създава магнитно поле и привлича движещия се възел към статичния възел и веригата се завършва. Така че, само чрез прилагане на малко напрежение за захранване на бобината, ние всъщност можем да завършим веригата, за да се движи високото напрежение. Също така, тъй като статичният възел не е физически свързан с бобината, има много по -малък шанс микроконтролерът, захранващ бобината, да се повреди, ако нещо се обърка.

Стъпка 4: Свържете релето към държача на крушката, захранван от основното електрическо захранване

Свържете релето към държача на крушката, захранван от основното електрическо захранване
Свържете релето към държача на крушката, захранван от основното електрическо захранване
Свържете релето към държача на крушката, захранван от основно електрическо захранване
Свържете релето към държача на крушката, захранван от основно електрическо захранване

Сега към сложната част, ще свържем релето с държача на крушката, захранван от основното електрическо захранване. Но първо искам да ви дам кратка представа за това как светлините се включват и изключват чрез директно захранване.

Сега, когато крушката е свързана към основното захранване, обикновено правим това, като свързваме два проводника към крушката. един от проводниците е "неутрален" проводник, а другият е "отрицателен" проводник, който всъщност носи тока, също така има добавен превключвател към цялата верига за управление на механизма за включване и изключване. Така че, когато swith е свързан (или ON ON), токът преминава през крушката и неутралния проводник, завършвайки веригата. Това включва лампата. Когато ключът е включен, той прекъсва веригата и крушката се изключва. Ето малка схема, която обяснява това:

Сега, за нашия експеримент, ще трябва да накараме „отрицателния проводник“да премине през нашето реле, за да прекъсне веригата и да контролира потока на мощността, използвайки превключване на релето. Така че, когато релето се включи, то трябва да завърши веригата и крушката да се включи и обратно. Вижте диаграмата по -долу за Пълна верига.

Стъпка 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

Отидете на Опции за взаимодействие

Стъпка 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

#дефинирайте RELAY2 0x02

#define RELAY3 0x03

#дефинирайте 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 relay.c -lwiringPi -o реле

Изпълнете го

./ реле

Стъпка 8: Програма в Python (Raspberry Pi)

Следният код се препоръчва да се изпълни с помощта на Python 3 и да се инсталира smbus библиотеката:

Създайте файл с името му: "relay.py" и поставете следния код:

време за внос като t

внос smbus

import sys

DEVICE_BUS = 1

DEVICE_ADDR = 0x10

шина = smbus. SMBus (DEVICE_BUS)

докато е вярно:

опитвам:

за i в обхват (1, 5):

bus.write_byte_data (DEVICE_ADDR, i, 0xFF)

т. сън (1)

bus.write_byte_data (DEVICE_ADDR, i, 0x00)

т. сън (1)

с изключение на KeyboardInterrupt като e:

print ("Излезте от цикъла")

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;

публичен 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);

}

}

Препоръчано: