- Componenten die nodig zijn om Arduino geautomatiseerde jaloezieën te bouwen
- Rolgordijnen bedienen met Arduino
- Ontwerp en bouw de Window Blind Gear
- 3D-printen van de motorhouder en blinde versnelling
- Schakelschema voor Arduino Blinds Control
- Blynk-applicatie voor Arduino Blind Control
- NodeMCU programmeren om jaloezieën te bedienen met Blynk
- Jaloezieën bedienen met Google Assistant
- Op Arduino gebaseerde automatische raamblindcontrole - demonstratie
"Goedemorgen. Het is 7 uur 's ochtends. Het weer in Malibu is 72 graden… ”Dit waren de eerste woorden van JARVIS toen het werd geïntroduceerd in het Marvel Cinematics Universe. De meeste Iron Man-fans zouden zich deze scène moeten kunnen herinneren en onthouden dat JARVIS in staat was om 's ochtends (soort van) een raam te openen en updates te geven over tijd en weer. In de film was de raambril eigenlijk gemaakt van doorzichtige aanraakschermen en daarom was JARVIS in staat om het van zwart naar transparant te laten veranderen en er ook weerstatistieken op weer te geven. Maar in werkelijkheid zijn we ver verwijderd van doorzichtige aanraakschermen, en hoe dichter we kunnen komen, is om jaloezieën of beperkingen automatisch te regelen.
Dus in dit project gaan we precies dat bouwen, we zullen een geautomatiseerde gemotoriseerde jaloezie bouwen die automatisch op vooraf gedefinieerde tijden opent en sluit. Eerder hebben we veel domotica-projecten gebouwd waarin we de lichten, motoren, etc. automatiseerden. Je kunt ze bekijken als je geïnteresseerd bent. Dus als we terugkomen, kunnen deze Arduino-gestuurde jaloezieën ook opdrachten van de Google-assistent aannemen, zodat u uw jaloezieën op afstand kunt openen of sluiten via spraakopdrachten. Intrigerend? Laten we het dan bouwen.
Componenten die nodig zijn om Arduino geautomatiseerde jaloezieën te bouwen
Het project is relatief eenvoudig en er zijn niet veel componenten nodig. Verzamel gewoon de onderstaande items.
- NodeMCU
- Stappenmotor - 28BYJ-48
- Stappenmotorbesturingsmodule
- LM117-3.3V
- Condensatoren (10uf, 1uf)
- 12V gelijkstroomadapter
- Perf bord
- Soldeerkit
- 3D-printer
Rolgordijnen bedienen met Arduino
Nu zijn er veel soorten jaloezieën op de markt, maar de meest gebruikte heeft een touw met staaflijsten (zoals hieronder weergegeven) waaraan kan worden getrokken om de jaloezieën te openen of te sluiten.
Als we dit cirkelvormige touw met de klok mee trekken, gaan de jaloezieën open en als we aan dit koord tegen de klok in trekken, gaan de jaloezieën dicht. Dus als we dit proces zouden automatiseren, hoeven we alleen maar een motor te gebruiken om dit touw met de klok mee of tegen de klok in te trekken en we zijn er klaar mee. Dit is in feite wat we gaan doen in dit project; we zullen de 28BYJ-48 stappenmotor gebruiken samen met een NodeMCU om aan het kralentouw te trekken.
Ontwerp en bouw de Window Blind Gear
Het elektronica-deel van dit project was vrij eenvoudig en ongecompliceerd, het uitdagende deel was het bouwen van de blinde uitrusting die aan het kralentouw kon trekken. Dus laten we dit artikel beginnen met het ontwerp van de blinde versnelling, ik ga niet in op details over het ontwerpen van de versnelling, maar dit basisidee zou je moeten helpen. Een afbeelding van het touw met de kralen erop is hieronder weergegeven.
Nogmaals, er zijn veel soorten touwen, maar de meest gebruikte touwen zijn dat de hart-op-hart afstand van elke kraal 6 mm is en de diameter van elke kraal 4 mm. Met behulp van deze informatie kunnen we beginnen met het ontwerp van onze uitrusting. Als het touw op uw jaloezieën dezelfde afmetingen heeft als besproken, kunt u deze stap gewoon overslaan en het STL-bestand in dit artikel downloaden en de uitrusting afdrukken. Als je touw een andere kralenrangschikking heeft, dan is dit hoe je de blinde versnelling opnieuw moet ontwerpen.
Ik heb besloten om 24 kralen op mijn tandwiel te hebben om een optimale tandwielmaat te krijgen, je kunt elk getal kiezen dat hier in de buurt komt, zodat je tandwiel groot of klein is. Dus nu weten we dat de afstand tussen elke kraal 6 mm is en dat we 24 kralen op onze uitrusting nodig hebben. Door beide te vermenigvuldigen, wordt de omtrek van het tandwiel verkregen. Met deze gegevens kun je de straal van het tandwiel berekenen. Zoals je in de bovenstaande afbeelding kunt zien, werd de diameter van mijn tandwiel berekend op ongeveer 46 mm. Maar vergeet niet dat dit niet de werkelijke diameter van het tandwiel is, omdat we geen rekening hebben gehouden met de diameter van de kraal, die 4 mm is. Dus de werkelijke diameter van het tandwiel zal 42 mm zijn, ik heb veel tandwielen geprint en getest voordat ik degene vond die het beste werkt. Als je niet van ontwerpen houdt,download en print gewoon de STL-bestanden uit de volgende paragraaf en ga verder met uw project.
3D-printen van de motorhouder en blinde versnelling
Naast het tandwiel hebben we ook een kleine behuizing nodig die in de muur kan worden geboord en de stappenmotor op zijn plaats houdt, zowel de behuizing als het tandwiel dat in dit project wordt gebruikt, worden hieronder weergegeven.
U kunt volledige ontwerpbestanden en STL-bestanden vinden op de onderstaande Arduino Blind Control Thingiverse-pagina. U kunt gewoon uw blinde uitrusting en motorbehuizing downloaden en afdrukken.
Download STL-bestanden voor Blind Gear and Motor Case
Schakelschema voor Arduino Blinds Control
Als u klaar bent met de uitrusting en de montage, kunt u eenvoudig doorgaan met het elektronica- en softwaregedeelte. Het volledige schakelschema voor het IoT Blind control-project wordt hieronder weergegeven.
We hebben een 12V-adapter gebruikt om de hele installatie van stroom te voorzien; de LM1117-3.3V-regelaar zet de 12V om naar 3,3V die kan worden gebruikt om het NodeMCU-bord van stroom te voorzien. De stappenmotor driver module wordt rechtstreeks gevoed door de 12V adapter. Ik heb geprobeerd de stappenmotor op 5V te laten draaien, maar toen leverde hij niet genoeg koppel om de jaloezieën te trekken, dus zorg ervoor dat je ook 12V gebruikt.
Afgezien daarvan is het circuit vrij eenvoudig, als je nieuw bent bij stappenmotoren, kijk dan eens naar de basisprincipes van het stappenmotorartikel om te begrijpen hoe het werkt en hoe het kan worden gebruikt met een microcontroller.
Blynk-applicatie voor Arduino Blind Control
Voordat we beginnen met het Arduino-programma voor het besturen van blinds, laten we de blynk-applicatie openen en enkele knoppen maken waarmee we onze blinds kunnen openen of sluiten. We hebben dit later ook nodig voor bediening vanuit Google Home.
Ik heb zojuist twee knoppen toegevoegd om de jaloezieën te openen en te sluiten en een timer om de jaloezieën elke dag om 10.00 uur te openen. U kunt meerdere timers toevoegen om de jaloezieën op verschillende tijdstippen van de dag te openen of te sluiten. Kortom, als we de blinds moeten sluiten, moeten we virtuele pin V1 activeren en als we de blinds moeten openen, moeten we virtuele pin V2 activeren. Het programma om de stappenmotor te besturen op basis van de hier ingedrukte knop wordt op de Arduino IDE geschreven, hetzelfde wordt hieronder besproken.
NodeMCU programmeren om jaloezieën te bedienen met Blynk
De volledige ESP8266-code voor dit Blind Control Project vindt u onderaan deze pagina. Ons programma moet wachten op een commando van de blynk-applicatie en op basis van dat commando moeten we de stappenmotor met de klok mee of tegen de klok in draaien. De belangrijkste onderdelen van de code worden hieronder besproken.
Volgens ons schakelschema hebben we digitale pinnen 1, 2, 3 en 4 op nodemcu gebruikt om onze stappenmotor te besturen. We moeten dus een instantie genaamd stepper maken met behulp van deze pinnen, zoals hieronder wordt weergegeven. Merk op dat we de pinnen hebben gedefinieerd in de volgorde 1, 3, 2 en 4. Het is met opzet gedaan en is geen vergissing; we moeten pinnen 2 en 3 verwisselen om de motor goed te laten werken.
// maak een instantie van de stepper-klasse met behulp van de stappen en pinnen Stepper stepper (STEPS, D1, D3, D2, D4);
In de volgende stap moeten we ons authenticatietoken voor de blynk-applicatie delen en de wifi-inloggegevens waarmee onze IoT Blind-controller moet worden verbonden. Als u niet zeker weet hoe u dit Blynk-auth-token kunt krijgen, raadpleeg dan het Blynk LED Control-project om de basisprincipes van de blynk-applicatie te begrijpen en hoe u deze kunt gebruiken.
// U zou een Auth Token moeten krijgen in de Blynk-app. // Ga naar de projectinstellingen (moerpictogram). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Uw wifi-inloggegevens. // Stel het wachtwoord in op "" voor open netwerken. char ssid = "CircuitDigest"; char pass = "dummy123";
We gaan verder met onze code, na de setup-functie hebben we twee methoden gedefinieerd voor blynk. Zoals eerder vermeld, moeten we definiëren wat virtuele pinnen V1 en V2 moeten doen. De code voor hetzelfde wordt hieronder gegeven.
BLYNK_WRITE (V1) // SLUIT de BLINDS {Serial.println ("Jaloezieën sluiten"); if (geopend == true) {for (int c_val = 0; c_val <= 130; c_val ++) // draai tegen de klok in om {stepper.step (c_val) te sluiten; opbrengst(); } gesloten = waar; geopend = false; uitschakelen_motor (); // altijd wenselijke stappenmotoren na gebruik om stroomverbruik en verwarming te verminderen}} BLYNK_WRITE (V2) // OPEN de BLINDS {Serial.println ("Opening Blinds"); if (closed == true) {for (int cc_val = 0; cc_val> = -130; cc_val--) // draai met de klok mee om {stepper.step (cc_val) te openen; opbrengst(); } geopend = waar; closed = false; } disable_motor (); // altijd goede stappenmotoren na gebruik om stroomverbruik en verwarming te verminderen}
Zoals je kunt zien wordt V1 gebruikt om de blinds te sluiten en wordt V2 gebruikt om de blinds te openen. Een for-lus wordt gebruikt om de motoren 130 stappen met de klok mee of tegen de klok in te draaien. Ik heb geëxperimenteerd met mijn blinds om te ontdekken dat ik met 130 treden mijn blinds volledig kan openen en sluiten. Uw aantal kan variëren. De for-lus om de stappenmotor met de klok mee en tegen de klok in te draaien wordt hieronder weergegeven.
for (int c_val = 0; c_val <= 130; c_val ++) // draai tegen de klok in voor het sluiten van {stepper.step (c_val); opbrengst(); } for (int cc_val = 0; cc_val> = -130; cc_val--) // draai met de klok mee om {stepper.step (cc_val) te openen; opbrengst(); }
U kunt ook twee Booleaanse variabelen “geopend” en “gesloten” opmerken in ons programma. Deze twee variabelen worden gebruikt om te voorkomen dat de motor de jaloezieën tweemaal opent of sluit. Dit betekent dat de jaloezieën alleen openen als ze eerder zijn gesloten en ze alleen sluiten als ze eerder zijn geopend.
Hoe de snelheid van de 28BJY-48 stappenmotor verhogen?
Een nadeel van het gebruik van de 28BJY-48-stappenmotor is dat deze erg traag is. Deze motoren zijn oorspronkelijk vervaardigd om te worden gebruikt in zeer nauwkeurige toepassingen met lage snelheid, dus verwacht niet dat deze motoren met hoge snelheid zullen draaien. Als je de snelheid van de stappenmotor met Arduino wilt verhogen, zijn er twee parameters die je kunt wijzigen. Een daarvan is de #define STEPS 64, ik ontdekte dat wanneer stappen worden gedefinieerd als 64, de motor relatief sneller was. Een andere parameter is een stepper.setSpeed (500); opnieuw vond ik 500 een optimale waarde, iets meer dan dat maakt de stappenmotor eigenlijk langzamer.
Kent u een andere manier om de snelheid van deze motoren te verhogen? Zo ja, laat ze dan achter in het commentaargedeelte hieronder.
Hoe voorkom je dat de stappenmotor oververhit raakt?
Stappenmotoren moeten altijd worden uitgeschakeld wanneer ze niet worden gebruikt om oververhitting te voorkomen. Een stappenmotor uitschakelen is heel eenvoudig; verander gewoon de pin-status van alle vier GPIO-pinnen die de stappenmotor aansturen naar laag. Dit is erg belangrijk, anders kan uw motor erg heet worden bij + 12V en zichzelf permanent beschadigen. Het programma om de stappenmotor uit te schakelen wordt hieronder gegeven.
void disable_motor () // zet de motor uit als je klaar bent om verhitting te voorkomen {digitalWrite (D1, LOW); digitalWrite (D2, LOW); digitalWrite (D3, LOW); digitalWrite (D4, LOW); }
Jaloezieën bedienen met Google Assistant
We gaan de blynk API gebruiken om de jaloezieën te bedienen via Google Assistant, het zal vergelijkbaar zijn met ons Voice Controlled Home Automation-project, dus controleer dat als je geïnteresseerd bent. In principe moeten we de onderstaande link activeren wanneer we een vooraf gedefinieerde zin tegen Google Assistant zeggen.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Zorg ervoor dat u het authenticatietoken wijzigt in het token dat wordt verstrekt door uw blynk-toepassing. U kunt deze link zelfs in uw Chrome-browser testen om te zien of deze naar verwachting werkt. Nu de link klaar is, hoeven we alleen maar naar IFTTT te gaan en twee applets te maken die virtuele pin V1 en V2 kunnen activeren wanneer we vragen om de blinds te sluiten en te openen. Nogmaals, ik ga niet in op de details hiervan, omdat we dit al zo vaak hebben gedaan. Als je meer hulp nodig hebt, raadpleeg dan dit spraakgestuurde FM-radioproject, vervang gewoon de adafruit-services door webhooks. Ik deel ook een screenshot van mijn fragment ter referentie.
Op Arduino gebaseerde automatische raamblindcontrole - demonstratie
Nadat het circuit en de 3D-geprinte behuizingen klaar zijn, monteert u het apparaat aan de muur door twee gaten in de muur te boren. Mijn montageopstelling wordt getoond in de onderstaande afbeeldingen.
Zorg er daarna voor dat uw jaloezieën open staan en schakel vervolgens het circuit in. Nu kunt u proberen de blinds te sluiten vanuit de blynk-applicatie of via Google Assistant en het zou moeten werken. U kunt ook timers instellen op de blynk-applicatie om de jaloezie automatisch op een bepaald tijdstip van de dag te openen en te sluiten.
De volledige werking van het project is te vinden in de onderstaande video; als je vragen hebt, schrijf ze dan gerust in het commentaargedeelte hieronder. U kunt onze forums ook gebruiken voor andere technische discussies.