Spisu treści:

Keysorter: 6 kroków
Keysorter: 6 kroków

Wideo: Keysorter: 6 kroków

Wideo: Keysorter: 6 kroków
Wideo: MMS - Key Sorter 400V 2024, Lipiec
Anonim
Sortownik kluczy
Sortownik kluczy
Sortownik kluczy
Sortownik kluczy

Obecnie studiuję NMCT w Howest. Na ostatni semestr musieliśmy zrobić projekt. Więc zrobiłem Keysorter.

Co to robi?

W domu mamy dużo kluczyków do samochodu i wszystkie wyglądają podobnie. Więc zrobiłem Keysorter, aby rozwiązać ten problem.

Musi zeskanować klucz przez RFID i umieścić go w pudełku. Jeśli ponownie zeskanuję ten sam klucz, pokaże mu wcześniej przypisane miejsce. Jest też przycisk do pokazania ostatniego umytego samochodu.

To wszystko będzie działać na Raspberry Pi, które ma również opcję dodania strony internetowej za pośrednictwem Flask.

Na stronie powinienem być w stanie obejrzeć wszystkie klucze, dodać nazwę do klucza i usunąć klucz.

Krok 1: Krok 1: Czego będę potrzebować?

Krok 1: Czego będę potrzebować?
Krok 1: Czego będę potrzebować?
Krok 1: Czego będę potrzebować?
Krok 1: Czego będę potrzebować?

Zacząłem od sporządzenia listy komponentów, których będę potrzebować, aby to zadziałało.

Składniki:

  • malinowy pi
  • 2 x rejestr przesuwny (74hc595)
  • 3 x przycisk
  • 9 x zielona dioda LED
  • Skaner RFID (MFRC522)
  • 12 x rezystor 220 omów

Potem umieściłem to wszystko w moim fryzującym schemacie.

Kiedy już to zrobiłem, zrobiłem to w prawdziwym życiu.

Krok 2: Krok 2: Tworzenie schematu bazy danych

Krok 2: Tworzenie schematu bazy danych
Krok 2: Tworzenie schematu bazy danych

Aby zapisać wszystkie moje dane, musiałem stworzyć bazę danych, która mogłaby działać na moim Pi.

Zrobiłem to w MySQL.

Wózek stołowy:

  • Identyfikator samochodu
  • Identyfikator użytkownika
  • Marka (marka samochodu)
  • Rodzaj
  • Ostatnie pranie
  • Klucz
  • Identyfikator RFID

Krok 3: Krok 3: Kodowanie

Krok 3: Kodowanie
Krok 3: Kodowanie

Kiedy wszystko było gotowe, mogłem zacząć kodować.

Zacząłem od napisania kodu dla mojego czujnika w Pythonie 3.5.

Aby pobrać kod, kliknij tutaj.

Użyj linku, aby sklonować projekt.

Krok 4: Krok 4: Umieszczanie kodu Al na moim Raspberry Pi

Instalowanie pakietów

Najpierw zainstalowałem wszystkie pakiety, których potrzebowałem, aby to zadziałało.

ja@my-rpi:~ $ aktualizacja sudo apt

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

Wirtualne środowisko

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

Prześlij projekt do swojego Pi za pomocą pycharm

Otwórz Pycharm i przejdź do VCS > Importuj z Kontroli wersji > Github i sklonuj mój plik github.

Umieść konfigurację wdrożenia do właśnie utworzonego katalogu. (/dom/ja/projekt1). Naciśnij aplikuj!

Przejdź do ustawień tłumacza i wybierz właśnie utworzone środowisko wirtualne. (/dom/ja/projekt1/śr/bin/pyhon)

Sprawdź, czy mapowanie ścieżki jest poprawne.

Teraz możesz wgrać kod do swojego katalogu za pomocą Pycharm.

Baza danych

Sprawdź, czy baza danych jest uruchomiona. Powinieneś otrzymać coś takiego:

ja@my-rpi:~ $ sudo systemctl status mysql● mariadb.service - serwer bazy danych MariaDB Załadowany: załadowany (/lib/systemd/system/mariadb.service; włączony; ustawienie dostawcy: włączony) Aktywny: aktywny (działa) od niedzieli 2018-06-03 09:41:18 CEST; 1 dzień 4h temu Główny PID: 781 (mysqld) Status: "Zabieram twoje żądania SQL teraz…" Zadania: 28 (limit: 4915) CGroup: /system.slice/mariadb.service └─781 /usr/sbin/mysqld

Cze 03 09:41:13 my-rpi systemd[1]: Uruchamianie serwera bazy danych MariaDB… Cze 03 09:41:15 my-rpi mysqld[781]:2018-06-03 9:41:15 4144859136 [Uwaga] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 3 czerwca 09:41:18 my-rpi systemd[1]: Uruchomiono serwer bazy danych MariaDB.

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

Tworzenie użytkowników i dodawanie bazy danych

ja@my-rpi:~ $ sudo mariadb

gdy już jesteś w bazie danych, zrób to.

UTWÓRZ UŻYTKOWNIKA 'project1-admin'@'localhost' ZIDENTYFIKOWANY PRZEZ 'adminpassword'; UTWÓRZ UŻYTKOWNIKA 'project1-web'@'localhost' ZIDENTYFIKOWANY PRZEZ 'webpassword'; UTWÓRZ UŻYTKOWNIKA 'project1-sensor'@'localhost' IDENTYFIKOWANE PRZEZ 'sensorpassword';

TWORZENIE BAZY DANYCH projekt1;

PRZYZNAJ WSZYSTKIE UPRAWNIENIA DO PROJEKTU1.* 'project1-admin'@'localhost' Z OPCJĄ PRZYZNANIA; PRZYZNAJ WYBIERZ, WSTAW, AKTUALIZUJ, USUŃ W projekcie1.* DO 'project1-web'@'localhost'; PRZYZNAJ WYBIERZ, WSTAW, AKTUALIZUJ, USUŃ W projekcie1.* DO 'project1-sensor'@'localhost'; PRZYWILEJE WSPÓŁPRACUJĄCE;

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`), OGRANICZENIE `fk_Car_User1` KLUCZ OBCY (`idUser`) REFERENCJE `user` (`idUser`) USUŃ ŻADNEJ AKCJI PRZY AKTUALIZACJI ŻADNEJ AKCJI) ENGINE=InnoDB AUTO_INCREMENT=4 DOMYŚLNY CHARSET=utf8

Połącz swoją bazę danych z Pycharm

Kliknij na zakładkę bazy danych po prawej stronie. Jeśli nie masz otwartej karty, wykonaj następujące czynności: Widok > Okna narzędzi > Baza danych.

Kliknij dodaj połączenie. Wybierz Źródło danych > MySQL (jeśli jest przycisk pobierania sterownika, naciśnij go).

Przejdź do SSH/SSL i sprawdź SSH. Wpisz swoje dane uwierzytelniające Raspberry pi (host/użytkownik/hasło). Port powinien wynosić 22 i nie zapomnij sprawdzić zapamiętanego hasła.

Wróć do generała. Hostem powinien być localhost, a bazą danych project1. Wypełnij poświadczenia od project1-admin i przetestuj połączenie.

Jeśli połączenie jest OK, przejdź do zakładki Schematy i upewnij się, że zaznaczony jest projekt1.

Sprawdź, czy baza danych jest poprawna

ja@my-rpi:~ $ echo 'pokaż tabele;' | mysql projekt1 -t -u projekt1-admin -pWprowadź hasło: +---------------------------+ | Tables_in_project1 | +---------------------------+ | czujnik | | użytkownicy | +-------------------------------+

Pliki konfiguracyjne

W katalogu conf znajdziesz 4 pliki. Powinieneś zmienić nazwy użytkownika na swoją nazwę użytkownika.

Systemd

Aby rozpocząć wszystko, powinieneś wykonać te polecenia.

ja@my-rpi:~/project1 $ sudo cp conf/project1-*.service /etc/systemd/system/

ja@my-rpi:~/project1 $ sudo systemctl daemon-reload ja@my-rpi:~/project1 $ sudo systemctl start project1-* ja@my-rpi:~/project1 $ sudo systemctl status projekt1-* ● projekt1- flask.service - instancja uWSGI obsługująca interfejs WWW projektu1 Załadowana: załadowana (/etc/systemd/system/project1-flask.service; wyłączona; ustawienie dostawcy: włączona) Aktywna: aktywna (działa) od Mon 2018-06-04 13: 14:56 CEST; 1s temu Główny PID: 6618 (uwsgi) Zadania: 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

4 czerwca 13:14:56 my-rpi uwsgi[6618]: zmapowane 383928 bajtów (374 KB) dla 5 rdzeni 4 czerwca 13:14:56 my-rpi uwsgi[6618]: *** TRYB operacyjny: preforking ***

● project1-sensor.service - usługa czujnika projektu 1 Załadowana: załadowana (/etc/systemd/system/project1-sensor.service; wyłączona; ustawienie dostawcy: włączona) Aktywna: aktywna (działająca) od Mon 2018-06-04 13: 16:49 CEST; 5s temu Główny PID: 6826 (python) Zadania: 1 (limit: 4915) CGroup: /system.slice/project1-sensor.service └─6826 /home/me/project1/env/bin/python /home/me/project1 /czujnik/czujnik.py

4 czerwca 13:16:49 my-rpi systemd[1]: Uruchomiono usługę czujnika projektu 1. 4 czerwca 13:16:49 my-rpi python[6826]: DEBUG:_main_:Zapisano czujnik process_count=b'217\n' do bazy danych 4 czerwca 13:16:55 my-rpi python[6826]: DEBUG:_main_: Zapisano czujnik process_count=b'218\n' do bazy danych

nginx

ja@my-rpi:~/projekt1 $ ls -l /etc/nginx/sites-*

/etc/nginx/sites-available: łącznie 4 -rw-r--r-- 1 root root 2416 Lip 12 2017 default

/etc/nginx/sites-enabled: łącznie 0 lrwxrwxrwx 1 root root 34 stycznia 18 13:25 default -> /etc/nginx/sites-available/default

Aby ustawić wszystko jako domyślne, wykonaj te polecenia.

ja@moje-rpi:~/project1 $ sudo cp conf/nginx /etc/nginx/sites-available/project1me@my-rpi:~/project1 $ sudo rm /etc/nginx/sites-enabled/default ja@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

Automatyczny start

Upewnijmy się, że wszystko zaczyna się automatycznie.

Przejdź do katalogu conf i wykonaj ostatnie polecenia i gotowe!

ja@my-rpi:~/project1 $ sudo systemctl włącz projekt1-*

Jeśli zrestartujesz swoje Pi, powinno uruchomić się automatycznie.

Krok 5: Krok 5: Wykonanie obudowy

Krok 5: Tworzenie obudowy
Krok 5: Tworzenie obudowy
Krok 5: Tworzenie obudowy
Krok 5: Tworzenie obudowy
Krok 5: Tworzenie obudowy
Krok 5: Tworzenie obudowy
Krok 5: Tworzenie obudowy
Krok 5: Tworzenie obudowy

Recykling

Aby urządzić mieszkanie, wykorzystałem starą szafę, którą moja mama wyrzuciła.

baza

Przeciąłem 4 deski (34 cm x 26 cm). (więc jest to sześcian z 34 x 34 x 26).

Na dole dodałem cienki kawałek drewna jako spód.

Tablica z ledami

Na środku ułożyłem po 2 małe kawałki drewna z każdej strony, obydwa w odległości 9 cm od góry. To trzyma tablicę, na której będą siedzieć diody led.

Tablica z diodami to mała tablica (32 cm x 32 cm).

Wywierciłem 9 otworów, z których wyjdą diody.

podział

Podział wykonałem z tego samego materiału co spód, a tablicę z ledami.

4 sztuki każda z nacięciem 10,3 cm (9 cm x 31 cm). Teraz jestem w stanie je poskładać.

Przyciski i czytnik RFID

Zrobiłem otwór w podstawie, aby włożyć czytnik RFID i przyciski. W przypadku RFID położyłem przed nim cienki kawałek płytki, aby wyglądał czyściej.

Krok 6: Krok 6: Umieszczenie wszystkiego w obudowie

To zależy od tego, jak chcesz to zrobić. Osobiście użyłem wielu kabli bez lutowania, ponieważ chcę mieć możliwość ponownego wykorzystania mojego Raspberry Pi.

Przykleiłem diody na miejscu i przykleiłem czytnik RFID i płytki stykowe do obudowy.

I tak powstaje Keysorter!

Zalecana: