Inhoudsopgave:

Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor - Ajarnpa
Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor - Ajarnpa

Video: Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor - Ajarnpa

Video: Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor - Ajarnpa
Video: CS50 2014 - Week 9 2024, November
Anonim
Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor
Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor
Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor
Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor
Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor
Draadloze Arduino Light-Matching LED-lamp met behulp van Photoresistor

Deze instructable beschrijft de stappen die nodig zijn om een rudimentaire draadloze lichtgevoelige LED-lamp te bouwen met behulp van Arduino Unos en een fotoresistor. Een mogelijke toepassing voor dit apparaat is het verlichten van een kamer zonder ramen met kunstmatig zonlicht, zodat het in realtime overeenkomt met de werkelijke lichtomstandigheden buiten. Laten we beginnen!

Voorraadlijst:

Arduino Uno x2

NRF24L01 Draadloze transceiver x2 (optioneel - NRF24L01 rugzak x2)

TIP120 darlington-transistor

Fotoweerstand

5 mm LED's x3"

Druk op de knop

100 ohm weerstand x3

10k ohm weerstand x3

Verschillende jumperdraden

Stap 1: Bedrading van de NRF24L01-modules en circuit

Bedrading van de NRF24L01-modules en het circuit
Bedrading van de NRF24L01-modules en het circuit
Bedrading van de NRF24L01-modules en het circuit
Bedrading van de NRF24L01-modules en het circuit
Bedrading van de NRF24L01-modules en het circuit
Bedrading van de NRF24L01-modules en het circuit

In dit project zal één Arduino fungeren als een zender, die lichtniveaugegevens van de fotoresistor verzendt wanneer de drukknop wordt ingedrukt. De andere Arduino zal als ontvanger dienen, die gegevens opneemt en omzet in het signaal naar de LED's. De eerste afbeelding toont het zenderdiagram en de tweede toont de ontvanger.

Opmerking: op de foto's van mijn project ziet u dat de NRF24L01-transceivers op een andere PCB zijn bevestigd. Dit is een rugzakmodule voor de transceivers, die fungeert als vermogensregelaar. Deze rugzakken maken niet alleen de bedrading eenvoudiger, maar regelen ook de stroominvoer voor de NRF24L01, waardoor het gebruik van een 5V-voeding mogelijk is. Voor de duidelijkheid heb ik deze rugzakken in mijn schema weggelaten.

(Als u besluit de rugzakken te gebruiken, raadpleeg dan deze link voor een diagram van de pinlocaties met verwijzing naar de voorraad NRF24L01).

Hieronder is een PDF-kopie van het circuit bijgevoegd, voor eenvoudiger zoomen/gedetailleerde weergave.

Stap 2: De zender coderen

De laatste stap is coderen. U moet de RadioHead-bibliotheek of een gelijkwaardige bibliotheek installeren voor gebruik met de NRF24L01-modules.

Voor dit project gebruiken de zender en ontvanger Arduinos verschillende code op elk. Hier is de code voor de zender:

Ik heb voor het gemak ook het.ino-bestand (NRF_Send) bijgevoegd.

#erbij betrekken

#erbij betrekken

RH_NRF24 nrf24; //Een zendontvanger initialiseren als nrf24

int-knop = 5; //Pinwaarden instellen voor de knop en fotoresistor

int pResistor = A0; int-waarde = 0; //Waarde van licht van 0-1023

ongeldige setup()

{ Serieel.begin(9600); pinMode (knop, INPUT); pinMode (pResistor, INPUT); if (!nrf24.init()) // Waarschuwt de gebruiker als de initialisatie van de module mislukt Serial.println("init failed"); // Standaardwaarden na init zijn 2,402 GHz (kanaal 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println ("setRF mislukt"); }

lege lus()

{if (digitalRead(button)) {//Stuur een bericht als de knop wordt ingedrukt waarde = analogRead(pResistor); // Lees de waarde van de fotoresistor (0-1023) uint8_t data = {value}; // Stelt een array in met de naam "data" met daarin de lichte waarde nrf24.send(data, sizeof(data)); //Stuur de array naar de ontvanger nrf24.waitPacketSent(); //Wacht tot het pakket is verzonden Serial.println ("Light Value: " +String (value)); // Druk de lichtwaarde af in de seriële monitor } }

Stap 3: De ontvanger coderen

Voor de ontvanger maakt de code ook gebruik van de RadioHead Library.

#erbij betrekken

#erbij betrekken

RH_NRF24 nrf24;

int LEDPin = 3;

int-waarde = 0; //Waarde van licht van 0-1023

ongeldige setup()

{ Serieel.begin(9600); pinMode (LEDPin, UITGANG); if (!nrf24.init()) Serial.println("init mislukt"); // Standaardwaarden na init zijn 2,402 GHz (kanaal 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println ("setRF mislukt"); }

lege lus()

{ // Wacht op een bericht uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Bewaar het ontvangen bericht als een array met de naam "buf " uint8_t len = sizeof (buf); //Sla de grootte van buf op als "len" while (nrf24.waitAvailableTimeout(200) && nrf24.recv(buf, &len)) //Ontvangt het bericht gedurende 200 milliseconden of totdat het hele bericht is ontvangen { value = buf[0]; // Stelt de waarde in op de eerste index van buf , de int van de fotoresistor analogWrite (LEDPin, map (value, 0, 1023, 0, 255)); // Stelt de PWM-pin in om een geschaalde waarde tussen 0-255 uit te voeren voor de LED-helderheid Serial.println (String (waarde)); } analoogWrite(LEDPin, 0); }

Stap 4: KLAAR

Geniet van het spelen met verschillende lichtniveaus en kijk hoe de LED's daarbij passen! De fotoresistor kan soms kieskeurig zijn en werkt het beste in een donkere kamer met een plaatselijke lichtbron (maar kan ook buiten werken met de zon).

Aanbevolen: