Sommario:
- Passaggio 1: Passaggio 1: di cosa ho bisogno?
- Passaggio 2: Passaggio 2: creazione di uno schema di database
- Passaggio 3: Passaggio 3: codifica
- Passaggio 4: Passaggio 4: inserire il codice sul mio Raspberry Pi
- Passaggio 5: Passaggio 5: Realizzare un alloggio
- Passaggio 6: Passaggio 6: mettere tutto nell'alloggiamento
Video: Separatore di chiavi: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Attualmente sto studiando NMCT a Howest. Per il nostro ultimo semestre abbiamo dovuto fare un progetto. Così ho creato un Keysorter.
Che cosa fa?
Abbiamo molte chiavi della macchina a casa e si somigliano tutte. Quindi ho creato un Keysorter per risolvere questo problema.
Deve scansionare una chiave tramite RFID e dargli un posto nella scatola. Se scansiono di nuovo la stessa chiave, mostrerà il posto precedentemente assegnato. C'è anche un pulsante per mostrare l'ultima macchina lavata.
Questo funzionerà anche su un Raspberry Pi che ha anche la possibilità di aggiungere una pagina web tramite Flask.
Nella pagina dovrei essere in grado di guardare tutte le chiavi, aggiungere un nome a una chiave e rimuovere una chiave.
Passaggio 1: Passaggio 1: di cosa ho bisogno?
Ho iniziato facendo un elenco di componenti di cui avrò bisogno per far funzionare questa cosa.
Componenti:
- lampone pi
- 2 x registro a scorrimento (74hc595)
- 3 x pulsante
- 9 x led verdi
- Lettore RFID (MFRC522)
- 12 x resistenza 220 ohm
Poi ho messo tutto questo nel mio schema fritzing.
Una volta fatto, l'ho fatto nella vita reale.
Passaggio 2: Passaggio 2: creazione di uno schema di database
Per salvare tutti i miei dati ho dovuto creare un database che potesse essere eseguito sul mio Pi.
L'ho fatto in Mysql.
Carrozza da tavolo:
- ID auto
- ID utente
- Marca (marca dell'auto)
- Tipo
- Ultimo lavaggio
- Chiave
- ID_RFID
Passaggio 3: Passaggio 3: codifica
Quando tutto questo era pronto, potevo iniziare a programmare.
Ho iniziato creando il codice per il mio sensore in Python 3.5.
Per scaricare il codice clicca qui.
Usa il link per clonare il progetto.
Passaggio 4: Passaggio 4: inserire il codice sul mio Raspberry Pi
Installazione dei pacchetti
Per prima cosa ho installato tutti i pacchetti di cui avevo bisogno per farlo funzionare.
me@my-rpi:~ $ sudo apt update
me@my-rpi:~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Ambiente virtuale
me@my-rpi:~ $ python3 -m pip install --upgrade pip setuptools wheel virtualenvme@my-rpi:~ $ mkdir project1 && cd project1 me@my-rpi:~/project1 $ python3 -m venv --system- site-packages env me@my-rpi:~/project1 $ source env/bin/activate (env)me@my-rpi:~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
Carica il progetto sul tuo Pi usando pycharm
Apri Pycharm e vai su VCS> Importa da Controllo versione> Github e clona il mio file github.
Metti la configurazione della distribuzione nella directory appena creata. (/casa/io/progetto1). Premi applica!
Vai alle impostazioni dell'interprete e scegli l'ambiente virtuale che hai appena creato. (/home/me/progetto1/env/bin/pyhon)
Controlla se la mappatura del percorso è corretta.
Ora puoi caricare il codice nella tua directory usando Pycharm.
Banca dati
Controlla se il database è in esecuzione. Dovresti ottenere qualcosa del genere:
me@my-rpi:~ $ sudo systemctl status mysql● mariadb.service - Server database MariaDB Caricato: caricato (/lib/systemd/system/mariadb.service; abilitato; preset del fornitore: abilitato) Attivo: attivo (in esecuzione) da Sun 2018-06-03 09:41:18 CEST; 1 giorno 4 ore fa PID principale: 781 (mysqld) Stato: "Prendendo le tue richieste SQL ora…" Attività: 28 (limite: 4915) CGroup: /system.slice/mariadb.service └─781 /usr/sbin/mysqld
Jun 03 09:41:13 my-rpi systemd[1]: Avvio del server database MariaDB… Jun 03 09:41:15 my-rpi mysqld[781]: 2018-06-03 9:41:15 4144859136 [Nota] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03 giugno 09:41:18 my-rpi systemd[1]: avviato il server database MariaDB.
me@mio-rpi:~ $ ss -lt | grep mysql ASCOLTA 0 80 127.0.0.1:mysql *:*
Creare utenti e aggiungere il database
me@my-rpi:~ $ sudo mariadb
una volta che sei nel database fallo.
CREA UTENTE 'project1-admin'@'localhost' IDENTIFICATO DA 'adminpassword';CREA UTENTE 'project1-web'@'localhost' IDENTIFICATO DA 'webpassword'; CREA UTENTE 'project1-sensor'@'localhost' IDENTIFICATO DA 'sensorpassword';
progetto CREA DATABASE1;
CONCEDERE TUTTI I PRIVILEGI SU project1.* a 'project1-admin'@'localhost' CON L'OPZIONE DI CONCESSIONE; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; PRIVILEGI DI SCARICO;
CREATE TABLE `user` (`idUser` int(11) NOT NULL, `Password` varchar(45) DEFAULT NULL, PRIMARY KEY (`idUser`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `car` (`idCar` int(11) NOT NULL AUTO_INCREMENT, `idUser` int(11) NOT NULL, `Brand` varchar(45) DEFAULT NULL, `Type` varchar(45) DEFAULT NULL, `LastWashed` datetime DEFAULT NULL, `RFID_Number` varchar(15) DEFAULT NULL, `Key` varchar(5) DEFAULT NULL, PRIMARY KEY (`idCar`, `idUser`), KEY `fk_Car_User1_idx` (`idUser`), CONSTRAINT `fk_Car_User1` CHIAVE STRANIERA (`idUser`) RIFERIMENTI `user` (`idUser`) ON ELIMINA NESSUNA AZIONE ALL'AGGIORNAMENTO NESSUNA AZIONE) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
Collega il tuo database a Pycharm
Fare clic sulla scheda del database sul lato destro. Se non hai una scheda aperta, procedi come segue: Visualizza > Finestre degli strumenti > Database.
Fare clic su aggiungi connessione. Scegli Origine dati > MySQL (se è presente un pulsante per il download del driver, premilo.)
Vai a SSH/SSL e controlla SSH. Inserisci le tue credenziali Raspberry pi (host/utente/password). La porta dovrebbe essere 22 e non dimenticare di controllare ricorda la password.
Torna a Generale. L'host dovrebbe essere localhost e il database dovrebbe essere project1. Compila le credenziali da project1-admin e verifica la connessione.
Se la connessione è OK, vai alla scheda Schemi e assicurati che project1 sia selezionato.
Controlla se il database è corretto
me@mio-rpi:~ $ echo 'mostra tabelle;' | mysql project1 -t -u project1-admin -pEnter password: +-------------+ | Tabelle_in_progetto1 | +------------+ | sensore | | utenti | +-------------+
File di configurazione
Nella directory conf troverai 4 file. Dovresti cambiare i nomi utente con il tuo nome utente.
Systemd
Per avviare tutto dovresti eseguire questi comandi.
me@my-rpi:~/project1 $ sudo cp conf/project1-*.service /etc/systemd/system/
me@my-rpi:~/project1 $ sudo systemctl daemon-reload me@my-rpi:~/project1 $ sudo systemctl start project1-* me@my-rpi:~/project1 $ sudo systemctl status project1-* ● project1- flask.service - Istanza uWSGI per servire l'interfaccia web del progetto1 Caricato: caricato (/etc/systemd/system/project1-flask.service; disabilitato; preset del fornitore: abilitato) Attivo: attivo (in esecuzione) da Mon 2018-06-04 13: 14:56 CEST; 1s fa PID principale: 6618 (uwsgi) Task: 6 (limite: 4915) CGroup: /system.slice/project1-flask.service ├─6618 /usr/bin/uwsgi --ini /home/me/project1/conf/ uwsgi-flask.ini 6620 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621 /usr/bin/uwsgi --ini /home/me/project1/ conf/uwsgi-flask.ini ├─6622 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623 /usr/bin/uwsgi --ini /home/me/ project1/conf/uwsgi-flask.ini └─6624 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini
04 giu 13:14:56 my-rpi uwsgi[6618]: mappato 383928 byte (374 KB) per 5 core 04 giu 13:14:56 my-rpi uwsgi[6618]: *** MODALITÀ operativa: preforking ***
● project1-sensor.service - Servizio sensore Progetto 1 Caricato: caricato (/etc/systemd/system/project1-sensor.service; disabilitato; preimpostato fornitore: abilitato) Attivo: attivo (in esecuzione) da lun 2018-06-04 13: 16:49 CEST; 5s fa PID principale: 6826 (python) Task: 1 (limite: 4915) CGroup: /system.slice/project1-sensor.service └─6826 /home/me/project1/env/bin/python /home/me/project1 /sensore/sensore.py
04 giugno 13:16:49 my-rpi systemd[1]: avviato il servizio di sensori del Progetto 1. 04 giugno 13:16:49 my-rpi python[6826]: DEBUG:_main_:Sensore salvato process_count=b'217\n' nel database 04 giugno 13:16:55 my-rpi python[6826]: DEBUG:_main_: Sensore salvato process_count=b'218\n' nel database
nginx
me@my-rpi:~/project1 $ ls -l /etc/nginx/sites-*
/etc/nginx/sites-available: totale 4 -rw-r--r-- 1 root root 2416 12 luglio 2017 default
/etc/nginx/sites-enabled: totale 0 lrwxrwxrwx 1 root root 34 Jan 18 13:25 default -> /etc/nginx/sites-available/default
Per rendere tutto predefinito esegui questi comandi.
me@my-rpi:~/project1 $ sudo cp conf/nginx /etc/nginx/sites-available/project1me@my-rpi:~/project1 $ sudo rm /etc/nginx/sites-enabled/default me@my- rpi:~/project1 $ sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1 me@my-rpi:~/project1 $ sudo systemctl restart nginx.service
Avvio automatico
Assicuriamoci che tutto si avvii automaticamente.
Vai alla directory conf ed esegui questi comandi finali e il gioco è fatto!
me@my-rpi:~/project1 $ sudo systemctl enable project1-*
Se riavvii il tuo Pi, dovrebbe avviarsi automaticamente.
Passaggio 5: Passaggio 5: Realizzare un alloggio
Raccolta differenziata
Per realizzare il mio alloggio ho usato un vecchio armadio che mia madre buttava via.
base
Ho segato 4 assi (34 cm x 26 cm). (quindi è un cubo da 34 x 34 x 26).
Sul fondo ho aggiunto un sottile pezzo di legno come fondo.
Scheda con led
Al centro ho messo 2 piccoli pezzi di legno per lato entrambi a 9 cm dall'alto. Questo contiene il tabellone dove saranno seduti i led.
La lavagna con i led è una piccola lavagna (32 cm x 32 cm).
Ho praticato 9 fori per far uscire i led.
divisione
Ho realizzato la divisione con lo stesso materiale del fondo e la scheda con i led.
4 pezzi ciascuno con un'incisione a 10,3 cm (9 cm x 31 cm). Ora sono in grado di metterli insieme.
Pulsanti e lettore RFID
Ho fatto un foro nella base per inserire il mio lettore RFID e i pulsanti. Per l'RFID ci ho messo davanti un sottile pezzo di cartone per farlo sembrare più pulito.
Passaggio 6: Passaggio 6: mettere tutto nell'alloggiamento
Questo dipende da come vuoi farlo. Personalmente ho usato molti cavi senza saldature perché voglio essere in grado di riutilizzare il mio Raspberry Pi.
Ho incollato i led in posizione e ho fissato il lettore RFID e le breadboard alla custodia.
Ed è così che si crea un Keysorter!
Consigliato:
La cassaforte per chiavi di Angela: 5 passaggi
Cassaforte per chiavi di Angela: Ispirato da: https://www.instructables.com/id/Key-Safe/Una cassaforte per chiavi ben strutturata per riporre i tuoi effetti personali. Ho apportato alcune modifiche in base alla versione originale. Aggiungendo altre 3 password, "A", "B", "C" e &
Separatore di monete elettronico: 7 passaggi (con immagini)
Separatore di monete elettronico: molto, molto tempo fa, quando era ancora possibile andare a scuola, abbiamo avuto un'idea interessante per realizzare un dispositivo che funzionasse in modo abbastanza semplice - dopo aver investito la giusta quantità di denaro, abbiamo emetterà un prodotto specifico. non posso rivelare
Cassaforte per chiavi: 6 passaggi (con immagini)
Cassaforte per chiavi: durante i giorni feriali, raramente porto fuori la mia chiave, ma questo causa difficoltà quando mia madre è uscita di casa. Non avendo altra scelta, mia mamma deve lasciare la chiave nell'armadio accanto alla porta, che non ha alcuna garanzia che la chiave sia al sicuro o no
Separatore d'aria a basso costo: 6 passaggi
Separatore dell'aria dell'olio a basso costo.: La valvola pcv dell'auto di mia moglie ha rilasciato un volume significativo di olio nella presa d'aria. L'installazione di una nuova valvola non ha aiutato. Ecco come ho realizzato un separatore aria olio a basso costo per il suo veicolo
Alexa, dove sono le mie chiavi?: 4 passaggi
Alexa, dove sono le mie chiavi?: Alexa è particolarmente adatto per le attività di recupero delle informazioni e il monitoraggio delle risorse utilizzando le reti domestiche wireless. È naturale considerare l'inserimento di oggetti di valore sulla griglia per un rapido recupero. Abbiamo hackerato beacon bluetooth a basso consumo energetico per la rete