INHOUDSOPGAWE:

Ligte beheer stelsel: 9 stappe
Ligte beheer stelsel: 9 stappe

Video: Ligte beheer stelsel: 9 stappe

Video: Ligte beheer stelsel: 9 stappe
Video: Het AIM model of "9 vlaks model" (Door Bas Baalmans) 2024, November
Anonim
Ligte beheer stelsel
Ligte beheer stelsel

Ek het onlangs gewerk aan die verstaan van mikrobeheerders en IOT -gebaseerde toestelle vir veiligheidsondersoekdoeleindes. Ek het dus daaraan gedink om 'n klein outomatiseringstelsel vir die huis te bou. Ek moet dit nog voltooi, maar vir die aanvang sal ek deel hoe ek Raspberry Pi 2 en 'n paar ander elektriese komponente gebruik het om die beligting van my kamer in hierdie pos te beheer. Ek sal ook nie hier praat oor die aanvanklike opstelling vir framboos nie; u kan verskillende tutoriale daarvoor vind.

Maar in hierdie projek stel ek hierdie produk van die docker pi -reeks aan u voor.

Voorrade

Komponentelys:

  • 1 x Raspberry Pi 3B+/3B/Zero/Zero W/4B/
  • 1 x 16 GB Klas 10 TF -kaart
  • 1 x DockerPi -reeks 4 -kanaal Relay Board (HAT)
  • 1 x [email protected] kragtoevoer wat afkomstig is van 52Pi
  • 4 x ligte strook
  • 1 x DC -aansluiting
  • 1 x 12V kragtoevoer vir die ligstroke.
  • verskeie drade.

Stap 1: Weet oor DockerPi Series 4 Channel Relay Board

Weet oor DockerPi Series 4 Channel Relay Board
Weet oor DockerPi Series 4 Channel Relay Board
Weet oor DockerPi Series 4 Channel Relay Board
Weet oor DockerPi Series 4 Channel Relay Board
Weet oor DockerPi Series 4 Channel Relay Board
Weet oor DockerPi Series 4 Channel Relay Board

DockerPi 4 Channel Relay is lid van die DockerPi -reeks, wat meer gereeld in IOT -toepassings gebruik word.

DockerPi 4 Channel Relay kan AC/DC in plaas van tradisionele skakelaars herlei om meer idees te bereik. DockerPi 4 Channel Relay kan tot 4 stapel en kan met ander DockerPi -uitbreidingskaarte gestapel word. As u lank wil hardloop, beveel ons ook aan dat u ons DockerPi Power -uitbreidingskaart gebruik om meer krag te verskaf.

OPMERKING Voordat ons verder gaan, wil ek u waarsku oor die GEVAAR dat u met die 'elektrisiteitsnet' kan eksperimenteer. Moet dus nie probeer om iets te doen wat in hierdie artikel genoem word nie, as u nie verstaan wat u doen nie, of beter die hulp van 'n ervare elektrisiën gebruik. Laat ons begin.

Stap 2: Kenmerke

Kenmerke
Kenmerke
Kenmerke
Kenmerke
Kenmerke
Kenmerke
  • DockerPi -reeks
  • Programmeerbaar
  • Beheer direk (sonder programmering)
  • Brei die GPIO -penne uit
  • 4 -kanaal aflos
  • 4 Alt I2C Addr Ondersteuning
  • Relay Status Leds Ondersteuning
  • 3A 250V AC ondersteuning
  • 3A 30V DC
  • Kan stapel met ander stapelbord Onafhanklik van die hardebord hardeware (benodig I2C -ondersteuning)

Stap 3: Toesteladreskaart

Toesteladreskaart
Toesteladreskaart
Toesteladreskaart
Toesteladreskaart

Hierdie bord het 'n aparte registeradres, en u kan elke aflos slegs met een opdrag beheer.

Ander vereistes:

Basiese begrip van Python of C of shell of Java of enige ander taal (ek gebruik C, python, shell en java)

  • Basiese begrip van Linux -stelsels
  • Teenwoordigheid van verstand

Voordat u verder gaan, moet u die elektriese komponente verstaan wat ons gaan gebruik:

1. Relay:

'N Relais is 'n elektriese toestel wat algemeen gebruik word om hoë spannings te beheer met 'n baie lae spanning as 'n inset. Dit bestaan uit 'n spoel wat om 'n paal gedraai is en twee klein metaalflappe (nodes) wat gebruik word om die stroombaan te sluit. Een van die knope is vas en die ander is beweegbaar. Elke keer as 'n elektrisiteit deur die spoel kom, skep dit 'n magnetiese veld en trek die bewegende knoop na die statiese knoop toe en die stroombaan word voltooi. Dus, deur slegs klein spanning aan te wend om die spoel aan te skakel, kan ons die kring voltooi sodat die hoogspanning kan beweeg. Aangesien die statiese knoop nie fisies aan die spoel gekoppel is nie, is die kans baie minder dat die mikrobeheerder wat die spoel aandryf, beskadig word as iets verkeerd loop.

Stap 4: Koppel die relais aan die gloeilamphouer, aangedryf deur die hoofvoeding

Koppel die relais aan die gloeilamphouer wat deur die elektriese toevoer aangedryf word
Koppel die relais aan die gloeilamphouer wat deur die elektriese toevoer aangedryf word
Koppel die relais aan die gloeilamphouer wat deur die elektriese toevoer aangedryf word
Koppel die relais aan die gloeilamphouer wat deur die elektriese toevoer aangedryf word

Nou tot die moeilike deel: ons koppel die relais aan die gloeilamphouer, aangedryf deur Main Electric. Maar eers wil ek u 'n kort idee gee oor hoe die ligte deur middel van direkte kragbron aan- en uitgeskakel word.

As die gloeilamp nou aan die hooftoevoer gekoppel is, doen ons dit gewoonlik deur twee drade aan die gloeilamp te koppel. een van die drade is 'n 'neutrale' draad en die ander 'negatiewe' draad wat eintlik die stroom dra; daar is ook 'n skakelaar by die hele stroombaan om die AAN en UIT meganisme te beheer. Dus, as die swith gekoppel is (of aangeskakel) vloei die stroom deur die gloeilamp en die neutrale draad en voltooi die kring. Dit skakel die gloeilamp aan. As die skakelaar afgeskakel word, breek dit die stroombaan en die gloeilamp skakel af. Hier is 'n klein kringdiagram om dit te verduidelik:

Nou, vir ons eksperiment, moet ons die 'negatiewe draad' deur ons aflos laat gaan om die stroombaan te onderbreek en die kragvloei te beheer met die skakelaar van die relais. Dus, as die aflos aanskakel, moet die kring voltooi word en die gloeilamp moet aanskakel en omgekeerd. Raadpleeg die onderstaande diagram vir volledige stroombaan.

Stap 5: Configureer I2C (Raspberry Pi)

Konfigurasie van I2C (Raspberry Pi)
Konfigurasie van I2C (Raspberry Pi)
I2C (Raspberry Pi) instel
I2C (Raspberry Pi) instel
I2C (Raspberry Pi) instel
I2C (Raspberry Pi) instel
I2C (Raspberry Pi) instel
I2C (Raspberry Pi) instel

Begin sudo raspi-config en volg die instruksies om i2c-ondersteuning vir die ARM-kern en Linux-kern te installeer

Gaan na koppelvlakopsies

Stap 6: Direkte beheer sonder programmering (Raspberry Pi)

Skakel kanaal 1 -aflos aan

i2cset -y 1 0x10 0x01 0xFF

Skakel kanaal nr. 1 aflos af

i2cset -y 1 0x10 0x01 0x00

Skakel kanaal 2 -aflos aan

i2cset -y 1 0x10 0x02 0xFF

Skakel kanaal 2 aflos af

i2cset -y 1 0x10 0x02 0x00

Skakel kanaal 3 -aflos aan

i2cset -y 1 0x10 0x03 0xFF

Skakel kanaal 3 aflos af

i2cset -y 1 0x10 0x03 0x00

Skakel kanaal 4 -aflos aan

i2cset -y 1 0x10 0x04 0xFF

Skakel kanaal 4 -aflos af

i2cset -y 1 0x10 0x04 0x00

Stap 7: Programmeer in taal C (Raspberry Pi)

Skep bronkode en noem dit "relay.c"

#insluit

#insluit

#insluit

#definieer DEVCIE_ADDR 0x10

#definieer RELAY1 0x01

#definieer RELAY2 0x02

#definieer RELAY3 0x03

#definieer RELAY4 0x04

#definieer OP 0xFF

#definieer OFF 0x00

int main (leeg)

{

printf ("Skakel relais aan in C / n");

int fd;

int i = 0;

fd = wiringPiI2CSetup (DEVICE_ADDR);

vir (;;) {

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

{

printf ("skakel relais nr. $ d aan", i);

bedradingPiI2CWriteReg8 (fd, i, ON);

slaap (200);

printf ("skakel relais nr. $ d af", i);

bedradingPiI2CWriteReg8 (fd, i, OFF);

slaap (200);

}

}

terugkeer 0;

}

Stel dit saam

gcc relay.c -lwiringPi -o relay

Uitvoer dit

./relay

Stap 8: Programmeer in Python (Raspberry Pi)

Die volgende kode word aanbeveel om met Python 3 uitgevoer te word en die smbus -biblioteek te installeer:

Skep 'n lêer met die naam: "relay.py" en plak die volgende kode:

invoer tyd as t

invoer smbus

invoer sys

DEVICE_BUS = 1

DEVICE_ADDR = 0x10

bus = smbus. SMBus (DEVICE_BUS)

terwyl dit waar is:

probeer:

vir i in reeks (1, 5):

bus.write_byte_data (DEVICE_ADDR, i, 0xFF)

t.slaap (1)

bus.write_byte_data (DEVICE_ADDR, i, 0x00)

t.slaap (1)

behalwe KeyboardInterrupt as e:

print ("Stop die lus")

sys.exit ()

* Stoor dit en voer dit dan uit as python3:

python3 relay.py

Stap 9: Programmeer in Java (Raspberry Pi)

Skep 'n nuwe lêer met die naam: I2CRelay.java en plak die volgende kode:

invoer java.io. IOException;

invoer java.util. Arrays;

invoer com.pi4j.io.i2c. I2CBus;

voer com.pi4j.io.i2c. I2CD -toestel in;

invoer com.pi4j.io.i2c. I2CFactory;

voer com.pi4j.io.i2c. I2CFactory. UnsupportedBusNumberException in;

voer com.pi4j.platform. PlatformAlreadyAssignedException in;

invoer com.pi4j.util. Console;

openbare klas I2CRelay {

// relay se registeradres.

openbare statiese finale int DOCKER_PI_RELAY_ADDR = 0x10;

// kanaal van aflos.

openbare statiese finale greep DOCKER_PI_RELAY_1 = (byte) 0x01;

openbare statiese finale greep DOCKER_PI_RELAY_2 = (byte) 0x02;

openbare statiese finale greep DOCKER_PI_RELAY_3 = (byte) 0x03;

openbare statiese finale greep DOCKER_PI_RELAY_4 = (byte) 0x04;

// Relay status

openbare statiese finale greep DOCKER_PI_RELAY_ON = (byte) 0xFF;

openbare statiese finale greep DOCKER_PI_RELAY_OFF = (byte) 0x00;

openbare statiese leemte hoof (String args) gooi InterruptedException, PlatformAlreadyAssignedException, IOException, UnsupportedBusNumberException {

finale konsole konsole = nuwe konsole ();

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

I2CD -toestel = i2c.getDevice (DOCKER_PI_RELAY_ADDR);

console.println ("Skakel Relay aan!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_ON);

Draad.slaap (500);

console.println ("Skakel relais af!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_OFF);

}

}

Aanbeveel: