Мазмуну:
- 1 -кадам: 1 -кадам: Мага эмне керек?
- 2 -кадам: 2 -кадам: Маалыматтар базасынын схемасын түзүү
- 3 -кадам: 3 -кадам: Коддоо
- 4 -кадам: 4 -кадам: Ал кодду Менин Raspberry Piге коюу
- 5 -кадам: 5 -кадам: Турак жай куруу
- 6 -кадам: 6 -кадам: Бардыгын турак жайга салуу
Video: Keysorter: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Учурда мен Howestте NMCTти окуп жатам. Акыркы семестрибиз үчүн биз долбоор түзүшүбүз керек болчу. Ошентип, мен Keysorter жасадым.
Ал эмне кылат?
Бизде машинанын ачкычтары көп жана баары окшош. Ошентип, мен бул маселени чечүү үчүн Keysorter жасадым.
Ал RFID аркылуу ачкычты сканерлеп, кутуга орун бериши керек. Ошол эле ачкычты кайра сканерлесем, анын мурда дайындалган орду көрсөтүлөт. Акыркы жуулган машинаны көрсөтүү баскычы да бар.
Бул Raspberry Piде иштейт, анда Flask аркылуу веб -баракча кошуу мүмкүнчүлүгү бар.
Баракта мен бардык ачкычтарды карап, ачкычка ат кошуп, ачкычты алып салышым керек.
1 -кадам: 1 -кадам: Мага эмне керек?
Мен бул нерсени иштетүү үчүн керек болгон компоненттердин тизмесин түзүүдөн баштадым.
Компоненттер:
- Raspberry pi
- 2 х Shift реестри (74hc595)
- 3 x баскычы
- 9 x жашыл LED
- RFID сканери (MFRC522)
- 12 х резистор 220 Ом
Андан кийин мунун баарын менин схемага киргиздим.
Мен муну кылгандан кийин реалдуу жашоого жетиштим.
2 -кадам: 2 -кадам: Маалыматтар базасынын схемасын түзүү
Менин маалыматымды сактап калуу үчүн, мен Piде иштей турган маалымат базасын түзүшүм керек болчу.
Мен аны Mysqlде жасадым.
Үстөл машинасы:
- Унаанын идентификатору
- Колдонуучунун идентификатору
- Бренд (унаа маркасы)
- Түрү
- Акыркы жолу жууган
- Ачкыч
- RFID_ID
3 -кадам: 3 -кадам: Коддоо
Мунун баары даяр болгондо мен коддоону баштай алам.
Мен сенсорумдун кодун Python 3.5те жасоо менен баштадым.
Кодду жүктөө үчүн бул жерди басыңыз.
Долбоорду клондоштуруу үчүн шилтемени колдонуңуз.
4 -кадам: 4 -кадам: Ал кодду Менин Raspberry 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 орнотуу-pip setuptools дөңгөлөгүнүн виртуалын жогорулатуу@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv --system- сайт пакеттери мени@my-rpi: ~/project1 $ булагы env/bin/activate (env) me@my-rpi: ~/project1 $ python -m пипти орнотуу mysql-Connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
Pycharmдын жардамы менен долбоорду Piңизге жүктөңүз
Pycharmды ачыңыз жана VCS> Версияны Башкаруудан Импорттоо> Github бөлүмүнө өтүңүз жана менин github файлымды клон кылыңыз.
Жайгашуу конфигурациясын сиз жасаган каталогго коюңуз. (/home/me/project1). Колдонууну басыңыз!
Котормочу жөндөөлөрүнө өтүп, өзүңүз жасаган виртуалдык чөйрөнү тандаңыз. (/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
Jun 03 09:41:13 my-rpi systemd [1]: MariaDB маалымат базасынын серверин иштетүү… Jun 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
маалымат базасына киргенден кийин муну жасаңыз.
CREATE USER 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFIED 'senspassword';
DATABASE долбоорун түзүү1;
Project1 боюнча бардык артыкчылыктарды берүү.* To 'project1-admin'@'localhost' ГРАНТ ОПЦИОНУ менен; ГРАНТ ТАНДОО, КИРГИЗҮҮ, ЖАҢЫРТУУ, Project1 ЖОК КЫЛУУ.* TO 'project1-web'@'localhost'; ГРАНТ ТАНДОО, КИРГИРҮҮ, ЖАҢЫРТУУ, Project1 ЖОК КЫЛУУ.* TO 'project1-sensor'@'localhost'; FLUSH артыкчылыктары;
CREAT TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8
CARABLE 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`serk'_k), CONSTRAINT_ СЫРТКЫ АЧкыч (`idUser`) АДАБИЯТТАР`` колдонуучу` (` idUser`) ЖОК КЫЛУУДА ЭЧ ЭМЕС ЖОК КЫЛУУДА) Мотор = InnoDB AUTO_INCREMENT = 4 ЖАРЫККА ЧАРСЕТ = utf8
Маалымат базаңызды Pycharmга туташтырыңыз
Оң жактагы маалымат базасы өтмөгүн чыкылдатыңыз. Эгерде сизде өтмөк жок болсо, муну аткарыңыз: Көрүү> Курал Windows> Маалыматтар базасы.
Байланыш кошуу дегенди басыңыз. Маалымат булагын> MySQL тандаңыз (эгерде драйверди жүктөө баскычы болсо, аны басыңыз.)
SSH/SSLге кирип SSHди текшериңиз. Raspberry pi ишеним грамоталарын толтуруңуз (хост/колдонуучу/сырсөз). Порт 22 болушу керек жана сырсөздү эстеп калууну унутпаңыз.
Генералга кайт. Host localhost болушу керек жана маалымат базасы project1 болушу керек. Project1-adminден туташуусун текшерүү үчүн грамоталарды толтуруңуз.
Эгерде туташуу жакшы болсо, анда "Схемалар" өтмөгүнө өтүңүз жана project1 текшерилгенин текшериңиз.
Базанын тууралыгын текшериңиз
me@my-rpi: ~ $ echo 'столдорду көрсөтүү;' | mysql project1 -t -u project1-admin -pСырсөздү киргизиңиз: + --------------------------- + | Tables_in_project1 | + ---------------------------+ | сенсор | | колдонуучулар | +---------------------------+
Конфигурация файлдары
Conf каталогунда сиз 4 файлды таба аласыз. Сиз колдонуучунун атын колдонуучунун атына өзгөртүшүңүз керек.
Systemd
Баарын баштоо үчүн бул буйруктарды аткарышыңыз керек.
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 status1 project1-* ● project1- flask.service-uWSGI экземпляры project1 веб интерфейсин тейлейт Жүктөлгөн: жүктөлгөн (/etc/systemd/system/project1-flask.service; өчүрүлгөн; сатуучуга алдын ала коюлган: иштетилген) Активдүү: активдүү (иштеп жатат) Дш 2018-06-04 13: 14:56 CEST; 1s мурун Негизги PID: 6618 (uwsgi) Тапшырмалар: 6 (чек: 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
Июн 04 13:14:56 my-rpi uwsgi [6618]: 5 ядро үчүн 383928 байт (374 KB) картага түштү Июн 04 13:14:56 my-rpi uwsgi [6618]: *** Ыкчам режим: алдын ала иштөө ***
● project1-sensor.service-Project 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
Jun 04 13:16:49 my-rpi systemd [1]: Project 1 сенсор кызматы башталды. Июн 04 13:16:49 my-rpi python [6826]: Мүчүлүштүктөр: _ негизги _: Сакталган сенсор process_count = b'217 / n 'базасына Jun 04 13:16:55 my-rpi python [6826]: Мүчүлүштүктөр: _ 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 root root 2416 Jul 12 2017 демейки
/etc/nginx/sites-enabled: total 0 lrwxrwxrwx 1 root root 34 Jan 18 13:25 default->/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 restart nginx.service
Авто баштоо
Баары автоматтык түрдө башталаарына ынаналы.
Conf каталогуна өтүп, бул акыркы буйруктарды аткарыңыз, сиз бүттүңүз!
me@my-rpi: ~/project1 $ sudo systemctl project1-* иштетет
Эгерде сиз Пиңизди кайра жүктөсөңүз, ал автоматтык түрдө башталышы керек.
5 -кадам: 5 -кадам: Турак жай куруу
Кайра иштетүү
Менин үйүмдү жасаш үчүн апам алып кетүүчү эски шкафты колдондум.
база
Мен 4 тактайды (34 см х 26 см) араладым. (Ошентип, ал 34 x 34 x 26 өлчөмүндөгү куб).
Төмөн жагына ичке жыгачты түбүнө коштум.
Лидерлери бар такта
Ортодо мен ар бир жагына 2 кичинекей жыгачты койдум, экөө тең үстүнөн 9 см. Бул жерде лидерлер отура турган такта бар.
Жетекчелери бар такта - кичинекей такта (32 см x 32 см).
Леддердин чыгышы үчүн 9 тешик бургуладым.
бөлүнүү
Мен бөлүмдү түбү менен бирдей болгон материалды жана тактайды лед менен жасадым.
4 даана 10,3 см (9 см х 31 см) кесилген. Эми аларды бириктире алам.
Баскычтар жана RFID окурман
Мен RFID окурманымды жана баскычтарды коюу үчүн базага тешик жасадым. RFID үчүн мен таза көрүнүшү үчүн алдына жука тактайчаны койдум.
6 -кадам: 6 -кадам: Бардыгын турак жайга салуу
Бул сиз муну кандай кылгыңыз келгенине байланыштуу. Мен жеке Raspberry Pi'мди кайра колдоно алгыбыз келгендиктен, көп кабелдерди ширетпестен колдондум.
Мен лидерлерди ордуна жабыштырып, RFID окурманы менен корпусун скотч менен чаптадым.
Жана ушинтип сиз Keysorter жасайсыз!
Сунушталууда:
Кантип кадам эсептегич жасоо керек?: 3 кадам (сүрөттөр менен)
Step Counter кантип жасалат ?: Мен көптөгөн спортто жакшы аткарчумун: жөө басуу, чуркоо, велосипед тебүү, бадминтон ойноо ж.б. Мейли, менин ичимди карачы ……. Ооба, баары бир мен машыгуу үчүн кайра баштоону чечтим. Мен кандай жабдыктарды даярдашым керек?
IPodдо Doomду 5 жеңил кадам менен ойноңуз !: 5 кадам
Doom'ду IPodдо 5 жеңил кадам менен ойноңуз!: Doom жана башка ондогон оюндарды ойноо үчүн iPod'уңузда Rockboxту кантип кош жүктөө керектиги боюнча этап-этабы менен көрсөтмө. Бул чындыгында оңой нерсе, бирок менин iPodдо кыйроо ойноп жатканымды көргөндөрдүн көбү дагы эле таң калышат жана көрсөтмө менен чаташып кетишет
WordPressке плагиндерди 3 кадам менен кантип орнотсо болот: 3 кадам
WordPressке плагиндерди 3 этапта кантип орнотуу керек: Бул үйрөткүчтө мен сизге веб -сайтыңызга WordPress плагинин орнотуу үчүн эң маанилүү кадамдарды көрсөтөм. Негизи плагиндерди эки башка жол менен орнотсоңуз болот. Биринчи ыкма ftp же cpanel аркылуу болот. Бирок мен аны тизмектебейм, анткени бул чындыгында нааразы
Кадам моторун айдоо үчүн 556 таймерди колдонуу: 5 кадам
Step моторун айдоо үчүн 556 таймерди колдонуу: Бул инструкция 556 таймердин кантип тепкичтүү моторду айдай аларын түшүндүрүп берет
Акустикалык левитация Arduino Uno менен кадам-кадам (8-кадам): 8 кадам
Акустикалык левитация менен Arduino Uno Step-by-Step (8-кадам): ультрадыбыштуу үн өткөргүчтөр L298N Dc аял адаптеринин электр энергиясы менен камсыздоосу эркек токту Arduino UNOBreadboard Бул кантип иштейт: Биринчиден, сиз Arduino Uno кодун жүктөп бересиз (бул санарип менен жабдылган микроконтроллер) жана аналогдук порттор кодду айландыруу үчүн (C ++)