- Käytetyt komponentit:
- 4x4-näppäimistön yhdistäminen Raspberry Pi -palveluun multipleksoinnin avulla:
- Piirin kuvaus:
- Työselitys:
- Ohjelmoinnin selitys:
Turvallisuus on tärkeä huolenaihe jokapäiväisessä elämässämme, ja digitaalisista lukoista on tullut tärkeä osa näitä turvajärjestelmiä. Paikkamme turvaamiseksi on saatavilla monen tyyppisiä tekniikoita, kuten PIR-pohjaiset turvajärjestelmät, RFID-pohjainen turvajärjestelmä, laser-turvahälytykset, biomatriisijärjestelmät jne.
Olemme aiemmin rakentaneet digitaalisen lukituksen salasanalla Arduinolla ja 8051: llä, tässä aiomme rakentaa tämän digitaalisen lukon käyttämällä Raspberry Pi: tä käyttäjän määrittämällä salasanalla. Kun salasana on asetettu, käyttäjä pääsee oveen vain oikealla salasanalla.
Jos et ole perehtynyt Raspberry Pi: hen, olemme luoneet sarjan Raspberry Pi: n oppimisohjelmia, joissa on liitäntä kaikkien peruskomponenttien ja aluksi yksinkertaisten projektien kanssa, tarkista.
Käytetyt komponentit:
- Vadelma Pi (käynnistetyllä SD-kortilla)
- Näppäimistömoduuli
- Summeri
- 16x2 LCD
- 10k potti
- 10 k: n vastuspaketti (vedettävä)
- LED
- 1k vastus
- Leipälauta
- CD / DVD-vaunu porttina
- Teho 5 volttia
- Moottoriohjain L293D
- 12 voltin akku
- Johtojen liittäminen
4x4-näppäimistön yhdistäminen Raspberry Pi -palveluun multipleksoinnin avulla:
Tässä piirissä olemme käyttäneet multipleksointitekniikkaa liittämään näppäimistön salasanan syöttämiseen järjestelmään. Tässä käytämme 4x4-multipleksinäppäimistöä, jossa on 16 avainta. Normaalisti, jos haluamme käyttää 16 avainta, tarvitsemme 16 nastaa Arduinoon yhdistämiseen, mutta multipleksointitekniikassa tarvitsemme vain 8 nastaa 16 avaimen liittämiseen. Joten se on älykäs tapa liittää näppäimistömoduuli. Lisätietoja multipleksointitekniikasta ja sen toiminnasta tässä digitaalilukossa 8051: n avulla.
Multipleksointitekniikka on erittäin tehokas tapa vähentää mikrokontrollerin kanssa käytettävien nastojen määrää syötteen, salasanan tai numeroiden toimittamiseksi. Pohjimmiltaan tätä tekniikkaa käytetään kahdella tavalla - yksi on riviskannaus ja toinen sarakeskannaus. Jos käytämme näppäimistökirjastoa (#include
Mutta tässä projektissa olemme toteuttaneet lyhyen tavan koodata samaa näppäimistöä käyttämättä näppäimistökirjastoa. Katso se alla olevasta ohjelmointiosasta.
Piirin kuvaus:
Tämän Raspberry Pi Digital Door Lock -lukituksen piiri on hyvin yksinkertainen, ja se sisältää Raspberry Pi 3: n, näppäimistömoduulin, summerin, DVD / CD-vaunun porttina ja LCD: n. Täällä Raspberry Pi ohjaa koko prosessia, kuten salasanan ottaminen näppäimistömoduulista, salasanojen vertailu, summerin ajaminen, portin avaaminen / sulkeminen ja tilan lähettäminen LCD-näyttöön. Näppäimistöä käytetään salasanan syöttämiseen. Summeriä käytetään indikaatioihin ja sitä ohjaa sisäänrakennettu NPN-transistori. LCD-näyttöä käytetään tilan tai viestien näyttämiseen siinä.
Näppäimistömoduulin saraketapit on kytketty suoraan GPIO-nastoihin 22, 23, 24, 25 ja rivinastat on liitetty 21, 14, 13, 12 Raspberry Pi: n wringPi-nastoihin. 16x2 LCD on kytketty vadelma Pi 4-bittisessä tilassa. LCD: n ohjaustappi RS, RW ja En on kytketty suoraan GPIO-nastoihin 11, GND ja 10. Datanastat D4-D7 on kytketty GPIO-nastoihin 6, 15, 4 ja 1. Yksi summeri on kytketty GPIO-nastaan 8. Ja moottorin ohjain L293D on kytketty Vadelma Pi: n GPIO-nastoihin 28 ja 29. 12 voltin akku on liitetty tappi 8 L293D suhteessa maahan.
Työselitys:
Tämän projektin tekeminen on yksinkertaista. Kun käyttäjä suorittaa koodin Raspberry Pi: ssä, LCD-näytössä näkyy tervetuloviesti ja sen jälkeen "A- Input Password" ja toisella rivillä B- Change Passkey. Nyt käyttäjä voi valita valintansa painamalla A ja B näppäimistössä.
Jos käyttäjä haluaa nyt avata portin, hänen on painettava näppäimistön A-näppäintä ja sitten järjestelmä pyytää salasanaa. Oletussalasana on “1234”. Nyt käyttäjän on syötettävä salasana ja tämän järjestelmän jälkeen tarkistettava salasana, onko se voimassa vai ei:
1. Jos käyttäjä antaa oikean salasanan, järjestelmä avaa portin.
2. Jos käyttäjä syöttää väärän salasanan, järjestelmä lähettää äänimerkille komennon ja näyttää ”Käyttö estetty” nestekidenäytössä.
Oletetaan, että käyttäjä haluaa vaihtaa salasanan, hänen on sitten painettava näppäimistön B-näppäintä ja sitten käyttäjältä kysytään "Nykyinen salasana" tai "Nykyinen salasana". Käyttäjän on nyt syötettävä nykyinen salasana, järjestelmän on tarkistettava sen oikeellisuus ja suoritettava yksi annetuista tehtävistä.
1. Jos käyttäjä syöttää oikean salasanan, järjestelmä kysyy “Uusi salasana” ja nyt käyttäjä voi vaihtaa salasanan syöttämällä uuden salasanan.
2. Ja jos käyttäjä antaa väärän salasanan, järjestelmä ajaa summeria ja näyttää “Väärä salasana: LCD-näytöllä.
Nyt käyttäjän on toistettava koko prosessi uudelleen salasanan vaihtamiseksi.
Pohjimmiltaan portin avaaminen ja sulkeminen ei ole muuta kuin pyörittää moottorikelloa viisaasti ja vastapäivään oven avaamiseksi ja sulkemiseksi. Pienessä projektissa voit yksinkertaisesti lisätä tasavirtamoottorin oven avaamiseksi ja sulkemiseksi. Voimme käyttää myös servo- tai askelmoottoria, mutta meidän on muutettava koodi vastaavasti.
Lisäksi voit käyttää oikeaa elektronista oven lukkoa (helposti saatavilla verkossa) CD-vaunun sijasta. Siinä on sähkömagneetti, joka pitää oven lukittuna, kun lukon läpi ei ole virtaa (avoin piiri), ja kun sen läpi kulkee jokin virta, lukko avautuu ja ovi voidaan avata. Koodia muutetaan vastaavasti, tarkista myös tämä jaettu projekti-arvostelu: Arduino RFID Door Lock
Ohjelmoinnin selitys:
Ohjelmointi on paljon samanlainen kuin Arduino. Arduino-funktio käyttää luokkia, mutta tässä olemme tehneet tämän koodin käyttämällä c-ohjelmointia ilman luokkia. Olemme myös asentaneet wiringPi-kirjaston GPIO- laitteille.
Nyt meidän on ensin sisällytettävä vaaditut kirjastot ja määritettävä sitten nastat LCD: lle, summerille, LEDille ja moottorille.
#sisältää
Sen jälkeen määritä nastat näppäimistön riville ja sarakkeille ja määritä taulukko salasanan ja näppäimistön numeroiden tallentamiseksi.
char pass; char pass1 = {'1', '2', '3', '4'}; int n = 0; merkkirivi = {21, 14, 13, 12}; char col = {22, 23, 24, 25}; char numero = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, '' 7 '', '' 8 '' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}};
Sen jälkeen olemme kirjoittaneet joitain toimintoja LCD-näytön ajamiseksi:
Toimintoa void lcdcmd käytetään komentojen lähettämiseen LCD- näyttöön ja void write -toimintoa käytetään tietojen lähettämiseen LCD-näyttöön.
Funktio void -tulostusta käytetään merkkijonon lähettämiseen LCD-näyttöön.
void print (char * str) {while (* str) {kirjoita (* str); str ++; }}
Funktio void set Kohdistinta käytetään kohdistimen sijainnin asettamiseen nestekidenäytössä.
void setCursor (int x, int y) {int set = 0; jos (y == 0) asetettu = 128 + x; jos (y == 1) asetettu = 192 + x; lcdcmd (sarja); }
Funktio void clear () käytetään nestekidenäytön tyhjentämiseen ja void summeria () käytetään summerin äänimerkkiin.
Funktiota void gate_open (), void gate_stop () ja void gate_close () käytetään portin ajamiseen (CD-vaunu)
void gate_open () {digitalWrite (m1, LOW); digitalWrite (m2, KORKEA); viive (2000); } void gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, LOW); viive (2000); } void gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, LOW); viive (2000); }
Annettua toimintoa käytetään alustamaan LCD-näyttö 4-bittisessä tilassa.
mitätön alku (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Annettua tyhjää näppäimistöä () -toimintoa käytetään näppäimistömoduulin liittämiseen Raspberry Pi: n kanssa 'lyhyellä menetelmällä'.
tyhjä näppäimistö () {int i, j; int x = 0, k = 0; viive (2000); kun (k <4) {(i = 0; i <4; i ++) {digitalWrite (col, LOW); for (j = 0; j <4; j ++) {if (digitalRead (rivi) == 0) {setCursor (x, 1);…………………
Tarkista kaikki toiminnot alla olevasta koko koodista, koodi on helppoa ja itsestään selvää.