Talaan ng mga Nilalaman:

Keysorter: 6 na Hakbang
Keysorter: 6 na Hakbang

Video: Keysorter: 6 na Hakbang

Video: Keysorter: 6 na Hakbang
Video: Металл больше не нужен! Теперь есть ФИБЕРГЛАСС своими руками в домашних условиях. 2024, Nobyembre
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Kasalukuyan akong nag-aaral ng NMCT sa Howest. Para sa aming huling semester kailangan naming gumawa ng isang proyekto. Kaya gumawa ako ng isang Keysorter.

Ano ang ginagawa nito?

Marami kaming mga susi ng kotse sa bahay at lahat sila ay magkamukha. Kaya gumawa ako ng isang Keysorter upang malutas ang isyung ito.

Kailangan itong mag-scan sa isang susi sa pamamagitan ng RFID at bigyan ito ng isang lugar sa kahon. Kung i-scan ko muli ang parehong key ay ipapakita nito ang dati niyang itinalagang lugar. Mayroon ding isang pindutan upang ipakita ang huling hugasan na kotse.

Tatakbo ito sa isang Raspberry Pi na mayroon ding pagpipilian upang magdagdag ng isang webpage sa pamamagitan ng Flask.

Sa pahina dapat kong tumingin sa lahat ng mga key, magdagdag ng isang pangalan sa isang key at magtanggal ng isang susi.

Hakbang 1: Hakbang 1: Ano ang Kakailanganin Ko?

Hakbang 1: Ano ang Kakailanganin Ko?
Hakbang 1: Ano ang Kakailanganin Ko?
Hakbang 1: Ano ang Kakailanganin Ko?
Hakbang 1: Ano ang Kakailanganin Ko?

Nagsimula ako sa pamamagitan ng paggawa ng isang listahan ng mga bahagi na kakailanganin kong gawin ang bagay na ito.

Mga Bahagi:

  • Raspberry pi
  • 2 x Shift register (74hc595)
  • 3 x na pindutan
  • 9 x berdeng pinangunahan
  • RFID scanner (MFRC522)
  • 12 x risistor 220 ohm

Pagkatapos ay inilagay ko ang lahat ng ito sa aking nakakagulat na eskematiko.

Kapag tapos na ako nagawa ko ito sa totoong buhay.

Hakbang 2: Hakbang 2: Paggawa ng isang Database Schema

Hakbang 2: Paggawa ng isang Database Schematic
Hakbang 2: Paggawa ng isang Database Schematic

Upang mai-save ang aking data kinailangan kong lumikha ng isang database na maaaring tumakbo sa aking Pi.

Ginawa ko ito sa Mysql.

Talaan ng kotse:

  • Car ID
  • User ID
  • Tatak (tatak ng kotse)
  • Uri
  • Huling hugasan
  • Susi
  • RFID_ID

Hakbang 3: Hakbang 3: Pag-coding

Hakbang 3: Pag-coding
Hakbang 3: Pag-coding

Kapag handa na ang lahat maaari na akong magsimula sa pag-coding.

Nagsimula ako sa pamamagitan ng paggawa ng code para sa aking sensor sa Python 3.5.

Upang mai-download ang code mag-click dito.

Gamitin ang link upang i-clone ang proyekto.

Hakbang 4: Hakbang 4: Paglalagay ng Al ang Code sa Aking Raspberry Pi

Pag-install ng mga pakete

Una kong na-install ang mga pakete na kailangan ko upang magawa itong gumagana.

ako @ my-rpi: ~ $ sudo apt update

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

Kapaligirang virtual

ako @ 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 / buhayin (env) ako @ my-rpi: ~ / project1 $ python -m pip install MySQL-Connector-Python argon2-Cffi Flask Flask-HTTPAuth Flask-MySQL mysql-konektor-python passlib

I-upload ang proyekto sa iyong Pi gamit ang pycharm

Buksan ang Pycharm at pumunta sa VCS> Mag-import mula sa Control ng Bersyon> Github at i-clone ang aking github file.

Ilagay ang config ng paglawak sa direktoryo na iyong ginawa. (/ bahay / ako / proyekto1). Pindutin ang mag-apply!

Pumunta sa mga setting ng interpreter at piliin ang virtual na kapaligiran na iyong nagawa. (/ home / me / project1 / env / bin / pyhon)

Suriin kung tama ang pagmamapa ng landas.

Maaari mo na ngayong i-upload ang code sa iyong direktoryo gamit ang Pycharm.

Database

Suriin kung tumatakbo ang database. Dapat kang makakuha ng katulad nito:

me @ my-rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB database server Loaded: load (/lib/systemd/system/mariadb.service; pinagana; preset ng vendor: pinagana) Aktibo: aktibo (tumatakbo) mula noong Sun 2018-06-03 09:41:18 CEST; 1 araw 4 na nakalipas Main PID: 781 (MySQL) Katayuan: "Pagkuha ng iyong mga kahilingan sa SQL ngayon …" Mga Gawain: 28 (limit: 4915) CGroup: /system.slice/mariadb.service └─781 / usr / sbin / MySQL

Hun 03 09:41:13 my-rpi systemd [1]: Simula sa MariaDB database server… Hun 03 09:41:15 my-rpi MySQL [781]: 2018-06-03 9:41:15 4144859136 [Tandaan] / usr / sbin / MySQL (MySQL 10.1.26-MariaDB-0 + Deb9u1) Hun 03 09:41:18 my-rpi systemd [1]: Sinimulan ang server ng database ng MariaDB.

ako @ my-rpi: ~ $ ss -lt | grep MySQL MAKINIG 0 80 127.0.0.1:mysql *: *

Lumikha ng mga gumagamit at pagdaragdag ng database

ako @ my-rpi: ~ $ sudo mariadb

kapag nasa database ka na gawin ito.

GUMAWA NG USER 'project1-admin' @ 'localhost' KILALA NG 'adminpassword'; GUMAWA NG USER 'project1-web' @ 'localhost' NAILALA NG 'webpassword'; GUMAWA NG USER 'project1-sensor' @ 'localhost' KILALA NG 'sensorpassword';

GUMAWA NG proyekto sa DATABASE1;

IPAGBIGAY ANG LAHAT NG PRIVILEGES SA proyekto1. * Sa 'project1-admin' @ 'localhost' MAY GRANT OPTION; PUMILI NG PILI, INSERT, I-UPDATE, TANGGAL SA proyekto1. * SA 'project1-web' @ 'localhost'; PUMILI NG PILI, INSERT, I-UPDATE, TANGGAL SA proyekto1. * SA 'project1-sensor' @ 'localhost'; FLUSH PRIVILEGES;

GUMAWA NG TABLE `user` (` idUser` int (11) HINDI NUL, Password` varchar (45) DEFAULT Null, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

LIKHA NG TABLE `car` (` idCar` int (11) HINDI NUL AUTO_INCREMENT, `idUser` int (11) HINDI NUL, Brand` varchar (45) DEFAULT NULL, `Type` varchar (45) DEFAULT NULL,` LastWashed` datime DEFAULT Null, `RFID_Number` varchar (15) DEFAULT Null,` Key` varchar (5) DEFAULT Null, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONSTRAINT `fk1Car_ FOREIGN KEY (`idUser`) REFERENCES` user` (`idUser`) SA TANGGALIN WALANG ACTION SA UPDATE NO ACTION) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Ikonekta ang iyong database sa Pycharm

Mag-click sa tab na database sa kanang bahagi. Kung wala kang bukas na tab gawin ito: Tingnan> Tool Windows> Database.

I-click ang idagdag ang koneksyon. Piliin ang Pinagmulan ng Data> MySQL (Kung mayroong isang pag-download ng driver ng pindutan pindutin ito.)

Pumunta sa SSH / SSL en suriin ang SSH. Punan ang iyong mga kredensyal na Raspberry pi (host / gumagamit / password). Ang port ay dapat na 22 at huwag kalimutang suriin tandaan ang password.

Bumalik sa General. Ang host ay dapat na localhost at ang database ay dapat na proyekto1. Punan ang mga kredensyal mula sa proyekto1-admin at subukan ang koneksyon.

Kung ang koneksyon ay OK pagkatapos ay pumunta sa tab na Mga Schemas at tiyaking nasuri ang project1.

Suriin kung tama ang database

ako @ my-rpi: ~ $ echo 'show tables;' | MySQL project1 -t -u project1-admin -pIpasok ang password: + --------------------------- + | Tables_in_project1 | + --------------------------- + | sensor | | mga gumagamit | + --------------------------- +

Mga File ng Pag-configure

Sa direktoryo conf makikita mo ang 4 na mga file. Dapat mong baguhin ang mga username sa iyong username.

Systemd

Upang simulan ang lahat ng dapat mong isagawa ang mga utos na ito.

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 halimbawa upang maghatid ng project1 web interface Loaded: load (/etc/systemd/system/project1-flask.service; hindi pinagana; preset ng vendor: pinagana) Aktibo: aktibo (tumatakbo) mula noong Mon 2018-06-04 13: 14:56 CEST; 1s ago Pangunahing PID: 6618 (uwsgi) Mga Gawain: 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

Hun 04 13:14:56 my-rpi uwsgi [6618]: na-mapa ang 383928 bytes (374 KB) para sa 5 core Jun 04 13:14:56 my-rpi uwsgi [6618]: *** Operational MODE: preforking ***

● project1-sensor.service - Serbisyo ng sensor ng Project 1 Na-load: na-load (/etc/systemd/system/project1-sensor.service; hindi pinagana; preset ng vendor: pinagana) Aktibo: aktibo (tumatakbo) mula noong Mon 2018-06-04 13: 16:49 CEST; 5s ago Pangunahing PID: 6826 (python) Mga Gawain: 1 (limit: 4915) CGroup: /system.slice/project1-sensor.service └─6826 / home / me / project1 / env / bin / python / home / me / project1 /sensor/sensor.py

Hun 04 13:16:49 my-rpi systemd [1]: Sinimulan ang serbisyo ng sensor ng Project 1. Hun 04 13:16:49 my-rpi python [6826]: DEBUG: _ pangunahing _: Nai-save ang proseso ng sensor_count = b'217 / n 'sa database Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Nai-save ang proseso ng sensor_count = b'218 / n 'sa database

nginx

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

/ etc / nginx / mga site-magagamit: kabuuang 4 -rw-r - r-- 1 root root 2416 Hul 12 2017 default

/ etc / nginx / mga site-pinagana: kabuuang 0 lrwxrwxrwx 1 root root 34 Ene 18 13:25 default -> / etc / nginx / sites-available / default

Upang gawing default ang lahat ay naisakatuparan ang mga utos na ito.

me @ my-rpi: ~ / project1 $ sudo cp conf / nginx / etc / nginx / sites-available / project1me @ my-rpi: ~ / project1 $ sudo rm / etc / nginx / sites-pinagana / default ako @ my- rpi: ~ / project1 $ sudo ln -s / etc / nginx / sites-available / project1 / etc / nginx / sites-pinagana / project1 me @ my-rpi: ~ / project1 $ sudo systemctl restart nginx.service

Autostart

Siguraduhing awtomatiko ang lahat ng pagsisimula.

Pumunta sa direktoryo ng conf at ipatupad ang mga huling utos na ito at tapos ka na!

ako @ my-rpi: ~ / project1 $ sudo systemctl paganahin ang project1- *

Kung i-reboot mo ang iyong Pi dapat itong awtomatikong magsimula.

Hakbang 5: Hakbang 5: Paggawa ng isang Pabahay

Hakbang 5: Paggawa ng isang Pabahay
Hakbang 5: Paggawa ng isang Pabahay
Hakbang 5: Paggawa ng isang Pabahay
Hakbang 5: Paggawa ng isang Pabahay
Hakbang 5: Paggawa ng isang Pabahay
Hakbang 5: Paggawa ng isang Pabahay
Hakbang 5: Paggawa ng isang Pabahay
Hakbang 5: Paggawa ng isang Pabahay

Pag-recycle

Upang maitayo ang aking tirahan ay gumamit ako ng isang lumang aparador na tatabi ang aking ina.

base

Nakita ko ang 4 na tabla (34 cm x 26 cm). (sa gayon ito ay isang kubo mula sa 34 x 34 x 26).

Sa ilalim ay nagdagdag ako ng isang manipis na piraso ng kahoy bilang ilalim.

Board na may led's

Sa gitna inilagay ko ang 2 maliliit na piraso ng kahoy sa bawat panig kapwa sa 9 cm mula sa itaas. Hawak nito ang board kung saan nakaupo ang mga led.

Ang board na may led's ay isang maliit na board (32 cm x 32 cm).

Nag-drill ako ng 9 na butas para lumabas ang mga led.

paghahati-hati

Ginawa ko ang dibisyon na may parehong materyal tulad ng sa ilalim at ng board na may led.

4 na piraso bawat isa na may isang paghiwa sa 10.3 cm (9 cm x 31 cm). Ngayon nagagawa ko silang pagsamahin.

Mga Pindutan at RFID reader

Gumawa ako ng isang butas sa base upang ilagay ang aking RFID reader at mga pindutan. Para sa RFID naglagay ako ng isang manipis na piraso ng board sa harap nito upang magmukhang mas malinis ito.

Hakbang 6: Hakbang 6: Paglalagay ng Lahat sa Pabahay

Ito ay nakasalalay sa kung paano mo ito nais gawin. Personal kong gumamit ng maraming mga cable nang walang paghihinang dahil nais kong magamit muli ang aking Raspberry Pi.

Idinikit ko ang mga led sa lugar at na-tape ang RFID reader at mga breadboard sa kaso.

At ganyan ka gumawa ng isang Keysorter!

Inirerekumendang: