Οι αισθητήρες φωτός (φωτισμός), κατασκευασμένοι με βάση φωτοαντιστάσεις, χρησιμοποιούνται αρκετά συχνά σε πραγματικά έργα arduino. Είναι σχετικά απλά, δεν είναι ακριβά, είναι εύκολο να τα βρείτε και να τα αγοράσετε σε οποιοδήποτε ηλεκτρονικό κατάστημα. Η φωτοαντίσταση arduino σάς επιτρέπει να ελέγχετε το επίπεδο φωτισμού και να ανταποκρίνεστε στην αλλαγή του. Σε αυτό το άρθρο, θα δούμε τι είναι μια φωτοαντίσταση, πώς λειτουργεί ο αισθητήρας φωτός με βάση αυτήν, πώς να συνδέσετε σωστά τον αισθητήρα στις πλακέτες Arduino.

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

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

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

Ποιες φωτοαντιστάσεις μπορούν να αγοραστούν σε ηλεκτρονικά καταστήματα

Η πιο δημοφιλής και προσιτή επιλογή αισθητήρα στην αγορά είναι τα μοντέλα μαζικής παραγωγής κινεζικών εταιρειών, κλώνοι προϊόντων VT. Δεν είναι πάντα δυνατό να πάτε σπασμένο εκεί, ποιος και τι ακριβώς παράγει αυτός ή αυτός ο προμηθευτής, αλλά η απλούστερη επιλογή είναι αρκετά κατάλληλη για να ξεκινήσετε να εργάζεστε με φωτοαντιστάσεις.

Ένας αρχάριος arduinist μπορεί να συμβουλευτεί να αγοράσει μια έτοιμη ενότητα φωτογραφιών που μοιάζει με αυτό:


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

Ένας Ρώσος ραδιοερασιτέχνης μπορεί να συμβουλευτεί να στραφεί στον Ρωσικό αισθητήρα FR. Διατίθεται στο εμπόριο FR1-3, FR1-4, κ.λπ. - εκδόθηκε στη σοβιετική εποχή. Όμως, παρόλα αυτά, το FR1-3 είναι μια πιο ακριβής λεπτομέρεια. Από αυτό προκύπτει η διαφορά στην τιμή.Για FR δεν ζητούν περισσότερα από 400 ρούβλια. Το FR1-3 θα κοστίσει περισσότερα από χίλια ρούβλια το ένα.

Σήμανση φωτοαντίστασης

Η σύγχρονη σήμανση των μοντέλων που παράγονται στη Ρωσία είναι αρκετά απλή. Τα δύο πρώτα γράμματα είναι PhotoResistor, οι αριθμοί μετά την παύλα δείχνουν τον αριθμό ανάπτυξης. FR -765 - φωτοαντίσταση, ανάπτυξη 765. Συνήθως επισημαίνεται απευθείας στο εξάρτημα

Ο αισθητήρας VT έχει εύρος αντίστασης στο σχήμα σήμανσης. Για παράδειγμα:

  • VT83N1 - 12-100kΩ (12K φωτισμένο, 100K σκοτάδι)
  • VT93N2 - 48-500kOhm (48K - φωτισμένο, 100K - στο σκοτάδι).

Μερικές φορές, για να διευκρινιστούν πληροφορίες σχετικά με τα μοντέλα, ο πωλητής παρέχει ένα ειδικό έγγραφο από τον κατασκευαστή. Εκτός από τις παραμέτρους της εργασίας, εκεί υποδεικνύεται και η ακρίβεια του εξαρτήματος. Για όλα τα μοντέλα, το εύρος ευαισθησίας βρίσκεται στο ορατό τμήμα του φάσματος. Περισυλλογή φωτοανιχνευτήςπρέπει να καταλάβετε ότι η ακρίβεια της λειτουργίας είναι μια έννοια υπό όρους. Ακόμη και για μοντέλα του ίδιου κατασκευαστή, μία παρτίδα, μία αγορά, μπορεί να διαφέρει κατά 50% ή περισσότερο.

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

Πλεονεκτήματα και μειονεκτήματα του αισθητήρα

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

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

Σύνδεση φωτοαντίστασης σε arduino

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

Το σχέδιο για τη σύνδεση ενός αισθητήρα φωτός σε ένα arduino είναι αρκετά απλό. Αν χρησιμοποιήσουμε φωτοαντίσταση, τότε στο διάγραμμα σύνδεσης ο αισθητήρας υλοποιείται ως διαιρέτης τάσης. Ο ένας ώμος αλλάζει από το επίπεδο φωτισμού, ο δεύτερος - παρέχει τάση στην αναλογική είσοδο. Στο τσιπ ελεγκτή, αυτή η τάση μετατρέπεται σε ψηφιακά δεδομένα μέσω του ADC. Επειδή Εάν η αντίσταση του αισθητήρα μειωθεί όταν τον χτυπήσει το φως, τότε θα μειωθεί και η τιμή της τάσης που πέφτει πάνω του.

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

Η εγκατάσταση του ίδιου του πίνακα δεν πρέπει να προκαλεί δυσκολίες. Δεδομένου ότι η φωτοαντίσταση δεν έχει πολικότητα, μπορείτε να τη συνδέσετε προς οποιαδήποτε κατεύθυνση, μπορείτε να τη κολλήσετε στην πλακέτα, να τη συνδέσετε με καλώδια χρησιμοποιώντας μια πλακέτα κυκλώματος ή να χρησιμοποιήσετε συνηθισμένα κλιπ (κροκόδειλοι) για σύνδεση. Η πηγή ενέργειας στο κύκλωμα είναι το ίδιο το arduino. φωτοαντίστασησυνδέεται με το ένα πόδι στο έδαφος, το άλλο συνδέεται με το ADC της πλακέτας (στο παράδειγμά μας - AO). Συνδέουμε μια αντίσταση 10 kΩ στο ίδιο πόδι. Φυσικά, μπορείτε να συνδέσετε μια φωτοαντίσταση όχι μόνο στην αναλογική ακίδα A0, αλλά και σε οποιαδήποτε άλλη.

Λίγα λόγια για την πρόσθετη αντίσταση 10 Κ. Έχει δύο λειτουργίες στο κύκλωμά μας: να περιορίζει το ρεύμα στο κύκλωμα και να σχηματίζει τη σωστή τάσησε κύκλωμα με διαχωριστή. Απαιτείται περιορισμός ρεύματος σε μια κατάσταση όπου μια πλήρως φωτισμένη φωτοαντίσταση μειώνει απότομα την αντίστασή της. Και η διαμόρφωση τάσης είναι για προβλέψιμες τιμές στην αναλογική θύρα. Στην πραγματικότητα, η αντίσταση 1K είναι αρκετή για κανονική λειτουργία με τις φωτοαντιστάσεις μας.

Αλλάζοντας την τιμή της αντίστασης, μπορούμε να "μετατοπίσουμε" το επίπεδο ευαισθησίας στη "σκοτεινή" και "ελαφριά" πλευρά. Έτσι, 10 K θα δώσει γρήγορη εναλλαγήτον ερχομό του κόσμου. Στην περίπτωση του 1K, ο αισθητήρας φωτός θα προσδιορίσει με μεγαλύτερη ακρίβεια υψηλό επίπεδοφωτισμός.

Εάν χρησιμοποιείτε μια έτοιμη μονάδα αισθητήρα φωτός, τότε η σύνδεση θα είναι ακόμα πιο εύκολη. Συνδέουμε την έξοδο της μονάδας VCC στην υποδοχή 5V στην πλακέτα, GND - στη γείωση. Οι υπόλοιπες ακίδες συνδέονται με τους συνδέσμους arduino.

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

Ένα παράδειγμα σκίτσου ενός αισθητήρα φωτός σε μια φωτοαντίσταση

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

Η σύνταξη ενός σκίτσου για έναν αισθητήρα φωτός είναι αρκετά απλή. Χρειάζεται μόνο να πάρουμε την τρέχουσα τιμή τάσης από την αναλογική ακίδα στην οποία είναι συνδεδεμένος ο αισθητήρας. Αυτό γίνεται χρησιμοποιώντας τη συνάρτηση analogRead() που είναι γνωστή σε όλους μας. Στη συνέχεια μπορούμε να εκτελέσουμε κάποιες ενέργειες, ανάλογα με το επίπεδο φωτός.

Ας γράψουμε ένα σκίτσο για έναν αισθητήρα φωτός που ανάβει ή σβήνει το LED που συνδέεται ως εξής.

Ο αλγόριθμος εργασίας έχει ως εξής:

  • Προσδιορίστε τη στάθμη του σήματος από την αναλογική ακίδα.
  • Συγκρίνετε το επίπεδο με την τιμή κατωφλίου. Η μέγιστη τιμή θα αντιστοιχεί στο σκοτάδι, η ελάχιστη - στο μέγιστο φωτισμό. Ας επιλέξουμε την τιμή κατωφλίου ίση με 300.
  • Εάν το επίπεδο είναι μικρότερο από το όριο - σκοτεινό, πρέπει να ανάψετε το LED.
  • Διαφορετικά, απενεργοποιήστε το LED.
#define PIN_LED 13 #define PIN_PHOTO_SENSOR A0 void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() ( int val = analogRead(PIN_PHOTO_SENSOR); Serial. ifn val< 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }

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

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

Αισθητήρας φωτός περιβάλλοντος και ομαλή αλλαγή φωτεινότητας οπίσθιου φωτισμού

Μπορείτε να τροποποιήσετε το έργο έτσι ώστε η φωτεινότητα του LED να αλλάζει ανάλογα με το επίπεδο φωτισμού. Θα προσθέσουμε τις ακόλουθες αλλαγές στον αλγόριθμο:

  • Θα αλλάξουμε τη φωτεινότητα του λαμπτήρα μέσω PWM, στέλνοντας τιμές από 0 έως 255 στην ακίδα με το LED χρησιμοποιώντας το analogWrite ().
  • Για μετατροπή ψηφιακή αξίατο επίπεδο φωτός από τον αισθητήρα φωτός (από 0 έως 1023) έως το εύρος PWM της φωτεινότητας των LED (από 0 έως 255) θα χρησιμοποιήσουμε τη συνάρτηση map().

Παράδειγμα σκίτσου:

#define PIN_LED 10 #define PIN_PHOTO_SENSOR A0 void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() (int val = analogRead(PIN_PHOTO_SENSOR); Serial.Pos intnl; = map(val, 0, 1023, 0, 255); // Μετατρέψτε τη ληφθείσα τιμή σε επίπεδο σήματος PWM. Όσο μικρότερη είναι η τιμή του φωτός, τόσο λιγότερη ενέργεια χρειαζόμαστε για να τροφοδοτήσουμε το LED μέσω PWM. analogWrite(PIN_LED, ledPower ); // αλλαγή φωτεινότητας)

Στην περίπτωση άλλης μεθόδου σύνδεσης, στην οποία το σήμα από την αναλογική θύρα είναι ανάλογο με το βαθμό φωτισμού, θα χρειαστεί επιπλέον να «αντιστραφεί» η τιμή αφαιρώντας την από το μέγιστο:

int val = 1023 - analogRead(PIN_PHOTO_RESISTOR);

Σχέδιο του αισθητήρα φωτός στη φωτοαντίσταση και το ρελέ

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

#define PIN_RELAY 10 #define PIN_PHOTO_SENSOR A0 void setup() ( pinMode(PIN_RELAY, OUTPUT); digitalWrite(PIN_RELAY, HIGH); ) void loop() (int val = analogRead(PIN_PHOTO_val (PIN_PHOTO_val) αν);< 300) { // Светло, выключаем реле digitalWrite(PIN_RELAY, HIGH); } else { // Темновато, включаем лампочку digitalWrite(PIN_RELAY, LOW); } }

συμπέρασμα

Τα έργα που χρησιμοποιούν αισθητήρα φωτός που βασίζεται σε φωτοαντίσταση είναι αρκετά απλά και αποτελεσματικά. Μπορείτε να υλοποιήσετε πολλά ενδιαφέροντα έργα, ενώ το κόστος του εξοπλισμού δεν θα είναι υψηλό. Η φωτοαντίσταση συνδέεται σύμφωνα με το κύκλωμα διαιρέτη τάσης με πρόσθετη αντίσταση. Ο αισθητήρας συνδέεται σε μια αναλογική θύρα για τη μέτρηση διαφόρων επιπέδων φωτισμού ή σε μια ψηφιακή, αν μόνο το γεγονός του σκοταδιού είναι σημαντικό για εμάς. Στο σκίτσο, απλώς διαβάζουμε δεδομένα από την αναλογική (ή ψηφιακή) θύρα και αποφασίζουμε πώς να αντιδράσουμε στις αλλαγές. Ας ελπίσουμε ότι τώρα θα εμφανιστούν τόσο απλά «μάτια» στα έργα σας.

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

Τώρα είμαι φοιτητής 4ου έτους στο BSUIR και όταν μας είπαν ότι ένα πρόγραμμα μαθημάτων για τα κυκλώματα μπορεί να γίνει όχι σε χαρτί, αλλά σε ένα κομμάτι σίδερο, με ξημέρωσε: το νυχτερινό φως, το οποίο τόσο επιθυμούσα ως παιδί, μπορεί να γίνει μόνος μου. Και να φτιάξετε όχι απλώς ένα αντικείμενο που θα φωτίζει το δωμάτιο τη νύχτα, αλλά μια συσκευή που μπορεί εύκολα να ελεγχθεί για κάθε διάθεση. Γιατί όχι? Αποφάσισα να προσθέσω τη δυνατότητα αλλαγής χρωμάτων με τη βοήθεια των χεριών: όσο πιο κοντά είναι το χέρι στο φως της νύχτας, τόσο πιο φωτεινό καίγεται ένα από τα χρώματα (RGB). Και επίσης θα ήθελα να ελέγξω το νυχτερινό φως με το τηλεχειριστήριο.

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

Αιτιολόγηση των στοιχείων του κυκλώματος


έστρεψα την προσοχή μου Μικροελεγκτές Arduino. Το UNO είναι μια αρκετά κατάλληλη επιλογή για την ιδέα μου, πρώτον επειδή είναι η πιο δημοφιλής πλατφόρμα και ο αριθμός των ακίδων δεν είναι πολύ μεγάλος, σε αντίθεση με το Mega, και δεύτερον, μπορείτε να συνδέσετε μια εξωτερική πηγή ρεύματος σε αυτό, στην περίπτωσή μου είναι 12 V , σε αντίθεση με τον Nano , τρίτον ... λοιπόν, νομίζω ότι μπορείτε να σταθείτε σε αυτά τα δύο σημεία. Η πλατφόρμα είναι πολύ δημοφιλής σε όλο τον κόσμο λόγω της ευκολίας και της απλότητας της γλώσσας προγραμματισμού, καθώς και της ανοιχτής αρχιτεκτονικής και του κώδικα προγράμματος.

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

Έτσι, οι κύριες απαιτήσεις για το σύστημα. Απαιτείται:
- αισθητήρες που θα παρακολουθούν την απόσταση από το εμπόδιο για τον έλεγχο του συστήματος.
– αισθητήρας για την ανάγνωση σημάτων από το τηλεχειριστήριο τηλεχειριστήριο;
- LED, τα οποία θα παρέχουν την απαραίτητη λειτουργικότητα φωτισμού.
- μια μονάδα ελέγχου που θα ελέγχει ολόκληρο το σύστημα.

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

Οι πιο δημοφιλείς αποστασιομετρητές σε λειτουργία αυτή τη στιγμήΑυτά είναι τα Sharp GP2Y0A21YK και HC-SR04. Το Sharp GP2Y0A21YK είναι ένας ανιχνευτής απόστασης υπερύθρων. Είναι εξοπλισμένο με έναν πομπό υπερύθρων και έναν δέκτη υπερύθρων: ο πρώτος χρησιμεύει ως πηγή μιας δέσμης, η ανάκλαση της οποίας πιάνει τη δεύτερη. Ταυτόχρονα, οι υπέρυθρες ακτίνες του αισθητήρα είναι αόρατες στο ανθρώπινο μάτι και είναι αβλαβείς σε αυτή την ένταση.

Σε σύγκριση με τον μορφοτροπέα υπερήχων HC-SR04, αυτός ο μορφοτροπέας έχει τόσο πλεονεκτήματα όσο και μειονεκτήματα. Τα πλεονεκτήματα περιλαμβάνουν την ουδετερότητα και την αβλαβή. Και τα μειονεκτήματα είναι η μικρότερη εμβέλεια και η εξάρτηση από εξωτερικές παρεμβολές, συμπεριλαμβανομένων ορισμένων τύπων φωτισμού.

Ως αισθητήρες απόστασης για το έργο, χρησιμοποιήσαμε αποστασιομετρητές υπερήχων HC-SR04.
Η αρχή λειτουργίας του HC-SR04 βασίζεται στο γνωστό φαινόμενο της ηχοεντοπισμού. Όταν χρησιμοποιείται, ο πομπός παράγει ένα ακουστικό σήμα, το οποίο ανακλάται από το εμπόδιο, επιστρέφει στον αισθητήρα και καταγράφεται από τον δέκτη. Γνωρίζοντας την ταχύτητα διάδοσης του υπερήχου στον αέρα (περίπου 340 m/s) και τον χρόνο καθυστέρησης μεταξύ του εκπεμπόμενου και του λαμβανόμενου σήματος, είναι εύκολο να υπολογιστεί η απόσταση από το ακουστικό φράγμα.

Η είσοδος TRIG συνδέεται σε οποιαδήποτε ακίδα του μικροελεγκτή. Πρέπει να εφαρμοστεί ένας παλμός σε αυτήν την έξοδο. ψηφιακό σήμαδιάρκεια 10 µs. Σε ένα σήμα στην είσοδο TRIG, ο αισθητήρας στέλνει μια έκρηξη υπερηχητικών παλμών. Μετά τη λήψη του ανακλώμενου σήματος, ο αισθητήρας παράγει ένα σήμα παλμού στην έξοδο ECHO, η διάρκεια του οποίου είναι ανάλογη της απόστασης από το εμπόδιο.

Αισθητήρας υπερύθρων. Φυσικά, το σήμα που απαιτείται για το τηλεχειριστήριο θα διαβάζεται και θα αποκωδικοποιείται από αυτόν τον αισθητήρα. Το TSOP18 διαφέρει μόνο στη συχνότητα. Ο αισθητήρας VS1838B TSOP1838 έχει επιλεγεί για το έργο.

Το έργο βασίστηκε στην ιδέα του φωτισμού του δωματίου με οποιοδήποτε χρώμα, πράγμα που σημαίνει ότι θα χρειαστούν 3 βασικά χρώματα από τα οποία θα ληφθεί ο φωτισμός: κόκκινο, πράσινο, μπλε. Ως εκ τούτου, επιλέχθηκε το μοντέλο LED SMD 5050RGB, το οποίο θα αντιμετωπίσει τέλεια την εργασία.

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

Οι ταινίες LED που χρησιμοποιούνται στο έργο τροφοδοτούνται από 12V.

Λόγω του γεγονότος ότι η τάση στα LED σε κατάσταση "απενεργοποίησης" είναι 6V και είναι απαραίτητο να ρυθμίσετε την παροχή ρεύματος, η οποία υπερβαίνει τα 5 V, είναι απαραίτητο να προσθέσετε τρανζίστορ στη λειτουργία κλειδιού στο κύκλωμα. Η επιλογή μου έπεσε στο μοντέλο BC547c.

Ας εξετάσουμε εν συντομία, για όσους έχουν ξεχάσει, την αρχή εργασία n-p-nτρανζίστορ. Εάν δεν εφαρμόσετε καθόλου τάση, αλλά απλώς λάβετε και κλείσετε τους ακροδέκτες της βάσης και του πομπού, ακόμη και αν όχι για μικρό χρονικό διάστημα, αλλά μέσω μιας αντίστασης πολλών ohms, αποδεικνύεται ότι η τάση βάσης-εκπομπού είναι μηδέν. Επομένως, δεν υπάρχει ρεύμα βάσης. Το τρανζίστορ είναι κλειστό, το ρεύμα συλλέκτη είναι αμελητέο, ακριβώς το ίδιο αρχικό ρεύμα. Σε αυτή την περίπτωση, το τρανζίστορ λέγεται ότι βρίσκεται στην κατάσταση αποκοπής. Η αντίθετη κατάσταση ονομάζεται κορεσμός: όταν το τρανζίστορ είναι πλήρως ανοιχτό, έτσι ώστε να μην υπάρχει πουθενά να ανοίξει περαιτέρω. Με τέτοιο βαθμό ανοίγματος, η αντίσταση του τμήματος συλλέκτη-εκπομπού είναι τόσο μικρή που είναι απλά αδύνατο να ενεργοποιήσετε το τρανζίστορ χωρίς φορτίο στο κύκλωμα συλλέκτη, θα καεί αμέσως. Σε αυτή την περίπτωση, η υπολειπόμενη τάση στον συλλέκτη μπορεί να είναι μόνο 0,3 ... 0,5 V.

Αυτές οι δύο καταστάσεις, κορεσμός και αποκοπή, χρησιμοποιούνται όταν το τρανζίστορ λειτουργεί στη λειτουργία κλειδιού, όπως μια κανονική επαφή ρελέ. Η κύρια έννοια αυτής της λειτουργίας είναι ότι ένα μικρό ρεύμα βάσης ελέγχει ένα μεγάλο ρεύμα συλλέκτη, το οποίο είναι αρκετές δεκάδες φορές μεγαλύτερο από το ρεύμα βάσης. Λαμβάνεται μεγάλο ρεύμα συλλέκτη λόγω εξωτερικής πηγής ενέργειας, αλλά και πάλι, όπως λένε, είναι εμφανής η ενίσχυση του ρεύματος. Στην περίπτωσή μας, ένα μικροκύκλωμα του οποίου η τάση λειτουργίας είναι 5V περιλαμβάνει 3 λωρίδες με LED που λειτουργούν από 12V.

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

Επομένως, οι λωρίδες μπορούν να είναι για τάση λειτουργίας 220V και το κύκλωμα βάσης μπορεί να ελεγχθεί από ένα μικροκύκλωμα με τάση 5V. Εάν το τρανζίστορ έχει σχεδιαστεί για να λειτουργεί με αυτήν την τάση συλλέκτη, τότε τα LED θα ανάψουν χωρίς προβλήματα.
Η πτώση τάσης στη διασταύρωση βάσης-εκπομπού είναι 0,77 V, με την προϋπόθεση ότι το ρεύμα βάσης είναι 5 mA, το ρεύμα συλλέκτη είναι 0,1 Α.
Η τάση στην αντίσταση βάσης θα είναι:

Νόμος του Ohm:

Από την τυπική σειρά αντιστάσεων, επιλέγουμε μια αντίσταση 8,2 kOhm. Αυτό ολοκληρώνει τον υπολογισμό.

Θέλω να επιστήσω την προσοχή σας σε ένα πρόβλημα που αντιμετώπισα. Όταν χρησιμοποιείτε τη βιβλιοθήκη IRremote, το Arduino θα κρεμόταν κατά την προσαρμογή του μπλε χρώματος. Μετά από μια μακρά και προσεκτική αναζήτηση στο Διαδίκτυο, αποδείχθηκε ότι δεδομένη βιβλιοθήκηχρησιμοποιεί τον προεπιλεγμένο χρονοδιακόπτη 2 για αυτό το μοντέλο Arduino. Τα χρονόμετρα χρησιμοποιούνται για τον έλεγχο των εξόδων PWM.

Χρονοδιακόπτης 0 (χρόνος συστήματος, PWM 5 και 6);
Χρονοδιακόπτης 1 (PWM 9 και 10);
Χρονοδιακόπτης 2 (PWM 3 και 11).

Αρχικά, χρησιμοποίησα το PWM 11 για τη ρύθμιση του μπλε. Επομένως, να είστε προσεκτικοί όταν εργάζεστε με PWM, χρονόμετρα και βιβλιοθήκες τρίτων που μπορούν να τα χρησιμοποιήσουν. Είναι περίεργο αυτό αρχική σελίδαΣτο github, τίποτα δεν ειπώθηκε για αυτήν την απόχρωση. Εάν θέλετε, μπορείτε να αποσχολιάσετε τη γραμμή με το χρονόμετρο 1 και να σχολιάσετε το 2.

Τα στοιχεία σύνδεσης στο breadboard μοιάζει με αυτό:

Μετά από δοκιμή σε breadboard ξεκίνησαν οι φάσεις "Τοποθέτηση στοιχείων στην πλακέτα" και "Εργασία με κολλητήρι". Μετά την πρώτη δοκιμή της τελικής σανίδας, η σκέψη μπαίνει στο μυαλό μου: κάτι πήγε στραβά. Και εδώ ξεκινά η γνωστή σε πολλούς φάση «Εργασιακή δουλειά με τον ελεγκτή». Ωστόσο, οι δυσλειτουργίες (πολλές γειτονικές επαφές συγκολλήθηκαν κατά λάθος) εξαλείφθηκαν γρήγορα και εδώ είναι το πολυαναμενόμενο άτακτο φως LED.

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

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

Για στερέωση λωρίδων με LED μέσα επάνω κάλυμμαμπήκε ένας σωλήνας από τον οποίο περνούσαν τέλεια όλα τα καλώδια.

Όταν προέκυψε η ερώτηση με το αμπαζούρ, θυμήθηκα πώς στην παιδική μου ηλικία έφτιαχνα χειροτεχνίες από μια απλή κλωστή, κόλλα και ένα μπαλόνι, που χρησίμευε ως βάση. Η αρχή για το αμπαζούρ λήφθηκε η ίδια, αλλά αποδείχθηκε ότι ήταν πιο δύσκολο να τυλίξετε το πολύεδρο από την μπάλα. Λόγω της πίεσης που ασκούσαν τα νήματα στην κατασκευή, άρχισε να στενεύει προς τα πάνω και τα νήματα άρχισαν να πέφτουν. Επειγόντως, με τα χέρια στην κόλλα, αποφασίστηκε να ενισχυθεί η δομή από πάνω. Και τότε το CD ήρθε στη διάσωση. Το τελικό αποτέλεσμα είναι αυτό το νυχτερινό φως:

Τι θέλεις να πεις τελικά;

Τι πρέπει να αλλάξω στο έργο; Για την παροχή του σήματος TRIG των αισθητήρων απόστασης, θα μπορούσε να χρησιμοποιηθεί μία έξοδος Arduino αντί για τρεις. Θα έδινα και μια τρύπα για τον αισθητήρα υπερύθρων (τον οποίο ξέχασα), η οποία, δυστυχώς, είναι κρυμμένη στη θήκη από την οποία φυσικά δεν μπορεί να διαβάσει σήματα από το τηλεχειριστήριο. Ωστόσο, ποιος είπε ότι δεν μπορείτε να κολλήσετε και να τρυπήσετε τίποτα;

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

Γεια σε όλους! Είμαι ο Artem Luzhetsky και θα κάνω μια σειρά άρθρων αφιερωμένων στο " έξυπνο σπίτι"και IoT (Αγγλικά - Internet of Things, Internet of things). Θα γνωρίσουμε καταπληκτικούς τρόπους δημιουργίας οικιακό δίκτυοαπό μια ποικιλία συσκευών που θα λειτουργούν είτε αυτόνομα είτε με τη βοήθεια ενός ατόμου. Καλά? Ας αρχίσουμε!

Το πρώτο άρθρο είναι εισαγωγικό, θέλω να καταλάβετε ότι θα δουλέψω με τους πιο συνηθισμένους πίνακες και ενότητες, ώστε οι περισσότεροι να μπορούν να δοκιμάσουν τις δυνάμεις τους στην ανάπτυξη του IoT.

Έτσι, για αρχή, χρειαζόμαστε δύο μικροελεγκτές που θα χρησιμοποιήσουμε: και.

Arduino UNO

Δεν νομίζω ότι χρειάζεται να σας παρουσιάσω αυτόν τον πίνακα, είναι πολύ δημοφιλής στους αρχάριους και στους λάτρεις των DIY. Θα πω μόνο ότι οι δυνατότητες αυτού του πίνακα είναι περιορισμένες και το UNO δεν μπορεί να λειτουργήσει με το πρωτόκολλο https, δεν υπάρχει αρκετό υπολογιστική ισχύςΜικροελεγκτής ATmega328P, οπότε όταν πρέπει να δουλέψουμε με τον μικροελεγκτή και το πρωτόκολλο https, θα προγραμματίσουμε το ESP8266.

ESP8266

Θα δουλέψω με τη μονάδα Troyka ESP8266 από την Amperka, αλλά μπορείτε να χρησιμοποιήσετε με ασφάλεια την κανονική μονάδα ESP 8266, ουσιαστικά δεν έχουν διαφορές, το κύριο πράγμα κατά τη σύνδεση είναι να κοιτάξετε την αξία των ακίδων και να θυμάστε ότι το ESP λειτουργεί σύμφωνα σε 3,3 βολτ λογική, επομένως πρέπει είτε να συνδεθείτε μέσω 5 βολτ, αλλά να συνδέσετε έναν ρυθμιστή τάσης στο κύκλωμα ή απλά να χρησιμοποιήσετε έναν πείρο με τροφοδοσία τάσης 3,3 βολτ.

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

Επιπλέον Λεπτομέρειες

Θα χρειαστεί επίσης να δημιουργήσουμε όλα τα πειράματα:

  1. LED
  2. φωτοαντίσταση
  3. Θερμίστορ
  4. ανιχνευτής απόστασης υπερήχων
  5. Piezo ηχείο
  6. Mini Servo
  7. Αισθητήρας υπερύθρων
  8. IR τηλεχειριστήριο

Δεν είναι απαραίτητο να έχουμε όλες αυτές τις ενότητες για να δουλέψουμε με το IoT, αλλά για να κάνουμε όλα τα μελλοντικά έργα, θα πρέπει τελικά να τα αγοράσουμε όλα.

Προγράμματα και Βιβλιοθήκες

Πρώτα - κατεβάστε τη βιβλιοθήκη που θα σας βοηθήσει να εργαστείτε πολύ πιο εύκολα στο Arduino IDE εάν χρησιμοποιείτε το ESP8266 - http://wiki.amperka.ru/_media/iot-m:iot-m-libs.zip

Δεύτερον, για να εξοικειωθούμε καλύτερα με το IoT, θα χρειαστούμε ιστότοπους που θα μας παρέχουν τη δυνατότητα να στέλνουμε δεδομένα σε αυτούς.

  1. www.dweet.io
  2. maker.iftt.com
  3. narodmon.ru
  4. και τα λοιπά.

Τρίτον - θα χρειαστούμε επίσης διάφορες εφαρμογέςστο android για να μπορούμε να ελέγχουμε ένα έξυπνο σπίτι με τη βοήθεια ενός τηλεφώνου.

  1. ανοιχτό κέντρο
  2. Αναβοσβήνω
  3. και τα λοιπά.

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

2. Φτιάχνοντας μια «έξυπνη λάμπα»

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

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

Εάν δεν είστε σίγουροι ότι είστε έτοιμοι να εργαστείτε με ηλεκτρισμό 220 βολτ, χρησιμοποιήστε ένα κανονικό LED αντί για φακό. Στην αρχή πήρα το δικό μου παλιά λάμπα TLI - 204, υπάρχουν σχεδόν σε οποιοδήποτε κατάστημα (αποσυνδεδεμένο από το δίκτυο εκ των προτέρων).

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

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

Γενικός διάγραμμα κυκλώματοςπρέπει να μοιάζει με αυτό:

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

Ας συνδέσουμε μια φωτοαντίσταση στο arduino. Το σχήμα μοιάζει με αυτό:

3. Κωδικός για "έξυπνη λάμπα"

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

#define SHINE 5 //PIN ON PHOTORESISTOR #define REL 13 //PIN ON RELAY void setup()( pinMode(SHINE, INPUT); pinMode(REL, OUTPUT); Serial.begin(9600); ) void loop()( if (αναλογικήΑνάγνωση(SHINE)<600) // Если света в комнате мало, то включаем лампу { digitalWrite(REL, HIGH) } else // если много, то выключаем { digitalWrite(REL, LOW); } Serial.printIn(analogRead(SHINE)); selay(500); }

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

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