Բովանդակություն:

Ստեղնաշար ՝ 6 քայլ
Ստեղնաշար ՝ 6 քայլ

Video: Ստեղնաշար ՝ 6 քայլ

Video: Ստեղնաշար ՝ 6 քայլ
Video: Ինչի՞ համար են նախատեսված համակարգչի այս կոճակները 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 կանաչ լեդ
  • RFID սկաներ (MFRC522)
  • 12 x դիմադրություն 220 օմ

Հետո ես այս ամենը դրեցի իմ ցնցող սխեմատիկայում:

Երբ ես դա արեցի, ես դա հասցրեցի իրական կյանքում:

Քայլ 2: Քայլ 2: Տվյալների բազայի սխեմատիկ ձևավորում

Քայլ 2: Տվյալների բազայի սխեմատիկ ձևավորում
Քայլ 2: Տվյալների բազայի սխեմատիկ ձևավորում

Իմ բոլոր տվյալները պահելու համար ես պետք է ստեղծեի տվյալների բազա, որը կարող էր աշխատել իմ Pi- ով:

Ես այն պատրաստել եմ Mysql- ում:

Սեղանի մեքենա

  • Մեքենայի ID
  • օգտագործողի այ - Դի
  • Ապրանքանիշ (ավտոմեքենայի ապրանքանիշ)
  • Տիպ
  • Վերջին անգամ լվացվել է
  • Բանալի
  • RFID_ID

Քայլ 3: Քայլ 3: Կոդավորում

Քայլ 3: Կոդավորում
Քայլ 3: Կոդավորում

Երբ այս ամենը պատրաստ լիներ, ես կարող էի սկսել կոդավորումը:

Ես սկսեցի Python 3.5 -ում իմ տվիչի կոդը կազմել:

Կոդը ներբեռնելու համար կտտացրեք այստեղ:

Օգտագործեք հղումը `նախագիծը կլոնավորելու համար:

Քայլ 4: Քայլ 4. Ալ Օրենսգիրքը դնել Իմ ազնվամորի Pi- ի վրա

Փաթեթների տեղադրում

Սկզբում ես տեղադրեցի այն փաթեթները, որոնք ինձ անհրաժեշտ էին այս աշխատանքը կատարելու համար:

me@my-rpi: ~ $ sudo տեղին թարմացում

me@my-rpi: ~ $ 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> Import from Version Control> Github և կլոնավորեք իմ github ֆայլը:

Տեղադրեք կազմաձևումը ձեր ստեղծած գրացուցակում: (/տուն/ինձ/նախագիծ 1): Կտտացրեք կիրառել:

Գնացեք թարգմանչի կարգավորումներ և ընտրեք ձեր ստեղծած վիրտուալ միջավայրը: (/home/me/project1/env/bin/pyhon)

Ստուգեք, արդյոք ուղու քարտեզագրումը ճիշտ է:

Այժմ կարող եք ծածկագիրը վերբեռնել ձեր գրացուցակում ՝ օգտագործելով Pycharm- ը:

Տվյալների շտեմարան

Ստուգեք, արդյոք տվյալների բազան աշխատում է: Դուք պետք է ստանաք այսպիսի բան.

me@my -rpi: ~ $ sudo systemctl կարգավիճակ mysql ● mariadb.service - MariaDB տվյալների բազայի սերվեր Բեռնված է. բեռնված (բեռնված 2018-06-03 09:41:18 CEST; 1 օր 4 ժամ առաջ Հիմնական PID: 781 (mysqld) Կարգավիճակ. «Ձեր SQL հարցումները հիմա ընդունելով …» Առաջադրանքներ ՝ 28 (սահմանափակում ՝ 4915) C Խումբ ՝ /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 ԼՍԵԼ 0 80 127.0.0.1:mysql *: *

Ստեղծեք օգտվողներ և ավելացրեք տվյալների բազան

me@my-rpi: ~ $ sudo mariadb

տվյալների բազայում լինելուց հետո դա արեք:

Ստեղծել օգտվող 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFIED BY by 'sensorpassword';

Ստեղծել տվյալների շտեմարան նախագիծ 1;

ՏՐԱՄԱԴՐԵԼ ԲՈԼՈՐ ԱՐՏԱՀԱՆՈՈԹՅՈ projectՆՆԵՐԸ project1.*-ին 'project1-admin'@'localhost'-ին `ՏՐԱՄԱԴՐՈԹՅԱՆ ԸՆՏՐՈԹՅՈՆՈՎ; ՏՐԱՄԱԴՐՈԹՅԱՆ ԸՆՏՐՈԹՅՈՆ, ՏԵSԱԴՐՈՄ, ԹԱՐՄԱՆԵԼ, LEՆTEԵԼ նախագիծը 1.* Դեպի 'project1-web'@'localhost'; ՏՐԱՄԱԴՐՈԹՅԱՆ ԸՆՏՐՈԹՅՈՆ, ՆԵՐԿԱՅԱՆԵԼ, ԹԱՐՄԱՆԵԼ, DEՆTEԵԼ նախագիծը 1.* Դեպի 'project1-sensor'@'localhost'; FLԱՌԱՅԻՆ ԱՌԱIՆՈԹՅՈՆՆԵՐ;

ՍՏԵԵԼ ՍԱՀՈԼԻ `օգտվողի (« idUser` int (11) NOT NULL, «Գաղտնաբառ» varchar (45) DEFAULT NULL, PRIMARY KEY («idUser»)) ՇԱՐGԱԿԱՐԳ = InnoDB ՀԵՏԱՈՏԱԿԱՆ ՀԱՐՍԱՐԱՆ = utf8

ՍՏԵԵԼ ՍԵABԱՆԻ «մեքենա» («idCar` int (11) NOT NULL AUTO_INCREMENT,« idUser` int (11) NOT NULL, «Ապրանքանիշ» 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») ՝ UՆTEԵԼՈ NO ԹԵՄԱՆ ԱՌՈՈԹՅՈ ONՆՆԵՐՈՎ ՈՉ ԳՈՐՈՈԹՅՈՆ) ՇԱՐGԻՉ = InnoDB AUTO_INCREMENT = 4 ՊԱՇՏՊԱՆՈARԹՅՈARՆ ՔԱՐՍԵԹ = utf8

Միացրեք ձեր տվյալների բազան Pycharm- ին

Կտտացրեք տվյալների բազայի ներդիրին աջ կողմում: Եթե ներդիրը բաց չէ, արեք դա. Դիտել> Գործիք Windows> Տվյալների բազա:

Կտտացրեք ավելացնել կապը: Ընտրեք տվյալների աղբյուր> MySQL (եթե ներբեռնման կոճակ կա, սեղմեք այն):

Գնացեք SSH/SSL և ստուգեք SSH: Լրացրեք ձեր Raspberry pi հավատարմագրերը (հյուրընկալող/օգտվող/գաղտնաբառ): Պորտը պետք է լինի 22 և մի մոռացեք ստուգել հիշելու գաղտնաբառը:

Վերադառնալ գեներալ: Հաղորդավարը պետք է լինի localhost, իսկ տվյալների բազան պետք է լինի նախագիծ 1: Լրացրեք 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-*. ծառայություն/այլն/systemd/system/

me@my-rpi:/project1 $ sudo systemctl daemon-reload me@my-rpi:/project1 $ sudo systemctl start project1-* 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/ նախագիծ 1/conf/uwsgi-flask.ini └─6624/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini

Հունիսի 04 13:14:56 my-rpi uwsgi [6618] ՝ քարտեզագրված 383928 բայթ (374 ԿԲ) 5 միջուկի համար հունիսի 04 13:14:56 my-rpi uwsgi [6618]: *** Գործառնական ռեժիմ ՝ նախապատրաստում ***

● project1-sensor.service-Project 1 սենսորային ծառայություն Բեռնված է. Բեռնված 16:49 CEST; 5s առաջ Հիմնական PID: 6826 (պիթոն) Առաջադրանքներ ՝ 1 (սահմանափակում ՝ 4915) C Խումբ ՝ /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]. Սկսվել է Project 1 սենսորային ծառայությունը: Հունիսի 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Պահված սենսորային գործընթացի_հաշիվ = b'217 / n 'տվյալների բազայում հունիսի 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: total 4 -rw-r-r-- 1 արմատային արմատ 2416 Հուլիս 12 2017 կանխադրված

/etc/nginx/sites-enabled: ընդամենը 0 lrwxrwxrwx 1 արմատային արմատ 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- ով

Մեջտեղում ես երկու փոքր փայտ եմ դնում յուրաքանչյուր կողմից, երկուսն էլ վերևից 9 սմ հեռավորության վրա: Սա պահում է տախտակը, որտեղ առաջնորդները նստելու են:

Լեդերի տախտակը փոքր տախտակ է (32 սմ x 32 սմ):

Ես 9 անցք եմ փորել, որպեսզի լեդերը դուրս գան:

բաժանում

Ես բաժանումը կատարեցի նույն նյութով, ինչպես ներքևը, և տախտակը `լեդերով:

4 -ական հատ ՝ 10,3 սմ (9 սմ x 31 սմ) կտրվածքով: Այժմ ես կարողանում եմ դրանք համատեղել:

Կոճակներ և RFID ընթերցող

Ես հիմք բացեցի, որպեսզի տեղադրեմ իմ RFID ընթերցողը և կոճակները: RFID- ի համար ես դրա դիմաց դրեցի բարակ կտոր, որպեսզի այն ավելի մաքուր տեսք ունենա:

Քայլ 6: Քայլ 6: Ամեն ինչ դնել բնակարանի մեջ:

Սա կախված է նրանից, թե ինչպես եք ցանկանում դա անել: Ես անձամբ շատ մալուխներ եմ օգտագործել առանց զոդման, քանի որ ցանկանում եմ կարողանալ նորից օգտագործել իմ Raspberry Pi- ն:

Ես սոսնձեցի լուսարձակները տեղում և կպցրեցի պատյանին RFID ընթերցողն ու տախտակները:

Եվ այդպես եք պատրաստում Keysorter:

Խորհուրդ ենք տալիս: