Indholdsfortegnelse:

Lights Control System: 9 trin
Lights Control System: 9 trin

Video: Lights Control System: 9 trin

Video: Lights Control System: 9 trin
Video: PLC Lights Control with Time Delay - Delta PLC Training Course 2024, November
Anonim
Lights Control System
Lights Control System

For nylig arbejdede jeg på at forstå mikrokontrollere og IOT -baserede enheder til sikkerhedsforskningsformål. Så jeg tænkte på at bygge et lille hjemmeautomatiseringssystem til praksis. Jeg er endnu ikke færdig med dette, men til opstart vil jeg dele, hvordan jeg brugte Raspberry Pi 2 og nogle andre elektriske komponenter til at styre mit rums belysning i dette indlæg. Jeg vil heller ikke tale om indledende opsætning af hindbær her, du finder muligvis forskellige vejledninger til det.

Men i dette projekt vil jeg introducere dette docker pi -serie produkt for dig.

Forbrugsvarer

Komponentliste:

  • 1 x Raspberry Pi 3B+/3B/Zero/Zero W/4B/
  • 1 x 16 GB TF -kort i klasse 10
  • 1 x DockerPi -serie 4 -kanals relækort (HAT)
  • 1 x [email protected] strømforsyning, som er fra 52Pi
  • 4 x lysstrimmel
  • 1 x DC -stik
  • 1 x 12V strømforsyning til lysstrimlerne.
  • flere ledninger.

Trin 1: Kendskab til DockerPi Series 4 Channel Relay Board

Kendskab til DockerPi Series 4 Channel Relay Board
Kendskab til DockerPi Series 4 Channel Relay Board
Kendskab til DockerPi Series 4 Channel Relay Board
Kendskab til DockerPi Series 4 Channel Relay Board
Kendskab til DockerPi Series 4 Channel Relay Board
Kendskab til DockerPi Series 4 Channel Relay Board

DockerPi 4 Channel Relay er medlem af DockerPi -serien, mere almindeligt brugt i IOT -applikationer.

DockerPi 4 Channel Relay kan videresende AC/DC i stedet for traditionelle switches for at opnå flere ideer. DockerPi 4 Channel Relay kan stable op til 4 og kan stables med et andet DockerPi -udvidelseskort. Hvis du skal køre i lang tid, anbefaler vi også, at du bruger vores DockerPi Power -udvidelseskort til at levere mere strøm.

BEMÆRK FORSIGTIG Inden vi går videre, vil jeg gerne advare dig om FARE for at eksperimentere med "elnettet". Hvis noget går galt, kan den værste konsekvens være døden eller i det mindste brænde dit eget hus ned. Så prøv venligst IKKE at gøre noget, der er nævnt i denne artikel, hvis du ikke forstår, hvad du laver eller bedre tager hjælp fra en erfaren elektriker. Lad os komme igang.

Trin 2: Funktioner

Funktioner
Funktioner
Funktioner
Funktioner
Funktioner
Funktioner
  • DockerPi -serien
  • Programmerbar
  • Styr direkte (uden programmering)
  • Forlæng GPIO -benene
  • 4 kanals relæ
  • 4 Alt I2C Addr Support
  • Relay Status Leds Support
  • 3A 250V AC -understøttelse
  • 3A 30V DC
  • Kan stables med andet stakbræt Uafhængigt af hardboardhardware (kræver I2C -understøttelse)

Trin 3: Enhedens adressekort

Enhedens adressekort
Enhedens adressekort
Enhedens adressekort
Enhedens adressekort

Dette kort har en separat registeradresse, og du kan bare styre hvert relæ med en kommando.

Andre krav:

Grundlæggende forståelse af Python eller C eller shell eller Java eller et andet sprog (jeg bruger C, python, shell og java)

  • Grundlæggende forståelse af Linux -systemer
  • Sindets nærvær

Nu, før du går videre, skal du forstå de elektriske komponenter, vi vil bruge:

1. Relæ:

Et relæ er en elektrisk enhed, der generelt bruges til at styre højspændinger ved hjælp af meget lav spænding som input. Denne består af en spole viklet omkring en stang og to små metalflapper (noder), der bruges til at lukke kredsløbet. En af knuden er fast, og den anden er bevægelig. Når en elektricitet passeres gennem spolen, skaber den et magnetfelt og tiltrækker den bevægelige knude mod den statiske knude, og kredsløbet bliver afsluttet. Så bare ved at anvende lille spænding til at tænde spolen kan vi faktisk fuldføre kredsløbet for højspændingen til at rejse. Da den statiske knude ikke fysisk er forbundet til spolen, er der meget mindre chance for, at mikrokontrolleren, der driver spolen, bliver beskadiget, hvis noget går galt.

Trin 4: Tilslut relæet til pæreholderen, der drives af hovedforsyningen

Tilslut relæet til pæreholderen, der drives af hovedforsyningen
Tilslut relæet til pæreholderen, der drives af hovedforsyningen
Tilslut relæet til pæreholderen, der drives af hovedforsyningen
Tilslut relæet til pæreholderen, der drives af hovedforsyningen

Nu til den vanskelige del, vi forbinder relæet til pæreholderen, der drives af Main Electric -forsyning. Men først vil jeg give dig en kort idé om, hvordan lysene tændes og slukkes via direkte strømforsyning.

Nu, når pæren er tilsluttet hovedforsyningen, gør vi normalt dette ved at forbinde to ledninger til pæren. den ene af ledningen er en "neutral" ledning og den anden er den "negative" ledning, der faktisk bærer strømmen. Der er også tilføjet en kontakt til hele kredsløbet for at styre TIL og FRA -mekanismen. Så når swithen er tilsluttet (eller tændt) strømmer strømmen gennem pæren og den neutrale ledning og fuldender kredsløbet. Dette tænder pæren. Når kontakten er slukket, bryder den kredsløbet, og pæren slukker. Her er et lille kredsløbsdiagram for at forklare dette:

Nu til vores eksperiment skal vi få "Negative Wire" til at passere gennem vores relæ for at bryde kredsløbet og styre strømmen ved hjælp af relæets omskiftning. Så når relæet tændes, skal det fuldføre kredsløbet, og pæren skal tænde og omvendt. Se nedenstående diagram for fuldt kredsløb.

Trin 5: Konfiguration af I2C (Raspberry Pi)

Konfiguration af I2C (Raspberry Pi)
Konfiguration af I2C (Raspberry Pi)
Konfiguration af I2C (Raspberry Pi)
Konfiguration af I2C (Raspberry Pi)
Konfiguration af I2C (Raspberry Pi)
Konfiguration af I2C (Raspberry Pi)
Konfiguration af I2C (Raspberry Pi)
Konfiguration af I2C (Raspberry Pi)

Kør sudo raspi-config og følg vejledningen for at installere i2c-understøttelse til ARM-kernen og linux-kernen

Gå til grænsefladeindstillinger

Trin 6: Direkte kontrol uden programmering (Raspberry Pi)

Tænd kanal nr. 1 relæ

i2cset -y 1 0x10 0x01 0xFF

Sluk kanal nr. 1 relæ

i2cset -y 1 0x10 0x01 0x00

Tænd kanal nr. 2 relæ

i2cset -y 1 0x10 0x02 0xFF

Sluk kanal nr. 2 relæ

i2cset -y 1 0x10 0x02 0x00

Tænd kanal nr. 3 relæ

i2cset -y 1 0x10 0x03 0xFF

Sluk kanal nr. 3 relæ

i2cset -y 1 0x10 0x03 0x00

Tænd kanal nr. 4 relæ

i2cset -y 1 0x10 0x04 0xFF

Sluk kanal nr. 4 relæ

i2cset -y 1 0x10 0x04 0x00

Trin 7: Programmer i sprog C (Raspberry Pi)

Opret kildekode og navngiv den "relay.c"

#omfatte

#omfatte

#omfatte

#define DEVCIE_ADDR 0x10

#define RELAY1 0x01

#define RELAY2 0x02

#define RELAY3 0x03

#define RELAY4 0x04

#define ON 0xFF

#define OFF 0x00

int main (tomrum)

{

printf ("Slå relæer til i C / n");

int fd;

int i = 0;

fd = wiringPiI2CSetup (DEVICE_ADDR);

til(;;){

for (i = 1; i <= 4; i ++)

{

printf ("tænd relæ nr. $ d", i);

wiringPiI2CWriteReg8 (fd, i, ON);

søvn (200);

printf ("sluk for relæ nr. $ d", i);

wiringPiI2CWriteReg8 (fd, i, OFF);

søvn (200);

}

}

returnere 0;

}

Kompilér det

gcc relæ. c -lwiringPi -o relæ

Udfør det

./relæ

Trin 8: Programmer i Python (Raspberry Pi)

Følgende kode anbefales at blive udført ved hjælp af Python 3 og installere smbus -biblioteket:

Opret en fil med navnet: "relay.py" og indsæt følgende kode:

importtid som t

import smbus

import sys

DEVICE_BUS = 1

DEVICE_ADDR = 0x10

bus = smbus. SMBus (DEVICE_BUS)

mens det er sandt:

prøve:

for i i området (1, 5):

bus.write_byte_data (DEVICE_ADDR, i, 0xFF)

t. sover (1)

bus.write_byte_data (DEVICE_ADDR, i, 0x00)

t. sover (1)

undtagen KeyboardInterrupt som e:

print ("Quit the Loop")

sys.exit ()

* Gem det, og kør derefter som python3:

python3 relæ.py

Trin 9: Programmer i Java (Raspberry Pi)

Opret en ny fil ved navn: I2CRelay.java og indsæt følgende kode:

import java.io. IOException;

import java.util. Arrays;

importer com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

import com.pi4j.io.i2c. I2CFactory. UnsupportedBusNumberException;

import com.pi4j.platform. PlatformAlreadyAssignedException;

import com.pi4j.util. Console;

public class I2CRelay {

// relæets registeradresse.

offentlig statisk endelig int DOCKER_PI_RELAY_ADDR = 0x10;

// kanal af relæ.

offentlig statisk slutbyte DOCKER_PI_RELAY_1 = (byte) 0x01;

offentlig statisk slutbyte DOCKER_PI_RELAY_2 = (byte) 0x02;

offentlig statisk slutbyte DOCKER_PI_RELAY_3 = (byte) 0x03;

offentlig statisk slutbyte DOCKER_PI_RELAY_4 = (byte) 0x04;

// Relæstatus

offentlig statisk slutbyte DOCKER_PI_RELAY_ON = (byte) 0xFF;

offentlig statisk slutbyte DOCKER_PI_RELAY_OFF = (byte) 0x00;

public static void main (String args) kaster InterruptedException, PlatformAlreadyAssignedException, IOException, UnsupportedBusNumberException {

sidste konsolkonsol = ny konsol ();

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

I2CDevice -enhed = i2c.getDevice (DOCKER_PI_RELAY_ADDR);

console.println ("Tænd relæ!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_ON);

Tråd. Sover (500);

console.println ("Sluk for relæ!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_OFF);

}

}

Anbefalede: