Სარჩევი:

Keysorter: 6 ნაბიჯი
Keysorter: 6 ნაბიჯი

ვიდეო: Keysorter: 6 ნაბიჯი

ვიდეო: Keysorter: 6 ნაბიჯი
ვიდეო: MMS - Key Sorter 400V 2024, ივლისი
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

მე ამჟამად ვსწავლობ NMCT– ში Howest– ში. ჩვენი ბოლო სემესტრისთვის ჩვენ უნდა შევადგინოთ პროექტი. ასე რომ, მე გავაკეთე Keysorter.

რას აკეთებს?

ჩვენ გვაქვს უამრავი მანქანის გასაღები და ისინი ყველა ერთნაირად გამოიყურება. ასე რომ, მე შევქმენი Keysorter ამ საკითხის გადასაჭრელად.

მან უნდა შეამოწმოს გასაღები RFID– ით და მისცეს ადგილი ყუთში. თუ ისევ იმავე კლავიშს ვასკანირებ, ის გამოჩნდება მის მიერ წინასწარ დანიშნულ ადგილს. ასევე არის ღილაკი ბოლო გარეცხილი მანქანის საჩვენებლად.

ეს იქნება გაშვებული Raspberry Pi– ზე, რომელსაც ასევე აქვს შესაძლებლობა დაამატოთ ვებ გვერდი Flask– ის საშუალებით.

გვერდზე მე უნდა შემეძლოს ყველა გასაღების დათვალიერება, სახელის დამატება და გასაღების ამოღება.

ნაბიჯი 1: ნაბიჯი 1: რა დამჭირდება?

ნაბიჯი 1: რა დამჭირდება?
ნაბიჯი 1: რა დამჭირდება?
ნაბიჯი 1: რა დამჭირდება?
ნაბიჯი 1: რა დამჭირდება?

დავიწყე იმ კომპონენტების ჩამონათვალის შედგენით, რაც მე მჭირდება იმისათვის, რომ ეს საქმე იმუშაოს.

კომპონენტები:

  • ჟოლო პი
  • 2 x Shift რეგისტრი (74hc595)
  • 3 x ღილაკი
  • 9 x მწვანე led
  • RFID სკანერი (MFRC522)
  • 12 x რეზისტორი 220 ohm

შემდეგ ეს ყველაფერი ჩავდე ჩემს საშინელ სქემაში.

როგორც კი ეს გავაკეთე, მე შევძელი რეალურ ცხოვრებაში.

ნაბიჯი 2: ნაბიჯი 2: მონაცემთა ბაზის სქემატური შედგენა

ნაბიჯი 2: მონაცემთა ბაზის სქემატური შედგენა
ნაბიჯი 2: მონაცემთა ბაზის სქემატური შედგენა

ჩემი მონაცემების შესანახად მე უნდა შევქმნა მონაცემთა ბაზა, რომელიც შეიძლება მუშაობდეს ჩემს Pi- ზე.

გავაკეთე მისკლში.

მაგიდის მანქანა:

  • მანქანის პირადობის მოწმობა
  • მომხმარებლის იდენტიფიკაცია
  • ბრენდი (მანქანის ბრენდი)
  • ტიპი
  • ბოლოს გარეცხილი
  • Გასაღები
  • RFID_ID

ნაბიჯი 3: ნაბიჯი 3: კოდირება

ნაბიჯი 3: კოდირება
ნაბიჯი 3: კოდირება

როდესაც ეს ყველაფერი მზად იქნება, შემიძლია დავიწყო კოდირება.

დავიწყე Python 3.5– ში ჩემი სენსორის კოდის შექმნით.

კოდის გადმოსაწერად დააწკაპუნეთ აქ.

გამოიყენეთ ბმული პროექტის კლონირებისთვის.

ნაბიჯი 4: ნაბიჯი 4: ჩადეთ ალ კოდი ჩემს ჟოლოს პიზე

პაკეტების დაყენება

პირველად დავაყენე ყველა პაკეტი, რომელიც მჭირდებოდა ამ სამუშაოს შესასრულებლად.

me@my-rpi: su $ sudo apt განახლება

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

ვირტუალური გარემო

me@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/activ (env) me@my-rpi:/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

ატვირთეთ პროექტი თქვენს Pi– ზე pycharm– ის გამოყენებით

გახსენით Pycharm და გადადით VCS> იმპორტი ვერსიის კონტროლიდან> Github და კლონირება ჩემი github ფაილი.

განათავსეთ განლაგების კონფიგურაცია თქვენს მიერ შექმნილ დირექტორიაში. (/სახლი/მე/პროექტი 1). დააჭირეთ მიმართვას!

გადადით თარჯიმნის პარამეტრებზე და შეარჩიეთ ვირტუალური გარემო, რომელიც თქვენ შექმენით. (/home/me/project1/env/bin/pyhon)

შეამოწმეთ სწორია თუ არა გეზის რუქა.

ახლა თქვენ შეგიძლიათ ატვირთოთ კოდი თქვენს დირექტორიაში Pycharm– ის გამოყენებით.

Მონაცემთა ბაზა

შეამოწმეთ მუშაობს თუ არა მონაცემთა ბაზა. თქვენ უნდა მიიღოთ მსგავსი რამ:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB მონაცემთა ბაზის სერვერი დატვირთულია: დატვირთულია (/lib/systemd/system/mariadb.service; ჩართულია; გამყიდველის წინასწარ განსაზღვრული: ჩართულია) აქტიური: აქტიური (გაშვებული) მზედან 2018-06-03 09:41:18 CEST; 1 დღე 4 საათის წინ მთავარი PID: 781 (mysqld) სტატუსი: "SQL მოთხოვნების მიღება ახლა …" ამოცანები: 28 (ლიმიტი: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

03 ივნისი 09:41:13 my-rpi systemd [1]: იწყება MariaDB მონაცემთა ბაზის სერვერი … ივნისი 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [შენიშვნა] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) ივნისი 03 09:41:18 my-rpi systemd [1]: დაიწყო MariaDB მონაცემთა ბაზის სერვერი.

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

შექმენით მომხმარებლები და დაამატეთ მონაცემთა ბაზა

me@my-rpi: su $ sudo mariadb

მას შემდეგ რაც მონაცემთა ბაზაში იქნებით გააკეთეთ ეს.

შექმენით მომხმარებელი 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED by 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFIED BY 'sensorpassword';

შექმენით მონაცემთა ბაზა პროექტი 1;

მიეცით ყველა პრივილეგია პროექტზე 1.* 'Project1-admin'@'localhost' გრანტის არჩევით; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH პრივილეგიები;

შექმენით ცხრილი `მომხმარებელი` (` idUser` int (11) NOT NULL, `პაროლი` 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`_), უცხოური გასაღები (`idUser`) მიმართავს` მომხმარებელს` (`idUser`) წაშლაზე არანაირი ქმედების განახლება არავითარი ქმედება) ძრავა = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

შეაერთეთ თქვენი მონაცემთა ბაზა Pycharm– თან

დააწკაპუნეთ მონაცემთა ბაზის ჩანართზე მარჯვენა მხარეს. თუ ჩანართი არ გაქვთ გახსნილი, გააკეთეთ ეს: ნახვა> ინსტრუმენტები Windows> მონაცემთა ბაზა.

დააწკაპუნეთ კავშირის დამატებაზე. აირჩიეთ მონაცემთა წყარო> MySQL (თუ დრაივერის გადმოტვირთვის ღილაკი არსებობს დააჭირეთ მას.)

გადადით SSH/SSL– ში და შეამოწმეთ SSH. შეავსეთ თქვენი Raspberry pi სერთიფიკატები (მასპინძელი/მომხმარებელი/პაროლი). პორტი უნდა იყოს 22 და არ დაგავიწყდეთ პაროლის დამახსოვრება.

დაბრუნდი გენერალთან. მასპინძელი უნდა იყოს localhost და მონაცემთა ბაზა უნდა იყოს project1. შეავსეთ რწმუნებათა სიგელები project1-admin– დან და შეამოწმეთ კავშირი.

თუ კავშირი ნორმალურია, გადადით ჩანართზე სქემები და დარწმუნდით, რომ პროექტი 1 მონიშნულია.

შეამოწმეთ არის თუ არა მონაცემთა ბაზა სწორი

me@my-rpi: ~ $ echo 'მაგიდების ჩვენება;' | mysql project1 -t -u project1-admin -p შეიყვანეთ პაროლი: + --------------------------- + | ცხრილები_პროექტში 1 | + ------------------------------++ სენსორი | | მომხმარებლები | +------------------------------+

კონფიგურაციის ფაილები

დირექტორია conf თქვენ ნახავთ 4 ფაილი. თქვენ უნდა შეცვალოთ მომხმარებლის სახელები თქვენს სახელზე.

სისტემური

ყველაფრის დასაწყებად თქვენ უნდა შეასრულოთ ეს ბრძანებები.

me@my-rpi: ~/project1 $ sudo cp conf/project1-*. სერვისი/etc/systemd/system/

me@my-rpi: ~/project1 $ sudo systemctl daemon-reload me@my-rpi:/project1 $ sudo systemctl პროექტის დაწყება1-* me@my-rpi: ~/project1 $ sudo systemctl სტატუსი პროექტი1-* ● project1- flask.service-uWSGI მაგალითი პროექტის 1 ვებ ინტერფეისისთვის 14:56 CEST; 1 წინ 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

ივნ 04 04 13:14:56 my-rpi uwsgi [6618]: ასახულია 383928 ბაიტი (374 KB) 5 ბირთვით ივნ. 04 13:14:56 my-rpi uwsgi [6618]: *** ოპერატიული რეჟიმი: წინასწარი მომზადება ***

● project1-sensor.service-პროექტი 1 სენსორული სერვისი დატვირთულია: დატვირთულია (/etc/systemd/system/project1-sensor.service; გამორთულია; გამყიდველის წინასწარ განსაზღვრული: ჩართულია) აქტიური: აქტიური (გაშვებული) ორშაბათიდან 2018-06-04 13: 16:49 CEST; 5s წინ მთავარი PID: 6826 (პითონი) ამოცანები: 1 (ლიმიტი: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

ივნისი 04 13:16:49 my-rpi systemd [1]: დაიწყო პროექტი 1 სენსორის სერვისი. ივნ 04 04 13:16:49 my-rpi პითონი [6826]: DEBUG: _ main _: შენახული სენსორი process_count = b'217 / n 'მონაცემთა ბაზაში Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: შენახულია სენსორის process_count = b'218 / n 'მონაცემთა ბაზაში

nginx

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

/etc/nginx/sites-available: სულ 4 -rw-r-r-- 1 root root 2416 ივლისი 12 2017 ნაგულისხმევი

/etc/nginx/sites-enabled: სულ 0 lrwxrwxrwx 1 root root 34 იანვარი 18 13:25 ნაგულისხმევი->/etc/nginx/sites-available/default

იმისათვის, რომ ყველაფერი ნაგულისხმევი იყოს, შეასრულეთ ეს ბრძანებები.

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

Ავტომატური დაწყება

მოდით დავრწმუნდეთ, რომ ყველაფერი ავტომატურად იწყება.

გადადით conf დირექტორიაში და შეასრულეთ ეს საბოლოო ბრძანებები და თქვენ დაასრულეთ!

me@my-rpi:/project1 $ sudo systemctl ჩართეთ პროექტი 1-*

თუ გადატვირთავთ Pi- ს, ის ავტომატურად უნდა დაიწყოს.

ნაბიჯი 5: ნაბიჯი 5: საცხოვრებლის დამზადება

ნაბიჯი 5: საცხოვრებლის შექმნა
ნაბიჯი 5: საცხოვრებლის შექმნა
ნაბიჯი 5: საცხოვრებლის შექმნა
ნაბიჯი 5: საცხოვრებლის შექმნა
ნაბიჯი 5: საცხოვრებლის შექმნა
ნაბიჯი 5: საცხოვრებლის შექმნა
ნაბიჯი 5: საცხოვრებლის შექმნა
ნაბიჯი 5: საცხოვრებლის შექმნა

გადამუშავება

საცხოვრებლის გასაკეთებლად მე გამოვიყენე ძველი კარადა, რომელსაც დედაჩემი იშორებდა.

ბაზა

მე დავინახე 4 ფიცარი (34 სმ x 26 სმ). (ეს არის კუბი 34 x 34 x 26).

ბოლოში დავამატე ხის თხელი ნაჭერი, როგორც ქვედა.

დაფა led– ით

შუაში მე დავდე 2 პატარა ხის ნაჭერი თითოეულ მხარეს ორივე ზემოდან 9 სმ სიმაღლეზე. ეს ინახავს დაფას, სადაც ლიდერები ისხდებიან.

ლიდერის დაფა არის პატარა დაფა (32 სმ x 32 სმ).

მე გავაღე 9 ხვრელი, რომლიდანაც ლიდერი გამოვიდა.

გაყოფა

მე გავაკეთე გაყოფა იმავე მასალით, როგორც ქვედა და დაფა led– ით.

4 ცალი თითოეული 10,3 სმ (9 სმ x 31 სმ) ჭრილით. ახლა მე შემიძლია მათი გაერთიანება.

ღილაკები და RFID მკითხველი

მე გავაკეთე ხვრელი ძირში, რომ ჩავსდო ჩემი RFID მკითხველი და ღილაკები.

ნაბიჯი 6: ნაბიჯი 6: ყველაფერი ჩადეთ საცხოვრებელში

ეს დამოკიდებულია იმაზე, თუ როგორ გსურთ ამის გაკეთება. მე პირადად ბევრი კაბელი გამოვიყენე შედუღების გარეშე, რადგან მსურს შემეძლოს ჩემი Raspberry Pi- ს ხელახლა გამოყენება.

მე დავაწებე ლიდერი ადგილზე და ჩავამაგრე RFID წამკითხველი და დაფები საქმესთან.

და ასე აკეთებ Keysorter- ს!

გირჩევთ: