INHOUDSOPGAWE:

DIY -beheer RGB LED -kleur via Bluetooth: 5 stappe
DIY -beheer RGB LED -kleur via Bluetooth: 5 stappe

Video: DIY -beheer RGB LED -kleur via Bluetooth: 5 stappe

Video: DIY -beheer RGB LED -kleur via Bluetooth: 5 stappe
Video: How to Splice up Govee LED Strip Lights With RGB Connector | Govee Home 2024, Desember
Anonim
DIY -beheer RGB LED -kleur via Bluetooth
DIY -beheer RGB LED -kleur via Bluetooth

Slim gloeilampe neem onlangs toe in gewildheid en word steeds 'n belangrike deel van die gereedskapstel vir slim huise. Slim gloeilampe stel die gebruiker in staat om hul lig te beheer via 'n spesiale toepassing op die slimfoon van die gebruiker; die gloeilamp kan aan en afgeskakel word en die kleur kan verander word vanaf die toepassingsvlak. In hierdie projek het ons 'n slim gloeilampkontroleerder gebou wat beheer kan word vanaf 'n handknoppie of 'n mobiele toepassing via Bluetooth. Om 'n bietjie flair aan hierdie projek te gee, het ons 'n paar funksies bygevoeg waarmee die gebruiker 'n beligtingskleur kan kies uit die lys kleure wat in die toepassingsvlak is. Dit kan ook 'n 'outomatiese mengsel' aktiveer om kleureffekte te genereer en elke halfsekonde die beligting te verander. Die gebruiker kan hul eie kleurmengsel skep met behulp van 'n PWM -funksie, wat ook as 'n dimmer vir die drie basiese kleure (rooi, groen, blou) gebruik kan word. Ons het ook eksterne knoppies by die kring gevoeg, sodat die gebruiker na die handmatige modus kan oorskakel en die ligkleur van 'n eksterne knoppie kan verander.

Hierdie instruksie bestaan uit twee afdelings; die GreenPAK ™ -ontwerp en Android -appontwerp. Die GreenPAK -ontwerp is gebaseer op die gebruik van 'n UART -koppelvlak vir kommunikasie. UART word gekies omdat dit ondersteun word deur die meeste Bluetooth -modules, sowel as die meeste ander randapparatuur, soos WIFI -modules. Gevolglik kan die GreenPAK -ontwerp in baie tipes verbindings gebruik word.

Om hierdie projek te bou, gaan ons die SLG46620 CMIC, 'n Bluetooth -module en 'n RGB LED gebruik. Die GreenPAK IC gaan die beheerkern van hierdie projek wees; dit ontvang data van 'n Bluetooth -module en/of eksterne knoppies, en begin dan met die vereiste prosedure om die korrekte beligting weer te gee. Dit genereer ook die PWM -sein en stuur dit na die LED. Figuur 1 hieronder toon die blokdiagram.

Die GreenPAK -toestel wat in hierdie projek gebruik word, bevat 'n SPI -koppelvlak, PWM -blokke, FSM en baie ander nuttige bykomende blokke in een IC. Dit word ook gekenmerk deur sy klein grootte en lae energieverbruik. Dit sal vervaardigers in staat stel om 'n klein praktiese stroombaan met 'n enkele IC te bou, en die produksiekoste sal dus verminder word in vergelyking met soortgelyke stelsels.

In hierdie projek beheer ons een RGB LED. Om die projek kommersieel lewensvatbaar te maak, sal 'n stelsel waarskynlik die helderheidsvlak moet verhoog deur baie LED's parallel aan te sluit en die toepaslike transistors te gebruik; die kragkring moet ook in ag geneem word.

U kan deur alle stappe gaan om te verstaan hoe die GreenPAK -chip geprogrammeer is om RGB LED -kleur via Bluetooth te beheer. As u egter die IC eenvoudig wil programmeer sonder om die innerlike stroombane te verstaan, laai GreenPAK -sagteware af om die reeds voltooide GreenPAK -ontwerplêer te sien. Koppel die GreenPAK Development Kit aan op u rekenaar en klik op die program om die persoonlike IC te skep om RGB LED -kleur via Bluetooth te beheer.

Die GreenPAK -ontwerp bestaan uit die UART -ontvanger, PWM -eenheid en beheereenheid wat in die onderstaande stappe beskryf word.

Stap 1: UART -ontvanger

UART -ontvanger
UART -ontvanger

Eerstens moet ons die Bluetooth -module opstel. Die meeste Bluetooth IC's ondersteun die UART -protokol vir kommunikasie. UART staan vir Universal Asynchronous Receiver / Transmitter. UART kan data heen en weer omskakel tussen parallelle en reeksformate. Dit bevat 'n seriële na parallelle ontvanger en 'n parallel na 'n seriële omskakelaar wat beide afsonderlik geklok word.

Die data wat in die Bluetooth -module ontvang word, sal na ons GreenPAK -toestel oorgedra word. Die ledige toestand vir Pin10 is HOOG. Elke gestuurde karakter begin met 'n logiese LOW -beginbit, gevolg deur 'n konfigureerbare aantal databits en een of meer logika HIGH -stopbits.

Die UART -sender stuur 1 START -bit, 8 databits en een STOP -bit. Gewoonlik is die standaard baud -tempo vir 'n UART Bluetooth -module 9600. Ons stuur die databyte van die Bluetooth IC na die GreenPAK ™ SLG46620 se SPI -blok.

Aangesien die GreenPAK SPI -blok nie 'n START- of STOP -bitbeheer het nie, gebruik ons eerder die bisse om die SPI -kloksein (SCLK) in te skakel en uit te skakel. As Pin10 LOW is, weet ons dat ons 'n START -bit gekry het, dus gebruik ons die PDLY -valranddetektor om die begin van kommunikasie te identifiseer. Die valranddetektor klok DFF0, wat die SCLK -sein in staat stel om die SPI -blok te klok.

Ons baud -tempo is 9600 bits per sekonde, dus ons SCLK -periode moet 1/9600 = 104 μs wees. Daarom stel ons die OSC -frekwensie op 2MHz en gebruik CNT0 as 'n frekwensie -verdeler.

2 MHz-1 = 0,5 μs

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

Daarom wil ons hê dat die CNT0 -tellerwaarde 207 is. Om te verseker dat ons geen data mis nie, moet ons die SPI -klok met 'n halwe kloksiklus vertraag sodat die SPI -blok op die regte tyd geklok word. Ons het dit bereik deur CNT6, 2-bis LUT1 en die eksterne klok van die OSC-blok te gebruik. Die uitset van CNT6 word eers hoog tot 52 μs nadat DFF0 geklok is, wat die helfte is van ons 104 μs SCLK -periode. As CNT6 hoog is, laat die 2-bis LUT1 AND-hek toe dat die 2MHz OSC-sein na die EXT gaan. CLK0 -invoer, waarvan die uitset gekoppel is aan CNT0.

Stap 2: PWM -eenheid

PWM -eenheid
PWM -eenheid

Die PWM -sein word gegenereer met behulp van PWM0 en 'n gepaardgaande klokpulsgenerator (CNT8/DLY8). Aangesien die polswydte deur die gebruiker beheer kan word, gebruik ons FSM0 (wat aan PWM0 gekoppel kan word) om gebruikersdata te tel.

In die SLG46620 kan 8-bis FSM1 gebruik word met PWM1 en PWM2. Die Bluetooth -module moet gekoppel wees, wat beteken dat die SPI parallelle uitset gebruik moet word. Die SPI parallelle uitsetstukke 0 tot en met 7 word saamgevoeg met DCMP1, DMCP2 en die LUT OSC CLK se OUT1 en OUT0. PWM0 verkry sy uitset van die 16-bis FSM0. As dit nie verander word nie, veroorsaak dit dat die polswydte oorlaai word. Om die tellerwaarde tot 8 bis te beperk, word nog 'n FSM bygevoeg; FSM1 word gebruik as 'n wyser om te weet wanneer die teller 0 of 255 bereik. FSM0 word gebruik om die PWM -pols te genereer. FSM0 en FSM1 moet gesinchroniseer word. Aangesien beide FSM's vooraf ingestelde klokopsies het, word CNT1 en CNT3 gebruik as bemiddelaars om die CLK aan beide FSM's deur te gee. Die twee tellers is op dieselfde waarde gestel, wat 25 is vir hierdie instruksies. Ons kan die veranderingsnelheid van die PWM -waarde verander deur hierdie teenwaardes te verander.

Die waarde van die FSM's word verhoog en verminder deur die seine '+' en '-', wat afkomstig is van die SPI Parallel Output.

Stap 3: Beheereenheid

Beheereenheid
Beheereenheid

Binne die beheereenheid word die ontvangen byte van die Bluetooth -module na die SPI Parallel Output geneem en dan na die gepaardgaande funksies oorgedra. Aanvanklik sal die uitsette van PWM CS1 en PWM CS2 nagegaan word om te sien of die PWM -patroon geaktiveer is of nie. As dit geaktiveer is, sal dit bepaal watter kanaal die PWM deur LUT4, LUT6 en LUT7 gaan uitvoer.

LUT9, LUT11 en LUT14 is verantwoordelik vir die kontrole van die toestand van die ander twee LED's. LUT10, LUT12 en LUT13 kyk of die Handmatige knoppie geaktiveer is of nie. As die handmatige modus aktief is, werk die RGB -uitsette volgens die uitgangstoestande D0, D1, D2, wat verander word elke keer as op die kleurknoppie gedruk word. Dit verander namate die stygende rand afkomstig is van CNT9, wat gebruik word as 'n stygende randontgrendeling.

Speld 20 is as 'n invoer gekonfigureer en word gebruik om te skakel tussen handmatige en Bluetooth -beheer.

As die handmatige modus gedeaktiveer is en die outomatiese mengermodus geaktiveer is, verander die kleur elke 500 ms met die stygende rand van CNT7. 'N 4-bis LUT1 word gebruik om' 000'-toestand vir D0 D1 D2 te voorkom, aangesien hierdie toestand die lig laat afskakel tydens die outomatiese mengermodus.

As die handmatige modus, die PWM -modus en die outomatiese mengermodus nie geaktiveer is nie, vloei die rooi, groen en blou SPI -opdragte na penne 12, 13 en 14, wat as uitsette gekonfigureer is en aan die eksterne RGB -LED gekoppel is.

DFF1, DFF2 en DFF3 word gebruik om 'n 3-bis binêre teller te bou. Die tellerwaarde neem toe met CNT7 -pulse wat deur P14 in die outomatiese mengermodus gaan, of as gevolg van seine wat vanaf die kleurknoppie (PIN3) in die handmatige modus kom.

Stap 4: Android -toepassing

Android -toepassing
Android -toepassing
Android -toepassing
Android -toepassing
Android -toepassing
Android -toepassing
Android -toepassing
Android -toepassing

In hierdie afdeling gaan ons 'n Android -toepassing bou wat die gebruikerskeuses van die gebruiker sal monitor en vertoon. Die koppelvlak bestaan uit twee afdelings: die eerste afdeling bevat 'n stel knoppies wat vooraf gedefinieerde kleure het, sodat wanneer een van hierdie knoppies ingedruk word, 'n LED van dieselfde ooreenstemmende kleur brand. Die tweede gedeelte (MIX vierkant) skep 'n gemengde kleur vir die gebruiker.

In die eerste afdeling kies die gebruiker die LED -pen waarmee hy wil hê dat die PWM -sein moet deurgaan; die PWM -sein kan slegs na een pen op 'n slag oorgedra word. Die onderste lys beheer die ander twee kleure logies aan/uit tydens die PWM -modus.

Die outomatiese mengerknoppie is verantwoordelik vir die uitvoering van die outomatiese patroon wat die lig verander, waar die lig elke halfsekonde verander. Die MIX -afdeling bevat twee blokkies, sodat die gebruiker kan besluit watter twee kleure saamgevoeg moet word.

Ons het die toepassing op die MIT -app -uitvinderwebwerf gebou. Dit is 'n webwerf waarmee Android -toepassings gebou kan word sonder vooraf sagteware -ervaring met behulp van grafiese sagteware blokke.

Eers het ons 'n grafiese koppelvlak ontwerp deur 'n stel knoppies by te voeg wat verantwoordelik is vir die vertoning van die vooraf gedefinieerde kleure, ons het ook twee blokkies bygevoeg, en elke lys het drie elemente; elke element word in sy individuele boks uiteengesit, soos getoon in figuur 5.

Die knoppies in die gebruikerskoppelvlak is gekoppel aan sagteware -opdragte: al die opdragte wat die app via Bluetooth sal stuur, sal in byte -formaat wees, en elke bietjie is verantwoordelik vir 'n spesifieke funksie. Tabel 1 toon die vorm van die opdragrame wat na die GreenPAK gestuur is.

Die eerste drie bisse, B0, B1 en B2, hou die toestand van RGB -LED's in die direkte beheermodus deur die knoppies van die vooraf gedefinieerde kleure. As u op een van hulle klik, word die ooreenstemmende waarde van die knoppie gestuur, soos getoon in tabel 2.

Die bisse B3 en B4 bevat die '+' en '-' opdragte, wat verantwoordelik is vir die toename en afname van die pulswydte. As die knoppie ingedruk word, sal die bitwaarde 1 wees, en as die knoppie losgemaak word, sal die bitwaarde 0 wees.

Die B5- en B6 -bisse is verantwoordelik vir die keuse van die pen (kleur) waardeur die PWM -sein sal gaan: die kleurbenamings van hierdie bisse word in tabel 3. Die laaste bietjie, B7, is verantwoordelik vir die aktivering van die outomatiese menger.

Figuur 6 en figuur 7 demonstreer die proses om knoppies met programmeerblokke te koppel wat verantwoordelik is vir die stuur van die vorige waardes.

Om die volledige ontwerp van die toepassing te sien, kan u die aangehegte lêer ".aia" met die projeklêers aflaai en dit op die hoofwebwerf oopmaak.

Figuur 8 hieronder toon die boonste vlak stroombaan diagram.

Stap 5: Resultate

Die kontroleerder is suksesvol getoets en die kleurvermenging, asook ander funksies, het behoorlik gewerk.

Afsluiting

In hierdie Instructable is 'n slim gloeilampbaan gebou om draadloos deur 'n Android -toepassing beheer te word. Die GreenPAK CMIC wat in hierdie projek gebruik is, het ook gehelp om verskeie noodsaaklike komponente vir ligbeheer in een klein IC te verkort en in te sluit.

Aanbeveel: