Inhoudsopgave:

Lichtbesturingssysteem: 9 stappen
Lichtbesturingssysteem: 9 stappen

Video: Lichtbesturingssysteem: 9 stappen

Video: Lichtbesturingssysteem: 9 stappen
Video: The Best 5x5 Grow Light: 9 Fixtures Tested, Analyzed, Compared, and Ranked 2024, November
Anonim
Lichtbesturingssysteem
Lichtbesturingssysteem

Onlangs werkte ik aan het begrijpen van microcontrollers en op IOT gebaseerde apparaten voor beveiligingsonderzoeksdoeleinden. Dus dacht ik aan het bouwen van een klein domoticasysteem om te oefenen. Ik moet dit nog voltooien, maar voor het opstarten zal ik in dit bericht delen hoe ik Raspberry Pi 2 en enkele andere elektrische componenten heb gebruikt om de verlichting van mijn kamer te regelen. Ik zal het hier ook niet hebben over de initiële installatie voor Raspberry, daar kun je verschillende tutorials voor vinden.

Maar in dit project zal ik dit product uit de docker pi-serie aan u voorstellen.

Benodigdheden

Componentenlijst:

  • 1 x Raspberry Pi 3B+/3B/Zero/Zero W/4B/
  • 1 x 16GB Klasse 10 TF-kaart
  • 1 x DockerPi-serie 4-kanaals relaiskaart (HAT)
  • 1 x [email protected] voeding van 52Pi
  • 4 x lichtstrip
  • 1 x DC-connector
  • 1 x 12V voeding voor de lichtstrips.
  • meerdere draden.

Stap 1: Weten over DockerPi Series 4-kanaals relaiskaart

Weten over DockerPi Series 4-kanaals relaiskaart
Weten over DockerPi Series 4-kanaals relaiskaart
Weten over DockerPi Series 4-kanaals relaiskaart
Weten over DockerPi Series 4-kanaals relaiskaart
Weten over DockerPi Series 4-kanaals relaiskaart
Weten over DockerPi Series 4-kanaals relaiskaart

DockerPi 4 Channel Relay is een lid van de DockerPi-serie, die vaker wordt gebruikt in IOT-toepassingen.

DockerPi 4-kanaals relais kan AC/DC doorgeven in plaats van traditionele schakelaars om meer ideeën te realiseren. DockerPi 4-kanaals relais kan tot 4 worden gestapeld en kan worden gestapeld met andere DockerPi-uitbreidingskaarten. Als je lange tijd moet rennen, raden we je ook aan om ons DockerPi Power-uitbreidingsbord te gebruiken om meer vermogen te leveren.

OPMERKING VOOR VOORZICHTIG Voordat we verder gaan, wil ik u waarschuwen voor het GEVAAR van het experimenteren met de "netstroom". Als er iets misgaat, kan het ergste gevolg de dood zijn of op zijn minst uw eigen huis afbranden. PROBEER dus NIET om iets te doen dat in dit artikel wordt genoemd als u niet begrijpt wat u doet of neem de hulp in van een ervaren elektricien. Laten we beginnen.

Stap 2: Functies

Functies
Functies
Functies
Functies
Functies
Functies
  • DockerPi-serie
  • Programmeerbaar
  • Direct aansturen (zonder programmeren)
  • Verleng de GPIO-pinnen
  • 4-kanaals relais
  • 4 Alt I2C Addr-ondersteuning
  • Ondersteuning voor relaisstatusleds
  • 3A 250V AC-ondersteuning
  • 3A 30V gelijkstroom
  • Kan stapelen met ander stapelbord Onafhankelijk van de hardware van het moederbord (vereist I2C-ondersteuning)

Stap 3: Apparaatadreskaart

Apparaatadreskaart
Apparaatadreskaart
Apparaatadreskaart
Apparaatadreskaart

Dit bord heeft een apart registeradres en je kunt elk relais met één commando bedienen.

Andere vereisten:

Basiskennis van Python of C of shell of Java of een andere taal (ik gebruik C, python, shell en java)

  • Basiskennis van Linux-systemen
  • Tegenwoordigheid van geest

Voordat u verder gaat, moet u de elektrische componenten begrijpen die we zullen gebruiken:

1. Relais:

Een relais is een elektrisch apparaat dat over het algemeen wordt gebruikt om hoge spanningen te regelen met een zeer lage spanning als ingang. Deze bestaat uit een spoel die om een paal is gewikkeld en twee kleine metalen flappen (knooppunten) die worden gebruikt om het circuit te sluiten. Een van de knooppunten is vast en de andere is verplaatsbaar. Telkens wanneer een elektriciteit door de spoel wordt geleid, creëert het een magnetisch veld en trekt het het bewegende knooppunt naar het statische knooppunt en wordt het circuit voltooid. Dus, gewoon door een kleine spanning toe te passen om de spoel van stroom te voorzien, kunnen we het circuit voor de hoge spanning voltooien. Omdat het statische knooppunt niet fysiek met de spoel is verbonden, is er veel minder kans dat de microcontroller die de spoel aanstuurt, beschadigd raakt als er iets misgaat.

Stap 4: Sluit het relais aan op de lamphouder die wordt gevoed door de hoofdstroomvoorziening

Sluit het relais aan op de lamphouder die wordt gevoed door de hoofdstroomvoorziening
Sluit het relais aan op de lamphouder die wordt gevoed door de hoofdstroomvoorziening
Sluit het relais aan op de lamphouder die wordt gevoed door de hoofdstroomvoorziening
Sluit het relais aan op de lamphouder die wordt gevoed door de hoofdstroomvoorziening

Nu naar het lastige deel, we zullen het relais aansluiten op de lamphouder die wordt aangedreven door de hoofdstroomvoorziening. Maar eerst wil ik je een kort idee geven over hoe de lampen worden in- en uitgeschakeld via directe voeding.

Als de lamp nu is aangesloten op de hoofdvoeding, doen we dit meestal door twee draden op de lamp aan te sluiten. een van de draden is een "neutrale" draad en de andere is de "negatieve" draad die daadwerkelijk de stroom voert, ook is er een schakelaar toegevoegd aan het hele circuit om het AAN- en UIT-mechanisme te regelen. Dus wanneer de schakelaar is aangesloten (of AAN) vloeit, stroomt de stroom door de lamp en de neutrale draad, waardoor het circuit wordt voltooid. Hierdoor wordt de lamp AAN. Wanneer de schakelaar wordt uitgeschakeld, wordt het circuit onderbroken en gaat de lamp UIT. Hier is een klein schakelschema om dit uit te leggen:

Nu moeten we voor ons experiment de "negatieve draad" door ons relais laten gaan om het circuit te verbreken en de stroomstroom te regelen met behulp van relaisschakeling. Dus wanneer het relais AAN gaat, moet het het circuit voltooien en moet de gloeilamp AAN gaan en omgekeerd. Raadpleeg het onderstaande diagram voor Volledig circuit.

Stap 5: I2C configureren (Raspberry Pi)

I2C configureren (Raspberry Pi)
I2C configureren (Raspberry Pi)
I2C configureren (Raspberry Pi)
I2C configureren (Raspberry Pi)
I2C configureren (Raspberry Pi)
I2C configureren (Raspberry Pi)
I2C configureren (Raspberry Pi)
I2C configureren (Raspberry Pi)

Voer sudo raspi-config uit en volg de aanwijzingen om i2c-ondersteuning voor de ARM-kern en linux-kernel te installeren

Ga naar interface-opties

Stap 6: Directe controle zonder programmering (Raspberry Pi)

Schakel kanaal nr. 1 relais in

i2cset -y 1 0x10 0x01 0xFF

Schakel kanaal nr. 1 relais uit

i2cset -y 1 0x10 0x01 0x00

Schakel kanaal nr. 2 relais in

i2cset -y 1 0x10 0x02 0xFF

Schakel kanaal nr. 2 relais uit

i2cset -y 1 0x10 0x02 0x00

Schakel kanaal nr. 3 relais in

i2cset -y 1 0x10 0x03 0xFF

Schakel kanaal nr. 3 relais uit

i2cset -y 1 0x10 0x03 0x00

Schakel kanaal nr. 4 relais in

i2cset -y 1 0x10 0x04 0xFF

Schakel kanaal nr. 4 relais uit

i2cset -y 1 0x10 0x04 0x00

Stap 7: Programmeer in taal C (Raspberry Pi)

Maak de broncode en noem deze "relay.c"

#erbij betrekken

#erbij betrekken

#erbij betrekken

#define DEVCIE_ADDR 0x10

#define RELAY1 0x01

#define RELAY2 0x02

#define RELAY3 0x03

#definieer RELAY4 0x04

#define ON 0xFF

#define UIT 0x00

int hoofd(void)

{

printf("Schakel relais in in C\n");

int fd;

int ik = 0;

fd = bedradingPiI2CSetup(DEVICE_ADDR);

voor(;;){

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

{

printf ("schakel relais nr. $ d in", i);

bedradingPiI2CWriteReg8(fd, i, ON);

slaap(200);

printf ("schakel relais nr. $ d uit", i);

bedradingPiI2CWriteReg8(fd, i, UIT);

slaap(200);

}

}

retourneer 0;

}

Compileer het

gcc relais.c -lwiringPi -o relais

Voer het uit

./relais

Stap 8: Programma in Python (Raspberry Pi)

Het wordt aanbevolen om de volgende code uit te voeren met Python 3 en de smbus-bibliotheek te installeren:

Maak een bestand met de naam: "relay.py" en plak de volgende code:

importeer tijd als t

import smbus

import systeem

DEVICE_BUS = 1

DEVICE_ADDR = 0x10

bus = smbus. SMBus(DEVICE_BUS)

terwijl waar:

proberen:

voor i in bereik (1, 5):

bus.write_byte_data(DEVICE_ADDR, i, 0xFF)

t.slaap(1)

bus.write_byte_data(DEVICE_ADDR, i, 0x00)

t.slaap(1)

behalve KeyboardInterrupt als e:

print("Stop de lus")

sys.exit()

* Sla het op en voer het uit als python3:

python3 relais.py

Stap 9: Programmeren in Java (Raspberry Pi)

Maak een nieuw bestand met de naam: I2CRelay.java en plak de volgende code:

import java.io. IOException;

java.util. Arrays importeren;

com.pi4j.io.i2c. I2CBus importeren;

com.pi4j.io.i2c. I2CDevice importeren;

importeer com.pi4j.io.i2c. I2CFactory;

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

import com.pi4j.platform. PlatformAlreadyAssignedException;

com.pi4j.util. Console importeren;

openbare klasse I2CRelay {

// het registeradres van het relais.

openbare statische finale int DOCKER_PI_RELAY_ADDR = 0x10;

// kanaal van relais.

openbare statische laatste byte DOCKER_PI_RELAY_1 = (byte)0x01;

openbare statische laatste byte DOCKER_PI_RELAY_2 = (byte)0x02;

openbare statische laatste byte DOCKER_PI_RELAY_3 = (byte)0x03;

openbare statische laatste byte DOCKER_PI_RELAY_4 = (byte)0x04;

// Relaisstatus

openbare statische laatste byte DOCKER_PI_RELAY_ON = (byte)0xFF;

openbare statische laatste byte DOCKER_PI_RELAY_OFF = (byte)0x00;

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

laatste consoleconsole = nieuwe console();

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

I2CDevice-apparaat = i2c.getDevice (DOCKER_PI_RELAY_ADDR);

console.println("Zet relais aan!");

apparaat.write(DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_ON);

Draad.slaap(500);

console.println("Schakel relais uit!");

device.write(DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_OFF);

}

}

Aanbevolen: