Mundarija:

Keysorter: 6 qadam
Keysorter: 6 qadam

Video: Keysorter: 6 qadam

Video: Keysorter: 6 qadam
Video: MMS - Key Sorter 400V 2024, Noyabr
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Hozir men Howestda NMCTni o'rganyapman. Oxirgi semestr uchun biz loyiha tuzishimiz kerak edi. Shunday qilib, men Keysorter yaratdim.

Bu nima qiladi?

Bizda uy kalitlari juda ko'p va ularning hammasi o'xshash. Shunday qilib, men bu muammoni hal qilish uchun Keysorterni tanladim.

U RFID orqali kalitni skanerlashi va qutiga joy berishi kerak. Agar men yana o'sha kalitni skanerlasam, u ilgari tayinlangan joyni ko'rsatadi. Shuningdek, oxirgi yuvilgan mashinani ko'rsatish tugmasi ham mavjud.

Bu Raspberry Pi -da ishlaydi, u Flask orqali veb -sahifani qo'shish imkoniyatiga ega.

Sahifada men barcha kalitlarga qarashim, kalitga ism qo'shishim va kalitni olib tashlashim kerak.

1 -qadam: 1 -qadam: Menga nima kerak?

1 -qadam: Menga nima kerak?
1 -qadam: Menga nima kerak?
1 -qadam: Menga nima kerak?
1 -qadam: Menga nima kerak?

Men bu ishni bajarish uchun kerak bo'ladigan komponentlar ro'yxatini tuzishdan boshladim.

Komponentlar:

  • Malinali pi
  • 2 x Shift registri (74hc595)
  • 3 x tugma
  • 9 x yashil LED
  • RFID skaneri (MFRC522)
  • 12 x qarshilik 220 ohm

Keyin men bularning barchasini o'zimning dahshatli sxemamga qo'ydim.

Bu amalga oshgandan so'ng, men buni haqiqiy hayotda qildim.

2 -qadam: 2 -qadam: ma'lumotlar bazasi sxemasini tuzish

2 -qadam: ma'lumotlar bazasi sxemasini tuzish
2 -qadam: ma'lumotlar bazasi sxemasini tuzish

Ma'lumotlarimni saqlash uchun men Pi -da ishlaydigan ma'lumotlar bazasini yaratishim kerak edi.

Men buni Mysql -da qildim.

Stol mashinasi:

  • Avtomobil identifikatori
  • foydalanuvchi IDsi
  • Brend (avtomobil markasi)
  • Turi
  • Oxirgi yuvilgan
  • Kalit
  • RFID_ID

3 -qadam: 3 -qadam: Kodlash

3 -qadam: kodlash
3 -qadam: kodlash

Bularning barchasi tayyor bo'lgach, men kodlashni boshlashim mumkin edi.

Men sensori uchun kodni Python 3.5 da yasashdan boshladim.

Kodni yuklab olish uchun bu erni bosing.

Loyihani klonlash uchun havoladan foydalaning.

4 -qadam: 4 -qadam: Kodni Raspberry Pi -ga qo'yish

Paketlarni o'rnatish

Birinchidan, men bu ishni bajarish uchun kerak bo'lgan barcha paketlarni o'rnatdim.

me@my-rpi: ~ $ sudo apt yangilanishi

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

Virtual muhit

me@my-rpi: ~ $ python3 -m pip o'rnatish-pip setuptools g'ildiragini virtualenvme@my-rpi yangilash: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv --system- sayt-paketlar menga@my-rpi: ~/project1 $ manba env/bin/activate (env) me@my-rpi: ~/project1 $ python -m pip mysql-ulagich-python argon2-cffi Flask Flask-HTTPAuth o'rnatish Flask-MySQL mysql-ulagichi-python passlib

Pycharm yordamida loyihani Pi -ga yuklang

Pycharm -ni oching va VCS> Version Control -dan import> Github -ga o'ting va mening github faylimni klonlang.

O'rnatish konfiguratsiyasini siz hozir yaratgan katalogga qo'ying. (/home/me/project1). Qo'llash tugmachasini bosing!

Tarjimon sozlamalariga o'ting va o'zingiz yaratgan virtual muhitni tanlang. (/home/me/project1/env/bin/pyhon)

Yo'l xaritasi to'g'ri yoki yo'qligini tekshiring.

Endi siz Pycharm yordamida kodni katalogingizga yuklashingiz mumkin.

Ma'lumotlar bazasi

Ma'lumotlar bazasi ishlayotganligini tekshiring, shunga o'xshash narsani olishingiz kerak:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB ma'lumotlar bazasi serveri yuklangan: yuklangan (/lib/systemd/system/mariadb.service; yoqilgan; sotuvchi oldindan o'rnatilgan: yoqilgan) Faol: Quyoshdan beri faol (ishlayotgan) 2018-06-03 09:41:18 CEST; 1 kun 4 soat oldin Asosiy PID: 781 (mysqld) Holati: "SQL so'rovlarini hozir qabul qilish …" Vazifalar: 28 (chegara: 4915) Guruh: /system.slice/mariadb.service └─781/usr/sbin/mysqld

03-iyun 09:41:13 my-rpi systemd [1]: MariaDB ma'lumotlar bazasi serveri ishga tushirilmoqda… 03-iyun 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Izoh] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) Jun 03 09:41:18 my-rpi systemd [1]: MariaDB ma'lumotlar bazasi serveri ishga tushirildi.

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

Foydalanuvchilarni yarating va ma'lumotlar bazasini qo'shing

me@my-rpi: ~ $ sudo mariadb

Ma'lumotlar bazasida bo'lganingizdan so'ng, buni qiling.

CREATE USER 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFIED by 'sensorpassword';

Ma'lumotlar bazasini yaratish loyihasi1;

Project1. HAMMA imtiyozlarni GRANT OILASI BILAN project1-admin '@' localhost 'ga berish; GRANT SELECT, INSERT, UPDATE, O'chirish Project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; YUQARISH IMKONIYATLARI;

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) 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`ser '), CONCAINT_ Xorijiy kalit (`idUser`) REFERANSLARI` user` (`idUser`) YANGILANISHDA HARAKAT YO'Q QILMAYDI) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Ma'lumotlar bazasini Pycharm -ga ulang

O'ng tarafdagi ma'lumotlar bazasi yorlig'ini bosing. Agar sizda ochiq tab bo'lmasa, buni bajaring: Ko'rish> Windows asboblari> Ma'lumotlar bazasi.

Ulanishni qo'shish -ni bosing. Ma'lumot manbai> MySQL -ni tanlang (Agar yuklash drayveri tugmasi bo'lsa, uni bosing.)

SSH/SSL -ga o'ting va SSH -ni tekshiring. Raspberry pi hisob ma'lumotlarini to'ldiring (xost/foydalanuvchi/parol). Port 22 bo'lishi kerak va parolni eslashni unutmang.

Generalga qaytish. Xost localhost bo'lishi kerak va ma'lumotlar bazasi project1 bo'lishi kerak. Project1-admin hisob ma'lumotlarini to'ldiring va ulanishni tekshiring.

Agar ulanish yaxshi bo'lsa, "Sxemalar" yorlig'iga o'ting va project1 tekshirilganligiga ishonch hosil qiling.

Ma'lumotlar bazasi to'g'riligini tekshiring

me@my-rpi: ~ $ echo 'jadvallarni ko'rsatish;' | mysql project1 -t -u project1-admin -p Parolni kiriting: + --------------------------- + | Jadvallar_injoyasi1 | + ---------------------------+ | sensor | | foydalanuvchilar | +---------------------------+

Konfiguratsiya fayllari

Conf katalogida siz 4 ta faylni topasiz. Foydalanuvchi nomlarini foydalanuvchi nomiga o'zgartirishingiz kerak.

Tizimli

Hamma narsani boshlash uchun siz ushbu buyruqlarni bajarishingiz kerak.

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-Project1 veb-interfeysiga xizmat ko'rsatadigan uWSGI misoli Yuklangan: yuklangan (/etc/systemd/system/project1-flask.service; o'chirilgan; sotuvchi oldindan o'rnatilgan: yoqilgan) Faol: faol (ishlayapti) 2018 yil 06-iyun 13-dan boshlab: 14:56 CEST; 1s oldin Asosiy PID: 6618 (ish vaqti) Vazifalar: 6 (chegara: 4915) guruhi: /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

Iyun 04 13:14:56 my-rpi uwsgi [6618]: 5 yadro uchun 383928 bayt (374 KB) xaritasi Jun 04 13:14:56 my-rpi uwsgi [6618]: *** Operatsion rejimi: oldindan ishlov berish ***

● project1-sensor.service-1-loyiha sensori xizmati yuklandi: yuklandi (/etc/systemd/system/project1-sensor.service; o'chirilgan; sotuvchi oldindan sozlangan: yoqilgan) Faol: faol (ishlayapti) 2018 yil 06-06 may 13 dan: 16:49 CEST; 5s oldin Asosiy PID: 6826 (python) Vazifalar: 1 (chegara: 4915) guruhi: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

04-iyun 13:16:49 my-rpi systemd [1]: 1-loyiha sensori xizmati ishga tushirildi. Jun 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Sensor process_count = b'217 / n 'ma'lumotlar bazasiga saqlandi Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Sensor process_count = b'218 / n 'ma'lumotlar bazasiga saqlandi

nginx

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

/etc/nginx/sites-available: jami 4 -rw-r-r-1 ildiz ildizi 2416 12-iyul, 2017-yil

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

Hamma narsani standart qilish uchun bu buyruqlarni bajaring.

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

Avtomatik ishga tushirish

Keling, hamma narsa avtomatik tarzda boshlanishiga ishonch hosil qilaylik.

Conf katalogiga o'ting va oxirgi buyruqlarni bajaring va siz tugadingiz!

me@my-rpi: ~/project1 $ sudo systemctl project1-* ni yoqadi

Agar siz Pi -ni qayta ishga tushirsangiz, u avtomatik ravishda ishga tushishi kerak.

5 -qadam: 5 -qadam: Uy -joy qurish

5 -qadam: uy -joy qurish
5 -qadam: uy -joy qurish
5 -qadam: uy -joy qurish
5 -qadam: uy -joy qurish
5 -qadam: uy -joy qurish
5 -qadam: uy -joy qurish
5 -qadam: uy -joy qurish
5 -qadam: uy -joy qurish

Qayta ishlash

Uy -joy qurish uchun onam olib ketadigan eski shkafdan foydalanardim.

tayanch

Men 4 ta taxtani (34 sm x 26 sm) arraladim. (shuning uchun bu 34 x 34 x 26 o'lchamdagi kub).

Pastki qismiga men yupqa yog'och bo'lagini qo'shdim.

Led bilan taxta

O'rtada men har tomondan tepadan 9 sm masofada ikkita kichik yog'och bo'lak qo'ydim. Bu rahbarlar o'tiradigan taxtani ushlab turadi.

Ledli taxta - bu kichik taxta (32 sm x 32 sm).

Ledlar chiqishi uchun men 9 ta teshik ochdim.

bo'linish

Men bo'linishni pastki qismi bilan bir xil materialdan va taxtali LED bilan qildim.

Har biri 10,3 sm (9 sm x 31 sm) kesilgan 4 dona. Endi men ularni birlashtira olaman.

Tugmalar va RFID o'quvchi

Men RFID o'quvchi va tugmachalarni qo'yish uchun taglikdan teshik qildim. RFID uchun men uni toza ko'rinishi uchun oldiga yupqa taxta qo'ydim.

6 -qadam: 6 -qadam: Hammasini uyga joylashtirish

Bu qanday qilishni xohlayotganingizga bog'liq. Men shaxsan ko'p kabellarni lehimsiz ishlatardim, chunki men Raspberry Pi -ni qayta ishlatishni xohlayman.

Men LEDni joyiga yopishtirdim va RFID o'quvchi va taxtalarni qutiga yopishtirdim.

Va shunday qilib siz Keysorterni yaratasiz!

Tavsiya: