Cuprins:

Luminează-mă! un control în timp real al benzii cu platforme cu LED-uri: 5 pași (cu imagini)
Luminează-mă! un control în timp real al benzii cu platforme cu LED-uri: 5 pași (cu imagini)
Anonim
Luminează-mă! un control de bandă cu LED multiplataforme în timp real
Luminează-mă! un control de bandă cu LED multiplataforme în timp real
Luminează-mă! un control de bandă cu LED multiplataforme în timp real
Luminează-mă! un control de bandă cu LED multiplataforme în timp real
Luminează-mă! un control de bandă cu LED multiplataforme în timp real
Luminează-mă! un control de bandă cu LED multiplataforme în timp real

Luminează-mă! este un sistem pe care l-am inventat pentru a controla o bandă LED RGB în timp real, păstrând în același timp costul scăzut și performanța ridicată.

Serverul este scris în Node.js și, prin urmare, este multiplataformabil.

În exemplul meu, folosesc un Raspberry Pi 3B pentru utilizare pe termen lung, dar PC-ul meu Windows pentru a demonstra și a depana.

Banda cu 4 pini este controlată de o placă de tip Arduino Nano, care execută comenzi date în serie pentru a trimite semnale PWM către trei tranzistoare comutând + 12VDC în pinul de culoare corespunzător al benzii.

LightMeUp! sistemul verifică, de asemenea, propria temperatură, după ce este peste 60 ° C (140 ° F), pornește două ventilatoare de computer de 12VDC încorporate în carcasă, pentru a se răci pentru a îmbunătăți durata de viață a circuitului.

O altă caracteristică a LightMeUp! este să iluminezi o sticlă Bombay-Sapphire Gin, dar nu acesta este obiectivul acestui instructabil.

Bucură-te de lectură:)

Provizii

  • Arduino Nano (sau orice alt microcontroler ATmega328 / superior)
  • Raspberry Pi 3 Model B cu Node.js instalat (sau orice alt computer)
  • Banda LED cu 12 pini RGB cu 4 pini
  • Alimentare 12V 3A
  • Cabluri jumper (bărbat-bărbat dacă folosiți o placă de tratare, desigur)
  • Breadboard (opțional)
  • 2 ventilatoare pentru computer 12V DC (opțional)
  • 3x TIP120 Darlington Transistor cu radiator (4 dacă doriți să includeți ventilatoare de răcire)
  • 2 LED-uri de stare roșu și verde (opțional)
  • Rezistor de temperatură 6, 7K NTC + rezistor de 6, 7K (opțional)
  • Cablu de date USB-Mini la USB 2.0 (pentru ca Raspberry Pi să comunice cu Arduino)
  • Hub USB alimentat extern (opțional, numai pentru Raspberry Pi)

Pasul 1: Înțelegeți sistemul

Înțelegeți sistemul
Înțelegeți sistemul

Luminează-mă! se bazează pe circuite electronice foarte simple.

Avem un fel de computer (în acest caz un Raspberry Pi) care comunică în serie cu placa noastră de microcontroler. Această placă execută apoi comenzi seriale specifice, cum ar fi „RGB (255, 255, 255)”, care ar transforma LED-ul nostru în bandă albă.

Odată ce am obținut cele trei valori pentru ROȘU, VERZ și ALBASTRU necesare pentru banda LED cu 4 pini, executăm analogWrite (pin, valoare) pentru a furniza tranzistorul TIP120 cu un semnal PWM.

Acest semnal PWM permite tranzistorului să comute pinul de culoare corespunzător pe care colectorul este conectat la masă, într-un anumit grad sau complet pornit / oprit. Da, o mulțime de „to” s:)

Amestecând cele trei ieșiri ale tranzistoarelor cu pinii de culoare ai benzilor LED, putem crea practic orice culoare dorim!

Acum, cu această înțelegere, putem ataca cea mai mare provocare a acestui proiect, serverul web și conexiunea sa serială la Arduino.

Pasul 2: Scrierea WebSocketServer

Scrierea WebSocketServer
Scrierea WebSocketServer

Acum, trebuie să creăm un anumit tip de server de web, care ne permite să transferăm date înainte și înapoi fără a fi reîmprospătate o dată pentru a realiza un control în timp real al benzii LED.

Vă rugăm să rețineți că, desigur, comunicarea în timp real este imposibilă, vor exista întotdeauna cel puțin câteva milisecunde de întârziere implicate, dar pentru ochiul uman este considerabilă ca și în timp real.

Acest lucru se poate realiza cu ușurință utilizând biblioteca socket.io dacă utilizați Node.js așa cum am făcut. Cu toate acestea, vă puteți lipi oricând de limbajul de programare preferat, desigur.

Vom avea de-a face cu o conexiune web care ne permite să transferăm date de intrare precum culoarea pe care doriți să setați banda LED sau date de stare precum „LED ON” bidirecțional, fără reîmprospătare.

O altă caracteristică foarte importantă pe care ar trebui să o aibă serverul, dar nu trebuie, este o simplă autentificare. Mi-am bazat autentificarea pe un câmp simplu de nume de utilizator și parolă. Aceste informații sunt apoi postate pe / ruta de conectare a serverului, care apoi compară numele de utilizator cu o listă de utilizatori (fișierul.txt) și parola corespunzătoare în formularul său criptat SHA256. Nu vrei ca vecinii tăi să se încurce cu banda LED în timp ce te bucuri de băutura ta preferată pe cel mai confortabil scaun, nu?

Acum vine inima serverului, comunicarea în serie.

Serverul dvs. trebuie să poată comunica în serie - în Node.js acest lucru se poate realiza deschizând un port utilizând biblioteca „serialport”. Dar mai întâi determinați numele portului dvs. arduino de pe computerul care găzduiește serverul. În funcție de sistemul dvs. de operare, porturile vor avea nume diferite, a.e. pe Windows aceste porturi sunt denumite porturi "COMx", în timp ce pe Linux sunt denumite "/ dev / ttyUSBx", unde x este numărul portului USB.

Pasul 3: Stabiliți un protocol de comenzi seriale

Stabiliți un protocol de comenzi seriale
Stabiliți un protocol de comenzi seriale

În imaginea de mai sus, vedeți codul IDE Arduino real responsabil pentru controlul RGB. Scopul acestui pas este de a face serverul dvs. auto-scris și placa Arduino să discute cu succes.

Odată ce ți-ai deschis portul serial cu succes, trebuie să poți trimite comenzi către placa care se ocupă de dorințele tale. De exemplu, dacă desenăm un deget deasupra selectorului de culori de pe pagina web HTML, codul RGB ar trebui trimis la server, care apoi îl trimite către Arduino, astfel încât să proceseze valorile setate.

Am folosit jscolor, au o implementare excelentă a unui element de culegere a culorilor de înaltă calitate, care deține un eveniment numit „onFineChange”, care vă permite procesarea datelor din selectorul de culori imediat ce valorile sale se schimbă.

Recomandat: