Η κατασκευή που θα σας περιγράψω είναι μια μονάδα συναγερμού η οποία ανιχνεύει την υπερχείλιση ή την διαρροή νερού και είναι χρήσιμη σε υπόγεια ή επαγγελματικούς χώρους. Η συσκευή έχει δύο καταστάσεις λειτουργίας την απλή και την εξελιγμένη. Στην απλή κατάσταση λειτουργίας που δεν απαιτείται η ύπαρξη μικροελεγκτή, όταν σε κάποια δεξαμενή ή σημείο ανιχνευθεί υψηλή στάθμη υδάτων τότε θα ενεργοποιηθεί η ηχητική ειδοποίηση σε δύο ή περισσότερους χώρους.
Στην εξελιγμένη κατάσταση αρχικά θα καλέσει κάποια εσωτερικά τηλέφωνα (ringgroup) του τηλεφωνικού μας κέντρου το οποίο βασίζεται στο ανοιχτό λογισμικό asterisk και με ηχητικό μήνυμα θα μας πει σε ποιο σημείο ανιχνεύθηκε διαρροή. Αν μετά από κάποιο αριθμό χτυπημάτων κανείς δεν απαντήσει, το σύστημα θα στείλει sms στο κινητό μας. Εδώ απαιτείται σύνδεση internet και συνδρομή σε κάποια υπηρεσία αποστολής sms.
Επίσης ρυθμίζοντας τα αρχεία του asterisk (extensions.conf) μπορούμε να καλέσουμε το κινητό μας και να ακούσουμε το ίδιο ηχητικό μήνυμα που θα ακούγαμε και στο εσωτερικό. Για την υποστήριξη αυτής της κατάστασης απαιτείται μικροελεγκτής.
Και οι δύο καταστάσεις λειτουργούν παράλληλα όταν υπάρχει παροχή ηλεκτρικού ρεύματος. Αν υπάρξει διακοπή τότε λειτουργεί μόνο η απλή κατάσταση της οποίας τα κυκλώματα τροφοδοτούνται από μια μπαταρία εφεδρείας.
Όπως βλέπουμε στο θεωρητικό κύκλωμα (Σχήμα 1), τα κυκλώματα της απλής κατάστασης λειτουργίας είναι αυτά γύρω από τα δύο CD4093 (τετραπλές πύλες schmitt trigger NAND). Τα τρία ηλεκτρονικά αισθητήρια (εικόνες 2 - 3), είναι απλά σύρματα σε απόσταση περίπου 5-10 cm. Όταν τα σύρματα έρθουν σε επαφή με το νερό, υπάρχει αγωγιμότητα και τότε έχουμε λογικό '0' στην μια είσοδο της NAND. Στην έξοδο έχουμε λογικό '1' το οποίο αντιστρέφεται ξανά από τις IC2B, IC2C και IC3B. Έτσι αν σε κάποια είσοδο έχουμε νερό τότε θα έχουμε λογικό '0' στη κάθοδο των D1 ή D2 ή D3. Οι δίοδοι D1, D2, D3 υλοποιούν μια πύλη OR η οποία ενεργοποιεί τον ακουστικό ταλαντωτή IC3C και ανοίγει το transistor T2 ώστε να ηχήσει το buzzer. Τα αισθητήρια δοκιμάστηκαν σε διάφορα είδη νερού με διαφορετική αγωγιμότητα μέχρι και σε αποσταγμένο και λειτουργούν κανονικά. Εγώ έχω χρησιμοποιήσει καλώδιο UTP με μήκος μέχρι 15m που οι άκρες τους αφού γυμνωθούν αρκετά λειτουργούν ως αισθητήρια.
Σχήμα 1 | Εικόνα 2 | Εικόνα 3 |
Για την σύνθετη κατάσταση λειτουργίας έχουμε τον μικροελεγκτή AVR AT90S2313 της Atmel και τα τριγύρω κυκλώματα. Επίσης θα χρειαστούμε μια παλιά τηλεφωνική συσκευή με πληκτρολόγιο DTMF . Αυτό το κάνουμε για να αποφύγουμε να φτιάξουμε εμείς τα κυκλώματα επιλογής, αγκίστρου και προσαρμογής με την τηλεφωνική γραμμή. Όταν σε κάποιο από τα pin PD0 – PD4 ανιχνευθεί λογικό '0' τότε αρχικά θα κλείσει η επαφή P1 του ηλεκτρονόμου (reley) και θα ανοίξει η γραμμή. Μετά από λίγο ο μικροελεγκτής θα επιλέξει ένα διψήφιο αριθμό με συνδυασμούς των ψηφίων 3, 6 και 9, γιατί μόνο αυτά συνδέσαμε στο εσωτερικό του τηλεφώνου. Ο αριθμός θα είναι διαφορετικός για κάθε αισθητήριο ώστε το master dialplan να καταλάβει που υπάρχει διαρροή και να παίξει το αντίστοιχο ηχητικό μήνυμα. Έπειτα θα κλείσει την γραμμή και τα υπόλοιπα θα τα αναλάβει ο asterisk.
Το πρόγραμμα του μικροελεγκτή είναι πολύ απλό και είναι γραμμένο σε 'C' και μεταγλωττισμένο με τον avr-gcc .
Στο αρχείο extensions.conf που είναι το master dialplan του Asterisk θα προσθέσουμε τις ακόλουθες γραμμές :
exten => 63,1,AGI(alarm.php)
exten => 63,n,Hangup
exten => 66,1,AGI(alarm.php)
exten => 66,n,Hangup
exten => 69,1,AGI(alarm.php)
exten => 69,n,Hangup
exten => 93,1,AGI(alarm.php)
exten => 93,n,Hangup
Όπως παρατηρούμε το σύστημα συναγερμού θα καλέσει το 63, 66, 69, 93 ανάλογα με το σημείο και ο asterisk θα εκτελέσει το AGI script alarm.php το οποίο είναι γραμμένο σε php. Αυτό πρέπει να βρίσκεται στον κατάλογο /var/lib/asterisk/agi-bin.
Αν μελετήσουμε λίγο το παραπάνω script θα δούμε ότι δημιουργεί ένα αρχείο αυτόματης κλήσης στον κατάλογο /var/spool/asterisk/outgoing. Αν ένα αρχείο με επέκταση .call τοποθετηθεί μέσα σ' αυτόν τον κατάλογο, τότε ο asterisk θα καλέσει αυτόματα το extension την συγκεκριμένη ημέρα και ώρα που έχει οριστεί στο αρχείο και θα εκτελέσει μια εφαρμογή π.χ. Playback που θα παίξει ένα φωνητικό μήνυμα. Το συγκεκριμένο αρχείο που δημιουργεί το script alarm.php, εκτελείται αμέσως και καλεί το εσωτερικό 18 το οποίο είναι ένα ringgroup όπως βλέπουμε παρακάτω και πρέπει να το προσθέσουμε στο extensions.conf. Στη μεταβλητή parm_data βάζουμε ανάλογα τιμές alarm1, alarm2, alarm3 που είναι διαφορετικά ηχητικά μηνύματα στο /var/lib/asterisk/sounds
;******************Water Alarm ****************************
exten => 18,1,Dial(SIP/11,40)
exten => 18,2,AGI(sms.php)
Δηλαδή καλεί το εσωτερικό 11 ή όποιο εμείς ορίσουμε, για 40 δευτερόλεπτα. Αν δεν το σηκώσουμε εκτελεί το script sms.php το οποίο στέλνει sms και μετά καλεί το κινητό μέσω παρόχου Voip. Στο sms.php πρέπει να γίνουν αλλαγές των στοιχείων σας ώστε να λειτουργεί με τον πάροχό σας.
Βελτίωση
Μπορούμε να αποφύγουμε την χρήση των πυλών IC2B, IC2C και IC3B σαν αντιστροφείς και να τροποποιήσουμε την πύλη OR των διόδων D1-D3 να λειτουργεί με θετική λογική. Επίσης στο πρόγραμμα ανιχνεύουμε υψηλή στάθμη στις εισόδους PD0-PD2. Έτσι έχουμε επιπλέον 3 εισόδους χωρίς την ανάγκη προσθήκης νέων εξαρτημάτων.
Στην εικόνα 4 βλέπουμε την τελική κατασκευή με ετικέτες όπου βλέπουμε τον τρόπο σύνδεσης με τους αισθητήρες και την τηλεφωνική συσκευή.
Εικόνα 4 |
Το Voip τηλεφωνικό κέντρο με Asterisk που χρησιμοποίησα είναι ένα sbc wrap και μνήμη CF (compact flash) για σκληρό δίσκο το οποίο τρέχει το Astlinux . Φυσικά θα μπορούσατε να χρησιμοποιήσετε και άλλες διανομές όπως Trixbox , Elastix , Askosia κλπ.
Ετοίμασα ένα αρχείο zip με όλα τα αρχεία της κατασκευής και μπορείτε να το κατεβάσετε από εδώ.
(c) 2010 Σταύρος Σ. Φώτογλου
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου