Turinys:

Šviesų valdymo sistema: 9 žingsniai
Šviesų valdymo sistema: 9 žingsniai

Video: Šviesų valdymo sistema: 9 žingsniai

Video: Šviesų valdymo sistema: 9 žingsniai
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Lapkritis
Anonim
Šviesų valdymo sistema
Šviesų valdymo sistema

Neseniai aš stengiausi suprasti mikrovaldiklius ir IOT pagrįstus įrenginius saugumo tyrimų tikslais. Taigi, aš sugalvojau sukurti nedidelę namų automatikos sistemą praktikai. Aš dar nebaigiau to užbaigti, tačiau paleidimui aš šiame įraše pasidalinsiu, kaip aš naudoju „Raspberry Pi 2“ir kai kuriuos kitus elektrinius komponentus savo kambario apšvietimui valdyti. Be to, čia nekalbėsiu apie pradinę „Raspberry“sąranką, tam galite rasti įvairių vadovėlių.

Tačiau šiame projekte aš jums pristatysiu šį „docker pi“serijos produktą.

Prekės

Komponentų sąrašas:

  • 1 x Raspberry Pi 3B+/3B/Zero/Zero W/4B/
  • 1 x 16 GB 10 klasės TF kortelė
  • 1 x „DockerPi“serijos 4 kanalų relės plokštė (HAT)
  • 1 x [email protected] maitinimo šaltinis, kuris yra nuo 52Pi
  • 4 x šviesos juostelė
  • 1 x nuolatinės srovės jungtis
  • 1 x 12 V maitinimo šaltinis šviesos juostoms.
  • keli laidai.

1 žingsnis: žinokite apie „DockerPi Series 4 Channel Relay Board“

Žinios apie „DockerPi Series 4 Channel Relay Board“
Žinios apie „DockerPi Series 4 Channel Relay Board“
Žinios apie „DockerPi Series 4 Channel Relay Board“
Žinios apie „DockerPi Series 4 Channel Relay Board“
Žinios apie „DockerPi Series 4 Channel Relay Board“
Žinios apie „DockerPi Series 4 Channel Relay Board“

„DockerPi 4 Channel Relay“yra „DockerPi“serijos narys, dažniau naudojamas IOT programose.

„DockerPi“4 kanalų relė gali perduoti AC/DC, o ne tradicinius jungiklius, kad pasiektų daugiau idėjų. „DockerPi“4 kanalų relė gali būti sukrauta iki 4 ir gali būti sukrauta su kita „DockerPi“išplėtimo plokšte. Jei jums reikia ilgai veikti, taip pat rekomenduojame naudoti mūsų „DockerPi Power“išplėtimo plokštę, kad gautumėte daugiau energijos.

Prieš tęsdami, norėčiau jus įspėti apie PAVOJĄ eksperimentuoti su „elektros tinklu“. Jei kas nors nepavyks, blogiausia pasekmė gali būti mirtis arba bent jau jūsų namo sudegimas. Taigi, NENORĖKITE daryti nieko, kas paminėta šiame straipsnyje, jei nesuprantate, ką darote, arba geriau pasinaudokite patyrusio elektriko pagalba. Pradėkime.

2 žingsnis: funkcijos

funkcijos
funkcijos
funkcijos
funkcijos
funkcijos
funkcijos
  • „DockerPi“serija
  • Programuojamas
  • Tiesioginis valdymas (be programavimo)
  • Išplėskite GPIO kaiščius
  • 4 kanalų relė
  • 4 „Alt I2C Addr“palaikymas
  • Relės būsenos LED palaikymas
  • 3A 250V kintamosios srovės palaikymas
  • 3A 30V DC
  • Galima sukrauti su kita „Stack“plokšte Nepriklausomai nuo pagrindinės plokštės aparatūros (reikalinga „I2C“parama)

3 veiksmas: įrenginio adreso žemėlapis

Įrenginio adreso žemėlapis
Įrenginio adreso žemėlapis
Įrenginio adreso žemėlapis
Įrenginio adreso žemėlapis

Ši plokštė turi atskirą registro adresą, ir jūs galite tiesiog valdyti kiekvieną relę viena komanda.

Kiti reikalavimai:

Pagrindinis „Python“ar „C“, „shell“, „Java“ar bet kurios kitos kalbos supratimas (naudosiu „C“, „python“, „shell“ir „Java“)

  • Pagrindinis Linux sistemų supratimas
  • Proto buvimas

Dabar, prieš eidami į priekį, turėsite suprasti elektrinius komponentus, kuriuos naudosime:

1. Relė:

Relė yra elektrinis įtaisas, kuris paprastai naudojamas aukštos įtampos valdymui naudojant labai žemą įtampą. Tai susideda iš ritės, apvyniotos aplink stulpą, ir dviejų mažų metalinių atvartų (mazgų), kurie naudojami grandinei uždaryti. Vienas iš mazgų yra fiksuotas, o kitas yra kilnojamas. Kai elektros energija praeina per ritę, ji sukuria magnetinį lauką ir pritraukia judantį mazgą statinio mazgo link, o grandinė baigiama. Taigi, tik pritaikę mažą įtampą ritės įjungimui, mes iš tikrųjų galime užbaigti aukštos įtampos judėjimo grandinę. Be to, kadangi statinis mazgas nėra fiziškai prijungtas prie ritės, yra labai maža tikimybė, kad ritę maitinantis mikrovaldiklis bus sugadintas, jei kažkas nutiks.

4 žingsnis: Prijunkite relę prie lemputės laikiklio, maitinamo iš pagrindinio elektros maitinimo šaltinio

Prijunkite relę prie lemputės laikiklio, maitinamo iš pagrindinio elektros maitinimo šaltinio
Prijunkite relę prie lemputės laikiklio, maitinamo iš pagrindinio elektros maitinimo šaltinio
Prijunkite relę prie lemputės laikiklio, maitinamo iš pagrindinio elektros maitinimo šaltinio
Prijunkite relę prie lemputės laikiklio, maitinamo iš pagrindinio elektros maitinimo šaltinio

Dabar prie sudėtingos dalies, mes prijungsime relę prie lemputės laikiklio, maitinamo iš pagrindinio elektros tiekimo. Bet pirmiausia noriu trumpai papasakoti, kaip įjungiami ir išjungiami žibintai per tiesioginį maitinimą.

Dabar, kai lemputė prijungta prie pagrindinio maitinimo šaltinio, dažniausiai tai darome prijungę du laidus prie lemputės. vienas iš laidų yra „neutralus“laidas, o kitas - „neigiamas“laidas, kuris iš tikrųjų perduoda srovę, taip pat prie visos grandinės pridedamas jungiklis, skirtas valdyti įjungimo ir išjungimo mechanizmą. Taigi, kai jungiklis yra prijungtas (arba įjungtas), srovė teka per lemputę ir nulinį laidą, užbaigdama grandinę. Tai įjungia lemputę. Kai jungiklis yra išjungtas, jis nutraukia grandinę ir lemputė išsijungia. Čia yra nedidelė grandinės schema, paaiškinanti tai:

Dabar mūsų eksperimentui reikės, kad „neigiama viela“eitų per mūsų relę, kad nutrauktų grandinę ir valdytų energijos srautą, naudojant relės perjungimą. Taigi, kai relė įsijungs, ji turėtų užbaigti grandinę, o lemputė turėtų įsijungti ir atvirkščiai. Žiūrėkite žemiau pateiktą schemą, kad gautumėte visą grandinę.

5 veiksmas: „I2C“(„Raspberry Pi“) konfigūravimas

„I2C“(„Raspberry Pi“) konfigūravimas
„I2C“(„Raspberry Pi“) konfigūravimas
„I2C“(„Raspberry Pi“) konfigūravimas
„I2C“(„Raspberry Pi“) konfigūravimas
„I2C“(„Raspberry Pi“) konfigūravimas
„I2C“(„Raspberry Pi“) konfigūravimas
„I2C“(„Raspberry Pi“) konfigūravimas
„I2C“(„Raspberry Pi“) konfigūravimas

Paleiskite „sudo raspi-config“ir vykdykite nurodymus, kad įdiegtumėte „i2c“palaikymą ARM branduoliui ir „Linux“branduoliui

Eikite į sąsajos parinktis

6 veiksmas: tiesioginis valdymas be programavimo („Raspberry Pi“)

Įjunkite kanalo Nr.1 relę

i2cset -y 1 0x10 0x01 0xFF

Išjunkite kanalo Nr.1 relę

i2cset -y 1 0x10 0x01 0x00

Įjunkite kanalo Nr.2 relę

i2cset -y 1 0x10 0x02 0xFF

Išjunkite kanalo Nr.2 relę

i2cset -y 1 0x10 0x02 0x00

Įjunkite kanalo Nr. 3 relę

i2cset -y 1 0x10 0x03 0xFF

Išjunkite kanalo Nr. 3 relę

i2cset -y 1 0x10 0x03 0x00

Įjunkite kanalo Nr. 4 relę

i2cset -y 1 0x10 0x04 0xFF

Išjunkite kanalo Nr. 4 relę

i2cset -y 1 0x10 0x04 0x00

7 žingsnis: programa C kalba („Raspberry Pi“)

Sukurkite šaltinio kodą ir pavadinkite jį „relay.c“

#įtraukti

#įtraukti

#įtraukti

#define DEVCIE_ADDR 0x10

#define RELAY1 0x01

#define RELAY2 0x02

#define RELAY3 0x03

#define RELAY4 0x04

#define ON 0xFF

#define OFF 0x00

int main (niekinis)

{

printf ("Įjungti relės C / n");

int fd;

int i = 0;

fd = wiringPiI2CSetup (DEVICE_ADDR);

dėl(;;){

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

{

printf ("įjunkite relę Nr. $ d", i);

wiringPiI2CWriteReg8 (fd, i, ON);

miegas (200);

printf ("išjungti relę Nr. $ d", i);

wiringPiI2CWriteReg8 (fd, i, OFF);

miegas (200);

}

}

grįžti 0;

}

Sudarykite

gcc relė.c -laidų prijungimasPi -o relė

Vykdyk

./ relė

8 veiksmas: programa „Python“(„Raspberry Pi“)

Šį kodą rekomenduojama vykdyti naudojant „Python 3“ir įdiegti „smbus“biblioteką:

Sukurkite failą pavadinimu „relay.py“ir įklijuokite šį kodą:

importo laikas kaip t

importuoti smbus

importo sistema

DEVICE_BUS = 1

ĮRENGINIO_ADDR = 0x10

autobusas = smbus. SMBus (DEVICE_BUS)

nors tiesa:

bandyti:

i diapazone (1, 5):

bus.write_byte_data (DEVICE_ADDR, i, 0xFF)

t.miegoti (1)

bus.write_byte_data (DEVICE_ADDR, i, 0x00)

t.miegoti (1)

išskyrus klaviatūrąInterrupt kaip e:

spausdinti („Išeiti iš ciklo“)

sys.exit ()

* Išsaugokite ir paleiskite kaip python3:

python3 relė.py

9 veiksmas: programa „Java“(„Raspberry Pi“)

Sukurkite naują failą pavadinimu: I2CRelay.java ir įklijuokite šį kodą:

importuoti java.io. IOException;

importuoti java.util. Arrays;

importuoti com.pi4j.io.i2c. I2CBus;

importuoti com.pi4j.io.i2c. I2CDevice;

importuoti com.pi4j.io.i2c. I2CFactory;

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

importuoti com.pi4j.platform. PlatformAlreadyAssignedException;

importuoti com.pi4j.util. Console;

viešoji klasė I2CRelay {

// relės registro adresas.

public static final int DOCKER_PI_RELAY_ADDR = 0x10;

// relės kanalas.

viešas statinis galutinis baitas DOCKER_PI_RELAY_1 = (baitas) 0x01;

viešas statinis galutinis baitas DOCKER_PI_RELAY_2 = (baitas) 0x02;

viešas statinis galutinis baitas DOCKER_PI_RELAY_3 = (baitas) 0x03;

viešas statinis galutinis baitas DOCKER_PI_RELAY_4 = (baitas) 0x04;

// Relės būsena

viešas statinis galutinis baitas DOCKER_PI_RELAY_ON = (baitas) 0xFF;

viešas statinis galutinis baitas DOCKER_PI_RELAY_OFF = (baitas) 0x00;

public static void main (String args) metimai InterruptException, PlatformAlreadyAssignedException, IOException, UnsupportedBusNumberException {

final Console console = new Console ();

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

„I2CDevice device“= „i2c.getDevice“(DOCKER_PI_RELAY_ADDR);

console.println ("Įjunk relę!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_ON);

Siūlai.miegoti (500);

console.println ("Išjungti relę!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_OFF);

}

}

Rekomenduojamas: