Πίνακας περιεχομένων:

Σύστημα ελέγχου φώτων: 9 βήματα
Σύστημα ελέγχου φώτων: 9 βήματα

Βίντεο: Σύστημα ελέγχου φώτων: 9 βήματα

Βίντεο: Σύστημα ελέγχου φώτων: 9 βήματα
Βίντεο: Πώς να εντοπίσεις μια δυσλειτουργία στο σύστημα ανάφλεξης | Συμβουλές από το AUTODOC 2024, Νοέμβριος
Anonim
Σύστημα ελέγχου φώτων
Σύστημα ελέγχου φώτων

Πρόσφατα δούλευα για την κατανόηση μικροελεγκτών και συσκευών που βασίζονται σε IOT για σκοπούς Έρευνας Ασφάλειας. Έτσι, σκέφτηκα να δημιουργήσω ένα μικρό σύστημα αυτοματισμού σπιτιού για εξάσκηση. Δεν έχω ακόμη ολοκληρώσει αυτό, αλλά για την εκκίνηση θα μοιραστώ πώς χρησιμοποίησα το Raspberry Pi 2 και μερικά άλλα ηλεκτρικά εξαρτήματα για τον έλεγχο του φωτισμού του δωματίου μου σε αυτήν την ανάρτηση. Επίσης, δεν θα μιλήσω για την αρχική ρύθμιση για το Raspberry εδώ, μπορεί να βρείτε διάφορα σεμινάρια για αυτό.

Αλλά σε αυτό το έργο, θα σας παρουσιάσω αυτό το προϊόν της σειράς docker pi.

Προμήθειες

Λίστα εξαρτημάτων:

  • 1 x Raspberry Pi 3B+/3B/Zero/Zero W/4B/
  • Κάρτα 1 x 16 GB TF Class 10
  • 1 x DockerPi series 4 Channel Relay Board (HAT)
  • 1 x [email protected] τροφοδοτικό που είναι από 52Pi
  • 4 x Λωρίδα φωτός
  • 1 x βύσμα DC
  • Τροφοδοσία 1 x 12V για τις λωρίδες φωτός.
  • αρκετά καλώδια.

Βήμα 1: Γνωριμία με τον πίνακα αναμετάδοσης σειράς 4 καναλιών DockerPi

Γνωρίζοντας για τον πίνακα αναμετάδοσης σειράς 4 καναλιών DockerPi
Γνωρίζοντας για τον πίνακα αναμετάδοσης σειράς 4 καναλιών DockerPi
Γνωρίζοντας για τον πίνακα αναμετάδοσης σειράς 4 καναλιών DockerPi
Γνωρίζοντας για τον πίνακα αναμετάδοσης σειράς 4 καναλιών DockerPi
Γνωρίζοντας για τον πίνακα αναμετάδοσης σειράς 4 καναλιών DockerPi
Γνωρίζοντας για τον πίνακα αναμετάδοσης σειράς 4 καναλιών DockerPi

Το DockerPi 4 Channel Relay είναι μέλος της σειράς DockerPi, που χρησιμοποιείται συχνότερα σε εφαρμογές IOT.

Το DockerPi 4 Channel Relay μπορεί να μεταφέρει AC/DC, αντί για τους παραδοσιακούς διακόπτες, για να επιτύχει περισσότερες ιδέες. Το DockerPi 4 Channel Relay μπορεί να στοιβάζεται έως 4 και μπορεί να στοιβάζεται με άλλη πλακέτα επέκτασης DockerPi. Εάν πρέπει να τρέξετε για μεγάλο χρονικό διάστημα, σας συνιστούμε επίσης να χρησιμοποιήσετε τον πίνακα επέκτασης DockerPi Power για να παρέχετε περισσότερη ισχύ.

ΣΗΜΕΙΩΣΗ ΠΡΟΣΟΧΗΣΠριν προχωρήσουμε περαιτέρω θα ήθελα να σας ΠΡΟΕΙΔΟΠΟΙΗΣΩ για τον ΚΙΝΔΥΝΟ να πειραματιστείτε με το "ρεύμα ρεύματος". Εάν κάτι πάει στραβά, η χειρότερη συνέπεια μπορεί να είναι ο θάνατος ή τουλάχιστον το κάψιμο του σπιτιού σας. Επομένως, ΜΗΝ ΠΡΟΣΠΑΘΕΤΕ να κάνετε οτιδήποτε αναφέρεται σε αυτό το άρθρο εάν δεν καταλαβαίνετε τι κάνετε ή καλύτερα να λάβετε τη βοήθεια κάποιου έμπειρου ηλεκτρολόγου. Ας αρχίσουμε.

Βήμα 2: Χαρακτηριστικά

Χαρακτηριστικά
Χαρακτηριστικά
Χαρακτηριστικά
Χαρακτηριστικά
Χαρακτηριστικά
Χαρακτηριστικά
  • Σειρά DockerPi
  • Προγραμματιζόμενος
  • Έλεγχος απευθείας (χωρίς προγραμματισμό)
  • Επεκτείνετε τις καρφίτσες GPIO
  • Ρελέ 4 καναλιών
  • 4 Υποστήριξη Alt I2C Addr
  • Υποστήριξη Relay Status Leds
  • 3A 250V AC Υποστήριξη
  • 3A 30V DC
  • Μπορεί να στοιβάζεται με άλλο πίνακα στοίβας Ανεξάρτητα από το υλικό της μητρικής πλακέτας (απαιτείται υποστήριξη I2C)

Βήμα 3: Χάρτης διεύθυνσης συσκευής

Χάρτης διεύθυνσης συσκευής
Χάρτης διεύθυνσης συσκευής
Χάρτης διεύθυνσης συσκευής
Χάρτης διεύθυνσης συσκευής

Αυτός ο πίνακας έχει ξεχωριστή διεύθυνση καταχωρητή και μπορείτε απλά να ελέγξετε κάθε ρελέ με μία εντολή.

Λοιπές απαιτήσεις:

Βασική κατανόηση Python ή C ή κελύφους ή Java ή οποιασδήποτε άλλης γλώσσας (θα χρησιμοποιώ C, python, shell και java)

  • Βασική κατανόηση των συστημάτων Linux
  • Ετοιμότητα πνεύματος

Τώρα, πριν προχωρήσετε θα πρέπει να κατανοήσετε τα ηλεκτρικά εξαρτήματα που θα χρησιμοποιήσουμε:

1. Ρελέ:

Ένα ρελέ είναι μια ηλεκτρική συσκευή που χρησιμοποιείται γενικά για τον έλεγχο υψηλών τάσεων χρησιμοποιώντας πολύ χαμηλή τάση ως είσοδο. Αυτό αποτελείται από ένα πηνίο τυλιγμένο γύρω από έναν πόλο και δύο μικρά μεταλλικά πτερύγια (κόμβοι) που χρησιμοποιούνται για το κλείσιμο του κυκλώματος. Ένας από τους κόμβους είναι σταθερός και ο άλλος είναι κινητός. Κάθε φορά που ένας ηλεκτρισμός διέρχεται από το πηνίο, δημιουργεί ένα μαγνητικό πεδίο και προσελκύει τον κινούμενο κόμβο προς τον στατικό κόμβο και το κύκλωμα ολοκληρώνεται. Έτσι, απλώς εφαρμόζοντας μικρή τάση για να ενεργοποιήσουμε το πηνίο, μπορούμε πραγματικά να ολοκληρώσουμε το κύκλωμα για να ταξιδέψει η υψηλή τάση. Επίσης, καθώς ο στατικός κόμβος δεν είναι φυσικά συνδεδεμένος με το πηνίο, υπάρχει πολύ μικρότερη πιθανότητα ο μικροελεγκτής που τροφοδοτεί το πηνίο να καταστραφεί εάν κάτι πάει στραβά.

Βήμα 4: Συνδέστε το ρελέ στη βάση λαμπτήρα που τροφοδοτείται από την κύρια ηλεκτρική τροφοδοσία

Συνδέστε το ρελέ στη βάση λαμπτήρα που τροφοδοτείται από την κύρια ηλεκτρική τροφοδοσία
Συνδέστε το ρελέ στη βάση λαμπτήρα που τροφοδοτείται από την κύρια ηλεκτρική τροφοδοσία
Συνδέστε το ρελέ στη βάση λαμπτήρα που τροφοδοτείται από την κύρια ηλεκτρική τροφοδοσία
Συνδέστε το ρελέ στη βάση λαμπτήρα που τροφοδοτείται από την κύρια ηλεκτρική τροφοδοσία

Τώρα στο δύσκολο κομμάτι, θα συνδέσουμε το ρελέ στη βάση λαμπτήρα που τροφοδοτείται από την παροχή Main Electric. Αλλά, πρώτα θέλω να σας δώσω μια σύντομη ιδέα για το πώς τα φώτα ενεργοποιούνται και απενεργοποιούνται μέσω άμεσης τροφοδοσίας.

Τώρα, όταν ο λαμπτήρας είναι συνδεδεμένος με την κύρια παροχή, το κάνουμε συνήθως συνδέοντας δύο καλώδια στον λαμπτήρα. ένα από τα καλώδια είναι ένα "Ουδέτερο" σύρμα και ένα άλλο είναι το "Αρνητικό" σύρμα που μεταφέρει στην πραγματικότητα το ρεύμα, επίσης υπάρχει ένας διακόπτης που προστίθεται σε ολόκληρο το κύκλωμα για τον έλεγχο του μηχανισμού ON / OFF. Έτσι, όταν το swith είναι συνδεδεμένο (Or ενεργοποιημένο) το ρεύμα ρέει μέσω του λαμπτήρα και του ουδέτερου καλωδίου, ολοκληρώνοντας το κύκλωμα. Αυτό ενεργοποιεί τη λάμπα. Όταν κλείνει ο διακόπτης, σπάει το κύκλωμα και ο λαμπτήρας σβήνει. Ακολουθεί ένα μικρό διάγραμμα κυκλώματος για να το εξηγήσετε:

Τώρα, για το πείραμά μας, θα χρειαστεί να κάνουμε το "Αρνητικό Σύρμα" να περάσει από το ρελέ μας για να σπάσει το κύκλωμα και να ελέγξει τη ροή ισχύος χρησιμοποιώντας τη μεταγωγή του ρελέ. Έτσι, όταν το ρελέ ενεργοποιηθεί, θα πρέπει να ολοκληρώσει το κύκλωμα και ο λαμπτήρας να ανάψει και αντίστροφα. Ανατρέξτε στο παρακάτω διάγραμμα για Πλήρες κύκλωμα.

Βήμα 5: Διαμόρφωση I2C (Raspberry Pi)

Διαμόρφωση I2C (Raspberry Pi)
Διαμόρφωση I2C (Raspberry Pi)
Διαμόρφωση I2C (Raspberry Pi)
Διαμόρφωση I2C (Raspberry Pi)
Διαμόρφωση I2C (Raspberry Pi)
Διαμόρφωση I2C (Raspberry Pi)
Διαμόρφωση I2C (Raspberry Pi)
Διαμόρφωση I2C (Raspberry Pi)

Εκτελέστε sudo raspi-config και ακολουθήστε τις οδηγίες για να εγκαταστήσετε υποστήριξη i2c για τον πυρήνα ARM και τον πυρήνα linux

Μεταβείτε στις Επιλογές διασύνδεσης

Βήμα 6: Άμεσος έλεγχος χωρίς προγραμματισμό (Raspberry Pi)

Ενεργοποιήστε το ρελέ καναλιού Νο. 1

i2cset -y 1 0x10 0x01 0xFF

Απενεργοποιήστε το ρελέ καναλιού Νο. 1

i2cset -y 1 0x10 0x01 0x00

Ενεργοποιήστε το ρελέ καναλιού Νο. 2

i2cset -y 1 0x10 0x02 0xFF

Απενεργοποιήστε το ρελέ καναλιού No2

i2cset -y 1 0x10 0x02 0x00

Ενεργοποιήστε το ρελέ καναλιού Νο. 3

i2cset -y 1 0x10 0x03 0xFF

Απενεργοποιήστε το ρελέ καναλιού Νο. 3

i2cset -y 1 0x10 0x03 0x00

Ενεργοποιήστε το ρελέ καναλιού Νο. 4

i2cset -y 1 0x10 0x04 0xFF

Απενεργοποιήστε το ρελέ καναλιού Νο. 4

i2cset -y 1 0x10 0x04 0x00

Βήμα 7: Πρόγραμμα στη γλώσσα C (Raspberry Pi)

Δημιουργήστε πηγαίο κώδικα και ονομάστε τον "relay.c"

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

#define DEVCIE_ADDR 0x10

#define RELAY1 0x01

#define RELAY2 0x02

#define RELAY3 0x03

#define RELAY4 0x04

#define ON 0xFF

#define OFF 0x00

int main (άκυρο)

{

printf ("Ενεργοποίηση ρελέ στο C / n");

int fd;

int i = 0;

fd = καλωδίωσηPiI2CSetup (DEVICE_ADDR);

Για(;;){

για (i = 1; i <= 4; i ++)

{

printf ("ενεργοποίηση ρελέ αρ. $ d", i);

καλωδίωσηPiI2CWriteReg8 (fd, i, ON);

ύπνος (200)?

printf ("απενεργοποίηση ρελέ αρ. $ d", i);

καλωδίωσηPiI2CWriteReg8 (fd, i, OFF);

ύπνος (200)?

}

}

επιστροφή 0?

}

Μεταγλωττίστε το

ρελέ gcc.c -lwiringPi -o ρελέ

Εκτέλεσε το

./αναμετάδοση

Βήμα 8: Πρόγραμμα σε Python (Raspberry Pi)

Ο ακόλουθος κώδικας συνιστάται να εκτελεστεί χρησιμοποιώντας Python 3 και να εγκαταστήσετε τη βιβλιοθήκη smbus:

Δημιουργήστε ένα αρχείο με το όνομα: "relay.py" και επικολλήστε τον ακόλουθο κώδικα:

χρόνος εισαγωγής ως t

εισαγωγή smbus

εισαγωγή sys

DEVICE_BUS = 1

DEVICE_ADDR = 0x10

bus = smbus. SMBus (DEVICE_BUS)

ενώ True:

προσπαθήστε:

για i στην περιοχή (1, 5):

bus.write_byte_data (DEVICE_ADDR, i, 0xFF)

t. ύπνος (1)

bus.write_byte_data (DEVICE_ADDR, i, 0x00)

t. ύπνος (1)

εκτός από το KeyboardIntrrupt as e:

εκτύπωση ("Quit the Loop")

sys.exit ()

* Αποθηκεύστε το και στη συνέχεια εκτελέστε το ως python3:

ρελέ python3.py

Βήμα 9: Πρόγραμμα σε Java (Raspberry Pi)

Δημιουργήστε ένα νέο αρχείο με το όνομα: I2CRelay.java και επικολλήστε τον ακόλουθο κώδικα:

εισαγωγή java.io. IOException;

εισαγωγή java.util. Arrays;

εισαγωγή com.pi4j.io.i2c. I2CBus;

εισαγωγή com.pi4j.io.i2c. I2CDevice;

εισαγωγή com.pi4j.io.i2c. I2CFactory?

εισαγωγή com.pi4j.io.i2c. I2CFactory. UnsupportedBusNumberException?

εισαγωγή com.pi4j.platform. PlatformAlreadyAssignedException;

εισαγωγή com.pi4j.util. Console;

δημόσια τάξη I2CRelay {

// διεύθυνση μητρώου ρελέ.

δημόσιος στατικός τελικός int DOCKER_PI_RELAY_ADDR = 0x10;

// κανάλι ρελέ.

δημόσιο στατικό τελικό byte DOCKER_PI_RELAY_1 = (byte) 0x01;

δημόσιο στατικό τελικό byte DOCKER_PI_RELAY_2 = (byte) 0x02;

δημόσιο στατικό τελικό byte DOCKER_PI_RELAY_3 = (byte) 0x03?

δημόσιο στατικό τελικό byte DOCKER_PI_RELAY_4 = (byte) 0x04;

// Κατάσταση ρελέ

δημόσιο στατικό τελικό byte DOCKER_PI_RELAY_ON = (byte) 0xFF;

δημόσιο στατικό τελικό byte DOCKER_PI_RELAY_OFF = (byte) 0x00;

public static void main (String args) ρίχνει InterruptException, PlatformAlreadyAssignedException, IOException, UnsupportedBusNumberException {

τελική κονσόλα κονσόλας = νέα κονσόλα ();

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

I2CDevice device = i2c.getDevice (DOCKER_PI_RELAY_ADDR);

console.println ("Ενεργοποίηση ρελέ!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_ON);

Thread.sleep (500);

console.println ("Απενεργοποίηση ρελέ!");

device.write (DOCKER_PI_RELAY_1, DOCKER_PI_RELAY_OFF);

}

}

Συνιστάται: