Inhaltsverzeichnis:

Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand - Gunook
Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand - Gunook

Video: Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand - Gunook

Video: Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand - Gunook
Video: Arduino Powerd RGB + White LED, Bluetooth controllable, Floor lamp 2024, November
Anonim
Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand
Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand
Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand
Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand
Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand
Drahtlose Arduino Light-Matching-LED-Lampe mit Fotowiderstand

Dieses instructable beschreibt die Schritte, die notwendig sind, um eine rudimentäre drahtlose lichtempfindliche LED-Lampe mit Arduino Unos und einem Fotowiderstand zu konstruieren. Eine mögliche Anwendung für dieses Gerät wäre, einen Raum ohne Fenster mit künstlichem Sonnenlicht zu beleuchten und in Echtzeit den tatsächlichen Lichtverhältnissen draußen anzupassen. Lass uns anfangen!

Versorgungsliste:

Arduino Uno x2

NRF24L01 Drahtloser Transceiver x2 (Optional - NRF24L01 Rucksack x2)

TIP120 Darlington-Transistor

Fotowiderstand

5mm LEDs x3

Druckknopf

100 Ohm Widerstand x3

10k Ohm Widerstand x3

Verschiedene Überbrückungsdrähte

Schritt 1: Verdrahten der NRF24L01-Module und -Schaltung

Verdrahtung der NRF24L01-Module und -Schaltung
Verdrahtung der NRF24L01-Module und -Schaltung
Verdrahtung der NRF24L01-Module und -Schaltung
Verdrahtung der NRF24L01-Module und -Schaltung
Verdrahtung der NRF24L01-Module und -Schaltung
Verdrahtung der NRF24L01-Module und -Schaltung

In diesem Projekt fungiert ein Arduino als Sender und sendet Lichtpegeldaten vom Fotowiderstand, wenn der Taster gedrückt wird. Das andere Arduino dient als Empfänger, nimmt diese Daten und wandelt sie in das Signal an die LEDs um. Das erste Bild zeigt das Senderdiagramm und das zweite den Empfänger.

Hinweis: Auf den Fotos meines Projekts werden Sie feststellen, dass die NRF24L01-Transceiver an einer anderen Platine befestigt sind. Dies ist ein Rucksackmodul für die Transceiver, das als Leistungsregler fungiert. Diese Rucksäcke erleichtern nicht nur die Verkabelung, sondern regulieren auch die Stromaufnahme für den NRF24L01 und ermöglichen so die Verwendung einer 5V-Stromversorgung. Ich habe diese Rucksäcke in meinem Diagramm der Übersichtlichkeit halber weggelassen.

(Wenn Sie sich für die Verwendung der Rucksäcke entscheiden, finden Sie unter diesem Link ein Diagramm der Pin-Positionen in Bezug auf die Lagernummer NRF24L01).

Unten angehängt ist eine PDF-Kopie der Schaltung zum leichteren Zoomen/detaillierten Betrachten.

Schritt 2: Codieren des Senders

Der letzte Schritt ist die Codierung. Zur Verwendung mit den NRF24L01-Modulen müssen Sie die RadioHead-Bibliothek oder eine gleichwertige Bibliothek installieren.

Für dieses Projekt verwenden die Sender- und Empfänger-Arduinos jeweils einen anderen Code. Hier der Code für den Sender:

Ich habe auch die.ino-Datei (NRF_Send) der Einfachheit halber angehängt.

#enthalten

#enthalten

RH_NRF24 nrf24; //Initialisierung eines Transceivers als nrf24

int-Taste = 5; // Einstellung der Pinwerte für die Taste und den Fotowiderstand

int pWiderstand = A0; int-Wert = 0; // Lichtwert von 0-1023

Void-Setup ()

{ Serial.begin (9600); pinMode (Taste, EINGANG); pinMode (pWiderstand, EINGANG); if (!nrf24.init()) // Warnt den Benutzer, wenn die Initialisierung des Moduls fehlschlägt Serial.println("init failed"); // Standardwerte nach Init sind 2,402 GHz (Kanal 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF failed"); }

Leere Schleife ()

{ if (digitalRead (button)) {// Nachricht senden, wenn die Taste gedrückt wird value = analogRead (pResistor); // Lesen Sie den Wert des Fotowiderstands (0-1023) uint8_t data = {value}; // Setzt ein Array namens "data" mit dem Lichtwert nrf24.send(data, sizeof(data)); // Senden Sie das Array an den Empfänger nrf24.waitPacketSent(); // Warten Sie, bis das Paket gesendet wurde Serial.println ("Light Value: " +String (value)); //Drucken Sie den Lichtwert in den seriellen Monitor}}

Schritt 3: Codieren des Empfängers

Für den Empfänger verwendet der Code auch die RadioHead Library.

#enthalten

#enthalten

RH_NRF24 nrf24;

int LEDPin = 3;

int-Wert = 0; // Lichtwert von 0-1023

Void-Setup ()

{ Serial.begin (9600); pinMode (LEDPin, AUSGANG); if (!nrf24.init()) Serial.println("init fehlgeschlagen"); // Standardwerte nach Init sind 2,402 GHz (Kanal 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF failed"); }

Leere Schleife ()

{ // Auf eine Nachricht warten uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; //Speichere die empfangene Nachricht als Array namens "buf" uint8_t len = sizeof(buf); //Speichere die Größe von buf als "len" while (nrf24.waitAvailableTimeout(200) && nrf24.recv(buf, &len)) //Empfängt die Nachricht für 200 Millisekunden oder bis die ganze Nachricht empfangen wurde { value = buf[0]; // Setzt den Wert auf den ersten Index von buf , der das Int vom Fotowiderstand analogWrite (LEDPin, map (value, 0, 1023, 0, 255)) ist; // Setzt den PWM-Pin, um einen skalierten Wert zwischen 0-255 für die LED-Helligkeit auszugeben Serial.println (String (Wert)); } analogWrite (LEDPin, 0); }

Schritt 4: FERTIG

Viel Spaß beim Spielen mit verschiedenen Lichtstufen und beobachten Sie, wie die LEDs dazu passen! Der Fotowiderstand kann manchmal pingelig sein und funktioniert am besten in einem dunklen Raum mit einer lokalisierten Lichtquelle (kann aber auch draußen mit der Sonne arbeiten).

Empfohlen: