Mundarija:
- 1 -qadam: 1 -qadam: Menga nima kerak?
- 2 -qadam: 2 -qadam: ma'lumotlar bazasi sxemasini tuzish
- 3 -qadam: 3 -qadam: Kodlash
- 4 -qadam: 4 -qadam: Kodni Raspberry Pi -ga qo'yish
- 5 -qadam: 5 -qadam: Uy -joy qurish
- 6 -qadam: 6 -qadam: Hammasini uyga joylashtirish
Video: Keysorter: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
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?
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
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
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
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:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Arduino UNO bilan qadam motor: 3 qadam
Arduino UNO bilan qadam dvigateli: Bosqichli motorlar - bu alohida bosqichlarda harakatlanadigan shahar motorlari. Ularda "fazalar" deb nomlangan guruhlarga bo'lingan bir nechta rulon bor. Har bir fazani ketma -ket quvvatlantirganda, dvigatel birma -bir aylanadi, zinapoyali dvigatellar juda foydali
Kompyuteringizni qadam dvigateli bilan boshqaring!: 9 qadam (rasmlar bilan)
Kompyuteringizni qadam dvigateli bilan boshqaring!: Oldingi ko'rsatmalarimdan birida men sizga step motorini aylanuvchi kodlovchi sifatida qanday ishlatishni ko'rsatdim. Bu yo'riqnomada keling, undan kompyuterni boshqarish uchun qanday foydalanish kerakligini bilib olaylik. Shunday qilib, ko'p vaqt sarflamasdan, boshlaylik