Inhoudsopgave:

DIY-besturing RGB LED-kleur via Bluetooth - Ajarnpa
DIY-besturing RGB LED-kleur via Bluetooth - Ajarnpa

Video: DIY-besturing RGB LED-kleur via Bluetooth - Ajarnpa

Video: DIY-besturing RGB LED-kleur via Bluetooth - Ajarnpa
Video: Neon LED RGB Strip - адресная wi-fi лента для Tuya Smart c IP67, интеграция в Home Assistant 2024, Juli-
Anonim
DIY-besturing RGB LED-kleur via Bluetooth
DIY-besturing RGB LED-kleur via Bluetooth

Slimme lampen zijn de laatste tijd steeds populairder geworden en worden gestaag een belangrijk onderdeel van de smart home-toolkit. Met slimme lampen kan de gebruiker zijn licht regelen via een speciale applicatie op de smartphone van de gebruiker; de lamp kan worden in- en uitgeschakeld en de kleur kan worden gewijzigd vanuit de applicatie-interface. In dit project hebben we een slimme lampcontroller gebouwd die kan worden bediend met een handmatige knop of een mobiele applicatie via Bluetooth. Om wat flair aan dit project toe te voegen, hebben we enkele functies toegevoegd waarmee de gebruiker een verlichtingskleur kan kiezen uit de lijst met kleuren in de applicatie-interface. Het kan ook een "automix" activeren om kleureffecten te genereren en de verlichting elke halve seconde te veranderen. De gebruiker kan zijn eigen kleurenmix creëren met behulp van een PWM-functie die ook kan worden gebruikt als dimmer voor de drie basiskleuren (rood, groen, blauw). We hebben ook externe knoppen aan het circuit toegevoegd, zodat de gebruiker kan overschakelen naar de handmatige modus en de lichtkleur kan wijzigen vanaf een externe knop.

Dit Instructable bestaat uit twee secties; het GreenPAK™-ontwerp en het Android-app-ontwerp. Het GreenPAK-ontwerp is gebaseerd op het gebruik van een UART-interface voor communicatie. UART is gekozen omdat het wordt ondersteund door de meeste Bluetooth-modules, evenals de meeste andere randapparatuur, zoals WIFI-modules. Hierdoor kan het GreenPAK-ontwerp in veel verbindingstypen worden gebruikt.

Om dit project te bouwen, gaan we de SLG46620 CMIC, een Bluetooth-module en een RGB-led gebruiken. De GreenPAK IC wordt de besturingskern van dit project; het ontvangt gegevens van een Bluetooth-module en/of externe knoppen en begint vervolgens met de vereiste procedure om de juiste verlichting weer te geven. Het genereert ook het PWM-signaal en geeft dit door aan de LED. Afbeelding 1 hieronder toont het blokschema.

Het GreenPAK-apparaat dat in dit project wordt gebruikt, bevat een SPI-verbindingsinterface, PWM-blokken, FSM en een heleboel andere nuttige extra blokken in één IC. Het wordt ook gekenmerkt door zijn kleine formaat en laag energieverbruik. Hierdoor kunnen fabrikanten een klein praktisch circuit bouwen met behulp van een enkele IC, waardoor de productiekosten worden geminimaliseerd in vergelijking met vergelijkbare systemen.

In dit project sturen we één RGB-led aan. Om het project commercieel levensvatbaar te maken, zou een systeem waarschijnlijk het helderheidsniveau moeten verhogen door veel LED's parallel aan te sluiten en de juiste transistors te gebruiken; er moet ook rekening worden gehouden met het stroomcircuit.

U kunt alle stappen doorlopen om te begrijpen hoe de GreenPAK-chip is geprogrammeerd om RGB LED-kleur via Bluetooth aan te sturen. Als u de IC echter eenvoudig wilt programmeren zonder alle interne circuits te begrijpen, download dan GreenPAK-software om het reeds voltooide GreenPAK-ontwerpbestand te bekijken. Sluit de GreenPAK Development Kit aan op uw computer en druk op programma om het aangepaste IC te maken om RGB LED-kleur via Bluetooth te regelen.

Het GreenPAK-ontwerp bestaat uit de UART-ontvanger, PWM-eenheid en besturingseenheid die in de onderstaande stappen worden beschreven.

Stap 1: UART-ontvanger

UART-ontvanger
UART-ontvanger

Eerst moeten we de Bluetooth-module instellen. De meeste Bluetooth IC's ondersteunen het UART-protocol voor communicatie. UART staat voor Universal Asynchronous Receiver / Transmitter. UART kan gegevens heen en weer converteren tussen parallelle en seriële formaten. Het bevat een serieel-naar-parallel-ontvanger en een parallel-naar-serieel-omzetter die beide afzonderlijk worden geklokt.

De gegevens die in de Bluetooth-module worden ontvangen, worden verzonden naar ons GreenPAK-apparaat. De inactieve status voor Pin10 is HOOG. Elk verzonden teken begint met een logisch LAGE startbit, gevolgd door een configureerbaar aantal databits en een of meer logische HOGE stopbits.

De UART-zender verzendt 1 START-bit, 8 databits en één STOP-bit. Gewoonlijk is de standaard baudrate voor een UART Bluetooth-module 9600. We sturen de databyte van de Bluetooth IC naar het SPI-blok van de GreenPAK™ SLG46620.

Aangezien het GreenPAK SPI-blok geen START- of STOP-bitbesturing heeft, zullen we die bits gebruiken om het SPI-kloksignaal (SCLK) in en uit te schakelen. Wanneer Pin10 LAAG wordt, weten we dat we een START-bit hebben ontvangen, dus gebruiken we de PDLY-valflankdetector om het begin van de communicatie te identificeren. Die dalende-flankdetector klokt DFF0, waardoor het SCLK-signaal het SPI-blok kan klokken.

Onze baudrate is 9600 bits per seconde, dus onze SCLK-periode moet 1/9600 = 104 s zijn. Daarom hebben we de OSC-frequentie ingesteld op 2 MHz en CNT0 als frequentiedeler gebruikt.

2 MHz-1 = 0,5 s

(104 s / 0,5 s) - 1 = 207

Daarom willen we dat de CNT0-tellerwaarde 207 is. Om ervoor te zorgen dat we geen gegevens missen, moeten we de SPI-klok met een halve klokcyclus vertragen, zodat het SPI-blok op het juiste moment wordt geklokt. We hebben dit bereikt door CNT6, 2-bit LUT1 en de externe klok van het OSC-blok te gebruiken. De uitvoer van CNT6 wordt pas in 52 s nadat DFF0 is geklokt, wat de helft is van onze SCLK-periode van 104 μs. Wanneer CNT6 hoog is, laat de 2-bit LUT1 AND-poort het 2MHz OSC-signaal door naar de EXT. CLK0-ingang, waarvan de uitgang is verbonden met CNT0.

Stap 2: PWM-eenheid

PWM-eenheid
PWM-eenheid

Het PWM-signaal wordt gegenereerd met behulp van PWM0 en een bijbehorende klokpulsgenerator (CNT8/DLY8). Omdat de pulsbreedte door de gebruiker kan worden bestuurd, gebruiken we FSM0 (die kan worden aangesloten op PWM0) om gebruikersgegevens te tellen.

In de SLG46620 kan 8-bit FSM1 worden gebruikt met PWM1 en PWM2. De Bluetooth-module moet zijn aangesloten, wat betekent dat de parallelle SPI-uitgang moet worden gebruikt. De parallelle SPI-uitgangsbits 0 tot en met 7 zijn gecombineerd met DCMP1, DMCP2 en de OUT1 en OUT0 van de LF OSC CLK. PWM0 verkrijgt zijn uitvoer van de 16-bits FSM0. Als dit niet wordt gewijzigd, wordt de pulsbreedte overbelast. Om de tellerwaarde te beperken tot 8 bits wordt nog een FSM toegevoegd; FSM1 wordt gebruikt als een aanwijzer om te weten wanneer de teller 0 of 255 bereikt. FSM0 wordt gebruikt om de PWM-puls te genereren. FSM0 en FSM1 moeten worden gesynchroniseerd. Aangezien beide FSM's vooraf ingestelde klokopties hebben, worden CNT1 en CNT3 gebruikt als bemiddelaars om de CLK door te geven aan beide FSM's. De twee tellers zijn ingesteld op dezelfde waarde, die 25 is voor deze Instructable. We kunnen de veranderingssnelheid van de PWM-waarde wijzigen door deze tellerwaarden te wijzigen.

De waarde van de FSM's wordt verhoogd en verlaagd door de signalen '+' en '-', die afkomstig zijn van de SPI Parallel Output.

Stap 3: Besturingseenheid

Besturingseenheid
Besturingseenheid

Binnen de besturingseenheid wordt de ontvangen byte van de Bluetooth-module naar de SPI Parallel Output gebracht en vervolgens doorgegeven aan de bijbehorende functies. Eerst worden de PWM CS1- en PWM CS2-uitgangen gecontroleerd om te zien of het PWM-patroon is geactiveerd of niet. Als het is geactiveerd, zal het bepalen welk kanaal de PWM gaat uitvoeren via LUT4, LUT6 en LUT7.

LUT9, LUT11 en LUT14 zijn verantwoordelijk voor het controleren van de status van de andere twee LED's. LUT10, LUT12 en LUT13 controleren of de Manual-knop is geactiveerd of niet. Als de handmatige modus actief is, werken de RGB-uitgangen volgens de D0, D1, D2-uitgangsstatussen, die elke keer dat de Color-knop wordt ingedrukt, worden gewijzigd. Het verandert met de stijgende flank afkomstig van CNT9, die wordt gebruikt als debouncer met stijgende flank.

Pin 20 is geconfigureerd als ingang en wordt gebruikt om te schakelen tussen handmatige en Bluetooth-besturing.

Als de handmatige modus is uitgeschakeld en de automatische mixermodus is geactiveerd, verandert de kleur elke 500 ms waarbij de stijgende flank van CNT7 komt. Een 4-bit LUT1 wordt gebruikt om de '000'-status voor D0 D1 D2 te voorkomen, aangezien deze status ervoor zorgt dat het lampje uitgaat tijdens de automatische mixermodus.

Als de handmatige modus, de PWM-modus en de automatische mixermodus niet zijn geactiveerd, vloeien de rode, groene en blauwe SPI-opdrachten naar pinnen 12, 13 en 14, die zijn geconfigureerd als uitgangen en zijn aangesloten op de externe RGB-led.

DFF1, DFF2 en DFF3 worden gebruikt om een 3-bits binaire teller te bouwen. De tellerwaarde neemt toe met CNT7-pulsen die door P14 gaan in de automatische mixermodus, of door signalen die afkomstig zijn van de kleurknop (PIN3) in de handmatige modus.

Stap 4: Android-applicatie

Android-applicatie
Android-applicatie
Android-applicatie
Android-applicatie
Android-applicatie
Android-applicatie
Android-applicatie
Android-applicatie

In deze sectie gaan we een Android-applicatie bouwen die de bedieningsselecties van de gebruiker zal controleren en weergeven. De interface bestaat uit twee secties: de eerste sectie bevat een reeks knoppen met vooraf gedefinieerde kleuren, zodat wanneer een van deze knoppen wordt ingedrukt, een LED van dezelfde overeenkomstige kleur oplicht. Het tweede gedeelte (MIX-vierkant) creëert een gemengde kleur voor de gebruiker.

In het eerste gedeelte kiest de gebruiker de LED-pin waar het PWM-signaal doorheen moet; het PWM-signaal kan slechts aan één pin tegelijk worden doorgegeven. De onderste lijst regelt de andere twee kleuren logisch aan/uit tijdens de PWM-modus.

De automixerknop is verantwoordelijk voor het uitvoeren van het automatische lichtveranderende patroon waarbij het licht elke halve seconde verandert. De MIX-sectie bevat twee lijsten met selectievakjes, zodat de gebruiker kan beslissen welke twee kleuren met elkaar moeten worden gemengd.

We hebben de applicatie gebouwd met behulp van de MIT-app-uitvinderwebsite. Het is een site die het mogelijk maakt om Android-applicaties te bouwen zonder voorafgaande software-ervaring met behulp van grafische softwareblokken.

In eerste instantie hebben we een grafische interface ontworpen door een set knoppen toe te voegen die verantwoordelijk zijn voor het weergeven van de vooraf gedefinieerde kleuren, we hebben ook twee lijsten met selectievakjes toegevoegd en elke lijst heeft 3 elementen; elk element is omlijnd in zijn individuele kader, zoals weergegeven in figuur 5.

De knoppen in de gebruikersinterface zijn gekoppeld aan softwareopdrachten: alle opdrachten die de app via Bluetooth verzendt, zijn in byte-indeling en elk bit is verantwoordelijk voor een specifieke functie. Tabel 1 toont de vorm van de opdrachtframes die naar de GreenPAK zijn verzonden.

De eerste drie bits, B0, B1 en B2, houden de status van RGB-LED's in de directe besturingsmodus door de knoppen van de vooraf gedefinieerde kleuren. Als u dus op een van deze klikt, wordt de overeenkomstige waarde van de knop verzonden, zoals weergegeven in tabel 2.

De bits B3 en B4 bevatten de commando's '+' en '-', die verantwoordelijk zijn voor het vergroten en verkleinen van de pulsbreedte. Wanneer de knop wordt ingedrukt, is de bitwaarde 1, en wanneer de knop wordt losgelaten, is de bitwaarde 0.

De B5- en B6-bits zijn verantwoordelijk voor het kiezen van de pin (kleur) waar het PWM-signaal doorheen gaat: de kleuraanduidingen van deze bits zijn weergegeven in tabel 3. Het laatste bit, B7, is verantwoordelijk voor het activeren van de automixer.

Afbeelding 6 en Afbeelding 7 tonen het proces van het koppelen van knoppen aan programmeerblokken die verantwoordelijk zijn voor het verzenden van de vorige waarden.

Om het volledige ontwerp van de applicatie te bekijken, kunt u het bijgevoegde bestand ".aia" met de projectbestanden downloaden en openen op de hoofdsite.

Afbeelding 8 hieronder toont het schakelschema op het hoogste niveau.

Stap 5: Resultaten

De controller is met succes getest en de kleurmenging, samen met andere functies, bleek naar behoren te werken.

Conclusie

In deze Instructable is een slimme lampschakeling gebouwd om draadloos te worden bestuurd door een Android-applicatie. De GreenPAK CMIC die in dit project werd gebruikt, hielp ook bij het inkorten en inbedden van verschillende essentiële componenten voor lichtregeling in één klein IC.

Aanbevolen: