Innehållsförteckning:

Väderprognosklocka med gammalt larm och Arduino: 13 steg (med bilder)
Väderprognosklocka med gammalt larm och Arduino: 13 steg (med bilder)

Video: Väderprognosklocka med gammalt larm och Arduino: 13 steg (med bilder)

Video: Väderprognosklocka med gammalt larm och Arduino: 13 steg (med bilder)
Video: LDmicro 21: настройка режима C и Arduino Mega (программирование микроконтроллера с помощью LDmicro) 2024, Juli
Anonim
Väderprognosklocka med gammalt larm och Arduino
Väderprognosklocka med gammalt larm och Arduino
Väderprognosklocka med gammalt larm och Arduino
Väderprognosklocka med gammalt larm och Arduino

Jag hade en trasig väckarklocka liggande och kom på en idé att konvertera den till klock- och väderprognosstation.

För detta projekt behöver du:

  • Gammal cirkulär väckarklocka
  • Arduino Nano
  • BME280 sensormodul (temp, luftfuktighet, tryck)
  • LCD -displaymodul från Nokia 5110
  • DS1307 RTC -klocka
  • TP4056 litiumbatteriladdare
  • Gammalt litiumjonbatteri som bärgats från mobiltelefonen
  • Liten 3,7v till 5v booster -modul
  • Ljusberoende motstånd (LDR - ljusmätare)
  • Summer (använd bärgad från gammal dator)
  • 3 tryckknappar
  • Ett gäng motstånd (2x10k, 270 ohm) och en transistor (2N2222A eller liknande)
  • Något brett krymprör
  • skrotskiva för att användas som dekoration av frontplattan
  • Mikro-USB förlängningskabel (både hona och hane är mikro-USB)
  • 2x8cm prototypkort och några ledningar

Steg 1: Demontera allt

Ta isär allt
Ta isär allt

Först tog jag isär den gamla klockan. Klockor, motor, trasig klockmekanism …

Steg 2: Knappar för digitala inställningar

Knappar för digitala inställningar
Knappar för digitala inställningar
Knappar för digitala inställningar
Knappar för digitala inställningar
Knappar för digitala inställningar
Knappar för digitala inställningar
Knappar för digitala inställningar
Knappar för digitala inställningar

Eftersom den nya klockan blir helt digital med en minidator inuti lade jag till 3 enkla snygga knappar på sidan.

Med ett aluminiumskrot klippte jag ut överlägget för att skapa en etikett. Bokstäverna för etiketterna skapades med hjälp av bokstäver och en svart markör.

Steg 3: Kondensator för motorn

Kondensator för motorn
Kondensator för motorn

Jag kommer att behålla de gamla klockorna för att driva larmet med motorn. Den gamla trasiga klockmekanismen hade en keramisk kondensator med etiketten 104. Jag tog bort den från kretskortet och lödde den direkt till motorn - detta hjälper till att förhindra kraftpikar när man startar motorn under larm. Viktigt att notera är också att motorn kommer att styras genom transistorn men mer om detta senare.

Steg 4: Nytt ansikte för klockan

Nytt ansikte för klockan
Nytt ansikte för klockan
Nytt ansikte för klockan
Nytt ansikte för klockan

Eftersom jag bestämde mig för att göra ett nytt ansikte för klockan - tog jag ett kretskort från min dumpsterhög och använde en byggvärmepistol för att snabbt ta bort alla komponenter. Hålet i mitten är gjord för den digitala skärmen på den nya klockan.

Steg 5: Digital display från gammal mobiltelefon

Digital display från gammal mobiltelefon
Digital display från gammal mobiltelefon
Digital display från gammal mobiltelefon
Digital display från gammal mobiltelefon

För detta projekt bestämde jag mig för att använda en LCD -skärm från den gamla Nokia 5110 -mobiltelefonen. Dessa skärmar är allmänt tillgängliga för försäljning som en modul, de drar väldigt lite ström och det finns bra bibliotek för Arduino. Om du köper en ny modul med 5110 skärm - du räddar planeten eftersom alla nya moduler är skapade från bärgade 5110, 3110 och 3210 telefoner!

Steg 6: Ansluta kretsarna

Ansluta kretsarna
Ansluta kretsarna
Ansluta kretsarna
Ansluta kretsarna
Ansluta kretsarna
Ansluta kretsarna

Du kanske redan har gissat att jag planerade att använda Arduino -kortet för att styra den här klockan. Projektet är lätt att repetera även för nybörjare Arduino -fans eftersom jag inte skapade mina egna kretskort. Det är ett Arduino Nano -kort med moduler anslutna till det - BME280 temperatur-, tryck- och fuktsensor, DS1307 RTC -klocka, TP4056 litiumbatteriladdare, liten 3,7v till 5v booster -modul, ljusberoende motstånd (LDR - ljusmätare) och en summer (taget från den gamla datorn).

Titta också på skisserna - de visar alla kopplingar. Jag tror att allt är väldigt lätt att läsa och förstå, men om du har några frågor är det bara att ställa dem i kommentarerna nedan.

Några anteckningar om installationen:

  • Motorn ansluts direkt från batteriet via transistorn. Arduino styr transistorn genom motstånd och PWM -stift D5.
  • Stift D7-12 används för LCD-kontakt. Mark och VCC är anslutna till skenan på kopplingsplattan.
  • LDR installerades på klockan och motstånd + 3 utgående ledningar löddes precis på baksidan av urtavlan.
  • För knappanslutning använde jag intern PULLUP -funktion inuti Arduino. Menyknappen är ansluten till avbrottet och jag insåg först senare att du också kan använda intern PULLUP för avbrottet. Avbrottet för menyknappen krävs för att koden inte ska skanna knapparnas tillstånd hela tiden.
  • Klockan övervakar och visar också batteriets tillstånd så att batteriet är direkt anslutet till stift A0. Batterispänningen är aldrig högre än 4,2V så det är säkert att ansluta batteriet direkt till Arduino analoga stift.
  • Buzzer är direkt ansluten till PWM -stift D6. Även om detta inte är en bra metod, kom jag undan med det eftersom Arduino Nano kunde hantera högre specifikationer än vad som anges och också för att summern inte kommer att fungera kontinuerligt. Samma inställning skulle lätt bränna stiften på ESP -kort, så i dessa fall rekommenderar jag att du använder transistorkontrollen.
  • Klockan hade redan en omkopplare så jag bestämde mig för att använda den. Det ser naturligt ut på baksidan.

Steg 7: Anslutningskort för enkla anslutningar

Kopplingsplatta för enkla anslutningar
Kopplingsplatta för enkla anslutningar
Kopplingsplatta för enkla anslutningar
Kopplingsplatta för enkla anslutningar

Alla moduler kräver positiva och jordanslutningar så jag bestämde mig för att använda 2x8cm prototypkort och lödde 5V och jordskenor till den. Jag gjorde också en liten I2C -skena där också eftersom jag hade flera moduler med I2C -gränssnitt.

På andra sidan löd jag standardpinnar så att jag kunde ansluta och koppla bort modulerna vid behov.

Några av de extra komponenterna löddes också där, såsom transistor och motstånd för motorstyrning och ett motstånd för Menyknapp som använder Interrupt. Jag visade schemat i föregående avsnitt.

btw Kan du se LDR -sensorn redan installerad på urtavlan på den första bilden?

Steg 8: Konfigurera strömmen

Ställa in strömmen
Ställa in strömmen

Jag använde ett gammalt litiumjonbatteri från min mobiltelefon för att driva den här klockan. Vanligtvis har mobiltelefonbatterierna som byts ut fortfarande god kapacitet (minst hälften av vad det var när de var nya). Deras fördel är att de har en inbyggd urladdningsskyddskrets och de är också mycket tunna så att de kan användas i små rymdscenarier.

För att ansluta batteriet löd du helt enkelt kablarna till + och - stift på batteriet. Oroa dig inte, du kommer inte att skada cellen eftersom det finns en kontroller och lite tomt utrymme mellan stift och cellens kemikalier.

På den här bilden kan du se batteriet och även laddningskontrollen TP4056 samt en 5V booster ansluten tillsammans och till batteriet. Jag använde lite krympslang för att göra allt isolerat och kompakt.

Steg 9: Micro USB för laddning och uppdatering av fast programvara

Micro USB för laddning och uppdatering av firmware
Micro USB för laddning och uppdatering av firmware

När jag hade lödt allt limmade jag summern och temp/tryck/fuktighetssensorn på bakpanelen. De passade alla fint i de befintliga facken från gamla klockreglagekontroller.

Det var nu dags att installera Micro USB -porten på baksidan. Varför Micro USB om Nano använder Mini USB? Helt enkelt för att i hushållet är de flesta USB -kablar från mobiltelefoner och det skulle vara bekvämt om klockan också kunde ta det.

Eftersom jag ville använda den för både laddning och uppdatering av klock- och väderstationsfunktioner - tog jag bort USB -kabeln, ledde strömkablarna genom TP4056 -laddare och Data+/Data -ledningar direkt till USB -uttaget på Arduino Nano. Du kan se detta på schemat som jag visade i tidigare avsnitt.

Steg 10: Slutmontering

Slutmontering
Slutmontering
Slutmontering
Slutmontering
Slutmontering
Slutmontering

Det var nu dags att packa tillbaka allt i den ursprungliga klockan. Jag använde krymprör för att isolera komponenter och moduler. Till och med Arduino var insvept i krympslang.

Håll muspekaren på det första fotot för att se var varje komponent placerades.

Steg 11: Koden

Som ni ser är klockan fullpackad inuti. Detta gjorde det möjligt att skapa något mer sofistikerat än den gamla klockan jag hade - med tanke på att det finns vissa programmeringskunskaper förstås. Jag skrev den första koden men bad min vän att gå in och hjälpa mig.

Hittills, förutom själva klockan, är dessa de funktioner som detta projekt redan stöder:

  • Tids- och datumvisning (samt tid och aktivering av larm på samma skärm)
  • Skärmen tänds i mörka förhållanden eller när rörelse detekteras (baserat på ljusförändringar)
  • Väderprognos (soligt, molnigt, regnigt)
  • Visning av temperatur, tryck och luftfuktighet (för fuktighet indikerar det om det är för torrt)
  • Meny för inställningar: larm, ändra tid, aktivera/inaktivera datumvisning, aktivera/inaktivera väderbyte ljudmeddelanden och växla mellan kejserliga och metriska enheter
  • Larminställningar - på/av, inställning av tid, inställning av melodi och/eller klockor för aviseringar

Senaste koden:

Koden kommer att uppdateras i framtiden med nya funktioner så var noga med att kolla in uppdateringar för firmware:-)

Om du är ny i Arduino -världen är de här stegen jag skulle rekommendera att göra:

  • Installera USB -drivrutinen för ditt kort (t.ex. CH340)
  • Installera Arduino IDE
  • Installera bibliotek som används i detta projekt
  • Ladda ner från GitHub och ladda upp den senaste projektkoden till klockan med Micro USB -kabel (du kan använda en från mobiltelefon)

Prognosalgoritmen är följande:

Arduino Nano får nya data från BME280 -sensorn var 12: e minut. Mätcykeln är 3 timmar. Efter 3 timmar skiftar intervallet för tryckövervakning (max- och minvärde under 3 timmar) i förhållande till medelvärden under aktuellt intervall och aktuellt tryckvärde. Varje timme sparas tryckändringen med aktuellt tryckvärde. kPa -enheter används för prognosberäkning.

På grund av minnesbegränsningar för Nano måste prognosalgoritmen förenklas. Men trots förenklingar kan den förutsäga nederbörd under de närmaste 12-24 timmarna trots att prognosen nu är mer pessimistisk - standardvärdet är "Molnigt väder".

"Soligt väder" - nuvarande tryckvärde är högre än normen med 7 poäng, trycket sjunker inte och skillnaden mellan min- och maxvärden under de senaste 3 timmarna är inte mer än 2 poäng.

Möjlig nederbörd "Regnväder" - strömtrycket är 15 poäng lägre än normen och skillnaden mellan min & max -värden är mer än 2 poäng ELLER Trycket sjunker och skillnaden mellan nuvarande värde och norm är 3 - 30 poäng.

För att förbättra kvaliteten på prognosen rekommenderas att du ändrar din "höjd" i huvudkodfilen. Du kan få din höjd till exempel här:

Steg 12: Steg-för-steg-video

Image
Image

Om det var svårt att följa vad jag gjorde ovan, här är också en videoversion med alla steg som visas.

Steg 13: Slutord

Sammantaget, från min synvinkel, är svårighetsgraden för detta projekt inte hög och vem som helst kan klara det. Om du inte har en gammal klocka kan du hitta en billig på en lokal loppis.

Alla komponenter är låga priser och finns på Sparkfun/Aliexpress/eBay/Amazon.

Jag hoppas att denna handledning var intressant för dig och skulle vara tacksam om du kunde stödja min första Instructable in the Clock -tävling.

Tävlingar
Tävlingar
Tävlingar
Tävlingar

Tvåan i tävlingen

Rekommenderad: