Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:10
Jag har en uppsättning rullgardiner i mitt sovrum som jag ofta glömmer att öppna eller stänga på morgonen eller kvällen. Jag vill automatisera öppning och stängning, men med en åsidosättning när för när jag blir förändrad.
Steg 1: Potentiella idéer eller lösningar
Efter att ha tittat på olika webbplatser som YouTube, Instructables och Thingiverse fann jag att den vanligaste lösningen var att motorisera spolen som lindade och rullade upp persiennerna med en stegmotor eller en servo. Jag hittade två huvudalternativ med olika fördelar och nackdelar.
Idé 1: Spolmetod där motorn och växeln sitter inuti spolen. Detta har fördelarna med att det är en snygg och elegant metod, men har nackdelarna att det kräver stora modifieringar av persienner, sladden är inte längre användbar och enheten skulle vara mycket svåråtkomlig för underhåll när den implementeras.
Idé 2: sladdmetod där motorn och växeln sitter på sladden. Detta har fördelen att det är enklare och monteringen kan vara lättillgänglig. Det har dock nackdelen att det kan vara fult och skrymmande, liksom det faktum att det måste fästas på tröskeln när det implementeras.
Jag föredrar sladdmetoden som en mycket enklare lösning som inte hämmar manuell användning av sladden, och blinden kommer inte att kräva någon större ändring. Jag tänker göra den så hemlig och kompakt som möjligt när jag gör den slutliga versionen med en ESP8266.
Steg 2: Gör monteringen
Jag gjorde detta projekt med min Lego minstorms EV3 som har funktionalitet jag behöver för att visa att projektet kan fungera, och jag är bekant med programvaran som definitivt hjälpte mycket. Eftersom persiennen använder en kulkedja för att driva spolen, vilket Lego-kugghjul är oförenliga med, bestämde jag mig för att den bästa lösningen var att designa ett kugghjul med rätt kulavstånd på utsidan- med standard "korsformat" hål i center, där jag sedan skulle 3D -skriva ut designen. Vid denna tidpunkt gjorde jag också en kalibreringsknapp och fäst en ljussensor i mitt fönster samt en knapp för att fungera som överstyrning.
Steg 3: Designa blindutrustningen
Jag demonterade persiennen för att se hur veven såg ut mer i detalj. Under demonteringen hittade jag en liten 16-tandad växel som hölls på plats av en spänd spole, det var den delen jag letade efter. Efter att ha konstruerat en kopia av redskapet lade jag till de nödvändiga Lego-kompatibla hålen, skrev ut de tre separata delarna och sammanfogade dem slutligen med superlim. Jag hade inledningsvis problem med att göra delen Lego kompatibel, i den meningen att min 3D -skrivare inte hade upplösningen att göra "x" -hålet tillräckligt, men det hade inga problem med de cirkulära hålen på vardera sidan av den. Så jag ersatte "x" med ett cirkulärt hål och det skrevs bra ut. Efter en liten mängd tester kunde jag se att det kunde hantera vridmomentet och vikten från persiennerna. Jag länkar mina mönster för redskapet nedan eller så hittar du det på Thingiverse på:
Steg 4: Kodning av blinda
Jag ville ha kod som automatiskt skulle öppna och stänga persiennen när den kom till en specifik ljusnivå, men som också hade en överstyrningsknapp så att man fortfarande kunde öppna eller stänga persiennen när de ville. Jag har länkat min GitHub till den slutliga versionen av koden här:
Koden för projektet tog mig flera dagar att slutföra, jag hade programmets grundläggande logik som fungerade korrekt med ljussensorn, men den tillfälliga överstyrningsknappen fungerade inte korrekt. Det ändrade blindtillståndet när det pressades, men det saknade funktionen "låsning" som skulle innebära att persiennen skulle stanna i positionen- vilket innebär att persiennen omedelbart skulle rulla tillbaka den till vad den var innan. Jag fixade detta med ett "vänta tills" -block, kopplat till en logisk ELLER grind som läser värdena för ljussensorn och beröringssensorn, vilket jag kommer att förklara nedan.
Koden börjar med att kalibrera motorerna och persiennen, börja med persiennen helt öppen och sänka den tills den träffar beröringssensorn i botten och räknar hur många kvarts varv det tar för att komma till botten, vilket sparas som "RotationsNeeded" variabel. Sedan skriver den "falskt" till variabeln "BlindOpen" som används för att spåra blindens position. Vid denna tidpunkt koden delas upp i 4 slingor.
En av dessa slingor är "Buttonstate" -slingan som kontinuerligt publicerar knappens tillstånd till en variabel som kallas "ButtonPressed". Detta eliminerar behovet av att flera knappblock ska placeras på skriptet.
Den andra slingan är "Ljus eller mörk" som kontinuerligt jämför ljusnivån utanför mitt fönster, till en konstant definierad tidigare i koden. Om resultatet är under den konstanten kommer slingan att skriva "falskt" till variabeln "ItIsLight", medan det är över värdet kommer det att skriva "sant".
Den tredje slingan innehåller en numerisk lista med 3 alternativ som i princip berättar för de blinda vad de ska göra, 0 = blinda ner, 1 = blinda, 2 = gör ingenting eftersom blind är på rätt plats. Slingan börjar med att läsa variabeln "BlindShould" som anger rätt uppgift blinden ska utföra, sedan utför den uppgiften, ändrar variabeln "BlindOpen" till rätt alternativ och blir sedan inaktiv tills variabeln "BlindShould" ändras där det upprepas. Den använder värdet "RotationsNeeded" samt en +/- 100% effekt för att flytta persiennen helt öppen eller stängd.
Den fjärde och sista slingan är den mest komplexa, det är "Decider" -slingan som hanterar all data och bestämmer vad som ska göras med varje permutation. Det gör detta genom att använda logikbaserade "gafflar i vägen" där "knappen trycks", "Ljusnivå", "Öppen blind" är de sanna eller falska frågorna. Alla permutationer har en hårdkodad respons, som antingen är 0 = blind down, 1 = blind up eller 2 = gör ingenting - detta värde skrivs till variabeln "BlindShould" som sedan hanteras av en tidigare loop. Vissa svar väntar sedan på att antingen "ItIsLight" och/eller "ButtonPressed" -variabeln ändras innan man avslutar manuset. Detta är bara fallet med knappaktiverade permutationer eftersom det omedelbart skulle försöka korrigera sin position vilket innebär att blinden skulle återvända till sitt ursprungliga tillstånd. Denna process loopas sedan för att skapa ett robust och relativt enkelt automatiskt system, som enkelt kan läggas till och felsökas. Puh.
Steg 5: Finisher
Jag bestämde mig efteråt för att koppla upp en 9V strömförsörjning till min EV3 med hjälp av några träpluggar och skruvar som "batterier", detta gjorde att produkten inte var beroende av batterier och hindrade mig från att behöva byta batterier varannan dag.
Steg 6: Utvärdering av projektet
Jag tycker att projektet gick bra överlag, jag slutade med en fungerande prototyp för automatiska persienner, som jag kan ta all relevant information jag hittade under projektet och implementera i den slutliga versionen. Jag har framgångsrikt kodat enheten och har hittat inga större problem med koden hittills. Jag skulle ha velat göra enheten mer visuellt tilltalande men än en gång är det ett bevis på konceptet och jag kommer att anstränga mig för att få det att se bra ut när jag gör den slutliga versionen med en ESP8266. När jag gör projektet igen kommer jag att utforma motorn för att sitta inne i persiennen eftersom det skulle vara lättare att dölja. Den största lektionen jag har lärt mig är att felsöka logiskt och tänka igenom, dokumentera och testa min kod innan jag implementerar den.
Rekommenderad:
Batteridrivet kontor. Solsystem med automatisk växling öst/väst solpaneler och vindkraftverk: 11 steg (med bilder)
Batteridrivet kontor. Solsystem med automatisk växling öst/väst solpaneler och vindkraftverk: Projektet: Ett 200 kvadratmeter stort kontor måste vara batteridrivet. Kontoret måste också innehålla alla styrenheter, batterier och komponenter som behövs för detta system. Sol- och vindkraft kommer att ladda batterierna. Det finns ett litet problem med bara
Automatisk kylfläkt med servo och DHT11 temperatur- och fuktsensor med Arduino: 8 steg
Automatisk kylfläkt med servo och DHT11 temperatur- och luftfuktighetssensor med Arduino: I denna handledning lär vi oss hur man startar & rotera en fläkt när temperaturen stiger över en viss nivå
Automatisk IoT Hallway Night Light med ESP8266: 4 steg (med bilder)
Automatisk IoT Hallway Night Light Med ESP8266: Jag startade det här projektet inspirerat av en trappljus från ett annat instruerbart inlägg. Skillnaden är att hjärnan i kretsen använder ESP8266, vilket betyder att det kommer att bli en IoT -enhet
Automatisk videokonferens för mormor med hallon Pi: 9 steg (med bilder)
Automatisk videokonferens för mormor med hallon Pi: Jag är orolig för min 90-åriga mormor eftersom även hon borde stanna hemma under COVID-epidemin, hon ständigt går ut och gör " viktigt " saker på gatan, som att köpa några lotter, prata med grannar. Jag
Bygga en automatisk solspårare med Arduino Nano V2: 17 steg (med bilder)
Bygga en automatisk solspårare med Arduino Nano V2: Hej! Denna instruerbara är tänkt att vara en del två i mitt Solar Tracker -projekt. För en förklaring av hur solspårare fungerar och hur jag utformade min första spårare, använd länken nedan. Detta kommer att erbjuda sammanhang för detta projekt. Https://www.instructables.co