Innehållsförteckning:

Multitimer med extern kontroll: 13 steg
Multitimer med extern kontroll: 13 steg

Video: Multitimer med extern kontroll: 13 steg

Video: Multitimer med extern kontroll: 13 steg
Video: 5 ADHD Productivity Apps as Recommended By ADHD Coach 2024, Juli
Anonim
Multitimer med extern kontroll
Multitimer med extern kontroll

Detta projekt Instructable är en byggnad av en multifunktionstimer

Denna timer kan fungera som:

  1. Ett allmänt larm med valbara tider mellan 1 sekund och +90 timmar. Att ha en nedräkning med hörbart larm och/eller styrning av extern enhet tills den är klar och sedan en räkning som visar tid sedan larmet.
  2. En tupplur med 7 valbara tider, nedräkning och larm vid slutförande.
  3. En meditationstimer med 4 valbara tider, med nedräkning och en kort kvittering efter avslutad, räkna upp med ytterligare en kvittering 5 minuter efter det.

Detta projekt kan eter byggas enligt beskrivningen här eller modifieras för att passa. Jag byggde tidigare en timer med denna funktionalitet och använde den i min första Instructable för att styra UV -exponeringsboxen.

Jag trodde att jag bara kunde publicera det ursprungliga programmet och tavlorna. Av någon anledning kunde jag dock inte hitta koden. Jag ville också göra förbättringar av hårdvaran för att göra styrkretsarna mer flexibla och minska batteriladdningen. Den resulterande omdesignen av huvudkortet och omskrivning av koden ger en möjlighet att diskutera programmerings- och hårdvarudesignmetoden.

När jag skapar ett kretskort upptäcker jag ofta att det finns brister i konstruktion eller placering av komponenter. Brädorna jag bygger är också en av två avslag. Dessutom gillar jag att vara delaktig i alla aspekter av ett projekt från början till slut. Det här är några av anledningarna till att jag gör mina egna kretskort snarare än att skicka Gerber -filerna utomlands för tillverkning. Kanske är jag bara gammal och fast i mina vägar. Detta projekt återspeglar denna fördom. Eftersom jag gör mina egna kretskort, mina konstruktioner och mina Gerber -filer inte uppfyller tillverkningskraven har jag inte inkluderat dessa filer. De som inte vill etsa och avsluta brädorna är välkomna att förbereda sina egna mönster och lägga upp Gerber -filerna i kommentarfältet. Vänligen låt dina brädor tillverkas och testas innan de läggs ut.

Steg 1: Översikt över maskinvara

Enheten drivs av 4 AAA -batterier och styrs av en Arduino Pro Mini 5V.

En liten summer/högtalare ger ett ljudlarm.

Ett miniatyr 5v -relä ger styrspänningar till externa enheter. Flexibilitet tillhandahålls i källan till denna styrspänningsutgång.

En roterande kodare med tryckknapp ger menyval.

En OLED -display och en tillfällig start/stopp -omkopplare kompletterar användargränssnittet.

Ytterligare elektronisk hårdvara består av en SPDT -strömbrytare och ett miniatyruttag för anslutning till externa enheter.

Dessutom finns filer som hjälper dig i detta projekt:

STL -filer för ett 3D -tryckt projektfodral.

Koppar- och lödmaskbilder för etsning och efterbehandling av styrkortet och roterande givare.

Schematiska och tavla bilder som en referens för dem som vill ändra min design.

Du kanske vill granska min instruktion om hur du skapar dubbelsidiga kretskort som ett exempel på kretskortsproduktion.

Steg 2: Programöversikt

Tillsammans med Arduino -källfiler, ytterligare information som kan vara till hjälp.

Hårdvarukontrollbibliotek används när de är tillgängliga (knappavstängning, OLED-kontroll, avläsning av roterande kodare).

Programmet implementerar en enkel finite state machine (FSM) för att styra kodkörning som en switch -sats i loop -funktionen.

En menyklass definieras för att tillåta val av visade alternativ på OLED och val med roterande kodare.

Inmatning implementeras genom direkt polling (non-interrupt driven) eftersom det inte är tidskritiskt och gör koden tydligare.

Skriv ut uttalanden till Serial används för att spåra kodkörning och felsökning

Olika typer av programstrukturelement inklusive:

  • Flera kodflikar för att isolera några av maskinvarukontrollfunktionerna och variablerna.
  • Växla uttalanden för att ställa in tillståndsvärdet (FSM) och kontrollvariabler.
  • Strukturdefinition
  • Uppräkningar för att tillåta tilldelning av statliga värden som text.
  • #definiera förprocessordefinitioner för hårdvarustift och standardvärden.

Steg 3: Dellista

Skapa kapslingen
Skapa kapslingen

Jag var inte säker på var jag skulle sätta detta steg eftersom det kan göras nästan när som helst. Jag använde en 3D -tryckt kapslingsbox. Du kanske inte har tillgång till en 3D -skrivare eller föredrar en annan typ av hölje, till exempel aluminiumlåda, laserskuren plast, handskuren trä eller annan typ som du använder för dina elektroniska projekt. Jag har inkluderat STL -filerna för den övre, nedre, roterande kodaren och OLED -ramen. Använd dessa filer och den valfria skäraren för att skapa gcode -filer för din skrivare.

Jag skriver ut alla delar med PLA -filament, en färg för kabinettets topp och botten, en annan kontrasterande för ratten och ramen (som är limmad på toppen). -Hexagon -fyllning minst 35% för att möjliggöra knackning av hörnskruvarna och en "inget stöd" -inställning för att de snittade bokstäverna ska läsas. Jag skrev ut rutan med mina skrivares "normala" lagerhöjd.

Steg 9: Design och skrivkod

Detta steg är valfritt men föreslås för bättre förståelse.

Huvuddelen av ansträngningen när det gäller timmar är att skriva koden. Du kan hoppa över detta steg om du använder det bifogade programmet som -is. Det föreslås dock att du tar dig tid att granska koden för bättre förståelse eller modifiering för att möta dina behov.

Följande kommentarer kan vara till hjälp för att förstå denna process.

  • Kommentarer - Kommentera mycket när du går - jag skriver ofta kommentarerna innan jag skriver koden.
  • Dela och erövra - använd funktioner, klasser och moduler (flikar) Använd frekventa kompiler (Verifiera) för att kontrollera syntax. Debug - Använd utskriftsuttalanden för att verifiera flödes- och testvärden och maskinvarugränssnitt. Var inte rädd för att lösa problemen medan du går, ingen skriver kod som är buggfri!
  • Konstanter - #define förkompileringsinstruktioner tilldela namn till pin -nummer. Const variabla definitioner med kommentarer minskar eller eliminerar "magiska" nummer. Användningen av konstanter som finns i början av ett program eller en funktion gör det möjligt att ändra parametrarna utan att skriva om kod
  • Fördefinierade bibliotek - Användning av fördefinierade bibliotek minskar programmeringsbörda och felsökningstid.
  • Designblock - Skapat med funktioner, isolering av kod i separata flikar (tillhörande program och.hfiler), uppräkningar, klasser och strukturer. Fokusera din uppmärksamhet på var och en för att förstå hur de fungerar i förhållande till resten av koden.
  • State Machine (s) - Detta är ett programmeringsmönster som fungerar bra med Arduinos eller andra program som används för att styra utdata eller reagera ingångar. Det finns flera smaker av statsmaskiner. Denna kod använder en tillståndsmaskin baserad på switch -satsen i loop -funktionen. Detta formulär är lätt att förstå och felsöka.
  • Display och menyer - OLED -utgången är trång men ger tillräckligt med feedback för tillfälliga användare och stöder val av alternativ. Den integreras bra med tillståndsmaskinen (nästan alla stater har en tillhörande OLED -skärm). Menyklassen var till hjälp för att isolera kod för att visa och välja menyalternativ

Läs programmet flera gånger. Det hjälper att ta en funktion eller sektion åt gången. Jag förstår ofta inte kod som jag har skrivit om jag inte har läst den minst två gånger!

Steg 10: Installera programmet

Kopiera den bifogade filen till din dator och packa upp den sedan i Sketches -katalogen

Anslut Arduino till din dator och ladda ner programkoden på normalt sätt. Öppna Arduino IDE -seriemonitorn för att verifiera att programmet körs och hjälpa till med felsökning.

Steg 11: Montera timern

Montera timern
Montera timern
Montera timern
Montera timern
Montera timern
Montera timern
Montera timern
Montera timern

När de övre och nedre delarna av fodralet har skrivits ut och rengjorts kan komponenterna fästas med små självgängande plastskruvar. Först knäpps batterihållaren i baksidan. Resten av delarna fästs på skåpets topp i följande ordning:

  1. OLED och kabel
  2. Start/stopp -omkopplare och kabeldragning
  3. Rotary Encoder och kabel
  4. Högtalare / summer och ledningar
  5. Extern kontrolljack och ledningar
  6. Slå på/av skjutreglage och kablar (dubbelkontrollera orienteringen så att den är i den riktning du vill ha

Om du löd kablarna direkt till kretskortet, gör detta efter att alla delar är fästa på ditt hölje för att minska trådbrott. Du måste vänta tills kablarna är anslutna till huvudkortet innan du skruvar fast kortet på baksidan.

Om du använder stifthuvuden och Dupont -kontakter, fäst först huvudkortet på baksidan med skruvarna och anslut sedan komponenterna. Var försiktig när du ansluter batteriet till huvudkortet och observerar rätt polaritet. Du bör också ställa in relästyrningshopparna eller ledningarna vid denna tidpunkt.

Botten av höljet ansluts till toppen med hjälp av 4-40 runda maskinskruvar, en i varje hörn. De fyra hålen i toppen ska antingen knackas med en 4/40 kran eller om du använder 4-40 gängade skär, måste du borra hålen för att acceptera dem. De fyra hålen för kretskortets montering på botten måste också borras. Sätt ihop det här kortet till snap-in-batterifästet och markera platserna för hålen. Borra vid behov för dina monteringsskruvar.

Steg 12: Integrationstestning

Integrationstestning
Integrationstestning
Integrationstestning
Integrationstestning
Integrationstestning
Integrationstestning

Slutlig (integration) testning uppnås genom att prova alla menyalternativ och verifiera att de fungerar med hårdvaran enligt utformningen. För koden jag angav borde det vara tillräckligt. Om du skrev din egen kod eller ändrade min måste din testning bli mer omfattande. Jag tror inte att alla tidsval måste utföras, men du måste prova alla standardalarmalternativ och validera Nap och Meditation -larm fungerar som det är utformat.

Steg 13: Sista tankarna

Grattis till ditt framgångsrika projekt, hoppas jag. Jag är säker på att du stötte på problem längs vägen som du behövde lösa. Jag är också säker på att några av mina instruktioner kunde ha varit mer fullständiga eller tydligare. Låt mig veta i kommentarsfältet vad dina resultat var och ge förslag på hur dessa instruktioner kan förbättras.

Tack för din tid att titta på och/eller bygga detta projekt.

Rekommenderad: