Inhoudsopgave:

Upcycled wekker Smart Light - Ajarnpa
Upcycled wekker Smart Light - Ajarnpa

Video: Upcycled wekker Smart Light - Ajarnpa

Video: Upcycled wekker Smart Light - Ajarnpa
Video: Turning Old Alarm Clock into Night Lamp #bestoutofwaste #homedecor #diy 2024, November
Anonim
Upcycled wekker Smart Light
Upcycled wekker Smart Light
Upcycled wekker Smart Light
Upcycled wekker Smart Light
Upcycled wekker Smart Light
Upcycled wekker Smart Light

In dit project upcycle ik een volledig kapotte opwindwekker. De wijzerplaat is vervangen door 12 LED's, verlicht door een LED-strip rond de rand van de klok. De 12 LED's geven de tijd aan en de LED-strip is geprogrammeerd om als alarm te fungeren en op de ingestelde tijd op volle sterkte te gaan. Alles wordt aangestuurd door een Raspberry Pi Zero waardoor talloze integratie- en uitbreidingsmogelijkheden mogelijk zijn, zoals het automatisch synchroniseren van het lichtalarm met je telefoonalarm of het knipperen van de LED's wanneer je een e-mail ontvangt.

Het project maakt gebruik van relatief goedkope of hergebruikte componenten - het enige dat ik uiteindelijk heb gekocht, was de spanningsregelaar. Al het andere dat ik toevallig nog had liggen, zoals een stuk ledstrip. Deze Instructable zal je begeleiden bij hoe ik mijn kapotte klok een nieuw leven heb gegeven en hopelijk kan het je inspireren om iets van jezelf te upcyclen.

Stap 1: Onderdelen

Onderdelen
Onderdelen
Onderdelen
Onderdelen
Onderdelen
Onderdelen

Om alles te bedienen gaan we een Raspberry Pi Zero gebruiken, omdat deze klein is, weinig kost en kan worden verbonden met wifi, wat betekent dat we geen realtime klok nodig hebben en daarom de code gemakkelijk op afstand vanaf een laptop kunnen bijwerken. Tenzij je een Pi Zero W hebt, maken we verbinding met een wifi-netwerk via een USB wifi-dongle.

Hier is een lijst van de onderdelen die ik heb gebruikt, maar de meeste dingen kunnen worden verwisseld voor geschikte alternatieven. In plaats van een Raspberry Pi zou je bijvoorbeeld een Arduino met een realtime klok kunnen gebruiken om het project te besturen.

Gebruikte onderdelen

  • Een oude wekker
  • 30cm warmwitte ledstrip
  • 1x Raspberry Pi Zero + micro SD-kaart
  • 1x USB WiFi-dongle + micro-USB naar USB-converter
  • 12x LED's
  • 12x 330ohm weerstanden (gebruik hoger als je dimmer LED's wilt)
  • 1x TIP31a (of andere npn vermogenstransistor of MOSFET)
  • 1x 1k weerstand
  • 1x LM2596 DC-DC verstelbare buck-converter (stapt 12V naar 5V voor de Raspberry Pi)
  • 1x 12v voeding (+ manier om in je project te komen)
  • 10 cm x 10 cm hout voor de wijzerplaat (moet dun zijn om uw LED's in te monteren)
  • Verschillende stukken draad van verschillende kleuren

Handige dingen om te hebben

  • Soldeerbout + soldeer
  • Hete lijm
  • Multimeter
  • Breadboard
  • Vrouwelijke koppennen
  • Micro SD-kaartlezer of converter
  • Een computer
  • Mini HDMI-adapter + HDMI-scherm als je de Pi-desktopomgeving wilt gebruiken

Stap 2: De Raspberry Pi instellen

De Raspberry Pi instellen
De Raspberry Pi instellen
De Raspberry Pi instellen
De Raspberry Pi instellen

Besturingssysteem

Omdat de Raspberry Pi niet op een scherm wordt aangesloten, heb ik ervoor gekozen om Raspbian Buster Lite te gebruiken die niet met een desktopomgeving wordt geleverd. Als je nieuwer bent bij Raspberry Pi, wil je misschien vasthouden aan de standaard Raspbian Buster die bij een desktop wordt geleverd. Als u niet zeker weet hoe u uw besturingssysteem moet installeren, is dit een geweldige bron. Beide besturingssystemen kunnen worden gedownload van de Raspberry Pi-website.

Voed de Pi op dit moment via de Micro USB-voedingsingang. Sluit ook de USB WiFi-dongle aan.

Praten met de Raspberry Pi

Als alles eenmaal is ingepakt, is het vrij moeilijk om toegang te krijgen tot de Pi als je de code wilt wijzigen, enz. Door SSH te gebruiken, kun je verbinding maken met de Pi en deze vanaf een andere computer bedienen. Dit is standaard niet ingeschakeld, maar we kunnen dit doen door eenvoudig een map met de naam ssh te maken in de opstartpartitie van uw SD-kaart. Als je al bent ingelogd op je Pi, kun je dit ook doen door sudo raspi-config in de Terminal te typen en naar Interfacing-opties > SSH te gaan en Ja te kiezen om het in te schakelen.

Nu kunt u verbinding maken met uw Pi op een andere computer. Op Mac of Linux kunt u uw terminaltoepassing gebruiken, maar op de meeste versies van Windows moet u een SSH-client zoals PuTTY installeren. Maak verbinding met de Pi door ssh pi@ te typen waarbij hostnaam wordt vervangen door de hostnaam van het IP-adres van uw Pi. De standaard hostnaam is raspberrypi.local. Het zal u vragen om een wachtwoord dat, als u het nog niet heeft gewijzigd, framboos is.

Benodigdheden installeren

Zorg er eerst voor dat alles up-to-date is door sudo apt update uit te voeren en vervolgens sudo apt full-upgrade.

Om er zeker van te zijn wat we nodig hebben om de GPIO-pinnen op het Pi-type te besturen, sudo apt-get install python-rpi.gpio en sudo apt-get install python3-rpi.gpio. Deze zouden al op de volledige versie van Raspbian moeten zijn geïnstalleerd.

De code

Hier is de code om te downloaden om het allemaal werkend te krijgen. Als u een desktopomgeving gebruikt, plak deze dan in uw map Documenten.

Als u de opdrachtregel van SSH gebruikt, navigeert u naar uw thuismap door cd ~/Documents te typen en op enter te drukken. Maak een nieuw bestand met de naam test1.py met nano test1.py. Hiermee wordt de nano-teksteditor geopend waar u de code van het gedownloade test1.py-bestand kunt plakken. CTRL-O en druk op enter om het bestand op te slaan en CTRL-X om de editor af te sluiten. Herhaal het proces voor de overige bestanden.

Stap 3: De LED-strip installeren

De LED-strip installeren
De LED-strip installeren
De LED-strip installeren
De LED-strip installeren

Steek eerst de LED-strip in de klok om te zien hoeveel je nodig hebt, markeer deze lengte en knip de strip af op het volgende snijpunt zoals afgebeeld. Het is een stuk makkelijker om draden aan de strip te solderen voordat de strip vast komt te zitten. Dit is een redelijk goede handleiding over hoe je dit moet doen, maar als je het niet zeker weet, zou ik gewoon oefenen op de soldeerverbinding op het stuk waar je zojuist je strip uit hebt gesneden. Soldeer één draad aan het positieve soldeerpunt en één draad aan het negatieve. Zorg ervoor dat je test of je ledstrip werkt voordat je hem in je klok steekt.

Omdat de LED-strip die ik gebruikte was gebruikt voordat deze zijn zelfklevende achterkant had verloren, dus ik moest hete lijm gebruiken om de strip rond de rand van de klokrand te bevestigen. Als u te lang bent, bedek dan het punt waar de draden zijn bevestigd. Misschien wil je de strip later installeren, maar ik vond het gemakkelijker om hem in de klok weg te werken.

Stap 4: De LED-strip bedienen

De LED-strip bedienen
De LED-strip bedienen

De LED-strip aansluiten

De LED-strip werkt op 12V en kan dus niet rechtstreeks vanuit de Pi worden gevoed. Om ze te besturen, gebruiken we een vermogenstransistor (bijv. TIP31a) die is aangesloten op de Pi zoals hierboven weergegeven. Ik raad aan om eerst te controleren of dit allemaal werkt op een breadboard.

  • Verbind GPIO 19 met de basis via een weerstand van 1k
  • De zender moet worden aangesloten op GND
  • Sluit de collector aan op de minpool van de ledstrip
  • Sluit de positieve LED-stripklem aan op +12V

Testen

Navigeer in de opdrachtregel naar uw documentenmap (cd ~/Documents) en typ python test1.py en voer in. U zou de LED-strip in helderheid moeten zien toenemen en afnemen. Druk op CTRL-C om het programma af te sluiten. U kunt het bestand (nano test1.py) bewerken om de snelheid en helderheid in het programma te wijzigen.

importeer RPi. GPIO als GPIO importeer tijd GPIO.setmode(GPIO. BCM) # Gebruik de BCM-pinout GPIO.setwarnings(False) # Negeer waarschuwingen over pinnen die voor andere dingen worden gebruikt ledStripPin = 19 # LED-strip wordt aangestuurd vanaf deze pin GPIO.setup (ledStripPin, GPIO. OUT) # Stel ledStripPin in als uitgang pwm = GPIO. PWM(ledStripPin, 100) # PWM op ledStripPin met frequentie 100Hz dutyCycle = 0 # Initiële helderheid als percentage pwm.start(dutyCycle) probeer: while True: for dutyCycle in range(0, 101, 1): # Fade up pwm. ChangeDutyCycle(dutyCycle) time.sleep(0.05) for dc in range(95, -1, -1): # Fade down pwm. ChangeDutyCycle(dc) time.sleep(0.05) behalve KeyboardInterrupt: # Druk op CTRL-C om te stoppen, en dan: pwm.stop() # Stop de pwm GPIO.cleanup() # Ruim de GPIO-pinnen op

Stap 5: De wijzerplaat maken

De wijzerplaat maken
De wijzerplaat maken
De wijzerplaat maken
De wijzerplaat maken
De wijzerplaat maken
De wijzerplaat maken

Snijd het stuk hout voor je klok met de voorkant naar beneden op maat zodat het in je klok past. Ik heb de mijne op ongeveer 3 cm van de voorkant laten rusten. Boor 12 gaten met de diameter van uw LED's (meestal 3 mm of 5 mm) op een onderlinge afstand van 30 graden. Schuur de voorkant naar beneden en breng een afwerking naar keuze aan. Plaats de LED's vanaf de achterkant zo dat ze naar voren wijzen. Ik heb hete lijm gebruikt om de LED's op hun plaats te houden met de positieve pool (langere draad) naar binnen gericht. De grootte van mijn wijzerplaat betekende dat ik alle negatieve terminals aan elkaar kon solderen (zie hierboven), dus er was maar één draad nodig om alle 12 LED's op GND aan te sluiten. Soldeer vervolgens een draad aan elke LED.

Als je dit op een breadboard wilt testen, denk er dan aan om eerst een weerstand (330 ohm is vrij standaard) in serie te zetten met elke LED voordat je deze aansluit op een van de Pi GPIO-pinnen. Speel wat met de waarde van de weerstand die je gebruikt om een helderheidsniveau te krijgen waar je tevreden mee bent. Een t-schoenmaker is erg handig om de pinnen van de Pi naar een breadboard te breken, hoewel je hiervoor de koppinnen moet solderen. Gebruik test2.py (uitvoer met python test2.py) maar zorg ervoor dat je eerst het programma bewerkt en voer de Pi's GPIO-pinnen in die je voor elke LED hebt gebruikt.

importeer RPi. GPIO als GPIO

importtijd GPIO.setmode(GPIO. BCM) # Gebruik de BCM-pinout GPIO.setwarnings (False) # Negeer waarschuwingen over pinnen die voor andere dingen worden gebruikt # Vervang een, twee, … door het bijbehorende pinnummer hourPin = [een, twee, drie, vier, vijf, zes, zeven, acht, negen, tien, elf, twaalf] # De pinnen waarmee de LED's zijn verbonden van 1-12 voor i in bereik (0, 12): GPIO.setup(hourPin, GPIO. OUT) # Stel alle hourPins in als uitgangen GPIO.output(hourPin, 0) # Zorg ervoor dat alle LED's uit zijn try: while True: for i binnen bereik (0, 12) GPIO.output(hourPin, 1): time.sleep(0.05) for i in range(0, 12) GPIO.output(hourPin, 0): time.sleep(0.05) behalve KeyboardInterrupt: # Druk op CTRL-C om te stoppen, en dan: GPIO.cleanup() # Ruim de GPIO-pinnen op

Stap 6: De Pi. aanzetten

De Pi. aanzetten
De Pi. aanzetten

We hebben een gemakkelijke manier nodig om 5V naar de Pi Zero te krijgen, zodat we de micro-USB-kabel kunnen verwijderen die we tot nu toe hebben gebruikt om hem van stroom te voorzien. Er zijn een aantal oplossingen die 12V naar 5V verlagen, zoals een LM7805 lineaire spanningsregelaar, maar deze zijn niet erg efficiënt, dus in plaats daarvan heb ik ervoor gekozen om de efficiëntere instelbare buck-converter te gebruiken met behulp van de LM2596-chip. NB hierbij moet je de potentiometer draaien totdat de uitgangsspanning naar behoefte is teruggebracht tot 5V, dus je hebt een manier nodig om de spanning te meten.

Het gebruik van de LM2596 is eenvoudig: sluit de +12V aan op IN+, aarde op IN-. De Pi kan rechtstreeks op 5V worden aangesloten door OUT+ aan te sluiten op een van de 5V-pinnen van de Pi, maar zorg ervoor dat je de uitgangsspanning hebt gewijzigd in 5V voordat je dit doet, anders bak je je Pi!

Stap 7: Voltooi het circuit en de verpakking

Voltooi het circuit en de verpakking
Voltooi het circuit en de verpakking
Voltooi het circuit en de verpakking
Voltooi het circuit en de verpakking
Voltooi het circuit en de verpakking
Voltooi het circuit en de verpakking
Voltooi het circuit en de verpakking
Voltooi het circuit en de verpakking

We hebben nu alle drie de elementen van het circuit behandeld die samen worden weergegeven in het algemene circuit hierboven. Om ruimte te besparen en het circuit netter te maken, plaatst u uw circuit op een stripboard of prototypeboard. Soldeer eerst de kleinste componenten, de weerstanden, dan de vermogenstransistor, eventuele connectoren en tot slot de draden. Plan je circuit voordat je gaat solderen om er zeker van te zijn dat je overal ruimte voor hebt.

Ik heb alles aangesloten op een prototype-printplaat en vrouwelijke header-pinnen gebruikt, zodat de Pi rechtstreeks op de print kon worden gemonteerd. De LED's op de wijzerplaat zijn verbonden via weerstanden aan de ene kant van het bord en ik heb aan de andere kant van het bord ruimte vrijgehouden voor de vermogenstransistor en vrij voor andere schakelingen die ik later misschien wil toevoegen.

Bevestig de wijzerplaat aan de klok en zorg ervoor dat alle elektronica erin past. Alles zat redelijk strak voor mij, dus je moet misschien wat herschikken. Sluit de voeding aan en voer test1.py en test2.py van SSH uit om te controleren of alles werkt voordat u de achterkant bevestigt.

Stap 8: Upload de code + voltooi

Upload de code + voltooi
Upload de code + voltooi
Upload de code + voltooi
Upload de code + voltooi
Upload de code + voltooi
Upload de code + voltooi

De code

Tot slot, als je dat nog niet hebt gedaan, upload je de code en pas je deze naar wens aan (met behulp van nano bestandsnaam.py). Het voordeel van verbinding maken met de Pi via SSH is dat je de code kunt bijwerken zonder de klok te openen.

Deze python-programma's uit stap 2 doen het volgende:

  • light_clock_simple.py geeft eenvoudig het uur weer op de LED's en vervaagt op bepaalde tijden op en neer over de LED-strip
  • light_clock_pwm.py is hetzelfde als hierboven, maar maakt het ook mogelijk de helderheid van de LED's te verminderen en de minuten op een andere helderheid dan de uren weer te geven. Je moet met de helderheidsniveaus van beide spelen, zodat het contrast tussen de twee merkbaar is

Deze zouden een solide basis moeten bieden voor het toevoegen aan de code, u wilt bijvoorbeeld een knop toevoegen om het lichtalarm te snoozen.

Om het programma te starten wanneer de Pi opstart, moeten we '@reboot nohup python light_clock_pwm.py &' toevoegen aan het einde van het crontab-bestand dat kan worden geopend vanaf de terminal met crontab -e. Start uw Raspberry Pi opnieuw op om te controleren of deze werkt met sudo shutdown -r now.

Potentiële toevoegingen

Hier zijn enkele ideeën voor extra functionaliteit die kan worden toegevoegd

  • Een snooze-knop toevoegen
  • Een lampmodus toevoegen
  • Verbinding maken met IFTTT (het lampje kan bijvoorbeeld gaan branden wanneer het alarm van uw telefoon afgaat / knippert wanneer e-mail wordt ontvangen)
  • Aanraakcapaciteit toevoegen, dwz van de klok een aanraaklamp maken

Bij het gebruik van PWM merk je misschien dat de LED soms, vooral bij een lagere helderheid, een beetje flikkert. Dit komt omdat de Pi software PWM gebruikt, zodat CPU-processen de duty-cycle kunnen beïnvloeden. Het hebben van minder processen helpt hierbij, dus ik gebruikte het uitgeklede besturingssysteem Raspbian Lite. Hardware PWM is ook beschikbaar op een paar pinnen, dus als flikkering een probleem blijkt te zijn, is dit misschien iets om naar te kijken.

Ik hoop dat je deze Instructable informatief hebt gevonden en dat je je geïnspireerd voelt om een oude wekker te upcyclen of elementen van de code voor je eigen project te gebruiken.

LED Strip Snelheid Uitdaging
LED Strip Snelheid Uitdaging
LED Strip Snelheid Uitdaging
LED Strip Snelheid Uitdaging

Tweede prijs in de LED Strip Speed Challenge

Aanbevolen: