Inhaltsverzeichnis:

Schlüsselsortierer - Gunook
Schlüsselsortierer - Gunook

Video: Schlüsselsortierer - Gunook

Video: Schlüsselsortierer - Gunook
Video: Keypack als Smartphone-Ständer 2024, November
Anonim
Schlüsselsortierer
Schlüsselsortierer
Schlüsselsortierer
Schlüsselsortierer

Ich studiere derzeit NMCT bei Howest. Für unser letztes Semester mussten wir ein Projekt machen. Also habe ich einen Keysorter gemacht.

Was tut es?

Wir haben viele Autoschlüssel zu Hause und sie sehen alle gleich aus. Also habe ich einen Keysorter erstellt, um dieses Problem zu lösen.

Es muss einen Schlüssel per RFID einscannen und ihm einen Platz in der Box geben. Wenn ich den gleichen Schlüssel noch einmal scanne, wird sein zuvor zugewiesener Platz angezeigt. Es gibt auch eine Schaltfläche, um das zuletzt gewaschene Auto anzuzeigen.

Dies wird alles auf einem Raspberry Pi laufen, der auch die Möglichkeit hat, eine Webseite über Flask hinzuzufügen.

Auf der Seite sollte ich in der Lage sein, alle Schlüssel anzuzeigen, einem Schlüssel einen Namen hinzuzufügen und einen Schlüssel zu entfernen.

Schritt 1: Schritt 1: Was brauche ich?

Schritt 1: Was brauche ich?
Schritt 1: Was brauche ich?
Schritt 1: Was brauche ich?
Schritt 1: Was brauche ich?

Ich begann damit, eine Liste von Komponenten zu erstellen, die ich benötige, damit dieses Ding funktioniert.

Komponenten:

  • Himbeer-Pi
  • 2 x Schieberegister (74hc595)
  • 3 x Taste
  • 9 x grüne LED
  • RFID-Scanner (MFRC522)
  • 12 x Widerstand 220 Ohm

Dann habe ich das alles in meinen Fritzing-Schema eingefügt.

Nachdem ich dies getan hatte, habe ich es im wirklichen Leben geschafft.

Schritt 2: Schritt 2: Erstellen eines Datenbankschemas

Schritt 2: Erstellen eines Datenbankschemas
Schritt 2: Erstellen eines Datenbankschemas

Um alle meine Daten zu speichern, musste ich eine Datenbank erstellen, die auf meinem Pi laufen konnte.

Ich habe es in Mysql gemacht.

Tischwagen:

  • Auto-ID
  • Benutzeridentifikation
  • Marke (Automarke)
  • Typ
  • Zuletzt gewaschen
  • Taste
  • RFID_ID

Schritt 3: Schritt 3: Codierung

Schritt 3: Codierung
Schritt 3: Codierung

Als das alles fertig war, konnte ich mit dem Codieren beginnen.

Ich begann damit, den Code für meinen Sensor in Python 3.5 zu erstellen.

Um den Code herunterzuladen, klicken Sie hier.

Verwenden Sie den Link, um das Projekt zu klonen.

Schritt 4: Schritt 4: Setzen Sie den Code auf meinen Raspberry Pi

Pakete installieren

Zuerst habe ich alle Pakete installiert, die ich brauchte, um dies zum Laufen zu bringen.

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

Virtuelle Umgebung

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

Laden Sie das Projekt mit pycharm auf Ihren Pi hoch

Öffnen Sie Pycharm und gehen Sie zu VCS > Import from Version Control > Github und klonen Sie meine Github-Datei.

Legen Sie die Bereitstellungskonfiguration in das soeben erstellte Verzeichnis ab. (/home/ich/projekt1). Presse bewerben!

Gehen Sie zu den Dolmetschereinstellungen und wählen Sie die gerade erstellte virtuelle Umgebung aus. (/home/me/project1/env/bin/pyhon)

Überprüfen Sie, ob die Pfadzuordnung korrekt ist.

Jetzt können Sie den Code mit Pycharm in Ihr Verzeichnis hochladen.

Datenbank

Überprüfen Sie, ob die Datenbank ausgeführt wird. Sie sollten etwa Folgendes erhalten:

me@my-rpi:~ $ sudo systemctl status mysql● mariadb.service - MariaDB-Datenbankserver Geladen: geladen (/lib/systemd/system/mariadb.service; aktiviert; Herstellervoreinstellung: aktiviert) Aktiv: aktiv (läuft) seit Sun 03.06.2018 09:41:18 MESZ; vor 1 Tag 4h Main PID: 781 (mysqld) Status: "Ihre SQL-Anfragen werden jetzt angenommen…" Aufgaben: 28 (Limit: 4915) CGroup: /system.slice/mariadb.service └─781 /usr/sbin/mysqld

03. Juni 09:41:13 my-rpi systemd[1]: MariaDB Datenbankserver starten… 03. Juni 09:41:15 my-rpi mysqld[781]: 2018-06-03 9:41:15 4144859136 [Anmerkung] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03. Juni 09:41:18 my-rpi systemd[1]: MariaDB-Datenbankserver gestartet.

me@my-rpi:~ $ ss -lt | grep mysql HÖREN 0 80 127.0.0.1:mysql *:*

Benutzer erstellen und Datenbank hinzufügen

me@my-rpi:~ $ sudo mariadb

Sobald Sie in der Datenbank sind, tun Sie dies.

BENUTZER ERSTELLEN 'project1-admin'@'localhost' IDENTIFIZIERT DURCH 'adminpassword';CREATE BENUTZER 'project1-web'@'localhost' IDENTIFIZIERT DURCH 'webpassword'; BENUTZER ERSTELLEN 'project1-sensor'@'localhost' IDENTIFIZIERT DURCH 'sensorpassword';

DATENBANK ERSTELLEN Projekt1;

GEWÄHLE ALLE PRIVILEGIEN AUF project1.* an 'project1-admin'@'localhost' MIT GRANT OPTION; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; Flush-Privilegien;

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` FOREIGN KEY (`idUser`) REFERENCES `user` (`idUser`) ON DELETE KEINE AKTION ON UPDATE KEINE AKTION) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

Verbinden Sie Ihre Datenbank mit Pycharm

Klicken Sie auf die Registerkarte Datenbank auf der rechten Seite. Wenn die Registerkarte nicht geöffnet ist, gehen Sie wie folgt vor: Ansicht > Werkzeugfenster > Datenbank.

Klicken Sie auf Verbindung hinzufügen. Wählen Sie Datenquelle > MySQL (Wenn es eine Schaltfläche zum Herunterladen des Treibers gibt, drücken Sie darauf.)

Gehen Sie zu SSH/SSL und überprüfen Sie SSH. Geben Sie Ihre Raspberry Pi-Anmeldeinformationen (Host/Benutzer/Passwort) ein. Port sollte 22 sein und vergessen Sie nicht, Passwort merken zu überprüfen.

Gehen Sie zurück zu Allgemein. Host sollte localhost sein und database sollte project1 sein. Geben Sie die Zugangsdaten von project1-admin ein und testen Sie die Verbindung.

Wenn die Verbindung in Ordnung ist, gehen Sie zum Tab Schemas und stellen Sie sicher, dass project1 aktiviert ist.

Überprüfen Sie, ob die Datenbank korrekt ist

me@my-rpi:~ $ echo 'Tabellen anzeigen;' | mysql project1 -t -u project1-admin -pPasswort eingeben: +----------------------------+ | Tabellen_in_projekt1 | +----------------------------------------+ | Sensor | | Benutzer | +----------------------------------------+

Konfigurationsdateien

Im Verzeichnis conf finden Sie 4 Dateien. Sie sollten die Benutzernamen in Ihren Benutzernamen ändern.

Systemd

Um alles zu starten, sollten Sie diese Befehle ausführen.

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 - uWSGI-Instanz um das Webinterface von Projekt1 zu bedienen Geladen: geladen (/etc/systemd/system/project1-flask.service; deaktiviert; Herstellervoreinstellung: aktiviert) Aktiv: aktiv (läuft) seit Mo 04.06.2018 13: 14:56 Uhr MESZ; vor 1s Main PID: 6618 (uwsgi) Aufgaben: 6 (Limit: 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. Juni 13:14:56 my-rpi uwsgi[6618]: gemappt 383928 Bytes (374 KB) für 5 Kerne 04. Juni 13:14:56 my-rpi uwsgi[6618]: *** Operational MODE: Preforking ***

● project1-sensor.service - Project 1 sensor service Geladen: geladen (/etc/systemd/system/project1-sensor.service; deaktiviert; Herstellervoreinstellung: aktiviert) Aktiv: aktiv (läuft) seit Mo 04.06.2018 13: 16:49 MESZ; vor 5s Main PID: 6826 (python) Aufgaben: 1 (limit: 4915) CGroup: /system.slice/project1-sensor.service └─6826 /home/me/project1/env/bin/python /home/me/project1 /sensor/sensor.py

04. Juni 13:16:49 my-rpi systemd[1]: Sensordienst für Projekt 1 gestartet. 04. Jun 13:16:49 my-rpi python[6826]: DEBUG:_main_:Saved sensor process_count=b'217\n' to database 04 Jun 13:16:55 my-rpi python[6826]: DEBUG:_main_: Sensor process_count=b'218\n' in Datenbank gespeichert

nginx

me@my-rpi:~/project1 $ ls -l /etc/nginx/sites-*

/etc/nginx/sites-available: total 4 -rw-r--r-- 1 root root 2416 12. Juli 2017 default

/etc/nginx/sites-enabled: total 0 lrwxrwxrwx 1 root root 34 18. Jan 13:25 default -> /etc/nginx/sites-available/default

Um alles auf Standard zu setzen, führen Sie diese Befehle aus.

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

Auto-Start

Stellen wir sicher, dass alles automatisch startet.

Gehen Sie in das Verzeichnis conf und führen Sie diese letzten Befehle aus und Sie sind fertig!

me@my-rpi:~/project1 $ sudo systemctl enable project1-*

Wenn Sie Ihren Pi neu starten, sollte er automatisch starten.

Schritt 5: Schritt 5: Ein Gehäuse herstellen

Schritt 5: Ein Gehäuse herstellen
Schritt 5: Ein Gehäuse herstellen
Schritt 5: Ein Gehäuse herstellen
Schritt 5: Ein Gehäuse herstellen
Schritt 5: Ein Gehäuse herstellen
Schritt 5: Ein Gehäuse herstellen
Schritt 5: Ein Gehäuse herstellen
Schritt 5: Ein Gehäuse herstellen

Recycling

Um meine Wohnung zu bauen, benutzte ich einen alten Schrank, den meine Mutter wegwerfen würde.

Base

Ich habe 4 Bretter (34 cm x 26 cm) gesägt. (also ein Würfel von 34 x 34 x 26).

Auf der Unterseite habe ich ein dünnes Stück Holz als Boden hinzugefügt.

Platine mit LEDs

In die Mitte habe ich auf jeder Seite 2 kleine Holzstücke gelegt, beide 9 cm von oben. Dies hält die Platine, auf der die LEDs sitzen.

Das Brett mit den LEDs ist ein kleines Brett (32 cm x 32 cm).

Ich bohrte 9 Löcher, damit die LEDs herauskommen.

Aufteilung

Ich habe die Teilung mit dem gleichen Material wie der Boden und die Platine mit LEDs gemacht.

4 Stück jeweils mit einem Einschnitt bei 10,3 cm (9 cm x 31 cm). Jetzt kann ich sie zusammenbauen.

Tasten und RFID-Leser

Ich habe ein Loch in die Basis gemacht, um meinen RFID-Leser und die Knöpfe hineinzustecken. Für das RFID habe ich ein dünnes Stück Brett davor gelegt, damit es sauberer aussieht.

Schritt 6: Schritt 6: Setzen Sie alles in das Gehäuse

Dies hängt davon ab, wie Sie es tun möchten. Ich persönlich habe viele Kabel ohne Löten verwendet, weil ich meinen Raspberry Pi wiederverwenden möchte.

Ich klebte die LEDs an und klebte den RFID-Leser und die Steckbretter auf das Gehäuse.

Und so macht man einen Keysorter!