Ασύρματη λάμπα LED Arduino που ταιριάζει με το φως χρησιμοποιώντας φωτοαντίσταση: 4 βήματα
Ασύρματη λάμπα LED Arduino που ταιριάζει με το φως χρησιμοποιώντας φωτοαντίσταση: 4 βήματα
Anonim
Ασύρματη λάμπα LED που ταιριάζει με το φως Arduino χρησιμοποιώντας φωτοαντίσταση
Ασύρματη λάμπα LED που ταιριάζει με το φως Arduino χρησιμοποιώντας φωτοαντίσταση
Ασύρματη λάμπα LED που ταιριάζει με το φως Arduino χρησιμοποιώντας φωτοαντίσταση
Ασύρματη λάμπα LED που ταιριάζει με το φως Arduino χρησιμοποιώντας φωτοαντίσταση
Ασύρματη λάμπα LED που ταιριάζει με το φως Arduino χρησιμοποιώντας φωτοαντίσταση
Ασύρματη λάμπα LED που ταιριάζει με το φως Arduino χρησιμοποιώντας φωτοαντίσταση

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

Λίστα Προμηθειών:

Arduino Uno x2

NRF24L01 Ασύρματος πομποδέκτης x2 (Προαιρετικό - NRF24L01 σακίδιο πλάτης x2)

TIP120 τρανζίστορ darlington

Φωτοαντίσταση

LED 5mm x3

Κουμπί ώθησης

Αντίσταση 100 ohm x3

Αντίσταση 10k ohm x3

Διάφορα καλώδια άλτη

Βήμα 1: Καλωδίωση των ενοτήτων και κυκλώματος NRF24L01

Καλωδίωση των μονάδων και κυκλώματος NRF24L01
Καλωδίωση των μονάδων και κυκλώματος NRF24L01
Καλωδίωση των μονάδων και κυκλώματος NRF24L01
Καλωδίωση των μονάδων και κυκλώματος NRF24L01
Καλωδίωση των μονάδων και κυκλώματος NRF24L01
Καλωδίωση των μονάδων και κυκλώματος NRF24L01

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

Σημείωση: στις φωτογραφίες του έργου μου, θα παρατηρήσετε ότι οι πομποδέκτες NRF24L01 είναι προσαρτημένοι σε άλλο PCB. Αυτή είναι μια μονάδα σακιδίου για τους πομποδέκτες, η οποία λειτουργεί ως ρυθμιστής ισχύος. Εκτός από τη διευκόλυνση της καλωδίωσης, αυτά τα σακίδια ρυθμίζουν την είσοδο ισχύος για το NRF24L01, επιτρέποντας τη χρήση τροφοδοσίας 5V. Έχω παραλείψει αυτά τα σακίδια στο διάγραμμά μου για λόγους σαφήνειας.

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

Παρακάτω επισυνάπτεται ένα αντίγραφο PDF του κυκλώματος, για ευκολότερη μεγέθυνση/λεπτομερή προβολή.

Βήμα 2: Κωδικοποίηση του πομπού

Το τελευταίο βήμα είναι η κωδικοποίηση. Θα χρειαστεί να εγκαταστήσετε τη βιβλιοθήκη RadioHead ή μια αντίστοιχη βιβλιοθήκη για χρήση με τις μονάδες NRF24L01.

Για αυτό το έργο, ο πομπός και ο δέκτης Arduinos χρησιμοποιούν διαφορετικό κωδικό σε καθένα. Εδώ είναι ο κωδικός για τον πομπό:

Έχω επισυνάψει επίσης το αρχείο.ino (NRF_Send) για διευκόλυνση.

#περιλαμβάνω

#περιλαμβάνω

RH_NRF24 nrf24; // Αρχικοποίηση πομποδέκτη ως nrf24

κουμπί int = 5; // Ρύθμιση τιμών καρφιτσών για το κουμπί και τη φωτοαντίσταση

int pResistor = A0; int τιμή = 0; // Τιμή φωτός από 0-1023

void setup ()

{Serial.begin (9600); pinMode (κουμπί, ΕΙΣΟΔΟΣ); pinMode (pResistor, INPUT); if (! nrf24.init ()) // Ειδοποιεί το χρήστη εάν η εκκίνηση της μονάδας αποτύχει Serial.println ("η αποτυχία του init"); // Οι προεπιλογές μετά το init είναι 2,402 GHz (κανάλι 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel απέτυχε"); εάν (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF απέτυχε"); }

κενός βρόχος ()

{if (digitalRead (κουμπί)) {// Στείλτε ένα μήνυμα αν πατήσετε το κουμπί value = analogRead (pResistor); // Διαβάστε την τιμή της φωτοαντίστασης (0-1023) uint8_t data = {value}; // Ορίζει έναν πίνακα που ονομάζεται "data " που περιέχει τη φωτεινή τιμή nrf24.send (data, sizeof (data)); // Αποστολή του πίνακα στον δέκτη nrf24.waitPacketSent (); // Περιμένετε μέχρι να σταλεί το πακέτο Serial.println ("Light Value:" +String (value)); // Εκτυπώστε την τιμή φωτός στη σειριακή οθόνη}}

Βήμα 3: Κωδικοποίηση του δέκτη

Για τον δέκτη, ο κώδικας χρησιμοποιεί επίσης τη βιβλιοθήκη RadioHead.

#περιλαμβάνω

#περιλαμβάνω

RH_NRF24 nrf24;

int LEDPin = 3;

int τιμή = 0; // Τιμή φωτός από 0-1023

void setup ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); εάν (! nrf24.init ()) Serial.println ("η αποτυχία του init"); // Οι προεπιλογές μετά το init είναι 2,402 GHz (κανάλι 2), 2Mbps, 0dBm if (! Nrf24.setChannel (1)) Serial.println ("setChannel απέτυχε"); εάν (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF απέτυχε"); }

κενός βρόχος ()

{// Περιμένετε ένα μήνυμα uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Αποθηκεύστε το ληφθέν μήνυμα ως πίνακα που ονομάζεται "buf " uint8_t len = sizeof (buf); // Αποθηκεύστε το μέγεθος του buf ως "len" ενώ (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Λαμβάνει το μήνυμα για 200 χιλιοστά του δευτερολέπτου ή έως ότου ληφθεί ολόκληρο το μήνυμα {value = buf [0]; // Ορίζει τιμή στον πρώτο δείκτη του buf , που είναι το int από το photoRistor analogWrite (LEDPin, χάρτης (τιμή, 0, 1023, 0, 255)). // Ρυθμίζει τον πείρο PWM για έξοδο κλιμακούμενης τιμής μεταξύ 0-255 για τη φωτεινότητα LED Serial.println (συμβολοσειρά (τιμή)); } analogWrite (LEDPin, 0); }

Βήμα 4: ΕΓΙΝΕ

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

Συνιστάται: