Stap 4: De Arduino circuit en software
De voorwaarde voor het programma was eenvoudig:
1. Indien een geheime boek (met een ingesloten microswitch) werd getrokken, openen (of sluiten) de deur.
2. als een geheime knock-patroon wordt gevonden, openen (of sluiten) de deur.
Ik nooit gewerkt met of programmeren van een Arduino voordat, maar ik wist hoe te programmeren en vond de Arduino super gemakkelijk om mee te werken. Het kwam met ton van korte, gemakkelijk te begrijpen van de voorbeelden die de exacte dingen deed ik wilde - Relais opereren en luister naar microfoons. Door te experimenteren in stukjes, eerst kon met het krijgen van het systeem alleen openen en sluiten van de juiste relays, dan krijgt het beluisteren klopt, ik stapsgewijs bouwen een aangepast programma die geëxploiteerd de deur.
Geheime boek activering
Krijgen van de Arduino te bedienen de deur was makkelijk. Ik aangesloten een kortstondige contact microswitch op de Arduino die is in de normaal gesloten positie wanneer het gewicht van het boek is daarop. Wanneer je tip het boek terug, het gewicht komt uit de schakelaar en opent het circuit. De Arduino gedetecteerd en controles een deur staat variabele om te zien of de deur open of gesloten. Dit activeert de code om het juiste relais te openen of sluiten van de deur te werken.
De hoofdlus van het wetboek slechts twee dingen - wat is de stand van de drukknop controleert en die staat is hetzelfde als het was de laatste keer dat er werd gecontroleerd? Als het is, dan het boek niet is geactiveerd, dus luister voor een klop. Als een domino is gehoord, vertakken tot een functie om te luisteren voor meer stoten te zien als zij overeenkomen met de geheime code.
Klop detectie
Voor de geheime knock code ben ik voor eeuwig erkentelijk Grathio labs voor een instructable voor het bouwen van een secret knock opsporen van lock-out van een Arduino. Met behulp van de code gepost, kon ik zijn om opnieuw de geheime knock detectie algoritme te gebruiken zonder een op mijn eigen te maken. Ik ben jullie een biertje! De meest uitdagende deel van hergebruik van de code moest invoegen in mijn programma. Ik geen rekening gehouden met een programmering schakelaar zodat me om te veranderen de knock code omwille van de eenvoud. Dus, ik gebruikte het deel van hun code die naar stoten luisterde, uitgang van de waarden naar de seriële monitor en vervolgens hardcoded hen in het programma. Niet flexibel is, begrijp ik, maar ik wilde iets eenvoudig en ongecompliceerd.
Veiligheid
Ik wilde veiligheidsfuncties toe te voegen, zodat de deur kon plotseling worden gestopt en omgekeerd indien nodig. Als u het boek om te activeren van de deur en niet aan het boek terug te keren naar de opstellingsplaats binnen 3 seconden gebruikt, wordt de deur stopt. Ook, als je het boek na 3 seconden weer trekken, de deur stopt. Als je trek het boek nog een keer, zal de deur worden afgewikkeld.
Ik dacht dat iemand naast me zou kunnen spelen met de deur en per ongeluk verstrikt raken in het. Ik dacht dat het waarschijnlijk wat dat iemand doen zou als ze trok het boek en de deur begon onbedoeld openen zou trekken van het boek weer willen stoppen voor de deur. Dat is wat er gebeurt.
Door te eisen dat het boek wordt teruggestuurd naar de opstellingsplaats binnen 3 seconden, is de persoon die trekt van het boek vereist om los te laten, wat betekent dat hun hand is vrij van het boek zelf. De boekenkast duurt 18 seconden te openen, dus er is genoeg tijd om uw hand uit de weg te krijgen. Ik ben bewust dat vertrouwen op de software voor de veiligheid een slecht idee, is dus de opening voor de boekenkast breder dan de boekenkast zelf is. Ik ben vrij zeker dat een hand kan gemakkelijk worden teruggetrokken door gewoon te drukken van de boekenkast achteruit (in de kamer) zelfs als de boekenkast volledig gesloten. De veren zou druk uitoefenen op de hand, maar ik betwijfel genoeg om te breken of permanent vangen. Aan de kant van de kamer is de opening ook breed genoeg is om een hand uitlichten.
Afrit drukknop voor kamer bewoner
Sinds dit instructable publishing voegde ik een afslag drukknop zodat de bewoner van de kamer om af te sluiten gemakkelijk. Zonder de afrit drukknop is de enige manier om te sluiten of open de deur van de kant van de kamer met behulp van de geheime knock. Ik vond de drukknop op eBay voor ongeveer $20. Het is een kortstondig contact-knop die heeft zowel normaal gesloten normaal open (NG/NO) pinnen op het. Ik het in serie met de drukknop boekenkast geschakeld. Op die manier een van de knoppen activeren zorgt ervoor dat de deur te bedienen.
Omdat de druk op de knop zorgt ervoor dat de deur om te stoppen en weer duwen zorgt ervoor dat de deur om te keren, is de knop nuttig bij het binnenvaren en verlaten van de kamer. U hoeft niet te wachten op de boekenkast volledig openen of sluiten voordat het omkeren van het met de knop. U kan niet de deur openen en sluiten van de reeks met de knock, zodat de knop een beetje tijd bespaart onderbreken.
De knop gaat branden als u het voorzien van 24 volt, maar ik ben niet van plan op verlichting it up. Ik zou moeten kabellengte tot een aparte stroomtoevoer en de kabel lopen naar het licht en het is niet de moeite waard. De knop is heel zichtbaar en zegt "Druk op Exit" op. Dat is voldoende.
Aansluiten van het relais boord en microfoon
De werkelijke aansluitingen voor de componenten in de commentaren van de software zijn gedetailleerd, maar hier zijn ze:
1. relais boord: Relay 1 verbonden met Pin 7 op Arduino. Relay 2 verbindt met Pin 8. Relais boord ook verbinding te maken met de grond en 5v op de Arduino.
2. microfoon: Sluit op grond, 5v, en uit pin aan analoge A0 (nul) pin op de Arduino.
3. boek microswitch: verbinding gemeenschappelijk en normaal gesloten op digitale pin 2 en bodem. Maakt niet uit, die wordt aangesloten op Pen 2 of grond.
4. het Relais moeten worden aangesloten op de kabel die naar de DIN-stekker voor de lineaire actuator gaat. Na het uitzoeken hoe de handheld controller die kwam met de bedieningssleutel werkte, ik kocht een dubbele kabel met een DIN stekker daarop dus ik kon behouden de handmatige controller en heb het als een back-up voor het geval dat de Arduino mislukt.
** Opmerking: de kleuren van de draad die ik Toon niet mag hetzelfde zijn als u probeert te dupliceren dit!!! Als u de controller onjuist draad, zal u waarschijnlijk branden uit uw motorcontroller op uw dure Lineaire actuator!!! U moet zelfstandig bevestigen dat dit werkt voor uw actuator. NIET gewoon blindelings volgen deze afbeelding ***
5. met de identieke DIN-kabel ik gekocht, ik snijden van de kabel aan de DIN-stekker en gescheiden en ontdaan van de draden.
6. ik gesoldeerd extensie draden aan de DIN stekker draad pinnen weergegeven in het diagram in stap 4 uit te breiden naar het relais boord. Ik gebruikte heat shrink tubing (verkrijgbaar bij Radio Shack) over elk gesoldeerd draad om te voorkomen dat ze elkaar kortsluiting. Ik een klein buisje gebruikt voor individuele draden, het gekrompen, dan grotere buis gebruikt aan alle van de draden binnen en warmte gekrompen die om hen samen. Dus ik wist die pin op de DIN-stekker ging het dat naar het label ik elke uitgebreide draad met een stukje tape. Ik drievoudige gecontroleerd door continuïteit testen ze met behulp van mijn multimeter.
7. Ik heb verbonden elke draad aan de uitgangszijde van het relais boord zoals hierboven in het diagram. Ik moest ook gebruikmaken van een jumper draad van de normaal open (NO) op relay 1 op de nee op Relais 2 en de NC op Relais 1 aan de normaal gesloten (NC) op Relais 2 voor het dupliceren van het circuit dat de handheld controller had erin. Deze verbindingen zijn schroef terminal, dus het was gemakkelijk om ze te verbinden.
8. op de input kant van het relais boord liep ik connectoren van de GND en 5V op de Arduino aan de GND en 5V op het relais boord. Ik aangesloten de IN1 op het relais boord op digitale pin 7 van de Arduino en IN2 op het relais boord aan digitale pin 8 op de Arduino.
Dat is al het elektrische werk dat ik moest doen. Ik ben bezig een meer drukknop niveauschakelaar in de kamer toe te voegen zodat de bewoner de boekenkast openen kunt door op een knop. Ik zal die draad in serie met de geheime boek-knop. Aangezien dat circuit is normaal gesloten (NC), ik gebruik de NC-terminals op de drukknop overigens. Wanneer ik duw het, het circuit wordt geopend, de Arduino detecteren zal en de boekenkast zal ofwel openen of sluiten, in voorkomend geval. (Dit is hoe de geheime boek knop werkt nu.
De code werkt groot en ik heb het hier ook maar u gebruikt het op uw eigen risico. Ik ben geen professionele programmeur en ik neem geen verantwoordelijkheid voor enig gebruik dat u het te kan toepassen.
Een vreemd probleem met het is dat de allereerste keer na het starten van het programma op de Arduino, wanneer u trek het boek, gebeurt er niets. De tweede keer, het werkt perfect en werkt perfect na die. Ik ben zeker er zit logica in de lus die wordt veroorzaakt door dat maar het is ook minder aan te rijden. Het gebeurt alleen de eerste keer dat het programma wordt uitgevoerd. Voel je vrij te repareren en de oplossing post als het je stoort.