Cuprins:

Lumina inteligentă a ceasului cu alarmă reciclat: 8 pași (cu imagini)
Lumina inteligentă a ceasului cu alarmă reciclat: 8 pași (cu imagini)

Video: Lumina inteligentă a ceasului cu alarmă reciclat: 8 pași (cu imagini)

Video: Lumina inteligentă a ceasului cu alarmă reciclat: 8 pași (cu imagini)
Video: I-am luat Rolex in Dubai si tot nu ma suporta... 2024, Noiembrie
Anonim
Lumina inteligentă a ceasului cu alarmă reciclat
Lumina inteligentă a ceasului cu alarmă reciclat
Lumina inteligentă a ceasului cu alarmă reciclat
Lumina inteligentă a ceasului cu alarmă reciclat
Lumina inteligentă a ceasului cu alarmă reciclat
Lumina inteligentă a ceasului cu alarmă reciclat

În acest proiect, am reciclat un ceas cu alarmă de lichidare complet rupt. Fața ceasului este înlocuită de 12 LED-uri, iluminate de o bandă LED în jurul marginii ceasului. Cele 12 LED-uri indică ora și banda LED este programată să acționeze ca o alarmă, ajungând la luminozitate maximă la ora setată. Totul este controlat de un Raspberry Pi Zero care permite nenumărate posibilități de integrare și extindere, cum ar fi sincronizarea automată a alarmei luminoase cu alarma telefonului sau intermitentul LED-urilor atunci când primiți un e-mail.

Proiectul folosește componente relativ ieftine sau refolosite - singurul lucru pe care am ajuns să-l cumpăr a fost regulatorul de tensiune. Orice altceva mi s-a întâmplat să am întins în jur, cum ar fi o decupare a benzii LED. Acest Instructable vă va ghida prin modul în care am dat o nouă viață ceasului meu rupt și, sperăm, vă poate inspira să faceți ceva propriu.

Pasul 1: Piese

Părți
Părți
Părți
Părți
Părți
Părți

Pentru a controla totul, vom folosi un Raspberry Pi Zero deoarece este mic, costă foarte puțin și poate fi conectat la WiFi, ceea ce înseamnă că nu avem nevoie de ceas în timp real și, prin urmare, putem actualiza cu ușurință codul de la distanță de pe un laptop. Dacă nu aveți un Pi Zero W, ne vom conecta la o rețea WiFi folosind un dongle USB WiFi.

Iată o listă a pieselor pe care le-am folosit, dar cele mai multe lucruri pot fi schimbate pentru alternative adecvate. De exemplu, în locul unui Raspberry Pi, puteți utiliza un Arduino cu un ceas în timp real pentru a controla proiectul.

Piese utilizate

  • Un vechi ceas cu alarmă
  • 30cm de bandă LED albă caldă
  • 1x card Raspberry Pi Zero + micro SD
  • 1 x USB WiFi dongle + micro USB la USB convertor
  • 12x LED-uri
  • 12x rezistențe 330ohm (utilizați mai mare dacă doriți LED-uri mai slabe)
  • 1x TIP31a (sau alt tranzistor de putere npn sau MOSFET)
  • 1x rezistor 1k
  • 1x LM2596 convertor DC-DC reglabil (redus 12V pentru 5V pentru Raspberry Pi)
  • 1x sursă de alimentare 12v (+ modalitate de a intra în proiect)
  • 10cm x 10cm lemn pentru fața ceasului (ar trebui să fie suficient de subțire pentru a vă monta LED-urile)
  • Diverse bucăți de sârmă de culoare diferită

Lucruri utile de avut

  • Fier de lipit + lipit
  • Lipici fierbinte
  • Multimetru
  • Pană de pâine
  • Pinii antetului feminin
  • Cititor sau convertor de carduri Micro SD
  • Un calculator
  • Mini adaptor HDMI + ecran HDMI dacă doriți să utilizați mediul desktop Pi

Pasul 2: Configurarea Raspberry Pi

Configurarea Raspberry Pi
Configurarea Raspberry Pi
Configurarea Raspberry Pi
Configurarea Raspberry Pi

Sistem de operare

Deoarece Raspberry Pi nu va fi conectat la un ecran, am ales să folosesc Raspbian Buster Lite care nu vine cu un mediu desktop. Dacă sunteți mai nou în Raspberry Pi, vă recomandăm să respectați Raspbian Buster standard care vine cu un desktop. Dacă nu sunteți sigur cum să instalați sistemul de operare, aceasta este o resursă excelentă. Ambele sisteme de operare pot fi descărcate de pe site-ul web Raspberry Pi.

Pentru moment, alimentați Pi prin intrarea sa de alimentare Micro USB. Conectați și dongle-ul USB WiFi.

Vorbind cu Raspberry Pi

Odată ce totul este împachetat, este destul de greu să accesați Pi-ul dacă doriți să schimbați codul etc. Utilizarea SSH vă permite să vă conectați la Pi și să-l controlați de pe alt computer. Acest lucru nu este activat în mod implicit, dar o putem face prin simpla realizare a unui folder numit ssh în partiția de boot a cardului SD. Dacă v-ați conectat deja la Pi, puteți face acest lucru tastând sudo raspi-config în Terminal și navigând la Opțiuni de interfațare> SSH și alegând Da pentru a o activa.

Acum vă puteți conecta la Pi pe un alt computer. Pe Mac sau Linux puteți utiliza aplicația terminală, dar pe majoritatea versiunilor de Windows va trebui să instalați un client SSH, cum ar fi PuTTY. Conectați-vă la Pi tastând ssh pi @ unde este hostname înlocuiește cu numele de gazdă al adresei IP a Pi. Numele de gazdă implicit este raspberrypi.local. Vă va cere o parolă care, dacă nu ați schimbat-o încă, este zmeură.

Instalarea lucrurilor necesare

Mai întâi asigurați-vă că totul este actualizat executând sudo apt update și apoi sudo apt full-upgrade.

Pentru a ne asigura că trebuie să controlăm pinii GPIO de pe tipul sudo apt-get install python-rpi.gpio și sudo apt-get install python3-rpi.gpio. Acestea ar trebui să fie deja instalate pe versiunea completă a Raspbian.

Codul

Iată codul de descărcat pentru ca totul să funcționeze. Dacă utilizați un mediu desktop, lipiți-le în folderul Documente.

Dacă utilizați linia de comandă a SSH, navigați la folderul de acasă tastând cd ~ / Documents și apăsând Enter. Creați un fișier nou numit test1.py cu nano test1.py. Aceasta va deschide editorul de text nano unde puteți lipi codul fișierului descărcat test1.py. CTRL-O și apăsați Enter pentru a salva fișierul și CTRL-X pentru a părăsi editorul. Repetați procesul pentru fișierele rămase.

Pasul 3: Instalarea benzii LED

Instalarea benzii LED
Instalarea benzii LED
Instalarea benzii LED
Instalarea benzii LED

Mai întâi introduceți banda LED în ceas pentru a vedea cât de mult veți avea nevoie, marcați această lungime și tăiați banda la următorul punct de tăiere, așa cum se arată. Este mult mai ușor să lipiți firele pe bandă înainte ca banda să se blocheze în loc. Acesta este un ghid destul de bun despre cum să faceți acest lucru, dar dacă nu sunteți sigur, aș practica doar îmbinarea lipită pe piesa din care tocmai v-ați tăiat banda. Lipiți un fir până la punctul de lipire pozitiv și un fir la negativ. Asigurați-vă că testați banda LED funcționează înainte de a o lipi în ceas.

Deoarece banda LED pe care am folosit-o a fost folosită înainte de a-și pierde suportul autoadeziv, a trebuit să folosesc adeziv fierbinte pentru a fixa banda în jurul marginii jantei ceasului. Dacă aveți o lungime excesivă, acoperiți punctul în care sunt atașate firele. Poate doriți să instalați banda mai târziu, dar mi s-a părut mai ușor să o ascundeți în ceas.

Pasul 4: Controlul benzii LED

Controlul benzii LED
Controlul benzii LED

Conectarea benzii LED

Banda LED funcționează pe 12V, deci nu poate fi alimentată direct de la Pi. Pentru a le controla, vom folosi un tranzistor de putere (de exemplu, TIP31a) conectat până la Pi așa cum se arată mai sus. Aș recomanda mai întâi să verificați dacă toate acestea funcționează pe o placă de calcul.

  • Conectați GPIO 19 la bază printr-un rezistor de 1k
  • Emițătorul ar trebui să fie conectat la GND
  • Conectați colectorul la borna negativă a benzii LED
  • Conectați borna pozitivă a benzii LED la + 12V

Testarea

În linia de comandă accesați folderul de documente (cd ~ / Documents) și tastați python test1.py și introduceți. Ar trebui să vedeți banda LED crescând și scăzând în luminozitate. Pentru a părăsi programul, apăsați CTRL-C. Puteți edita fișierul (nano test1.py) pentru a modifica viteza și luminozitatea din program.

import RPi. GPIO ca GPIOimport timp GPIO.setmode (GPIO. BCM) # Utilizați pinout-ul BCM GPIO.setwarnings (Fals) # Ignorați avertismentele despre pinii utilizați pentru alte lucruri ledStripPin = 19 # LED strip este condus de la acest pin GPIO.setup (ledStripPin, GPIO. OUT) # Setați ledStripPin ca ieșire pwm = GPIO. PWM (ledStripPin, 100) # PWM pe ledStripPin cu frecvență 100Hz dutyCycle = 0 # Luminozitate inițială ca procent pwm.start (dutyCycle) încercați: în timp ce True: pentru dutyCycle în intervalul (0, 101, 1): # Fade up pwm. ChangeDutyCycle (dutyCycle) time.sleep (0.05) pentru dc în intervalul (95, -1, -1): # Fade down pwm. ChangeDutyCycle (dc) time.sleep (0.05), cu excepția KeyboardInterrupt: # Apăsați CTRL-C pentru a ieși, apoi: pwm.stop () # Opriți pwm GPIO.cleanup () # Curățați pinii GPIO

Pasul 5: Realizarea feței ceasului

Realizarea feței de ceas
Realizarea feței de ceas
Realizarea feței de ceas
Realizarea feței de ceas
Realizarea feței de ceas
Realizarea feței de ceas

Tăiați bucata de lemn pentru ceas cu fața în jos pentru a se potrivi în ceas. Am făcut-o pe a mea să se odihnească la aproximativ 3cm de față. Găuriți 12 găuri cu diametrul LED-urilor dvs. (de obicei 3mm sau 5mm) la 30 de grade unul față de celălalt. Șlefuiți fața cu fața în jos și aplicați un finisaj la alegere. Din partea din spate așezați LED-urile astfel încât să indice spre față. Am folosit adeziv fierbinte pentru a menține LED-urile în poziție cu terminalul pozitiv (fir mai lung) orientat spre interior. Dimensiunea feței mele de ceas însemna că aș putea lipi toate terminalele negative împreună (vezi mai sus), astfel încât a fost nevoie de un singur fir pentru a conecta toate cele 12 LED-uri la GND. Apoi, lipiți un fir la fiecare LED.

Dacă doriți să testați acest lucru pe o placă de reținere, mai întâi nu uitați să utilizați un rezistor (330ohm este destul de standard) în serie cu fiecare LED înainte de al conecta la unul dintre pinii GPIO Pi. Joacă-te cu valoarea rezistenței pe care o folosești pentru a obține un nivel de luminozitate cu care ești mulțumit. Un t-cobbler este cu adevărat util pentru a rupe pinii Pi într-o placă de rulare, deși va trebui să lipiți pinii antetului pentru acest lucru. Utilizați test2.py (rulați utilizând python test2.py), dar asigurați-vă că editați mai întâi programul și introduceți pinii GPIO ai lui Pi pe care i-ați folosit pentru fiecare LED.

importați RPi. GPIO ca GPIO

timp de import GPIO.setmode (GPIO. BCM) # Folosiți pinout-ul BCM GPIO.setwarnings (Fals) # Ignorați avertismentele despre pinii folosiți pentru alte lucruri # Înlocuiți unul, doi, … cu numărul de pin corespunzător hourPin = [unul, doi, trei, patru, cinci, șase, șapte, opt, nouă, zece, unsprezece, doisprezece] # Pinii la care LED-urile sunt conectate de la 1-12 pentru i în intervalul (0, 12): GPIO.setup (hourPin , GPIO. OUT) # Setați toate hourPins ca ieșiri GPIO.output (hourPin , 0) # Asigurați-vă că toate LED-urile sunt oprite încercați: în timp ce True: pentru i în intervalul (0, 12) GPIO.output (hourPin , 1): time.sleep (0.05) pentru i în intervalul (0, 12) GPIO.output (hourPin , 0): time.sleep (0.05) cu excepția KeyboardInterrupt: # Apăsați CTRL-C pentru a ieși și apoi: GPIO.cleanup () # Curățați pinii GPIO

Pasul 6: Alimentarea Pi

Alimentarea Pi
Alimentarea Pi

Avem nevoie de o modalitate ușoară de a duce 5V la Pi Zero, astfel încât să putem scăpa de cablul micro USB pe care l-am folosit pentru al alimenta până acum. Există o serie de soluții care scad 12V la 5V, cum ar fi un regulator de tensiune liniar LM7805, dar acestea nu sunt foarte eficiente, așa că am ales să folosesc convertorul reglabil mai eficient cu ajutorul cipului LM2596. NB Cu aceasta va trebui să răsuciți potențiometrul până când tensiunea de ieșire este redusă la 5V, după cum este necesar, astfel încât veți avea nevoie de o modalitate de măsurare a tensiunii.

Utilizarea LM2596 este simplă: conectați + 12V la IN +, împământare la IN-. Pi poate fi conectat direct la 5V prin conectarea OUT + la unul dintre pinii 5V ai lui Pi, dar asigurați-vă că ați schimbat tensiunea de ieșire la 5V înainte de a face acest lucru sau vă veți prăji Pi-ul!

Pasul 7: Finalizați circuitul și ambalarea

Finalizați circuitul și ambalajul
Finalizați circuitul și ambalajul
Finalizați circuitul și ambalajul
Finalizați circuitul și ambalajul
Finalizați circuitul și ambalajul
Finalizați circuitul și ambalajul
Finalizați circuitul și ambalajul
Finalizați circuitul și ambalajul

Acum am acoperit toate cele trei elemente ale circuitului care sunt prezentate împreună în circuitul general de mai sus. Pentru a economisi spațiu și a face ca circuitul să fie mai curat, puneți-vă circuitul pe placa de benzi sau pe placa prototip. Mai întâi lipiți cele mai mici componente, rezistențele, apoi tranzistorul de putere, orice conectori și, în cele din urmă, firele. Planificați-vă circuitul înainte de a lipi pentru a vă asigura că aveți spațiu pentru toate.

Am conectat totul pe un PCB de prototipare și am folosit știfturi feminine, astfel încât Pi să se poată monta direct pe PCB. LED-urile de pe fața ceasului sunt conectate prin rezistențe pe o parte a plăcii și am păstrat spațiu pe cealaltă parte a plăcii pentru tranzistorul de putere și liber pentru orice alte circuite pe care aș dori să le adaug mai târziu.

Atașați fața ceasului la ceas și asigurați-vă că toate componentele electronice se potrivesc. Totul a fost destul de strâns pentru mine, așa că este posibil să trebuiască să faceți o rearanjare. Conectați sursa de alimentare și rulați test1.py și test2.py de la SSH pentru a verifica dacă totul funcționează înainte de a atașa partea din spate.

Pasul 8: Încărcați codul + Finalizare

Încărcați Codul + Finalizare
Încărcați Codul + Finalizare
Încărcați Codul + Finalizare
Încărcați Codul + Finalizare
Încărcați Codul + Finalizare
Încărcați Codul + Finalizare

Codul

În cele din urmă, dacă nu ați făcut-o deja, încărcați codul și adaptați-l după cum doriți (folosind nano filename.py). Avantajul conectării la Pi prin SSH este că puteți actualiza codul fără a deschide ceasul.

Aceste programe python de la Pasul 2 fac următoarele:

  • light_clock_simple.py afișează pur și simplu ora pe LED-uri și se estompează în sus și în jos pe banda LED la anumite ore
  • light_clock_pwm.py este același ca mai sus, dar permite și reducerea luminozității LED-urilor și afișează minutele la o luminozitate diferită de cea a orelor. Va trebui să vă jucați cu nivelurile de luminozitate ale ambelor, astfel încât contrastul dintre cele două este vizibil

Acestea ar trebui să ofere o bază solidă pentru adăugarea la cod, de exemplu, poate doriți să adăugați un buton pentru a amâna alarma luminii.

Pentru a lansa programul când boot-ul Pi trebuie să adăugăm „@reboot nohup python light_clock_pwm.py &” la sfârșitul fișierului crontab care poate fi deschis de la terminal cu crontab -e. Reporniți Raspberry Pi pentru a verifica dacă funcționează cu sudo shutdown -r acum.

Adăugări potențiale

Iată câteva idei de funcționalități suplimentare care ar putea fi adăugate

  • Adăugarea unui buton de amânare
  • Adăugarea unui mod lampă
  • Conectarea la IFTTT (de exemplu, lumina se poate aprinde atunci când alarma telefonului se stinge / clipește la primirea e-mailului)
  • Adăugarea capacității tactile adică transformă ceasul într-o lampă tactilă

Este posibil să observați când utilizați PWM că, uneori, în special cu luminozitate mai mică, LED-ul pâlpâie puțin. Acest lucru se datorează faptului că Pi utilizează software PWM, astfel încât procesele CPU pot afecta ciclul de funcționare. Având mai puține procese care rulează ajută la acest lucru, așa că am folosit sistemul de operare Raspbian Lite. Hardware PWM este, de asemenea, disponibil pe câțiva pini, deci dacă pâlpâirea se dovedește a fi o problemă, ar putea fi ceva de luat în considerare.

Sper că ați găsit acest instrument instructiv și fie că vă simțiți inspirați să ridicați un ceas cu alarmă vechi, fie să folosiți elemente ale codului pentru propriul dvs. proiect.

LED Strip Speed Challenge
LED Strip Speed Challenge
LED Strip Speed Challenge
LED Strip Speed Challenge

Premiul II la LED Strip Speed Challenge

Recomandat: