Πίνακας περιεχομένων:

Keysorter: 6 βήματα
Keysorter: 6 βήματα

Βίντεο: Keysorter: 6 βήματα

Βίντεο: Keysorter: 6 βήματα
Βίντεο: MMS - Key Sorter 400V 2024, Νοέμβριος
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Αυτή τη στιγμή σπουδάζω NMCT στο Howest. Για το τελευταίο μας εξάμηνο έπρεπε να κάνουμε ένα έργο. Έτσι έφτιαξα ένα Keysorter.

Τι κάνει?

Έχουμε πολλά κλειδιά αυτοκινήτου στο σπίτι και μοιάζουν όλα. Έτσι, έφτιαξα ένα Keysorter για την επίλυση αυτού του ζητήματος.

Πρέπει να σαρώσει ένα κλειδί μέσω RFID και να του δώσει μια θέση στο κουτί. Εάν σαρώσω ξανά το ίδιο κλειδί, θα εμφανιστεί η θέση που είχε ανατεθεί προηγουμένως. Υπάρχει επίσης ένα κουμπί για να εμφανιστεί το τελευταίο πλυμένο αυτοκίνητο.

Αυτό θα τρέξει σε ένα Raspberry Pi το οποίο έχει επίσης την επιλογή να προσθέσει μια ιστοσελίδα μέσω Flask.

Στη σελίδα θα πρέπει να μπορώ να κοιτάξω όλα τα κλειδιά, να προσθέσω ένα όνομα σε ένα κλειδί και να αφαιρέσω ένα κλειδί.

Βήμα 1: Βήμα 1: Τι θα χρειαστώ;

Βήμα 1: Τι θα χρειαστώ
Βήμα 1: Τι θα χρειαστώ
Βήμα 1: Τι θα χρειαστώ
Βήμα 1: Τι θα χρειαστώ

Ξεκίνησα κάνοντας μια λίστα με στοιχεία που θα χρειαστώ για να λειτουργήσει αυτό το πράγμα.

Συστατικά:

  • Βατόμουρο πι
  • 2 x Shift register (74hc595)
  • 3 x κουμπί
  • 9 x πράσινο led
  • Σαρωτής RFID (MFRC522)
  • 12 x αντίσταση 220 ohm

Στη συνέχεια, τα έβαλα όλα στο συναρπαστικό σχηματικό μου.

Μόλις το έκανα αυτό, το έκανα στην πραγματική ζωή.

Βήμα 2: Βήμα 2: Δημιουργία σχηματικής βάσης δεδομένων

Βήμα 2: Δημιουργία σχηματικής βάσης δεδομένων
Βήμα 2: Δημιουργία σχηματικής βάσης δεδομένων

Για να αποθηκεύσω τα δεδομένα μου έπρεπε να δημιουργήσω μια βάση δεδομένων που θα μπορούσε να τρέξει στο Pi μου.

Το έφτιαξα στο Mysql.

Επιτραπέζιο αυτοκίνητο:

  • Ταυτότητα αυτοκινήτου
  • ταυτότητα χρήστη
  • Μάρκα (μάρκα αυτοκινήτου)
  • Τύπος
  • Τελευταίο πλύσιμο
  • Κλειδί
  • RFID_ID

Βήμα 3: Βήμα 3: Κωδικοποίηση

Βήμα 3: Κωδικοποίηση
Βήμα 3: Κωδικοποίηση

Όταν όλα αυτά ήταν έτοιμα, μπορούσα να ξεκινήσω την κωδικοποίηση.

Ξεκίνησα κάνοντας τον κωδικό για τον αισθητήρα μου στο Python 3.5.

Για να κατεβάσετε τον κωδικό κάντε κλικ εδώ.

Χρησιμοποιήστε τον σύνδεσμο για να κλωνοποιήσετε το έργο.

Βήμα 4: Βήμα 4: Τοποθέτηση του Al Code στο My Raspberry Pi

Εγκατάσταση πακέτων

Πρώτα εγκατέστησα τα πακέτα που χρειαζόμουν για να λειτουργήσει αυτό.

me@my-rpi: su $ sudo apt update

me@my-rpi: su $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Εικονικό περιβάλλον

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/activ (env) me@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Ανεβάστε το έργο στο Pi σας χρησιμοποιώντας pycharm

Ανοίξτε το Pycharm και μεταβείτε στο VCS> Import from Version Control> Github και κλωνοποιήστε το αρχείο github μου.

Τοποθετήστε τη διαμόρφωση ανάπτυξης στον κατάλογο που μόλις δημιουργήσατε. (/home/me/project1). Πατήστε εφαρμογή!

Μεταβείτε στις ρυθμίσεις διερμηνέα και επιλέξτε το εικονικό περιβάλλον που μόλις δημιουργήσατε. (/home/me/project1/env/bin/pyhon)

Ελέγξτε αν η αντιστοίχιση διαδρομής είναι σωστή.

Τώρα μπορείτε να ανεβάσετε τον κώδικα στον κατάλογό σας χρησιμοποιώντας το Pycharm.

Βάση δεδομένων

Ελέγξτε αν η βάση δεδομένων λειτουργεί. Θα πρέπει να λάβετε κάτι σαν αυτό:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - Διακομιστής βάσης δεδομένων MariaDB Φορτώθηκε: φορτώθηκε (/lib/systemd/system/mariadb.service; ενεργοποιήθηκε; προμηθευτής προμηθευτή: ενεργοποιήθηκε) Ενεργό: ενεργό (τρέχει) από Κυρ 2018-06-03 09:41:18 CEST Πριν από 1 ημέρα 4 ώρες Κύριο PID: 781 (mysqld) Κατάσταση: "Λήψη των αιτημάτων SQL τώρα …" Εργασίες: 28 (όριο: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

Ιουν 03 09:41:13 σύστημα my-rpi [1]: Εκκίνηση διακομιστή βάσης δεδομένων MariaDB… Ιουν 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Σημείωση] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) Ιουν 03 09:41:18 my-rpi systemd [1]: Ξεκίνησε διακομιστής βάσης δεδομένων MariaDB.

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

Δημιουργία χρηστών και προσθήκη της βάσης δεδομένων

me@my-rpi: su $ sudo mariadb

μόλις βρεθείτε στη βάση δεδομένων κάντε το.

ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'? ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ 'project1-sensor'@'localhost' IDENTIFIED BY 'sensorpassword';

ΔΗΜΙΟΥΡΓΙΑ project1;

ΧΟΡΗΓΗΣΗ ΟΛΩΝ ΤΩΝ ΠΡΟΝΟΜΙΩΝ ΣΤΟ project1.* Στο 'project1-admin'@'localhost' WITH GRANT OPTION. GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'? GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'? ΠΡΟΣΦΟΡΕΣ ΠΡΟΣΦΟΡΑΣ;

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ `χρήστης '(` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

ΔΗΜΙΟΥΡΓΗΣΤΕ ΠΙΝΑΚΑ `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`_, ΕΞΩΤΕΡΙΚΟ ΚΛΕΙΔΙ (`idUser`) ΑΝΑΦΕΡΕΙ` χρήστης` (`idUser`) ΣΤΗΝ ΔΙΑΓΡΑΦΗ ΚΑΜΙΑ ΔΡΑΣΗ ΕΝΗΜΕΡΩΣΗΣ ΟΧΙ ΔΡΑΣΗ) ΚΙΝΗΤΗΡΑ = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Συνδέστε τη βάση δεδομένων σας στο Pycharm

Κάντε κλικ στην καρτέλα βάσης δεδομένων στη δεξιά πλευρά. Εάν δεν έχετε ανοιχτή την καρτέλα κάντε το εξής: Προβολή> Εργαλείο Windows> Βάση δεδομένων.

Κάντε κλικ στην προσθήκη σύνδεσης. Επιλέξτε Πηγή δεδομένων> MySQL (Εάν υπάρχει κουμπί οδήγησης λήψης πατήστε το.)

Μεταβείτε στο SSH/SSL και ελέγξτε το SSH. Συμπληρώστε τα διαπιστευτήριά σας Raspberry pi (κεντρικός υπολογιστής/χρήστης/κωδικός πρόσβασης). Η θύρα πρέπει να είναι 22 και μην ξεχάσετε να ελέγξετε τον κωδικό πρόσβασης.

Επιστρέψτε στο General. Ο κεντρικός υπολογιστής πρέπει να είναι localhost και η βάση δεδομένων πρέπει να είναι project1. Συμπληρώστε τα διαπιστευτήρια από το project1-admin και δοκιμάστε τη σύνδεση.

Εάν η σύνδεση είναι εντάξει, μεταβείτε στην καρτέλα Σχήματα και βεβαιωθείτε ότι το έργο1 είναι επιλεγμένο.

Ελέγξτε αν η βάση δεδομένων είναι σωστή

me@my-rpi: ~ $ echo 'show tables;' | mysql project1 -t -u project1-admin -pΕισάγετε κωδικό πρόσβασης: + --------------------------- + | Πίνακες_σε_έργο1 | + ---------------------------+ | αισθητήρας | | χρήστες | +------------------------------+

Αρχεία διαμόρφωσης

Στο conf του καταλόγου θα βρείτε 4 αρχεία. Θα πρέπει να αλλάξετε τα ονόματα χρήστη στο όνομα χρήστη σας.

Systemd

Για να ξεκινήσετε τα πάντα, πρέπει να εκτελέσετε αυτές τις εντολές.

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 για την εξυπηρέτηση διεπαφής ιστού project1 Φορτώθηκε: φορτώθηκε (/etc/systemd/system/project1-flask.service; απενεργοποιημένο; προεπιλογή προμηθευτή: ενεργοποιημένο) Ενεργό: ενεργό (τρέχει) από Δευ 2018-06-04 13: 14:56 CEST; 1s πριν Κύριο PID: 6618 (uwsgi) Εργασίες: 6 (όριο: 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 13:14:56 my-rpi uwsgi [6618]: αντιστοιχίστηκε 383928 byte (374 KB) για 5 πυρήνες Ιουνίου 04 13:14:56 my-rpi uwsgi [6618]: *** ΛΕΙΤΟΥΡΓΙΑ ΛΕΙΤΟΥΡΓΙΑΣ: preforking ***

● project1-sensor.service-Υπηρεσία αισθητήρα έργου 1 Φορτώθηκε: φορτώθηκε (/etc/systemd/system/project1-sensor.service; απενεργοποιημένο; προρυθμισμένος προμηθευτής: ενεργοποιημένος) Ενεργός: ενεργός (τρέχει) από Δευ 2018-06-04 13: 16:49 CEST; 5s πριν Κύριο PID: 6826 (python) Εργασίες: 1 (όριο: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

Ιούνιος 04 13:16:49 σύστημα my-rpi [1]: Ξεκίνησε η υπηρεσία αισθητήρων Project 1. Ιούνιος 04 13:16:49 python my-rpi [6826]: DEBUG: _ main _: Αποθηκευμένος αισθητήρας process_count = b'217 / n 'στη βάση δεδομένων Ιουνίου 04 13:16:55 python my-rpi [6826]: DEBUG: _ main_: Αποθηκεύτηκε ο αισθητήρας process_count = b'218 / n 'στη βάση δεδομένων

nginx

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

/etc/nginx/sites-available: total 4 -rw-r-r-- 1 root root 2416 Ιούλιος 12 2017 2017 προεπιλογή

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

Για να κάνετε τα πάντα προεπιλεγμένα, εκτελέστε αυτές τις εντολές.

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 επανεκκίνηση nginx.service

Αυτόματη εκκίνηση

Ας βεβαιωθούμε ότι όλα ξεκινούν αυτόματα.

Μεταβείτε στον κατάλογο conf και εκτελέστε αυτές τις τελικές εντολές και τελειώσατε!

me@my-rpi: ~/project1 $ sudo systemctl ενεργοποίηση project1-*

Εάν κάνετε επανεκκίνηση του Pi σας, θα πρέπει να ξεκινήσει αυτόματα.

Βήμα 5: Βήμα 5: Δημιουργία κατοικίας

Βήμα 5: Δημιουργία κατοικίας
Βήμα 5: Δημιουργία κατοικίας
Βήμα 5: Δημιουργία κατοικίας
Βήμα 5: Δημιουργία κατοικίας
Βήμα 5: Δημιουργία κατοικίας
Βήμα 5: Δημιουργία κατοικίας
Βήμα 5: Δημιουργία κατοικίας
Βήμα 5: Δημιουργία κατοικίας

Ανακύκλωση

Για να φτιάξω το σπίτι μου χρησιμοποίησα μια παλιά ντουλάπα που η μαμά μου έριχνε μακριά.

βάση

Πριόνισα 4 σανίδες (34 cm x 26 cm). (άρα είναι ένας κύβος από 34 x 34 x 26).

Στο κάτω μέρος πρόσθεσα ένα λεπτό κομμάτι ξύλου ως πάτο.

Πίνακας με led

Στη μέση έχω βάλει 2 μικρά κομμάτια ξύλου σε κάθε πλευρά και τα δύο σε απόσταση 9 εκατοστών από την κορυφή. Αυτό κρατά τον πίνακα όπου θα κάθονται οι οδηγοί.

Η σανίδα με τα led είναι μια μικρή σανίδα (32 cm x 32 cm).

Άνοιξα 9 τρύπες για να βγουν τα led.

διαίρεση

Έκανα τη διαίρεση με το ίδιο υλικό με το κάτω μέρος και τον πίνακα με led.

4 τεμάχια το καθένα με τομή στα 10,3 cm (9 cm x 31 cm). Τώρα μπορώ να τα συνδυάσω.

Κουμπιά και αναγνώστης RFID

Έκανα μια τρύπα στη βάση για να βάλω τον αναγνώστη RFID και τα κουμπιά μου. Για το RFID έβαλα ένα λεπτό κομμάτι σανίδας μπροστά του για να φαίνεται πιο καθαρό.

Βήμα 6: Βήμα 6: Τοποθέτηση των πάντων στη στέγαση

Αυτό εξαρτάται από το πώς θέλετε να το κάνετε. Προσωπικά χρησιμοποίησα πολλά καλώδια χωρίς συγκόλληση γιατί θέλω να μπορώ να ξαναχρησιμοποιήσω το Raspberry Pi.

Έχω κολλήσει τα led στη θέση τους και έχω κολλήσει τη συσκευή ανάγνωσης RFID και τις πινακίδες στη θήκη.

Και έτσι φτιάχνετε ένα Keysorter!

Συνιστάται: