Συναγερμός με Arduino

Συναγερμός με Arduino

  • Βαθμός δυσκολίας: Δύσκολο

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

είναι σχετικά απλός. Μείνετε μαζί μας και διαβάστε τις λεπτομέρειες. Στο τέλος του άρθρου, υπάρχει το Video για να το παρακολουθήσετε.

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

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

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

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

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

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

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

Αισθητήρας PIR εσωτερικά

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

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

Τρόπος λειτουργίας αισθητήρα PIR

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

Το project

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

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

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

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

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

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

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

FTDI USB TO SERIAL

Το GSM module

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

GSM SIM900

Το θετικό είναι ότι δεν χρειάζεται να ενσωματώσετε κάποια επιπλέον βιβλιοθήκη μιας και χρησιμοποιούμε μόνο την σειριακή επικοινωνία μεταξύ του 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

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

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

AT+CMGS=1

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

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

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

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

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

ATA

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

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

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

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

Το κύκλωμα

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

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

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

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

Σχέδιο συναγερμού

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

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

include <SoftwareSerial.h> // library for creating serial TX, RX
int PIRSensorPin = 6;
int ledPin = 8;
int flag=0;
void setup() {
  Serial.begin(9600); //init serial 9600
  delay(1500); // Delay so that the gsm will find signal
  Serial.println("AT+CMFG=1"); // set message mode to text
  pinMode(PIRSensorPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (PIRSensorPin==HIGH)
  {
    Serial.println("sensor is triggered");
    sendMessage();
  }
  else
  {
    Serial.println("things are calm now...");
  }
  
}

void sendMessage(){
  digitalWrite(ledPin, HIGH);
  Serial.println("AT+CMGS=\"69********\""); //the number to send the message at
  Serial.println ("The alarm is triggered!"); // something strange is going on!
  Serial.write( 0x1a ); // ctrl+Z character
  delay(500);
  digitalWrite(ledPint, LOW);
}

Το βίντεο

Απολαύστε το βίντεο και αφήστε μας κάποιο σχόλιο!

Σχετικά άρθρα

Arduino πληκτρολόγιο 4x4

Arduino πληκτρολόγιο 4x4

Σύστημα παρκαρίσματος με Arduino

Σύστημα παρκαρίσματος με Arduino