DIY έξυπνες αισθητήρες Home με Arduino, MySensors και OpenHAB

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

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

Οι έξυπνοι οικιακοί αισθητήρες κοστίζουν ένα γελοίο ποσό χρημάτων. Σε $ 60- $ 100 μόνο για ανιχνευτή κίνησης ή αισθητήρα υγρασίας, η καλωδίωση ολόκληρου του σπιτιού γίνεται ο τομέας εκείνων με ανόητα ποσά διαθέσιμου εισοδήματος. Ας οικοδομήσουμε τη δική μας.

Ευτυχώς, η σκληρή δουλειά έχει ήδη γίνει από τους ωραίους ανθρώπους πίσω από το MySensors.org. Σήμερα θα σας δείξω πώς να χρησιμοποιήσετε το πλαίσιο MySensors για να δημιουργήσετε μια φτηνή σειρά έξυπνων οικιακών αισθητήρων που μπορούν να τροφοδοτούν μια εγκατάσταση OpenHAB (δείτε τον οδηγό μας για να ξεκινήσετε με το OpenHAB στο Raspberry Pi) Ξεκινώντας με το OpenHAB Home Automation on Raspberry Pi Ξεκινώντας με το OpenHAB Home Automation στο Raspberry Pi Το OpenHAB είναι μια ώριμη πλατφόρμα αυτοματισμού ανοιχτής πηγής που λειτουργεί με διάφορα υλικά και είναι πρωτοποριακό, πράγμα που σημαίνει ότι μπορεί να συνδεθεί με σχεδόν οποιοδήποτε υλικό οικιακού αυτοματισμού στην αγορά σήμερα. Διαβάστε περισσότερα . Υποθέτω ότι έχετε ήδη λειτουργικό διακομιστή MQTT και καταλαβαίνετε τα βασικά του μορφότυπου μηνυμάτων MQTT. αν όχι, βεβαιωθείτε ότι έχετε διαβάσει τη συνέχεια του οδηγού OpenHAB, ο οποίος περιλαμβάνει οδηγίες για την εγκατάσταση ενός διακομιστή MQTT Οδηγός για αρχάριους OpenHAB Μέρος 2: Οδηγός για αρχάριους ZWave, MQTT, κανόνες και χαρτογράφηση OpenHAB Οδηγός για αρχάριους Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση OpenHAB, το λογισμικό αυτοματισμού ανοικτού κώδικα, ξεπερνά κατά πολύ τις δυνατότητες άλλων συστημάτων αυτοματοποίησης οικιακών συσκευών στην αγορά - αλλά δεν είναι εύκολο να δημιουργηθεί. Στην πραγματικότητα, μπορεί να είναι απογοητευτικό. Διαβάστε περισσότερα .

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

hardware του mysensors -1

Το κόστος υλικού για την εγκατάσταση μου είναι μικρότερο από $ 10 ανά κόμβο, αλλά επιπλέον αισθητήρες και ενεργοποιητές μπορούν να προστεθούν για πολύ λίγο (ο αισθητήρας υγρασίας και θερμοκρασίας DHT11 για παράδειγμα είναι περίπου $ 1 το καθένα, ένα ρελέ υψηλής τάσης είναι περίπου 3 δολάρια).

Τι κάνουμε

Η βασική ιδέα είναι ότι αντί να προσθέτουμε στο υπάρχον τοπικό μας δίκτυο, χρησιμοποιώντας αναξιόπιστα Wi-Fi ή ακριβές ασπίδες Ethernet, δημιουργούμε ένα εντελώς χωριστό δίκτυο που να είναι κατάλληλο για το Arduinos. στη συνέχεια, γεφυρώστε το στο τοπικό δίκτυο χρησιμοποιώντας έναν μοναδικό κόμβο πύλης, ο οποίος διαθέτει σύνδεση Ethernet και ασύρματη σύνδεση με τον άλλο Arduinos. Έτσι κάνουμε μερικούς κόμβους αισθητήρων, οι οποίοι συλλέγουν δεδομένα. και έναν κόμβο πύλης, ο οποίος μεταδίδει αυτά τα δεδομένα στον διακομιστή OpenHAB.

Και πάλι, αυτό είναι που λειτουργεί για μένα, επειδή η Wi-Fi υποδοχή μου είναι τόσο τρομερή και δεν θέλω να την γεμίζω με περιττά δεδομένα. Εάν είστε ευχαριστημένοι με το Wi-Fi, κοιτάξτε χρησιμοποιώντας το χαμηλού κόστους ESP8266 Arduino-συμβατό Meet the Killer Arduino: ESP8266 Γνωρίστε τον Kildeur του Arduino: ESP8266 Τι θα λέγατε αν σας έλεγα ότι υπάρχει ένας πίνακας Dev συμβατός με Arduino με ενσωματωμένο Wi -Fi για λιγότερο από $ 10; Λοιπόν, υπάρχει. Διαβάστε περισσότερα με ενσωματωμένες κάρτες Wi-Fi - Οι MySensors υποστηρίζουν και αυτούς.

Σημαντική σημείωση για τους χρήστες του El Capitan και τους κλώνους Arduino: Η Apple κατάφερε να σπάσει τα σειριακά προγράμματα οδήγησης που χρησιμοποιούνται για την επικοινωνία με μια σειρά αρχειοθηκών κλώνων Arduino στην τελευταία έκδοση του El Capitan χάρη σε νέα μέτρα ασφαλείας. Για να δείτε αν έχετε επηρεαστεί, δείτε το συμβούλιο και το τσιπ πιο κοντά στη θύρα USB. Αν λέει το CH340, επηρεάζεται από αυτό. Ακολουθήστε τις οδηγίες εδώ για να απενεργοποιήσετε την υπογραφή του οδηγού kext, εγκαταστήστε ξανά τα σειριακά προγράμματα οδήγησης CH340.

Εξαρτήματα που χρειάζονται

Για την πύλη, θα χρειαστείτε:

  • Arduino Uno
  • Ασπίδα Ethernet (με βάση το W5100)
  • Μονάδα NRF24L01 - Έχω χρησιμοποιήσει τις εκδόσεις + PA + LNA σε όλη την έκταση, οι οποίες έχουν αυξημένη εμβέλεια έως και 1χλμ. Η καλωδίωση είναι η ίδια όποια και αν επιλέξετε.

Για κάθε κόμβο αισθητήρα:

  • Arduino Uno
  • NRF24L01
  • Αισθητήρες (για να ξεκινήσετε, θα πρότεινα μια θερμική και υγρασία μονάδα DHT11 ή DHT22)

Πρόσθετο / Προαιρετικό:

  • 10uF πυκνωτές, ένα για κάθε μονάδα RF που έχετε (ο σύνδεσμος είναι για ένα πακέτο των 50!)
  • Τροφοδοσία ρεύματος με έξοδο 5v και 3.3v (το YwRobot MB102 λειτουργεί καλά και είναι $ 1 το καθένα) - απαιτείται εάν χρησιμοποιείτε έναν κλώνο Arduino. Θα χρειαστείτε επίσης μια τροφοδοσία 9-12v DC για αυτά.
  • Πρωτότυπα ασπίδες, ή βραχυκύκλωμα καλωδίων αρσενικών-θηλυκών.

Εργασία με τις μονάδες NRF24L01

Ας ξεκινήσουμε με τις ενότητες NRF24L01, καθώς αποτελούν το πιο πολύπλοκο μέρος του έργου. Πήγα για την πιο ακριβή έκδοση μεγαλύτερης εμβέλειας αυτών: τεχνικά γνωστή ως NRF24L01 + PA + LNA . Έρχονται με ενσωματωμένο κύκλωμα ενίσχυσης σήματος και κεραία, παρόλο που προτείνω να δοκιμάσετε πρώτα τη φθηνότερη έκδοση χωρίς κεραία των μονάδων, αν έχετε κανονική κατοικία με κανονικούς τοίχους και όχι το πάχος του μετρητή, Δέχομαι. Το απαιτούμενο εύρος αυτών είναι περίπου ένα χιλιόμετρο, περισσότερο από αρκετό για να βάλω στο υπόστεγο κήπου.

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

  • Η μονάδα χρειάζεται τροφοδοσία 3.3v στην πρίζα VCC - όχι 5v . Αν βάλετε 5v, θα το τηγανίζετε.
  • Συνδέστε έναν πυκνωτή 10uF στους ακροδέκτες VCC / GND. Η στερεά γκρίζα γραμμή στον πυκνωτή υποδεικνύει την αρνητική / GND πλευρά.
  • Χρησιμοποιήστε σύντομα καλώδια άλματος υψηλής ποιότητας. ή ακόμα καλύτερα, να τα συγκολλήσετε απευθείας σε μια προφυλακτική θωράκιση για να διατηρήσετε το μήκος του καλωδίου σε ελάχιστες και σταθερές συνδέσεις.
  • Εάν χρησιμοποιείτε έναν κλώνο Arduino, ο ρυθμιστής τάσης δεν παρέχει αρκετά για τους σε πύλη 3.3v - θα χρειαστεί να χρησιμοποιήσετε μια εξωτερική πλακέτα τροφοδοσίας (που συνδέεται παραπάνω), διαθέσιμη για περίπου $ 1 η κάθε μία. Αυτά παρέχουν ένα σταθερό 3.3v. Εάν χρησιμοποιείτε ένα αρχικό εμπορικό σήμα Arduino Uno, αυτό δεν φαίνεται να αποτελεί πρόβλημα.

Σας προτείνω να κάνετε πρώτα μερικές βασικές δοκιμές μόνο για να εγκαταστήσετε το ραδιόφωνο σας λειτουργεί. Συνδέστε δύο ραδιόφωνα, όπως φαίνεται στη σελίδα MySensors. Δεν έχει σημασία ότι στο διάγραμμα τους εμφανίζονται πίνακες Arduino Micro - χρησιμοποιούνται οι ίδιοι αριθμοί καρφίτσας. Σημειώστε ότι το διάγραμμα δείχνει το NRF24L01 από την κορυφή . στην πραγματικότητα θα συνδέετε τα πράγματα από την κάτω πλευρά . Διανοητικά προσαρμόστε ανάλογα. Αγνοήστε την γκρι ακίδα IRQ, δεν χρησιμοποιείται αυτή τη στιγμή. Συνοψίζοντας:

  • Το VCC πηγαίνει στο 3.3v στο εξωτερικό τροφοδοτικό
  • Το GND πηγαίνει στον κοινό σιδηρόδρομο
  • CE για την ακίδα 9
  • CSN / CS για τον ακροδέκτη 10
  • MOSI να καρφώσει 11
  • MISO να καρφιτσώσετε 12
  • SCK στον ακροδέκτη 13

καλωδίωση από τη σελίδα mysensors

Θα χρειαστείτε δύο κόμβους πλήρως συνδεδεμένους για να δοκιμάσετε. Κάντε λήψη της βιβλιοθήκης RF24 και φορτώστε το πιο απλό παράδειγμα Getting Started . Ενεργοποιήστε και τις δύο μονάδες, αλλά αφήστε το συνδεδεμένο μέσω USB και ανοίξτε τη σειριακή κονσόλα. Πληκτρολογήστε "Τ" και στείλτε, για να μεταβείτε σε λειτουργία μετάδοσης, οπότε θα πρέπει να λάβετε μηνύματα σφαλμάτων, λέγοντας ότι επιτυχώς είναι pinging ένα μήνυμα στον άλλο κόμβο.

Δημιουργία της πύλης πελάτη MySensors MQTT Client Gateway

Εντάξει, τώρα που γνωρίζουμε ότι τα ραδιόφωνα RF24 είναι ενσύρματα και λειτουργούν σωστά, προχωρήστε και κατεβάστε το τμήμα ανάπτυξης του πακέτου MySensors Arduino. Αυτό το σεμινάριο γράφτηκε με την έκδοση 1.5, αλλά θα πρέπει να είναι εντάξει και με τις μεταγενέστερες εκδόσεις. Χρησιμοποιούμε τον αναπτυξιακό κλάδο επειδή κατά το χρόνο της γραφής, η πύλη πελάτη MQTT δεν είναι ακόμα μέρος του κύριου πακέτου.

Παρόλο που είναι διαθέσιμο το MQTTGateway στον κύριο κλάδο, λειτουργεί και ως διακομιστής, κάτι που δεν θέλουμε γιατί έχουμε ήδη ένα σταθερό διακομιστή MQTT που τρέχει στο Raspberry Pi. Απλά θέλουμε να προωθήσουμε τα δεδομένα MySensors σε αυτό. Και πάλι, αν αυτό δεν είναι αυτό που θέλετε - αν προτιμάτε να μην χρησιμοποιήσετε καθόλου MQTT - τότε εξετάστε το EthernetGateway ή το SerialGateway, και τα δύο από τα οποία είναι επίσης συμβατά με το OpenHAB.

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

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

  • CE στο pin 5
  • Το CSN να καρφώνει 6
  • SCK για τον ακροδέκτη A0
  • MOSI να καρφιτσάρισμα A1
  • MISO για την καρφίτσα Α2

Επίσης, πρέπει να ενεργοποιήσετε τη #define γραμμή SOFTSPI στο αρχείο libraries / mySensors / MyConfig.h . Κάνετε αυτό αφαιρώντας το // για να το αποσυμπιέσετε, είναι γύρω από τη γραμμή 309 της δικής μου.

Πρέπει να το κάνουμε αυτό επειδή τόσο η μονάδα ραδιοφώνου όσο και η ασπίδα δικτύου χρησιμοποιούν SPI και είναι ασυμβίβαστες. έτσι απλά μεταθέτουμε τη μονάδα SPI ραδιοσυχνοτήτων σε κάποιες άλλες ακίδες και πραγματοποιούμε SPI επικοινωνία στο λογισμικό αντ 'αυτού (ως εκ τούτου, μαλακό SPI).

Τοποθετήστε το σκίτσο MySensors / GatewayW5100MQTTClient . Εάν δεν το βλέπετε κάτω από το μενού MySensors, δεν έχετε εγκαταστήσει τον αναπτυξιακό κλάδο . Χρησιμοποιήστε τον σύνδεσμο που παρέχεται παραπάνω για να κάνετε εκ νέου λήψη ολόκληρης της βιβλιοθήκης.

gateway mysensors

Θα χρειαστεί να ορίσετε μια στατική διεύθυνση IP για τον ελεγκτή, την IP του δρομολογητή δικτύου και το υποδίκτυο και τη διεύθυνση IP του υπάρχοντος διακομιστή MQTT. Μπορείτε επίσης να τροποποιήσετε τα προθέματα θέματος εάν θέλετε. Μεταφορτώστε και συνδέστε το πράγμα στο δίκτυο. Ελέγξτε συνοπτικά την κονσόλα σειριακών εντολών για τυχόν λάθη λάθους, όπως την αδυναμία σύνδεσης με τον διακομιστή MQTT, διαφορετικά αφήστε την στην άκρη (αλλά αφήστε την ενεργοποιημένη).

ip διευθύνσεις για αλλαγή

Δημιουργία των κόμβων αισθητήρα

Κατ 'αρχάς, σχολιάστε ότι # προσδιορίστε ξανά τη γραμμή SOFTSPI στο αρχείο MyConfig.h τοποθετώντας το // πίσω στην αρχή. Χρειάζεται μόνο για την πύλη - χρησιμοποιούμε την τυπική καλωδίωση NRF24L01 για τους κόμβους αισθητήρων, οι οποίοι χρησιμοποιούν το υλικό SPI. Αν χρειάζεστε να υπενθυμίσετε:

  • Το VCC πηγαίνει στο 3.3v στο εξωτερικό τροφοδοτικό (ή στο ίδιο το Arduino αν είναι πρωτότυπο και όχι κλώνος)
  • Το GND πηγαίνει στον κοινό σιδηρόδρομο
  • CE για την ακίδα 9
  • CSN / CS για τον ακροδέκτη 10
  • MOSI να καρφώσει 11
  • MISO να καρφιτσώσετε 12
  • SCK στον ακροδέκτη 13

Στη συνέχεια, σύρετε μέχρι την επιλογή του αισθητήρα. Χρησιμοποιώ τον αισθητήρα υγρασίας και θερμοκρασίας DHT11 για έλεγχο, αλλά αν μετακινηθείτε προς τα κάτω στη λίστα αισθητήρων και ενεργοποιητών στην πλαϊνή μπάρα της σελίδας MySensors, θα βρείτε μια τεράστια επιλογή άλλων επιλογών: πόρτες, βροχομετρητή, φως, κίνηση, ακόμη και RFID - και φορτώνει περισσότερα. Μπορείτε να δείτε ότι πρόσθεσα επίσης ένα ρελέ στον κόμβο που απεικονίζεται παρακάτω, αλλά περισσότερα για αυτό αργότερα.

hardware του mysensors -2

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

 #define MY_NODE_ID 2 

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

Ενεργοποιήστε επίσης την έξοδο εντοπισμού σφαλμάτων:

 #define MY_DEBUG 

Τέλος, ελέγξτε την ακίδα δεδομένων του αισθητήρα DHT11 σας είναι σωστή.

 #define HUMIDITY_SENSOR_DIGITAL_PIN 7 

Στη συνέχεια, ανεβάστε!

Αξίζει να ανοίξετε τη σειριακή κονσόλα για να ρίξετε μια ματιά. Το κρίσιμο κομμάτι που βλέπουμε είναι st =, που είναι η κατάσταση του μηνύματος. st = αποτυχία σημαίνει ότι το μήνυμα δεν στάλθηκε. Είναι πιθανό να μην έχετε καθορίσει ένα μοναδικό αναγνωριστικό κόμβου ή ότι η πύλη σας είναι εκτός σύνδεσης. Προέβηκα σε αυτές τις αποτυχίες απλά αποσυνδέοντας την πύλη:

st-αποτυχία

Εάν όλα λειτουργούν, θα πρέπει να αρχίσετε να βλέπετε μερικές αναγνώσεις δεδομένων στο διακομιστή σας MQTT. Η τοποθέτηση αυτών σε OpenHAB είναι εκτός του πεδίου αυτού του εγχειριδίου, αλλά καλύπτεται στο μέρος 2 του οδηγού OpenHAB Οδηγός αρχαρίων OpenHAB Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση OpenHAB Οδηγός για αρχάριους Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση OpenHAB, το λογισμικό αυτοματισμού ανοιχτού κώδικα, υπερβαίνει κατά πολύ τις δυνατότητες άλλων συστημάτων αυτοματοποίησης οικιακών συσκευών στην αγορά - αλλά δεν είναι εύκολο να δημιουργηθεί. Στην πραγματικότητα, μπορεί να είναι απογοητευτικό. Διαβάστε περισσότερα ώστε να μπορείτε να ανατρέξετε εκεί.

Συνδυασμός κώδικα αισθητήρα

Παρόλο που ένας μόνος κόμβος αισθητήρα λειτουργεί και είναι σχετικά απλός, παίρνει λίγο πιο δύσκολο όταν θέλετε να προσθέσετε πολλούς αισθητήρες σε κάθε κόμβο. Ουσιαστικά πρόκειται να συνδυάσετε τα αποσπάσματα κώδικα από δύο διαφορετικά παραδείγματα. Ο ευκολότερος τρόπος να σας δείξω αυτό είναι με παράδειγμα με ένα βίντεο! Εδώ συνδυάζω τον βασικό μας αισθητήρα υγρασίας με ένα ρελέ.

Μπορείτε να βρείτε τον ολοκληρωμένο κωδικό για αισθητήρα υγρασίας και ρελέ εδώ, ο οποίος έχει ήδη τροποποιηθεί με έναν βρόχο που δεν εμποδίζει όπως ανέφερα στο βίντεο. Για να μάθετε περισσότερα σχετικά με τη δομή εντολών MQTT που απαιτείται για να ενεργοποιήσετε το ρελέ, ελέγξτε το Serial API - αλλά αρκεί να πείτε ότι το επόμενο κανάλι ελέγχει το πρώτο ρελέ στον κωδικό που έχω δώσει (με σώμα μηνυμάτων 0 ή 1):

 mysensors-in / 9/1/1/0/2 

Ο μόνος περιορισμός σας είναι τώρα η ποσότητα της μνήμης στο Arduino και θα το πω - οι πιο αξιόπιστοι αισθητήρες στο έξυπνο σπίτι μου δεν είναι οι εμπορικές μονάδες Z-Wave που κοστίζουν 80 δολάρια, αλλά οι MySensors έθιμο.

Θα το τελειώσω εκεί σήμερα, αλλά αν έχετε προβλήματα μπορείτε να ζητήσετε μακριά στα σχόλια ή τα πολύ ενεργά φόρουμ χρηστών των MySensors. Θα βάζετε μαζί τους δικούς σας φτηνούς κόμβους αισθητήρων; Πώς έρχεται το έξυπνο σπίτι σας;

In this article