Sommario:

Separatore di chiavi: 6 passaggi
Separatore di chiavi: 6 passaggi

Video: Separatore di chiavi: 6 passaggi

Video: Separatore di chiavi: 6 passaggi
Video: Separatore cuscinetti come usarlo 2024, Dicembre
Anonim
Ordina chiavi
Ordina chiavi
Ordina chiavi
Ordina chiavi

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?

Passaggio 1: di cosa ho bisogno?
Passaggio 1: di cosa ho bisogno?
Passaggio 1: di cosa ho bisogno?
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

Passaggio 2: creazione di uno schema di database
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

Passaggio 3: codifica
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

Passaggio 5: creare un alloggio
Passaggio 5: creare un alloggio
Passaggio 5: creare un alloggio
Passaggio 5: creare un alloggio
Passaggio 5: creare un alloggio
Passaggio 5: creare un alloggio
Passaggio 5: creare un alloggio
Passaggio 5: creare 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: