Mundarija:

Chiroqlarni boshqarish tizimi: 9 qadam
Chiroqlarni boshqarish tizimi: 9 qadam

Video: Chiroqlarni boshqarish tizimi: 9 qadam

Video: Chiroqlarni boshqarish tizimi: 9 qadam
Video: Ko'zingiz nuri qanchalik darajada o'tkirligini aniqlashni xohlaysizmi? 2024, Noyabr
Anonim
Chiroqlarni boshqarish tizimi
Chiroqlarni boshqarish tizimi

Yaqinda men xavfsizlik tadqiqotlari uchun mikrokontrollerlar va IOT asosidagi qurilmalarni tushunish ustida ishladim. Shunday qilib, men amaliyot uchun kichik uy avtomatlashtirish tizimini qurishni o'yladim. Men buni hali tugatmaganman, lekin ishga tushirish uchun men bu xabarda Raspberry Pi 2 va boshqa elektr komponentlarini qanday ishlatganimni aytib beraman. Bundan tashqari, men bu erda Raspberry uchun dastlabki sozlash haqida gapirmayman, buning uchun siz turli xil darsliklarni topishingiz mumkin.

Ammo men ushbu loyihada sizga docker pi seriyali mahsulotni taqdim etaman.

Ta'minotlar

Komponentlar ro'yxati:

  • 1 x Raspberry Pi 3B+/3B/Nol/Nol W/4B/
  • 1 x 16 Gb 10 -sinf TF kartasi
  • 1 x DockerPi seriyali 4 kanalli o'rni taxtasi (HAT)
  • 52Pi dan 1 x [email protected] quvvat manbai
  • 4 x yorug'lik chizig'i
  • 1 x shahar ulagichi
  • Yengil chiziqlar uchun 1 x 12V quvvat manbai.
  • bir nechta simlar.

1 -qadam: DockerPi 4 seriyali kanalli röley platasi haqida bilish

DockerPi Series 4 Channel Relay Board haqida bilish
DockerPi Series 4 Channel Relay Board haqida bilish
DockerPi Series 4 Channel Relay Board haqida bilish
DockerPi Series 4 Channel Relay Board haqida bilish
DockerPi Series 4 Channel Relay Board haqida bilish
DockerPi Series 4 Channel Relay Board haqida bilish

DockerPi 4 kanalli o'rni - DockerPi seriyasining a'zosi, IOT dasturlarida ko'proq ishlatiladi.

DockerPi 4 kanalli o'rni ko'proq g'oyalarga erishish uchun an'anaviy kalitlar o'rniga AC/DC o'tkazishi mumkin. DockerPi 4 kanalli o'rni 4 tagacha to'planishi mumkin va ularni boshqa DockerPi kengaytirish kartasi bilan biriktirish mumkin. Agar sizga uzoq vaqt yugurish kerak bo'lsa, biz sizga ko'proq quvvat berish uchun DockerPi Power kengaytirish kartamizdan foydalanishni tavsiya etamiz.

OGOHLANTIRISH DIQQATI: Davom etishdan oldin, men sizni "Elektr tarmog'i" bilan tajriba o'tkazish xavfi haqida ogohlantirmoqchiman. Agar biror narsa noto'g'ri ketsa, eng yomon oqibat o'lim yoki o'z uyingizni yoqib yuborish bo'lishi mumkin. Shuning uchun, agar siz nima qilayotganingizni tushunmasangiz yoki tajribali elektrchining yordamidan foydalansangiz, iltimos, ushbu maqolada aytib o'tilganlarni bajarishga KO'RSIN. Qani boshladik.

2 -qadam: Xususiyatlar

Xususiyatlari
Xususiyatlari
Xususiyatlari
Xususiyatlari
Xususiyatlari
Xususiyatlari
  • DockerPi seriyasi
  • Dasturlash mumkin
  • To'g'ridan -to'g'ri boshqarish (dasturlashsiz)
  • GPIO pinlarini kengaytiring
  • 4 kanalli o'rni
  • 4 Alt I2C Addr qo'llab -quvvatlashi
  • O'rnimizni holati Ledlarni qo'llab -quvvatlash
  • 3A 250V AC quvvat manbai
  • 3A 30V DC
  • Boshqa stack kartalari bilan biriktirilishi mumkin, anakart uskunasidan mustaqil (I2C qo'llab -quvvatlashi kerak)

3 -qadam: Qurilmaning manzil xaritasi

Qurilmaning manzil xaritasi
Qurilmaning manzil xaritasi
Qurilmaning manzil xaritasi
Qurilmaning manzil xaritasi

Bu doskada alohida registr manzili bor va siz har bir o'rni bitta buyruq bilan boshqarishingiz mumkin.

Boshqa talablar:

Python yoki C yoki qobiq yoki Java yoki boshqa til haqida asosiy tushuncha (men C, python, shell va javadan foydalanaman)

  • Linux tizimlari haqida asosiy tushunchalar
  • Aqlning mavjudligi

Oldinga o'tishdan oldin, biz ishlatadigan elektr komponentlarini tushunishingiz kerak:

1. Relay:

O'rnimizni - bu odatda past kuchlanishli kirish sifatida yuqori kuchlanishni boshqarish uchun ishlatiladigan elektr qurilmasi. Bu qutbga o'ralgan lasan va sxemani yopish uchun ishlatiladigan ikkita kichik metall qopqoqdan (tugunlardan) iborat. Tugunlardan biri sobit, ikkinchisi harakatlanuvchi. Qachonki elektr tokidan o'tkazilsa, u magnit maydon hosil qiladi va harakatlanuvchi tugunni statik tugunga tortadi va zanjir tugaydi. Shunday qilib, rulonni yoqish uchun kichik kuchlanishni qo'llash orqali biz yuqori voltli harakatlanish davrini yakunlay olamiz. Bundan tashqari, statik tugun rulonga jismonan ulanmaganligi sababli, biror narsa noto'g'ri ketganda, rulonni quvvatlantiruvchi mikrokontroller shikastlanish ehtimoli juda kam.

4 -qadam: O'rnimizni asosiy elektr ta'minoti bilan ishlaydigan lampochka ushlagichiga ulang

O'rnimizni asosiy elektr ta'minoti bilan ishlaydigan lampochka ushlagichiga ulang
O'rnimizni asosiy elektr ta'minoti bilan ishlaydigan lampochka ushlagichiga ulang
O'rnimizni asosiy elektr ta'minoti bilan ishlaydigan lampochka ushlagichiga ulang
O'rnimizni asosiy elektr ta'minoti bilan ishlaydigan lampochka ushlagichiga ulang

Endi murakkab qismga biz o'rni Asosiy Elektr tarmog'idan ishlaydigan Lampochka ushlagichiga ulanamiz. Lekin, birinchi navbatda, siz to'g'ridan -to'g'ri quvvat manbai orqali chiroqlar qanday yoqilgan va o'chirilgani haqida qisqacha ma'lumot bermoqchiman.

Endi, lampochka asosiy manbaga ulanganda, biz odatda lampochkaga ikkita simni ulash orqali qilamiz. simlardan biri - "neytral" sim, ikkinchisi - "manfiy" sim, tokni o'tkazadi, shuningdek, O'chirish mexanizmini boshqarish uchun butun zanjirga kalit qo'shiladi. Shunday qilib, svitka ulanganda (yoki yoqilganda) oqim lampochka va neytral simdan o'tadi va kontaktlarning zanglashiga olib keladi. Bu lampochkani yoqadi. Kalit yoqilganda, u kontaktlarning zanglashiga olib keladi va lampochka o'chadi. Buni tushuntirish uchun kichik sxemasi:

Endi, bizning tajribamiz uchun, biz "salbiy simni" o'z o'rni orqali o'tkazib, kontaktlarning zanglashiga olib kelishi va o'rni almashtirgich yordamida quvvat oqimini boshqarishi kerak bo'ladi. Shunday qilib, o'rni yoqilganda, u kontaktlarning zanglashiga olib kelishi kerak va Lampochka yoqilishi kerak va aksincha. To'liq o'chirish uchun quyidagi diagramaga qarang.

5 -qadam: I2C (Raspberry Pi) ni sozlash

I2C -ni sozlash (Raspberry Pi)
I2C -ni sozlash (Raspberry Pi)
I2C -ni sozlash (Raspberry Pi)
I2C -ni sozlash (Raspberry Pi)
I2C -ni sozlash (Raspberry Pi)
I2C -ni sozlash (Raspberry Pi)
I2C -ni sozlash (Raspberry Pi)
I2C -ni sozlash (Raspberry Pi)

Sudo raspi-config-ni ishga tushiring va ARM yadrosi va linux yadrosi uchun i2c-ni o'rnatish bo'yicha ko'rsatmalarga amal qiling.

Interfacing Options -ga o'ting

6 -qadam: Dasturlashsiz to'g'ridan -to'g'ri boshqarish (Raspberry Pi)

1 -raqamli kanal rölesini yoqing

i2cset -y 1 0x10 0x01 0xFF

1 -kanal kanalini o'chiring

i2cset -y 1 0x10 0x01 0x00

2 -raqamli kanal rölesini yoqing

i2cset -y 1 0x10 0x02 0xFF

2 -kanalli o'rni o'chiring

i2cset -y 1 0x10 0x02 0x00

3 -sonli kanal rölesini yoqing

i2cset -y 1 0x10 0x03 0xFF

№3 kanal o'rni o'chiring

i2cset -y 1 0x10 0x03 0x00

4 -sonli kanal rölesini yoqing

i2cset -y 1 0x10 0x04 0xFF

4 -kanalli o'rni o'chiring

i2cset -y 1 0x10 0x04 0x00

7 -qadam: C tilidagi dastur (Raspberry Pi)

Manba kodini yarating va unga "relay.c" deb nom bering.

#qo'shing

#qo'shing

#qo'shing

#devine DEVCIE_ADDR 0x10

#ta'rif RELAY1 0x01

#RELAY2 0x02 ni belgilang

#ta'rif RELAY3 0x03

#ta'rif RELAY4 0x04

0xFF -ni #aniqlang

#aniqlang O'chirish 0x00

int main (bekor)

{

printf ("C / nda röleylarni yoqish");

int fd;

int i = 0;

fd = wiringPiI2CSetup (DEVICE_ADDR);

uchun(;;){

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

{

printf ("$ d rölesini yoqish", i);

wiringPiI2CWriteReg8 (fd, i, ON);

uxlash (200);

printf ("No $ d o'rni o'chirilsin", i);

wiringPiI2CWriteReg8 (fd, i, OFF);

uxlash (200);

}

}

qaytarish 0;

}

Kompilyatsiya qiling

gcc o'rni.c -simliPi -o'rni

Uni bajaring

./ o'rni

8 -qadam: Pythonda dastur (Raspberry Pi)

Quyidagi kodni Python 3 yordamida bajarish va smbus kutubxonasini o'rnatish tavsiya etiladi:

"Relay.py" nomli fayl yarating va quyidagi kodni joylashtiring:

t kabi import vaqti

smbus import qilish

sys import qilish

DEVICE_BUS = 1

DEVICE_ADDR = 0x10

avtobus = smbus. SMBus (DEVICE_BUS)

rost bo'lsa:

harakat qilib ko'ring:

i uchun (1, 5):

bus.write_byte_data (DEVICE_ADDR, i, 0xFF)

uyqu (1)

bus.write_byte_data (DEVICE_ADDR, i, 0x00)

uyqu (1)

KeyboardInterruptdan tashqari:

chop etish ("Loopdan chiqish")

sys.exit ()

* Uni saqlang va keyin python3 sifatida ishga tushiring:

python3 o'rni.py

9 -qadam: Java -da dastur (Raspberry Pi)

I2CRelay.java nomli yangi fayl yarating va quyidagi kodni joylashtiring:

java.io. IOException ni import qilish;

java.util. Arrays -ni import qilish;

com.pi4j.io.i2c. I2CBus -ni import qilish;

com.pi4j.io.i2c. I2CDevice -ni import qilish;

com.pi4j.io.i2c. I2CFactory -ni import qilish;

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

com.pi4j.platform. PlatformAlreadyAssignedException ni import qilish;

com.pi4j.util. Console -ni import qilish;

ochiq sinf I2CRelay {

// o'rni registrining manzili.

umumiy statik final int DOCKER_PI_RELAY_ADDR = 0x10;

// estafeta kanali.

umumiy statik yakuniy bayt DOCKER_PI_RELAY_1 = (bayt) 0x01;

umumiy statik yakuniy bayt DOCKER_PI_RELAY_2 = (bayt) 0x02;

umumiy statik yakuniy bayt DOCKER_PI_RELAY_3 = (bayt) 0x03;

umumiy statik yakuniy bayt DOCKER_PI_RELAY_4 = (bayt) 0x04;

// O'rnimizni holati

umumiy statik yakuniy bayt DOCKER_PI_RELAY_ON = (bayt) 0xFF;

umumiy statik yakuniy bayt DOCKER_PI_RELAY_OFF = (bayt) 0x00;

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

oxirgi konsol konsoli = yangi konsol ();

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

I2CDevice qurilmasi = i2c.getDevice (DOCKER_PI_RELAY_ADDR);

console.println ("O'rnimizni yoqing!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_ON);

Thread.sleep (500);

console.println ("O'rnimizni o'chiring!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_OFF);

}

}

Tavsiya: