Mündəricat:

Açar məlumat verən: 6 addım
Açar məlumat verən: 6 addım

Video: Açar məlumat verən: 6 addım

Video: Açar məlumat verən: 6 addım
Video: “Ölü” morqda belə dirildi Anba An 2024, Noyabr
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Hal -hazırda Howest -də NMCT -də oxuyuram. Son semestr üçün bir layihə hazırlamalı olduq. Beləliklə, Keysorter hazırladım.

Bu nə edir?

Evdə çoxlu avtomobil açarları var və hamısı bənzəyir. Buna görə də bu problemi həll etmək üçün Keysorter -ə müraciət etdim.

RFID vasitəsilə bir açarı taramalı və qutuda bir yer verməlidir. Eyni açarı yenidən tarasam, əvvəllər təyin etdiyi yeri göstərər. Sonuncu yuyulan maşını göstərmək üçün düymə də var.

Bu, Flask vasitəsilə bir veb səhifəsi əlavə etmək imkanı olan bir Raspberry Pi üzərində işləyəcək.

Səhifədə bütün düymələrə baxa, bir ada bir ad əlavə edə və bir açarı silə bilməliyəm.

Addım 1: Adım 1: Nəyə ehtiyacım olacaq?

Addım 1: Mənə nə lazımdır?
Addım 1: Mənə nə lazımdır?
Addım 1: Mənə nə lazımdır?
Addım 1: Mənə nə lazımdır?

Bu işi işə salmaq üçün lazım olan komponentlərin siyahısını tərtib etməklə başladım.

Komponentlər:

  • Moruq pi
  • 2 x Shift reyestri (74hc595)
  • 3 x düyməsi
  • 9 x yaşıl led
  • RFID skaneri (MFRC522)
  • 12 x 220 ohm müqavimət

Sonra bütün bunları qarmaqarışıq sxemimə qoydum.

Bunu etdikdən sonra real həyatda qazandım.

Addım 2: Adım 2: Verilənlər Bazası Şeması Hazırlayın

Addım 2: Verilənlər Bazası Şeması Hazırlayın
Addım 2: Verilənlər Bazası Şeması Hazırlayın

Verilərimi saxlamaq üçün Pi -də işləyə biləcək bir verilənlər bazası yaratmalı oldum.

Mysql -də qazandım.

Masa avtomobili:

  • Avtomobil nömrəsi
  • İstifadəçi adı
  • Marka (avtomobil markası)
  • Yazın
  • Sonuncu dəfə yuyulub
  • Açar
  • RFID_ID

Adım 3: Adım 3: Kodlaşdırma

Addım 3: Kodlaşdırma
Addım 3: Kodlaşdırma

Bütün bunlar hazır olanda kodlamağa başlaya bilərdim.

Python 3.5 -də sensorumun kodunu düzəltməyə başladım.

Kodu yükləmək üçün bura vurun.

Layihəni klonlamaq üçün linkdən istifadə edin.

Addım 4: Adım 4: Al Kodu Mənim Raspberry Pi -yə qoyun

Paketlərin quraşdırılması

Əvvəlcə bu işi etmək üçün lazım olan bütün paketləri quraşdırdım.

me@my-rpi: ~ $ sudo apt yeniləmə

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

Virtual mühit

me@my-rpi: ~ $ python3 -m pip install-pip setuptools təkərini təkmilləşdirmək virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv --system- site paketləri mənə@my-rpi: ~/project1 $ source env/bin/activate (env) me@my-rpi: ~/project1 $ python -m pip mysql-connector-python argon2-cffi Flask Flask-HTTPAuth quraşdırın Flask-MySQL mysql-bağlayıcı-python keçid

Pycharm istifadə edərək layihənizi Pi -yə yükləyin

Pycharmı açın və VCS> Version Nəzarətindən Github> Github'a gedin və github faylımı klonlayın.

Dağıtım konfiqurasiyasını yeni hazırladığınız qovluğa qoyun. (/home/me/project1). Tətbiq et!

Tərcüməçi parametrlərinə gedin və hazırladığınız virtual mühiti seçin. (/home/me/project1/env/bin/pyhon)

Yol xəritəsinin düzgün olub olmadığını yoxlayın.

İndi kodu Pycharm istifadə edərək kataloqunuza yükləyə bilərsiniz.

Verilənlər bazası

Verilənlər bazasının işlədiyini yoxlayın. Buna bənzər bir şey almalısınız:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB verilənlər bazası serveri Yükləndi: yükləndi (/lib/systemd/system/mariadb.service; aktivdir; satıcıya əvvəlcədən təyin edilmiş: aktivdir) Aktiv: Günəşdən bəri aktivdir (işləyir) 2018-06-03 09:41:18 CEST; 1 gün 4 saat əvvəl Əsas PID: 781 (mysqld) Vəziyyət: "SQL istəklərinizi indi götürürük …" Tapşırıqlar: 28 (limit: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

Jun 03 09:41:13 my-rpi systemd [1]: MariaDB verilənlər bazası serverinin işə salınması… Jun 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Qeyd] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) İyun 03 09:41:18 my-rpi systemd [1]: MariaDB verilənlər bazası serverini işə saldı.

me@my -rpi: ~ $ ss -lt | grep mysql DİNLƏ 0 80 127.0.0.1:mysql *: *

İstifadəçilər yaradın və verilənlər bazasını əlavə edin

me@my-rpi: ~ $ sudo mariadb

verilənlər bazasına daxil olduğunuzda bunu edin.

CREATE USER 'project1-admin'@'localhost' IDENTIFIED by 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; İstifadəçi yarat 'project1-sensor'@'localhost' IDSIFEDED 'senspassword';

DATABASE layihəsi yaradın1;

QRANT SEÇİMİ İLƏ Project1.* 'Project1-admin'@'localhost' a bütün üstünlükləri ver; GRANT SELECT, INSERT, UPDATE, DELETE on project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH İSTİFADƏLƏRİ;

CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB VARSAYILAN CHARSET = utf8

TABLE yarat "avtomobili" (`idCar` int (11) NULL AUTO_INCREMENT DEĞİL,` idUser` int (11) NULL DEĞİL, `Brand` varchar (45) VARSIZ NULL,` Type` varchar (45) DEFAULT NULL, `LastWashed ' datetime DEFAULT NULL, `RFID_Number` varchar (15) VARSAYILAN NULL,` Key` varchar (5) VARSAYILAN NULL, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`ser '), CONCAINT_ XARİCİ KEY (`idUser`) REFERANSLAR` istifadəçi` (`idUser`) YENİLƏNMƏSİNDƏ ƏMƏLİYYAT YOXDUR) MOTOR = InnoDB AUTO_INCREMENT = 4 VARSIZ CHARSET = utf8

Verilənlər bazanızı Pycharm -a qoşun

Sağ tərəfdəki verilənlər bazası sekmesini vurun. Açılmış bir nişanınız yoxdursa, bunu edin: Görünüş> Alət Windows> Veritabanı.

Bağlantı əlavə et vurun. Məlumat mənbəyi> MySQL seçin (Yükləmə sürücüsü varsa düyməni basın.)

SSH yoxlamaq üçün SSH/SSL -ə gedin. Raspberry pi etimadnamənizi doldurun (host/user/password). Liman 22 olmalıdır və şifrəni yadda saxlamağı unutmayın.

Generala qayıt. Host localhost olmalı və verilənlər bazası project1 olmalıdır. Project1-admin-dən etimadnaməsini doldurun və əlaqəni yoxlayın.

Bağlantı qaydasındadırsa, Şemalar sekmesine keçin və project1 -in yoxlanıldığından əmin olun.

Verilənlər bazasının doğru olub olmadığını yoxlayın

me@my-rpi: ~ $ echo 'masaları göstər;' | mysql project1 -t -u project1-admin -pŞifrə daxil edin: + --------------------------- + | Tables_in_project1 | + ---------------------------+ | sensor | | istifadəçilər | +---------------------------+

Konfiqurasiya Faylları

Conf qovluğunda 4 fayl tapa bilərsiniz. İstifadəçi adlarını istifadəçi adınıza dəyişdirməlisiniz.

Sistemli

Hər şeyi başlamaq üçün bu əmrləri yerinə yetirməlisiniz.

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 nümunəsi Project1 veb interfeysinə xidmət etmək üçün Yükləndi: yükləndi (/etc/systemd/system/project1-flask.service; deaktivdir; satıcı əvvəlcədən təyin edilmiş: aktivdir) Aktiv: aktivdir (işləyir), Paz 2018-06-04 13: 14:56 CEST; 1s əvvəl Əsas PID: 6618 (uwsgi) Tapşırıqlar: 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

İyun 04 13:14:56 my-rpi uwsgi [6618]: 5 nüvə üçün 383928 bayt (374 KB) xəritələndirildi Jun 04 13:14:56 my-rpi uwsgi [6618]: *** Əməliyyat rejimi: ön işləmə ***

● project1-sensor.service-Layihə 1 sensor xidməti Yükləndi: yükləndi (/etc/systemd/system/project1-sensor.service; deaktivdir; satıcı əvvəlcədən təyin edilmiş: aktivdir) Aktiv: aktivdir (işləyir), Paz 2018-06-04 13: 16:49 CEST; 5s əvvəl Əsas PID: 6826 (python) Tapşırıqlar: 1 (limit: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

Jun 04 13:16:49 my-rpi systemd [1]: Project 1 sensor xidmətinə başladı. Jun 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Saveed sensor process_count = b'217 / n 'verilənlər bazasına Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Sensor process_count = b'218 / n 'verilənlər bazasına saxlanıldı

nginx

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

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

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

Hər şeyi standart etmək üçün bu əmrləri yerinə yetirin.

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

Avtomatik başlama

Hər şeyin avtomatik olaraq başladığından əmin olaq.

Conf qovluğuna gedin və bu son əmrləri yerinə yetirin və işiniz bitdi!

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

Pi -ni yenidən başlatsanız, avtomatik olaraq başlamalıdır.

Adım 5: Adım 5: Mənzil tikmək

Addım 5: Mənzil tikmək
Addım 5: Mənzil tikmək
Addım 5: Mənzil tikmək
Addım 5: Mənzil tikmək
Addım 5: Mənzil tikmək
Addım 5: Mənzil tikmək
Addım 5: Mənzil tikmək
Addım 5: Mənzil tikmək

Təkrar emal

Evimi düzəltmək üçün anamın uçub gedəcəyi köhnə bir dolabdan istifadə etdim.

baza

4 taxta (34 sm x 26 sm) gördüm. (buna görə 34 x 34 x 26 ölçüsündə bir kubdur).

Dibinə nazik bir ağac parçası əlavə etdim.

Led ilə lövhə

Ortada hər tərəfdən yuxarıdan 9 sm məsafədə 2 kiçik ağac parçası qoydum. Bu, liderlərin oturacağı lövhəni tutur.

Ledləri olan lövhə kiçik bir taxtadır (32 sm x 32 sm).

Ledlərin çıxması üçün 9 delik açdım.

bölünmə

Bölməni alt hissəsi ilə eyni materialdan və lövhələrlə lövhədən hazırladım.

Hər biri 10,3 sm (9 sm x 31 sm) kəsiklə 4 ədəd. İndi onları bir araya gətirə bilərəm.

Düymələr və RFID oxucu

RFID oxuyucumu və düymələri taxmaq üçün bazada bir deşik etdim. RFID üçün daha təmiz görünməsi üçün önünə nazik bir taxta parçası qoydum.

Addım 6: Adım 6: Hər şeyi Mənzilə Qoyun

Bu, bunu necə etmək istədiyinizə bağlıdır. Şəxsən mən Raspberry Pi -ni yenidən istifadə etmək istədiyim üçün lehimsiz bir çox kabel istifadə etdim.

Ledləri yerə yapışdırdım və RFID oxuyucusunu və çörək lövhələrini kasaya yapışdırdım.

Və beləcə Keysorter hazırlayırsınız!

Tövsiyə: