Meny
Är gratis
checka in
den huvudsakliga  /  Problem / Elektroniskt slott på Arduino Uno. Elektroniskt lås gör det själv

Elektroniskt slott på Arduino Uno. Elektroniskt lås gör det själv

I den här lektionen lär vi oss att göra ett enkelt system som kommer att avbryta slottet på elektronisk nyckel (Märka).

I framtiden kan du förfina och expandera funktionalitet. Till exempel, lägg till "Lägg till nya nycklar och radera dem från minnet". I grundfallet, överväg ett enkelt exempel när unik identifiator Nyckeln är förinställd i programkoden.

I den här lektionen behöver vi:

För att genomföra projektet måste vi installera bibliotek:

2) Nu måste du ansluta summeren som kommer att betjäna signalen om nyckeln fungerade och låset öppnas och den andra signalen när låset stängs.

BUZZER är ansluten i följande sekvens:

Arduino. Summer
5V VCC.
Gnd. Gnd.
stift 5. Io.

3) En servo kommer att användas som en upplåsningsmekanism. Servo kan väljas, beroende på vilken storlek och ansträngning som krävs för dig, vilket skapar en servo. Servo Drive har 3 kontakter:

Mer levande kan du se hur vi kopplade alla moduler på bilden nedan:

Nu, om allt är anslutet, kan du gå till programmering.

Skiss:

#Omfatta. #Omfatta. #Omfatta. // bibliotek "RFID". #Define ss_pin 10 #define rst_pin 9 MFRC522 MFRC522 (SS_PIN, RST_PIN); unsigned long uiddec, uiddecmp; // för etikettetiketten i decimalformat servoservo; VOID SETUP () (Serial.begin (9600); Serial.Println ("Väntar på kort ..."); spi.begin (); // Initialisering av SPI / INIT SPI-buss. MFRC522.PCD_INIT (); // Initialisering MFRC522 / Init MFRC522-kort. Servo.Atherack (6); servo.write (0); // Installera servern i den slutna sparande) Void Loop () (// Sök efter en ny om etikett (! MfrC522.Picc_isnewcardpresent ( )) (Retur) // Välja om (! MFRC522.Picc_readcardserial ()) (retur) uiddec \u003d 0; // Utgivning serienummer Taggar. för (byte i \u003d 0; jag< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем ljudsignal, Öppnande servo.write (90); // rotera tjänsten i en vinkel på 90 grader (skruva loss någon mekanism: ventilen, vrid nyckeln, etc.) fördröjningen (3000); // PAUSE 3 SECONDS och mekanismen är låst. Ton (5, 500, 500); // Gör en pip, stängning) servo.write (0); // installera tjänsten i sluten besparing)

Vi kommer att undersöka skissen mer detaljerat:

För att ta reda på UID-korten (taggar) måste du skriva den här skissen i Arduino, samla in systemet ovan och öppna konsolen (övervakning av seriell port). När du tar med etiketten till RFID, numret i konsolen

Den resulterande UID måste anges i följande rad:

Om (UIDDEC \u003d\u003d 3763966293) // Jämför UID-taggar om det är lika med det angivna, öppnar servo ventilen.

Varje kort har en unik identifierare och upprepas inte. På ett sådant sätt, när du tar med ett kort vars identifierare du är inställd i programmet, öppnar systemet åtkomst med hjälp av en servo.

Video:

I den här artikeln kommer jag att berätta hur du gör ett kodslott från Arduino. För att göra detta behöver vi röda och gröna lysdioder, en summer, Arduino Nano, LCD skärm Med I2C-omvandlare, servo och matris tangentbord 4x4. När du slår på skärmen skrivs "ENTER-kod.",

slå på den röda lysdioden,

och den gröna kommer att gå ut, servo är inställd på 0 °. När du anger siffror på displayen tänds *.

Om koden är felaktigt skrivs displayen "Enter COD.". Om koden är korrekt, ljuden låter, servo-enheten vrider 180 °, visar displayen "öppen."

kommer att slå på den gröna lysdioden,

och den röda stängs av. Efter 3 sekunder kommer servo att återgå till den ursprungliga positionen, den röda lysdioden slås på, och den gröna kommer att gå ut, displayen skrivs "nära".

då skriver displayen "Ange kod.". Nu om systemet. Anslut först Arduino med ledningarna med ett batchkort (Power Contacts).

Då ansluter vi matris-tangentbordet för att kontakta D9 - D2.

Sedan servo. Den är ansluten till kontakt 10.

Röd ledde till kontakt 11.

Grön - att kontakta 12.

Buzzer är att kontakta 13.

Ladda nu skissen.

#Omfatta. #Omfatta. #Omfatta. #Omfatta. Ovarduino_KB KB (9, 8, 7, 6, 5, 4, 3, 2); LiquidCrystal_I2C LCD (0x27, 16, 2); Servos servo; Intpass \u003d (3, 6, 1, 8); int i; int r \u003d 11; int g \u003d 12; VOID SETUP () (KB.BEGIN (KB1); PINMODE (R, OUTPUT); PINMODE (G, OUTPUT); LCD.INIT (); LCD.BACKLIGHT (); DIGITALWRITE (G, LOW); DIGITALWRITE (R, HIGH ); Servo.attach (10); servo.write (0); LCD.Sätt Cursor (0, 0);) Void Loop () (LCD.Clear (); LCD.Print ("Ange kod"); medan (! Kb.check (key_down)) (Fördröjning (1);) i \u003d kb.getnum; LCD.Clear (); LCD.Sätt Cursor (0, 0); LCD.Print ("*"); medan (! KB. Kontrollera (key_down)) (Fördröjning (1);) i \u003d kb.getnum; LCD.Print ("*"); medan (! kb.check (key_down)) (fördröjning (1);) i \u003d kb.getnum; LCD .Print ("*"); medan (! kb.check (key_down)) (fördröjning (1);) i \u003d kb.getnum; LCD.Print ("*"); om (i \u003d\u003d pass) (om (om (om ( I \u003d\u003d pass) (om (i \u003d\u003d pass) (om (i \u003d\u003d pass) (LCD.Clear (); LCD.Sätt Cursor (0, 0); LCD.Print ("Open"); Tone (13, 400, 750); servo.write (180); digitalwrite (r, low); Digitalwrite (g, hög); Fördröja (3000); LCD.Clear (); LCD.Sätt Cursor (0, 0); LCD. Skriv ut ( "Stäng"); ton (13, 300, 700); servo.write (0); digitalwrite (g, låg); digitalwrite (r, hög); Dela y (1000); )))))

Det är allt. Njut av kodlåset!

Lista över radioelement

Beteckning En typ Nominell siffra NoteraGöraMin anteckningsbok
E1 Arduino Board

Arduino Nano 3.0

1 5V. I anteckningsboken
E8, E9 Motstånd

220 Oh.

2 SMD. I anteckningsboken
E6. Ljusdiod

Al102g.

1 Röd I anteckningsboken
E7. Ljusdiod

Al307G.

1 Grön I anteckningsboken
E3. LCD skärmMed i2c-gränssnitt1 Grön bakgrundsbelysning I anteckningsboken
E5 ServoSG90.1 180 grader I anteckningsboken
E2. Summer5V.1 Bu. I anteckningsboken
E4. Tangentbord4x41 Matris I anteckningsboken
Inte Bakbord.640 poäng1 Utan lödning

Den andra dagen som jag granskade filmen "New Spiderman" och i ett steg öppnar Peter Parker på distans och stänger dörren från sin bärbara dator. Så snart jag såg det insåg jag omedelbart att jag behöver ett sådant elektroniskt lås på ytterdörren.

Med lite, samlade jag en giltig modell av ett smart slott. I den här artikeln kommer jag att berätta hur jag samlade henne.

Steg 1: Lista över material





För montering elektronisk slott På Arduino behöver du följande material:

Elektronik:

  • 5V väggadapter

Komponenter:

  • 6 skruvar för spinnet
  • kartong
  • ledningar

Instrument:

  • lödkolv
  • klisterpistol
  • borra
  • borra
  • borra för styrhål
  • brevpapper kniv
  • dator med arduino ide

Steg 2: Hur slottet fungerar

Tanken är att jag kan öppna eller stänga dörren utan en nyckel, och även utan att komma till den. Men det här är bara huvudidén, för att du fortfarande kan lägga till en detonationssensor så att den reagerar på en speciell knock, eller du kan lägga till ett röstigenkänningssystem!

Servohandtaget som är ansluten till scoretet stänger den (0 °) och öppet (60 °) med hjälp av de kommandon som erhållits genom bluetooth-modul.

Steg 3: Wire installationsschema


Låt oss först ansluta servo till Arduino-styrelsen (jag vill notera att, även om jag använde Arduino nano-avgiften, i UNO-styrelsen, är slutsatsernas läge exakt samma).

  • brown Wire Servo - Jordning, anslut den till marken på Arduino
  • red Wire - Plus, anslut den till 5b-kontakten på Arduino
  • orange tråd - Utgång av servos källa, anslut den till den 9: e slutsatsen på Arduino

Jag rekommenderar att du kontrollerar servos funktion innan du fortsätter församlingen. För att göra detta, i Arduino IDE-programmet i exemplen väljer sopa. Se till att servo fungerar, kan vi ansluta en Bluetooth-modul. Du måste ansluta RX-utgången från Bluetooth-modulen med TX-utgången Arduino och TX-utgången från modulen med RX-utgångs Arduino. Men gör det inte än! När dessa anslutningar är lödda, kan du inte hämta några koder på Arduino, så du först ladda ner alla dina koder och först efter det lödanslutningarna.

Här är systemet för modulen och mikrokontrollerföreningarna:

  • RX Module - TX Arduino Boards
  • TX-modulen - RX-brädor
  • VCC (positiv utgång) Modul - 3.3V Arduino Boards
  • Jordanslutning med marken (jordjord)

Om förklaringen verkar vara oförståelig, följ schemat för trådanslutningarna.

Steg 4: Testning

Nu när vi har alla skådespelare, låt oss se till att servo kan flytta poängen. Innan jag monterar en poäng på dörren samlade jag ett provprov för att se till att servo är ganska kraftfull. Först verkade det för mig att min servo var svag och jag lade till en droppe olja i en skarl. Därefter fungerade han bra. Det är mycket viktigt att mekanismen glider väl, annars riskerar du att vara låst i ditt rum.

Steg 5: Fall för elektrokomponenter



Jag bestämde mig för att bara styra styrenheten i fallet och Bluetooth-modulen, och servoen är kvar utanför. För att göra detta, på en bit av kartong, levererar vi Arduino nano kretskretsen och lägger till 1 cm utrymme runt omkretsen och skär ut. Därefter skar vi också ut fem fler sidor av kroppen. På framväggen är det nödvändigt att skära hålhål för styrenhetens nätkabel.

Sidorlekar av ärendet:

  • Botten - 7,5x4 cm
  • Omslag - 7,5x4 cm
  • Vänster sidovägg - 7,5x4 cm
  • Höger sidovägg - 7,5x4 cm
  • Framvägg - 4x4 cm (med en slits för nätsladd)
  • Bakväggen - 4x4 cm

Steg 6: Bilaga

För att styra kontrollenheten behöver du en gadget på Android eller Windows med en inbyggd Bluetooth. Jag hade inte möjlighet att kontrollera driften av applikationen på Apple-enheter, kanske du behöver några förare.

Jag är säker på att några av er har möjlighet att kolla in det. För Android Ladda ner Bluetooth-applikation, ladda ner Teraterm för Windows. Då måste du ansluta modulen till smarttelefonen, namnet måste vara Linvor, lösenord - 0000 eller 1234. När parningen är etablerat, öppet installerad applikationAnge alternativet och välj "Installera anslutningen (osäker)". Nu är din smartphone den arduino seriella gränssnittsmonitorn, det vill säga du kan utbyta data med regulatorn.

Om du anger 0 stängs dörren, och på skärmen på smarttelefonen kommer det att bli ett meddelande "Dörren är stängd".
Om du anger 1 kommer du att se hur dörren öppnas, och på skärmen blir det ett meddelande "dörren är öppen."
På Windows är processen densamma, förutom att du måste installera Teraterm-programmet.

Steg 7: Intim Scoretet


Först måste du ansluta en spännande servo-enhet. För att göra detta, klippa pluggarna från monteringshålen på drivhuset. Om vi \u200b\u200bsätter servo-enheten måste monteringshålen vara stängda med en splittring. Då måste du sätta servospaken i spinnplatsen, där det fanns ett spinnhandtag. Kontrollera hur låset går i fallet. Om allt är bra, säkra servohandtaget med lim.

Nu måste du borra i dörrstyrningshålen för skruvar. För att göra detta, bifoga poäng till dörren och penna, markera på dörren till dörrhålet under skruvarna. Borra på de observerade platserna i hålet under skruvarna på ett djup av ca 2,5 cm. Applicera poängen och säkra den med skruvar. Kontrollera servooperationen igen.

Steg 8: Näring


För att slutföra enheten behöver du en strömkälla, sladd och mini-USB-kontakt för att ansluta till Arduino.
Anslut strömkällans strömutgång med utmatningen från USB-mini-porten, anslut den röda ledningen med den röda ledningen i USB-mini-porten och sträck sedan ledningen från låset till dörrslingan och sträcka det från det till utloppet.

Steg 9: Kod

#include servo myservo; int pos \u003d 0; int state; int flagga \u003d 0; void setup () (myservo.attach (9); serial.begin (9600); myservo.write (60); Fördröjning (1000);) Void Loop () (IF (Serial.Available ()\u003e 0) (State \u003d Serial.read (); flagga \u003d 0;) // Om tillståndet är "0" kommer DC-motorn att stängas av om (tillstånd \u003d\u003d "0") (myservo.write (8); Fördröjning (1000); seriell. Println ("Dörrlåsad");) I annat om (tillstånd \u003d\u003d "1") (myservo.write (55); Fördröjning (1000); Serial.Println ("Dörrlåsad");))

Steg 10: Komplett slott på grundval av Arduino

Njut av ditt slott med fjärrkontroll, Och glöm inte att "av en slump" för att hitta vänner i rummet.

Bemästra youtube-kanal "ALEXGYVER" bad om att göra ett elektroniskt lås med egna händer. Välkommen till videosykeln om de elektroniska låsarna på Arduino. Generellt sett kommer mästaren att förklara idén.

Det finns flera alternativ för att skapa ett elektroniskt låssystem. Oftast används för att låsa dörrar och lådor, skåp. Förutom att skapa cacher och hemliga kassaskåp. Därför måste du göra en layout med vilken den är bekväm att arbeta och kan tydligt visas i detalj anordningens system från insidan och utsidan. Därför bestämde jag mig för att göra en ram med dörren. För att göra detta behöver du en fyrkantig bar av 30 x 30. plywood 10mm. Dörr gångjärn. Inledningsvis ville jag göra en plywoodlåda, men jag kom ihåg att allt var vridet med reservdelar. En sådan låda har ingenstans att sätta. Därför kommer layouten att göras. Om någon vill sätta ett elektroniskt lås, och titta på layouten kan du enkelt upprepa allt.

Allt du behöver för slottet hittar i den här kinesiska butiken.

Målet är att utveckla maximalt effektiva system och firmware för elektroniska lås. Du kan använda dessa resultat för att installera dessa system på dina dörrar, lådor, skåp och cacher.

Dörren är klar. Nu måste du komma med hur man öppnar och stänger elektronisk metod. För dessa ändamål är en kraftfull solenoid gädda med AliExpress lämplig (länk till butiken ovan). Om du skickar till spännings slutsatser öppnas det. Spolmotståndet är nästan 12 ohm, det betyder att vid en spänning på 12 volt kommer spolen att äta ca 1 amp. Med en sådan uppgift kan klara sig och litiumbatteri och öka modulen. Anpassa den lämpliga spänningen. Även om du kan och lite mer. Platsen är monterad på insidan av dörren på avstånd för att inte klamra kanten och kan slamma. Shekold måste vara en retaliatorisk del i form av en metalllåda. Det är obekväma att använda det utan det. Vi måste sätta ett steg, åtminstone skapat utseendet på normal drift.

I viloläge öppnas skräpet normalt, det vill säga om det finns ett handtag på dörren, applicerar vi en puls, öppnar dörren för handtaget. Men om du hoppar ut, är den här metoden inte längre lämplig. Förbättringsomvandlaren klarar inte belastningen. För att öppna vårgjorda dörren måste du använda stora batterier och en mer kraftfull omvandlare. Antingen en nätaggregat och poäng på systemets autonomi. I kinesiska butiker finns stora storlekar. De är lämpliga för lådor. Näring kan levereras med hjälp av ett relä eller transistor mosphore eller en strömknapp på samma transistor. Mer intressant och billigare alternativ är en servo ansluten till en anslutningsstång med vilket låsande elementet - en dekorering eller mer allvarlig ventil. Det kan också behövas en bit av stålnålar som utför en anslutningsstångs roll. Ett sådant system behöver inte en hög ström. Men det tar mer utrymme och mer knepig ledningslogik.

Det finns två typer av servostyrningar. Liten svag och stor kraftfull, som kan vara lugnt anslutna i hålen i allvarliga metallpinnar. Båda visade alternativen fungerar både på dörrarna och på lådor. Med lådan måste du tinker, dra hålet i den infällbara väggen.

Den andra delen av

Arduino är bästa systemet Att kopiera någon utrustning. De flesta idéer skulle inte kunna bli sanna utan henne. Under lång tid är det en sådan tanke: skapa ett specialkodslås på Arduino. För att öppna det är det nödvändigt att ansluta en specifik nyckel. I det här fallet ska låset inte öppnas, även om du vet önskad knapp. För att öppna det är det nödvändigt att klara vissa intervaller med muskelminnet. En sådan brottsling kommer inte att kunna begå. Men det här är allt teori.

För att samla det måste du dra nytta av den speciella enheten av rektangulära pulser, såväl som flera meter och höga. Men den färdiga enheten skulle ha stor mått Och det kunde inte användas. Som regel ger sådana tankar inte vila. Det första steget i förstörelsen av drömmen var skapandet av ett program under Arduino. Det är hon som kommer att fungera som kodlås. För att öppna det måste du trycka på inte en nyckel, men några, och gör det samtidigt. Det färdiga schemat ser ut som:

Bildkvaliteten är inte bäst, men anslutningen utförs till marken, D3, D5, D7, D9 och D11.

Koden presenteras nedan:

Const int ia \u003d 3; CONST INT INB \u003d 5; CONST INT INC \u003d 9; CONST INT LEDPIN \u003d 13; int i \u003d 1000; Byte a \u003d 0; Byte b \u003d 0; Byte c \u003d 0; Byte d \u003d 0; osignerad lång tid \u003d 0; // Glöm inte allt som tar värdet av millis () unsigned long temp \u003d 0; // Store i unsigned Long Byte Keya \u003d (0, 0, 0, 0, 0, 0, 0, 0); // koder faktiskt byte keyb \u003d (1, 1, 1, 1, 0, 1, 0, 0); Byte keyc \u003d (1, 0, 1, 0, 1, 1, 1, 0); Byte k \u003d 0; VOID SETUP () (PINMODE (INA, INPUT_PULLUP); // 3 ingångar anslutna till PINMODE-knapparna (INB, INPUT_PULLUP); PINMODE (INC, INPUT_PULLUP); PINMODE (LEDPIN, OUTPUT); // Inbyggd LED på 13: e PINE PINMODE (7, OUTPUT); PINMODE (11, OUTPUT); DIGITALWRITE (7, LOW); // Byt jord Digitalwrite (11, Low); Time \u003d Millis (); // Behov till referenstid) Void BlinkTwice ( ) (// dubbel blinkande digitalwrite LED (Ledpin, hög); Fördröjning (100); Digitalwrite (Ledpin, Low); Fördröjning (100); Digitalwrite (Ledpin, hög); Fördröjning (100); DigitalWrite (Ledpin, Low); Fördröjning (200);) Void Loop () (om (k \u003d\u003d 0) (blinkTwice (); // inbjudan Ange kod) om (k \u003d\u003d 8) (digitalwrite (Ledpin, hög); Fördröjning (3000); K \u003d 0;) A \u003d Digitalread (INA); // Signalnivåer läses från knapparna - tryckt / ej tryckt B \u003d Digitallread (INB); C \u003d digitalread (INC); Fördröjning (100); // Nästa om - Skydd Mot falska positiva, kan du inte använda om ((digitallread (INA) \u003d\u003d a) && (digitalread (inb) \u003d\u003d b) && (digitalread (inc) \u003d\u003d c)) (om (a \u003d\u003d keya [k] ) (Om (b \u003d\u003d Keyb [k]) (om (c \u003d\u003d Keyc [k]) (k ++; )))) om (k \u003d\u003d 1) (om (d \u003d\u003d 0) (tid \u003d millis (); d ++;)) temp \u003d millis (); Temp \u003d temp - tid; om (temp\u003e 10000) (k \u003d 0; d \u003d 0; tid \u003d millis ();))

För att inte ha några extra frågor på koden bör några stunder förklaras. Inställningsfunktionen används för att tilldela portar. Följande funktion är input_pullup, vilket är nödvändigt för att öka spänningen hos tallet med 5 V. Detta utförs med användning av ett motstånd. På grund av detta kommer olika kortslutningar inte att uppstå. För större bekvämlighet rekommenderas att du använder BlinkTwice-funktionen. I allmänhet, när du skapar olika program, måste du prova andra funktioner.

Efter att ha tilldelat funktionerna läses signalen från portarna. Om knappen trycks in, kommer det att betecknas med ett nummer 1, och om inte - 2. Därefter finns det en analys av alla värden. En sådan kombination uppträdde till exempel som 0,1,1. Det betyder att den första nyckeln trycks, och de återstående två är inte. Om alla värden utförs korrekt, är villkoret 8 också sant. Detta framgår av Lighted LED på frontpanelen. Därefter måste du ange en viss kod som kommer att tjäna till att öppna dörren.

De senaste kodelementen används för att släppa mätvärdena. Denna funktion utförs om efter den sista tangenttryckningen, mer än 10 sekunder passerade. Utan den här koden var det möjligt att gå igenom allt möjliga alternativÄven om det finns många tillräckligt. Efter att ha skapat denna apparat Det är nödvändigt att testa det. Än