RGB-kerstboomslinger op Arduino. LED-strip aansturen met Arduino

Dit project is gewijd aan het regelen van LED-verlichting vanuit de volgende kamer, zodat u niet van de bank hoeft op te staan. LED RGB-verlichting siert zowel een klein aquarium als een grote kamer even goed.

Met RGB-tape op Arduino kun je een bad met verschillende kleuren verlichten. Creëer als het ware een microprocessorgestuurde sauna van Arduino.

Om de RGB-achtergrondverlichting samen te stellen, hebt u alleen de volgende componenten nodig:

  1. Bluetooth-module HC-05 voor draadloze communicatie met Arduino.
  2. Arduino nano, mini, Uno-bord met microprocessor ATmega 8, ATmega 168, ATmega 328.
  3. RGB LED-strip, indien nodig, met of zonder IP65 waterdichte uitvoering.
  4. Een Android-smartphone als afstandsbediening voor RGB-verlichting.
  5. MOSFET-veldeffecttransistors, zoals P3055LD, P3055LDG, PHD3355L, maar beter met kabels voor montage in montagegaten. Bipolaire transistors presteren slechter .
  6. Weerstanden 10 kOhm, 0,125 W - 3 stuks.

Een beetje theorie over het aansluiten van RGB-tape opArduino

Je kunt de LED-strip niet rechtstreeks op het Arduino-bord aansluiten. De LED-strip gloeit vanaf 12 V, terwijl de microprocessor slechts 5 V nodig heeft om te werken.

Maar het grootste probleem is dat de uitgangen van de microprocessor niet genoeg vermogen hebben om een ​​hele strip LED's van stroom te voorzien. Een gemiddeld meter lange LED-strip verbruikt 600 mA. Deze stroom zal het Arduino-bord zeker beschadigen.

De PWM-uitgangen van de gebruikte microprocessor hebben niet genoeg vermogen om de RGB-strip te verlichten, maar kunnen nog steeds worden gebruikt om het stuursignaal te verwijderen.

Voor ontkoppeling van de voeding wordt aanbevolen om transistoren als schakelaars te gebruiken. Het is beter om MOSFET-veldeffecttransistors te gebruiken: ze hebben een magere poortstroom nodig om te openen, en ze hebben ook meer vermogen vergeleken met bipolaire schakelaars van dezelfde grootte.

RGBbanden naarArduino

In het bedradingsschema worden PWM-uitgangen gebruikt om de tape te besturen: 9 (rood), 10 (groen), 11 (blauw).

Aan de “gate” van elke transistor worden drie weerstanden van 10 kOhm, 0,125 W gehangen.

De plus van de 12 V-voeding (rode draad) gaat rechtstreeks naar de RGB-strip.

Het minpunt van de 12 V-voeding (zwarte draad) wordt verdeeld over de “bronnen” van de veldeffecttransistoren.

De "drain" van elke transistor is verbonden met een afzonderlijk contact van de tape: R, G, B. Voor een gemakkelijke aansluiting wordt het aanbevolen om rode, groene en blauwe draden te gebruiken.

De GND-aardingspin van het Arduino-bord moet worden aangesloten op de min van de ingangsstroom.

Het Arduino Uno-bord zelf wordt gevoed door een aparte netwerkadapter. Voor Arduino nano, mini moet je een eenvoudige voeding samenstellen met behulp van een 7805 geïntegreerde stabilisator.

Bluetooth-module HC-05 aansluiten:

  • VCC - 5V (voeding +5 V);
  • GND - GND (aarde, gemeenschappelijk);
  • RX - TX op Arduino nano, mini, Uno;
  • TX - RX op Arduino nano, mini, Uno;
  • LED - niet gebruikt;
  • SLEUTEL - niet gebruikt.

Onderstaande programmaschets is universeel voor het aansturen van zowel één LED als een LED-strip. Het belangrijkste is om de noodzakelijke regels te laten staan ​​en de overbodige regels te verwijderen of opmerkingen tussen schuine strepen te plaatsen.

Niet-ondertekende lange x; int-LED = 9; // groen is verbonden met pin 9 int LED2 = 10; // blauw is verbonden met pin 10 int LED3 = 11; // rood is verbonden met pin 11 int a,b,c = 0; void setup() ( Serial.begin(9600); Serial.setTimeout(4); pinMode(LED, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); ) void loop() ( if (Serial. beschikbaar()) ( x = Serial.parseInt(); if (x>=0 && x<=255) { a = x; // для RGB ленты //a = 255-x; // для светодиода analogWrite(LED, a); } if (x>=256 &&x<=511) { b = x-256; // для RGB ленты //b = 511-x; // для светодиода analogWrite(LED2, b); } if (x>=512 &&x<=767) { c = x-512; // для RGB ленты //c = 767-x; // для светодиода analogWrite(LED3, c); } /* Serial.println(x); Serial.println(a); Serial.println(b); Serial.println(c); */ } }

Als u één RGB-LED moet aansluiten, is er een bedradingsschema voor het aansluiten ervan.

De applicatie op uw telefoon installeren

Download de applicatie met de korte naam RGB naar je telefoon. .

Na de installatie start u de applicatie via het pictogram.

Klik op de inscriptie

We vinden de geïnstalleerde Bluetooth-module HC-05 in de lijst.

Als er verbinding is, worden in plaats van het opschrift het adres en de naam van de geïnstalleerde Bluetooth-module weergegeven.

Nou, dat is alles, RGB-achtergrondverlichting is ingesteld!

Hier is een videovoorbeeld van ons project in actie:

GPS-klok op Arduino Biometrisch slot - LCD-displaydiagram en montage

Arduino is ideaal voor het besturen van alle apparaten. De ATmega-microprocessor manipuleert met behulp van een schetsprogramma een groot aantal discrete pinnen, analoog-digitale in-/uitgangen en PWM-controllers.

Vanwege de flexibiliteit van de code wordt de ATmega-microcontroller veel gebruikt in verschillende automatiseringsmodules, waaronder het op basis daarvan mogelijk is om een ​​LED-lichtbesturingscontroller te creëren.

Het principe van lastregeling via Arduino

Het Arduino-bord heeft twee soorten uitgangspoorten: digitaal en analoog (PWM-controller). Een digitale poort heeft twee mogelijke toestanden: logische nul en logische één. Als je er een LED op aansluit, gaat deze branden of niet.

De analoge uitgang is een PWM-controller, waaraan een signaal met een frequentie van ongeveer 500 Hz wordt geleverd met een instelbare duty-cycle. Wat een PWM-controller is en het principe van de werking ervan, vindt u op internet. Via de analoge poort is het niet alleen mogelijk om de belasting aan en uit te zetten, maar ook om de spanning (stroom) erop te wijzigen.

Commandosyntaxis

Digitale uitgang:

pinModus(12, UITVOER);— stel poort 12 in als de gegevensuitvoerpoort;
digitalWrite(12, HOOG);— we passen een logische toe op discrete uitgang 12, waardoor de LED oplicht.

Analoge uitgang:

analogeOutPin = 3;– stel poort 3 in om een ​​analoge waarde uit te voeren;
analogWrite(3, waarde);– we genereren een signaal aan de uitgang met een spanning van 0 tot 5V. De waarde is de duty-cycle van het signaal van 0 tot 255. Bij een waarde van 255 de maximale spanning.

Manieren om LED's te besturen via Arduino

Alleen een zwakke LED kan rechtstreeks via de poort worden aangesloten, en zelfs dan is het beter via een begrenzingsweerstand. Als u probeert een krachtigere belasting aan te sluiten, zal deze beschadigd raken.

Voor krachtigere belastingen, waaronder LED-strips, wordt een elektronische schakelaar – een transistor – gebruikt.

Soorten transistorschakelaars

  • Bipolair;
  • Veld;
  • Composiet (Darlington-montage).
Verbindingsmethoden laden
Via bipolaire transistor Via veldeffecttransistor Via spanningsschakelaar

Wanneer een hoog logisch niveau wordt toegepast (digitalWrite(12, HOOG);) via de uitgangspoort naar de basis van de transistor zal de referentiespanning via de collector-emitterketen naar de belasting stromen. Zo kun je de LED aan- en uitzetten.

Een veldeffecttransistor werkt op een vergelijkbare manier, maar omdat hij in plaats van een "basis" een drain heeft, die niet door stroom maar door spanning wordt geregeld, is een begrenzingsweerstand in dit circuit niet nodig.

Met de bipolaire weergave kunt u geen krachtige belastingen regelen. De stroom er doorheen is beperkt tot 0,1-0,3A.

Veldeffecttransistoren werken met krachtigere belastingen met stromen tot 2A. Voor een nog krachtigere belasting worden Mosfet-veldeffecttransistors gebruikt met een stroomsterkte tot 9A en een spanning tot 60V.

In plaats van veldtransistors kunt u een Darlington-samenstel van bipolaire transistors gebruiken op ULN2003-, ULN2803-microschakelingen.

ULN2003-chip en schakelschema van een elektronische spanningsschakelaar:

Het werkingsprincipe van een transistor voor een soepele aansturing van een LED-strip

Een transistor werkt als een waterkraan, alleen voor elektronen. Hoe hoger de spanning die wordt aangelegd aan de basis van de bipolaire transistor of de drain van de veldeffecttransistor, hoe lager de weerstand in het emitter-collectorcircuit, hoe hoger de stroom die door de belasting gaat.

Nadat we de transistor op de analoge Arduino-poort hebben aangesloten, kennen we deze een waarde toe van 0 tot 255 en veranderen we de spanning die aan de collector wordt geleverd of wordt afgevoerd van 0 naar 5V. Het collector-emittercircuit gaat van 0 tot 100% van de belastingreferentiespanning.

Om een ​​Arduino LED-strip te besturen, moet u een transistor met geschikt vermogen selecteren. De bedrijfsstroom voor het voeden van de LED-meter is 300-500mA; de bipolaire vermogenstransistor is geschikt voor deze doeleinden. Voor langere lengtes is een veldeffecttransistor vereist.

Aansluitschema voor LED-strip naar Arduino:

RGB-strip besturen met Andurino

Naast single-chip-LED's kan Arduino ook werken met kleuren-LED's. Door de pinnen van elke kleur aan te sluiten op de analoge uitgangen van Arduino, kunt u de helderheid van elk kristal willekeurig wijzigen, waardoor de gewenste gloedkleur wordt bereikt.

Aansluitschema voor Arduino RGB LED:

De Arduino RGB-stripbesturing is op dezelfde manier opgebouwd:

Het is beter om de Arduino RGB-controller samen te stellen met behulp van veldeffecttransistors.

Voor soepele helderheidsregeling Er kunnen twee knoppen worden gebruikt. De ene zal de helderheid van de gloed vergroten, de andere zal deze verminderen.

Arduino LED-strip helderheidsregeling schets

int led = 120; stel de helderheid in op gemiddeld niveau

ongeldige setup() (
pinModus(4, UITVOER); stel de 4e analoge poort in op uitvoer
pinModus(2, INPUT);

pinModus(4, INPUT); stel de 2e en 4e digitale poort in als ingang voor pollingknoppen
}
lege lus()

knop1 = digitaal lezen(2);

knop2 = digitaal lezen(4);
als (knop1 == HOOG) Als u op de eerste knop drukt, wordt de helderheid verhoogd
{
geleid = geleid + 5;

analoogSchrijven(4, geleid);
}
als (knop2 == HOOG) Als u op de tweede knop drukt, wordt de helderheid verlaagd
{
geleid = geleid - 5;

analoogSchrijven(4, geleid);
}

Wanneer u de eerste of tweede knop ingedrukt houdt, verandert de spanning die aan het stuurcontact van de elektronische sleutel wordt geleverd soepel. Dan zal er een soepele verandering in helderheid plaatsvinden.

Arduino-besturingsmodules

Om een ​​volwaardige LED-stripbesturingsdriver te creëren, kunt u gebruik maken van sensormodules.

IR-controle

Met de module kunt u maximaal 20 commando's programmeren.

De signaalradius bedraagt ​​ongeveer 8 meter.

De prijs van de set is 6 USD.

Via radiokanaal

Vierkanaals unit met een bereik tot 100 meter

De prijs van de set is 8 USD.

Hiermee kunt u de verlichting inschakelen wanneer u het appartement nadert.

Contactloos

De afstandssensor is in staat de helderheid van de verlichting te verhogen of te verlagen door uw hand te bewegen.

Actiebereik tot 5 meter.

Moduleprijs 0,3 USD

LED RGB strip is een flexibele strip waarop geleiders en RGB LED's (full colour) zijn gedrukt. Onlangs zijn LED-strips wijdverspreid geworden in de architectuur, het tunen van auto's en motorfietsen, kostuums, decoraties, enz. Er zijn ook waterdichte tapes die bijvoorbeeld in zwembaden kunnen worden gebruikt.

LED-strips zijn er in twee soorten: analoog en digitaal.
Bij analoge strips zijn alle LED's parallel geschakeld. U kunt dus wel de kleur van de gehele LED-strip instellen, maar u kunt geen specifieke kleur voor een specifieke LED instellen. Deze tapes zijn eenvoudig aan te sluiten en niet duur.
Digitale LED-strips zijn iets ingewikkelder. Voor elke LED wordt een extra microschakeling geïnstalleerd, waardoor het mogelijk is om elke LED aan te sturen. Dergelijke tapes zijn veel duurder dan gewone tapes.

In dit artikel zullen we overwegen om alleen met analoge LED-strips te werken.

Analoge RGB LED-strips

Gegevensblad:
- 10,5 mm breed, 3 mm dik, 100 mm lengte van één segment
- waterdicht
- 3M-tape aan de onderkant
- max. stroomverbruik (12V, wit) - 60mA per segment
- Gloedkleur (golflengte, nm): 630 nm/530 nm/475 nm

RGB LED-strip schakelschema

De tape wordt geleverd op rollen en bestaat uit secties van 10 cm lang. Elke sectie bevat 3 RGB-LED's, maat 5050. Elke sectie blijkt 9 LED's te bevatten: 3 rode, 3 groene en 3 blauwe. Sectiegrenzen zijn gemarkeerd en bevatten koperen kussentjes. Daarom kan de tape, indien nodig, worden gesneden en gemakkelijk worden gesoldeerd. LED-stripschema:

Energieverbruik

In elk deel van de tape zijn 3 LED's in serie geschakeld, dus 5V-voeding is niet geschikt. De voeding moet 12V zijn, maar je kunt ook 9V leveren, maar dan branden de LED's niet zo fel.

Eén segment LED-lijn verbruikt ongeveer 20 mA bij voeding op 12 V. Dat. als u de witte kleur inschakelt (d.w.z. rood 100%, groen 100% en blauw 100%), dan zal het stroomverbruik van de sectie ongeveer 60mA zijn.

Nu kunt u eenvoudig het huidige verbruik van de gehele band berekenen. De lengte van de tape is dus 1 meter. De tape heeft 10 secties (elk 10 cm). Het tapeverbruik met witte kleur zal 60mA*10=600mA of 0,6A zijn. Als u een PWM-fade-effect tussen kleuren gebruikt, kan het stroomverbruik worden gehalveerd.

Het aansluiten van de band

Om de tape aan te sluiten, moet je de draden aan de 4 contactvlakken solderen. We gebruikten een witte draad voor +12V, en de rest van de kleuren overeenkomstig de kleuren van de LED's.

Snij de beschermfolie aan het uiteinde van de tape af. Van welke kant de verbinding gemaakt wordt is niet belangrijk, want... symmetrische band.

Strip de isolatielaag om de contactvlakken bloot te leggen.

Vertin ze.

Soldeer vier draden. Het is beter om meeraderige draad te gebruiken (bijvoorbeeld PV3- of PVS-kabel), dit is flexibeler.

Ter bescherming tegen water en invloeden van buitenaf kunt u gebruik maken van krimpkousen. Als de LED-strip in een vochtige omgeving wordt gebruikt, kunnen de contacten bovendien worden gecoat met siliconen.

Werken met LED-strip

De tape kan eenvoudig met elke microcontroller worden gebruikt. Voor het aansturen van LED's wordt aanbevolen om pulsbreedtemodulatie (PWM) te gebruiken. Sluit de tape-pinnen niet rechtstreeks aan op de MK-pinnen, omdat Dit is een grote stroombelasting en de controller kan doorbranden. Het is beter om transistors te gebruiken.

Je kunt NPN-transistors gebruiken of beter nog N-kanaal-mosfets. Houd er bij het selecteren van een transistor rekening mee dat de maximale schakelstroom van de transistor met reserve moet worden genomen.

LED-strip aansluiten op Arduino-controller

Laten we eens kijken naar een voorbeeld van het aansluiten van een LED-strip op een populaire strip. Om verbinding te maken, kunt u goedkope en populaire mosfets gebruiken. Je kunt ook conventionele bipolaire transistors gebruiken, bijvoorbeeld TIP120. Maar vergeleken met de mosfet heeft deze meer spanningsverlies, dus het wordt nog steeds aanbevolen om de eerste te gebruiken.
Het onderstaande schema toont de aansluiting van een RGB LED-strip bij gebruik van N-kanaals mosfets. De mosfet-poort is verbonden met pin1 van de controller, de drain met pin2 en de source met pin3.

Hieronder vindt u een aansluitschema bij gebruik van conventionele bipolaire transistors (bijvoorbeeld TIP120). De basis van de transistor is verbonden met pin1 van de controller, de collector met pin2 en de emitter met pin3. Tussen de basis en de controlleruitgang moet een weerstand met een weerstand van 100-220 Ohm worden geplaatst.

Sluit een stroombron met een spanning van 9-12 Volt aan op de Arduino-controller, en +12V van de LED-strip moet worden aangesloten op de Vin-pin van de controller. Je kunt 2 aparte voedingen gebruiken, vergeet alleen niet de aarde van de bron en de controller aan te sluiten.

Voorbeeld programma

Om de tape aan te sturen wordt gebruik gemaakt van de PWM uitgang van de controller, hiervoor kun je de analogWrite() functie gebruiken voor pin 3, 5, 6, 9, 10 of 11. Bij analogWrite(pin, 0) zal de LED niet oplichten, met analogWrite(pin, 127) zal de LED op volle sterkte branden, en met analogWrite(pin, 255) zal de LED op maximale helderheid branden. Hieronder ziet u een voorbeeldschets voor Arduino:

#define REDPIN 5 #define GREENPIN 6 #define BLUEPIN 3 #define FADESPEED 5 // hoe hoger het getal, hoe langzamer het fade-effect ongeldig wordt setup() ( pinMode(REDPIN, OUTPUT); pinMode(GREENPIN, OUTPUT); pinMode (BLUEPIN, OUTPUT); void loop() ( int r, g, b; // vervagen van blauw naar paars voor (r = 0; r 0; b--) ( analogWrite(BLUEPIN, b); delay(FADESPEED ) // vervagen van rood naar geel voor (g = 0; g 0; r--) ( analogWrite(REDPIN, r); delay(FADESPEED); ) // vervagen van groen naar groenblauw voor (b = 0; b 0; g--) ( analoog schrijven(GREENPIN, g); vertraging(FADESPEED); ) )

De vorige keer hebben we gekeken hoe je een LED-strip via de L298-driver op een Arduino kunt aansluiten. Kleurbeheer werd programmatisch uitgevoerd: de willekeurige functie. Nu is het tijd om uit te zoeken hoe je de kleur van de LED-strip kunt regelen op basis van de metingen van de DHT 11 temperatuur- en vochtigheidssensor.

Het voorbeeld is gebaseerd op het aansluiten van een LED-strip via de L298-driver. Bovendien heeft het voorbeeld een LCD 1602-display toegevoegd, dat de meetwaarden van de DHT 11-sensor weergeeft.

Het project vereist de volgende Arduino-elementen:

  1. Arduino UNO-bord.
  2. Weergave LCD 1602 + I2C.
  3. Temperatuur- en vochtigheidssensor DHT
  4. LED-strip.
  5. Bestuurder L298.
  6. Voeding 9-12V.
  7. Behuizing voor Arduino en display (optioneel).

Laten we eerst eens kijken naar het schakelschema (Fig. 1). Hierop kunt u zien hoe u alle bovenstaande elementen met elkaar verbindt. Er is niets ingewikkelds aan het monteren en aansluiten van het circuit, maar het is de moeite waard om één nuance te noemen die de meeste mensen vergeten, en als gevolg daarvan krijgen ze onjuiste resultaten bij het werken met LED-strips met Arduino.

Figuur 1. Schematisch diagram van het aansluiten van Arduino en LED-strip met DHT 11-sensor

Om een ​​onjuiste werking van de LED-strip te voorkomen (flikkering, kleurverschillen, onvolledige verlichting, enz.), moet de voeding van het gehele circuit gemeenschappelijk worden gemaakt, d.w.z. combineer de GND (aarde) pinnen van de Arduino-controller en de L298-driver (LED-strip). Hoe u dit doet, ziet u in het diagram.

Een paar woorden over het aansluiten van een vochtigheidssensor. Als je een kale DHT 11 koopt, zonder omsnoering, dan moet je tussen het eerste en tweede contact, respectievelijk 5V en Data, een weerstand solderen met een nominale waarde van 5-10 kOhm. Het temperatuur- en vochtigheidsmeetbereik staat op de achterkant van de DHT 11-sensorbehuizing. Temperatuur: 0-50 graden Celsius. Vochtigheid: 0-80%.


Figuur 2. Correcte aansluiting van de DHT 11 vochtigheidssensor

Nadat we alle elementen van het project volgens het schema hebben samengesteld, moeten we programmacode schrijven die ervoor zorgt dat alles werkt zoals we het nodig hebben. En we hebben de LED-strip nodig om van kleur te veranderen, afhankelijk van de metingen van de DHT 11-sensor (vochtigheid).

Om de DHT 11-sensor te programmeren, heeft u een extra bibliotheek nodig.

Arduino en RGB-programmacode - strip. Verandert de kleur van de tape afhankelijk van de luchtvochtigheid.

#include #include //bibliotheek voor het werken met het LCD 1602-display #include //bibliotheek voor het werken met de vochtigheids- en temperatuursensor DHT 11 int chk; //de variabele slaat alle gegevens van de DHT11-sensor op int brom; //de variabele slaat de vochtigheidsmetingen van de DHT11-sensor dht11 DHT op; //object van het type DHT #define DHT11_PIN 4 //Datapin van de DHT11-sensor is aangesloten op ingang 4 #define LED_R 9 //pin voor kanaal R #define LED_G 10 //pin voor kanaal G #define LED_B 11 //pin voor kanaal B / /variabelen slaan kleurwaarden op //bij het mengen van alle drie de kleuren wordt de gewenste kleur verkregen int led_r=0, led_g=0, led_b=0; //een weergaveobject declareren met adres 0x27 //vergeet niet een weergave in het project te gebruiken via een I2C-bord LiquidCrystal_I2C lcd(0x27,16,2); void setup() ( //maak een display lcd.init(); lcd.backlight(); // declareer pinnen als uitgangen pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); ) void loop () ( chk = DHT.read(DHT11_PIN);//lees gegevens van de DHT11-sensor //voer gegevens uit naar het display lcd.print("Temp: "); lcd.print(DHT.temperature, 1); lcd.print( " C"); lcd.setCursor(0,1); lcd.print("Hum: "); lcd.print(DHT.humidity, 1); vereist voor polling lcd.clear(); brom = DHT.humidity; // voer vochtigheidsmetingen uit // in het bereik van 19 tot 30% vochtigheid, groen weergeven als ((brom >= 19) && (brom<= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (brom<= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (brom<= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }

Labels: Labels