Talaan ng mga Nilalaman:
- Hakbang 1: Hakbang 1: Ano ang Kakailanganin Ko?
- Hakbang 2: Hakbang 2: Paggawa ng isang Database Schema
- Hakbang 3: Hakbang 3: Pag-coding
- Hakbang 4: Hakbang 4: Paglalagay ng Al ang Code sa Aking Raspberry Pi
- Hakbang 5: Hakbang 5: Paggawa ng isang Pabahay
- Hakbang 6: Hakbang 6: Paglalagay ng Lahat sa Pabahay
Video: Keysorter: 6 na Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
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?
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
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
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
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:
Arduino Car Reverse Parking Alert System - Hakbang sa Hakbang: 4 na Hakbang
Arduino Car Reverse Parking Alert System | Hakbang sa Hakbang: Sa proyektong ito, magdidisenyo ako ng isang simpleng Arduino Car Reverse Parking Sensor Circuit gamit ang Arduino UNO at HC-SR04 Ultrasonic Sensor. Ang Arduino based Car Reverse alert system na ito ay maaaring magamit para sa isang Autonomous Navigation, Robot Ranging at iba pang range r
Hakbang sa Hakbang Pagbubuo ng PC: 9 Mga Hakbang
Hakbang sa Hakbang ng PC Building: Mga Pantustos: Hardware: MotherboardCPU & CPU coolerPSU (Power supply unit) Storage (HDD / SSD) RAMGPU (hindi kinakailangan) CaseTools: ScrewdriverESD bracelet / matsthermal paste w / applicator
Tatlong Loudspeaker Circuits -- Hakbang-hakbang na Tutorial: 3 Mga Hakbang
Tatlong Loudspeaker Circuits || Hakbang-hakbang na Tutorial: Ang Loudspeaker Circuit ay nagpapalakas ng mga audio signal na natanggap mula sa kapaligiran papunta sa MIC at ipinapadala ito sa Speaker mula sa kung saan ginawa ang pinalakas na audio. Dito, ipapakita ko sa iyo ang tatlong magkakaibang paraan upang magawa ang Loudspeaker Circuit na ito gamit ang:
Hakbang-hakbang na Edukasyon sa Robotics Na May Kit: 6 Mga Hakbang
Hakbang-hakbang na Edukasyon sa Robotics Gamit ang isang Kit: Matapos ang ilang buwan ng pagbuo ng aking sariling robot (mangyaring sumangguni sa lahat ng mga ito), at pagkatapos ng dalawang beses na pagkabigo ng mga bahagi, nagpasya akong bumalik at muling isipin ang aking diskarte at direksyon. Ang karanasan ng ilang buwan ay kung minsan ay lubos na nagbibigay-pakinabang, at
Kritikal na Hakbang sa Paghuhugas ng Kamay sa Hakbang: 5 Hakbang
Kritikal na Hakbang sa Paghuhugas ng Hakbang sa paghuhugas ng kamay: Ito ay isang makina na nagpapaalala sa gumagamit tungkol sa mga hakbang kung kailan kailangan niyang maghugas ng kanyang mga kamay. Ang layunin ng makina na ito ay matulungan ang mga tao na maunawaan kung paano hugasan nang maayos ang kanilang mga kamay sa isang mabisang paraan. Sa mga panahon ng pag-iwas sa epidemya o pandemya,