Σύστημα συναγερμού με arduino

Φτιάξε το δικό σου σύστημα συναγερμού με arduino

Θα κατασκευάσουμε μαζί ένα σύστημα συναγερμού με arduino. Η ανίχνευση κίνησης είναι ένα συναρπαστικό project το οποίο θα σας δείξω πως μπορείτε να πετύχετε.

Με ελάχιστα υλικά μπορείτε να υλοποιήσετε το project και εσείς για να φτιάξετε το δικό σας σύστημα συναγερμού /  ανίχνευσης!

Ανίχνευση κίνησης με arduino

Με ποιο τρόπο θα πετύχουμε την ανίχνευση κίνησης; Μα φυσικά με έναν πυροηλεκτρικό αισθητήρα κίνησης (PIR sensor) ο οποίος λειτουργεί με έναν αισθητήρα υπερύθρων. Στον αισθητήρα υπάρχουν 2 ποτενσιόμετρα, ένα για να ρυθμίζει την ευαισθησία (απόσταση στόχου από τον αισθητήρα) και ένα την διάρκεια της εξόδου σε περίπτωση που αυτή ενεργοποιηθεί από κάποια κίνηση.

Αισθητήρας υπερύθρων

Το βασικό εξάρτημα για το project μας είναι ο αισθητήρας κίνησης (PIR). Στην παρακάτω φωτογραφία βλέπετε τον αισθητήρα με το πλαστικό κάλυμμα.

αισθητήρας κίνησης

Κάτω από το λευκό πλαστικό κάλυμμα, υπάρχει ένας αισθητήρας υπερύθρων, ο οποίος φαίνεται στην παρακάτω εικόνα.

αισθητήρας κίνησης με arduino

Ο αισθητήρας λειτουργεί με το να λαμβάνει την εκπέμπουσα υπέρυθρη ακτινοβολία που εκπέμπει ένας άνθρωπος ή ζώο και να ελέγχει αν υπάρχει κάποια διακύμανση στην τιμή. Σε περίπτωση που εντοπίσει διακύμανση, μέσω του pin OUT που διαθέτει στέλνει την τιμή HIGH (5v) στο arduino η το υπόλοιπο κύκλωμα.

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

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

Το project

Το project είναι αρκετά απλό αλλά θα μας μάθει πως να χρησιμοποιούμε τον συγκεκριμένο αισθητήρα. Σε συνδυασμό με ένα GSM module το οποίο διαθέτω και θα σας δείξω σε επόμενο Project, μπορούμε να κάνουμε ένα σύστημα το οποίο θα μας στέλνει sms όταν εντοπίζει κίνηση. Επίσης θα κάνουμε χρήση της εντολής digitalRead() αλλά και της digitalWrite() γιατί θα χειριστούμε εισόδους και εξόδους με ψηφιακό τρόπο.

Παρακάτω η λίστα των υλικών που θα χρειαστούμε.

  1. Arduino (οποιαδήποτε έκδοση)
  2. Αισθητήρας κίνησης PIR
  3. LED
  4. Bread Board
  5. Wires
  6. GSM module (οποιοδήποτε αρκεί να υποστηρίζει ένα Ελληνικό δίκτυο κινητής τηλεφωνίας)*

*Όσον αφορά το GSM module, έμαθα (με τον δύσκολο τρόπο) ότι θα πρέπει να υποστηρίζει ένα Ελληνικό δίκτυο. Προσπαθώντας να βρω ένα οικονομικό από το ebay, διαπίστωσα ότι τα κινέζικα GSM modules της τάξης των 10€ ΔΕΝ υποστηρίζουν κανένα από τα Ελληνικά δίκτυα.

Δεν το έβαλα κάτω όμως (και αφού ήδη είχα αγοράσει ένα κινέζικο δεν μπορούσα να κάνω και διαφορετικά), χρησιμοποιώντας το GSM module με το chip SIM900, έκανα μία αναβάθμιση με firmware που χρησιμοποιούν στο SIM900A (ναι! το Α κάνει μεγάλη διαφορά) και κατάφερα να το δουλέψω μόνο με την Vodafone ( καλύτερο από το τίποτα).

Για να μην έχετε προβλήματα, δοκιμάστε ένα GSM module από Ευρωπαϊκή αγορά π.χ. ένα shield από την Grobotronics ή την HellasDigital (δεν σας λέω ποιο για να μην σας πάρω στο λαιμό μου, ρωτήστε και οι δύο εταιρείες είναι πολύ εξυπηρετικές)

Για την αναβάθμιση χρησιμοποίησα ένα module serial to usb FTDI.

αισθητήρας κίνησης με arduino
FTDI Serial to USB

 Το GSM module

To gsm module θα το βρείτε σε πολλές παραλλαγές. Για να προβείτε σε αγορά, θα έλεγα να μην προτιμήσετε τα “κινέζικα” από το ebay καθώς αν και 5 φορές (τουλάχιστον) φθηνότερα, δεν λειτουργούν με τα δικά μας δίκτυα. Θα πρέπει να τα αναβαθμίσετε αλλά για να το κάνετε αυτό θα πρέπει να είστε έμπειροι/ες.

gsm module arduino

Το θετικό είναι ότι δεν χρειάζεται να ενσωματώσετε κάποια επιπλέον βιβλιοθήκη μιας και χρησιμοποιούμε μόνο την σειριακή επικοινωνία μεταξύ του gsm και του arduino. Χρησιμοποιούμε το set εντολών AT τις οποίες παρουσιάζουμε παρακάτω.

Εντολές ΑΤ

Υπάρχει ένα set εντολών το οποίο χρησιμοποιούμε για να επικοινωνήσουμε με το gsm modem. Το gsm δεν έχει μνήμη, έτσι τις εντολές θα πρέπει να τις γράψουμε τόσο στην Setup του arduino (γιατί πρέπει να σετάρουμε το Μόντεμ κάθε φορά που ανοίγουμε το arduino όσο και στην loop όταν θέλουμε να στείλουμε / διαβάσουμε sms ή να κάνουμε / λάβουμε κλήση.

AT –> OK
Δίνοντας την εντολή AT θα πρέπει να λάβουμε ΟΚ ώστε να βεβαιωθούμε ότι η επικοινωνία μέσω σειριακής μεταξύ modem και arduino είναι οκ.

AT+CMGF=(Mode) (όπου Mode 1 ή 0)
Με αυτή την εντολή ορίζουμε το mode του Modem όσον αφορά τον τύπο των SMS. το 0 σημαίνει PDU και το text 1. Για παράδειγμα AT+CMGF=1 θα πρέπει να μας επιστρέψει OK.

AT+CMGW είναι η εντολή όπου αποθηκεύει το μήνυμα προς αποστολή. Όταν δώσουμε αυτή την εντολή στην σειριακή, ακολουθεί ο χαρακτήρας > όπου ξεκινάμε να γράφουμε ένα μήνυμα (sms). Το μήνυμα τερματίζεται όταν δώσουμε τον χαρακτήρα Ctrl+Z. Το αποτέλεσμα μετά θα είναι ένας αριθμός στον οποίο έχει αποθηκευτεί το μήνυμα.

Για να στείλουμε το παραπάνω μήνυμα το οποίο μπορεί να αποθηκεύτηκε στην θέση 1 θα δώσουμε την εντολή:

AT+CMGS=1


Για να κάνουμε / απαντήσουμε κλήσεις

Θα πρέπει να χρησιμοποιήσουμε την εντολή:

ATD<αριθμός προς κλήση>

π.χ. ATD6999999999, θα καλέσει το κινητό 6999999999

Για να απαντήσουμε μία κλήση που έρχεται, χρησιμοποιούμε την εντολή

ATA. Όταν χτυπάει το modem επειδή το καλούμε, δίνουμε την εντολή ΑΤΑ και το μόντεμ απαντά.

Για περισσότερες εντολές ΑΤ κάντε κλικ εδώ

Περιγραφή λειτουργίας

Μόλις ο αισθητήρας κίνησης εντοπίσει κίνηση, Ανάβει ένα LED το οποίο είναι ενδεικτικό της ενεργοποίησης του συναγερμού. Στην συνέχεια ενεργοποιεί το GSM module το οποίο με την σειρά του στέλνει ένα SMS σε επιλεγμένο αριθμό. Το ενδεικτικό LED σβήνει στον προκαθορισμένο χρόνο. Η λογική είναι ότι μπορεί εκτός από το SMS, ο χρήστης να θέλει να ανάψει και μία λάμπα για κάποιο χρονικό διάστημα.

Το κύκλωμα

Το GSM module (αριστερά) μπορεί να διαφέρει λίγο από το πραγματικό (παιδιά αυτό βρήκα δεν έχει άλλο 🙂 ) αλλά τα pin συνδέονται ακριβώς το ίδιο.

Σημείωση! Υπάρχει η πιθανότητα να μην δουλέψει σωστά ακόμα και αν κάνετε το κύκλωμα.

Αυτό συμβαίνει διότι όταν το GSM στέλνει μήνυμα,  “τραβάει” αρκετό ρεύμα (μέχρι και 1Α σε ορισμένες περιπτώσεις), οπότε αν τροφοδοτείτε το κύκλωμα μέσω USB, να ξέρετε ότι μία θύρα USB βγάζει 1 ή 1,5A max.

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

Μπορείτε να κατεβάσετε το κύκλωμα για να το ανοίξετε με το πρόγραμμα Fritzing, από εδώ (χρειάζεται αποσυμπίεση)

Το κύκλωμα σε Fritzing

Ο κώδικας του κυκλώματος

Παρακάτω είναι ο κώδικας που υλοποιεί το κύκλωμα. Το σύστημα μπορεί να δουλέψει με περισσότερες εισόδους από μία που έχουμε. Η μετατροπή θα είναι μία προσθήκη OR στην if που ελέγχει αν υπάρχει σε κάποια είσοδο HIGH (αν είσοδος1==HIGH ή είσοδος2==HIGH κλπ…)

int PIRValue, flag; // to ensure only one sms
int PIRSensorPin = 6;
int ledPin = 13;
 
void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(PIRSensorPin, INPUT);
}
 
void loop() {
  PIRValue = digitalRead(6);
  if(PIRValue==1 && flag==0)
  {
    sendMessage();
  }
  if (PIRValue == 0)
  {
    digitalWrite(13, LOW);
    flag=0;
  }
}
 
void sendMessage()
{
  digitalWrite(13, HIGH);
  Serial.println("AT + CMGS =\"+300000000000\"");
  Serial.println("Alarm is triggered!");
  Serial.write(0x1a); // Sends a Ctrl+Z characted to declare end of sms
  Serial.println(); // sends enter
  flag=1;
}
Φεβρουάριος 2, 2019

2 Απαντήσεις στο "Σύστημα συναγερμού με arduino"

  1. Κ. Χατζηγεωργίου είδα τη κατασκευή σου ,το σύστημα συναγερμού με arduino . πολύ ενδιαφέρον και ολοκληρωμένο. Είχα κάνει και εγώ ένα παρόμοιο project με arduino για τα μελίσσια πριν 3 χρονιά ,άλλα δεν το εκμεταλλεύτηκα πότε εμπορικά. Συμφωνώ με την επιλογή για το module sum900, όντως είναι το μόνο αξιόπιστο και συμβατό με τα ελληνικά gsm δίκτυα . Αν θέλεις μιλάμε από κοντά .Το τηλέφωνο μου είναι 2310328600.Στρατής. info@infoproject.gr

  2. Σας ευχαριστώ πολύ κύριε Χατζηράλλη. Η αλήθεια είναι ότι και εγώ για τον ίδιο λόγο ανέπτυξα ένα παρόμοιο σύστημα, στο οποίο είχα ενσωματώσει και ένα GPS module+ αισθητήρες θερμοκρασίας/υγρασίας. Χαίρομαι που υπάρχουν και άλλοι που μοιράζονται τις ίδιες ανησυχίες μαζί μου. Θα χαρώ να τα πούμε και τηλεφωνικά..

Αφήστε ένα μήνυμα

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Σχεδιασμός © GetCert. Με επιφύλαξη παντός δικαιώματος.

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