Mündəricat:
- Addım 1: Adım 1: Nəyə ehtiyacım olacaq?
- Addım 2: Adım 2: Verilənlər Bazası Şeması Hazırlayın
- Adım 3: Adım 3: Kodlaşdırma
- Addım 4: Adım 4: Al Kodu Mənim Raspberry Pi -yə qoyun
- Adım 5: Adım 5: Mənzil tikmək
- Addım 6: Adım 6: Hər şeyi Mənzilə Qoyun
Video: Açar məlumat verən: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Hal -hazırda Howest -də NMCT -də oxuyuram. Son semestr üçün bir layihə hazırlamalı olduq. Beləliklə, Keysorter hazırladım.
Bu nə edir?
Evdə çoxlu avtomobil açarları var və hamısı bənzəyir. Buna görə də bu problemi həll etmək üçün Keysorter -ə müraciət etdim.
RFID vasitəsilə bir açarı taramalı və qutuda bir yer verməlidir. Eyni açarı yenidən tarasam, əvvəllər təyin etdiyi yeri göstərər. Sonuncu yuyulan maşını göstərmək üçün düymə də var.
Bu, Flask vasitəsilə bir veb səhifəsi əlavə etmək imkanı olan bir Raspberry Pi üzərində işləyəcək.
Səhifədə bütün düymələrə baxa, bir ada bir ad əlavə edə və bir açarı silə bilməliyəm.
Addım 1: Adım 1: Nəyə ehtiyacım olacaq?
Bu işi işə salmaq üçün lazım olan komponentlərin siyahısını tərtib etməklə başladım.
Komponentlər:
- Moruq pi
- 2 x Shift reyestri (74hc595)
- 3 x düyməsi
- 9 x yaşıl led
- RFID skaneri (MFRC522)
- 12 x 220 ohm müqavimət
Sonra bütün bunları qarmaqarışıq sxemimə qoydum.
Bunu etdikdən sonra real həyatda qazandım.
Addım 2: Adım 2: Verilənlər Bazası Şeması Hazırlayın
Verilərimi saxlamaq üçün Pi -də işləyə biləcək bir verilənlər bazası yaratmalı oldum.
Mysql -də qazandım.
Masa avtomobili:
- Avtomobil nömrəsi
- İstifadəçi adı
- Marka (avtomobil markası)
- Yazın
- Sonuncu dəfə yuyulub
- Açar
- RFID_ID
Adım 3: Adım 3: Kodlaşdırma
Bütün bunlar hazır olanda kodlamağa başlaya bilərdim.
Python 3.5 -də sensorumun kodunu düzəltməyə başladım.
Kodu yükləmək üçün bura vurun.
Layihəni klonlamaq üçün linkdən istifadə edin.
Addım 4: Adım 4: Al Kodu Mənim Raspberry Pi -yə qoyun
Paketlərin quraşdırılması
Əvvəlcə bu işi etmək üçün lazım olan bütün paketləri quraşdırdım.
me@my-rpi: ~ $ sudo apt yeniləmə
me@my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Virtual mühit
me@my-rpi: ~ $ python3 -m pip install-pip setuptools təkərini təkmilləşdirmək virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv --system- site paketləri mənə@my-rpi: ~/project1 $ source env/bin/activate (env) me@my-rpi: ~/project1 $ python -m pip mysql-connector-python argon2-cffi Flask Flask-HTTPAuth quraşdırın Flask-MySQL mysql-bağlayıcı-python keçid
Pycharm istifadə edərək layihənizi Pi -yə yükləyin
Pycharmı açın və VCS> Version Nəzarətindən Github> Github'a gedin və github faylımı klonlayın.
Dağıtım konfiqurasiyasını yeni hazırladığınız qovluğa qoyun. (/home/me/project1). Tətbiq et!
Tərcüməçi parametrlərinə gedin və hazırladığınız virtual mühiti seçin. (/home/me/project1/env/bin/pyhon)
Yol xəritəsinin düzgün olub olmadığını yoxlayın.
İndi kodu Pycharm istifadə edərək kataloqunuza yükləyə bilərsiniz.
Verilənlər bazası
Verilənlər bazasının işlədiyini yoxlayın. Buna bənzər bir şey almalısınız:
me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB verilənlər bazası serveri Yükləndi: yükləndi (/lib/systemd/system/mariadb.service; aktivdir; satıcıya əvvəlcədən təyin edilmiş: aktivdir) Aktiv: Günəşdən bəri aktivdir (işləyir) 2018-06-03 09:41:18 CEST; 1 gün 4 saat əvvəl Əsas PID: 781 (mysqld) Vəziyyət: "SQL istəklərinizi indi götürürük …" Tapşırıqlar: 28 (limit: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld
Jun 03 09:41:13 my-rpi systemd [1]: MariaDB verilənlər bazası serverinin işə salınması… Jun 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Qeyd] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) İyun 03 09:41:18 my-rpi systemd [1]: MariaDB verilənlər bazası serverini işə saldı.
me@my -rpi: ~ $ ss -lt | grep mysql DİNLƏ 0 80 127.0.0.1:mysql *: *
İstifadəçilər yaradın və verilənlər bazasını əlavə edin
me@my-rpi: ~ $ sudo mariadb
verilənlər bazasına daxil olduğunuzda bunu edin.
CREATE USER 'project1-admin'@'localhost' IDENTIFIED by 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; İstifadəçi yarat 'project1-sensor'@'localhost' IDSIFEDED 'senspassword';
DATABASE layihəsi yaradın1;
QRANT SEÇİMİ İLƏ Project1.* 'Project1-admin'@'localhost' a bütün üstünlükləri ver; GRANT SELECT, INSERT, UPDATE, DELETE on project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH İSTİFADƏLƏRİ;
CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB VARSAYILAN CHARSET = utf8
TABLE yarat "avtomobili" (`idCar` int (11) NULL AUTO_INCREMENT DEĞİL,` idUser` int (11) NULL DEĞİL, `Brand` varchar (45) VARSIZ NULL,` Type` varchar (45) DEFAULT NULL, `LastWashed ' datetime DEFAULT NULL, `RFID_Number` varchar (15) VARSAYILAN NULL,` Key` varchar (5) VARSAYILAN NULL, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`ser '), CONCAINT_ XARİCİ KEY (`idUser`) REFERANSLAR` istifadəçi` (`idUser`) YENİLƏNMƏSİNDƏ ƏMƏLİYYAT YOXDUR) MOTOR = InnoDB AUTO_INCREMENT = 4 VARSIZ CHARSET = utf8
Verilənlər bazanızı Pycharm -a qoşun
Sağ tərəfdəki verilənlər bazası sekmesini vurun. Açılmış bir nişanınız yoxdursa, bunu edin: Görünüş> Alət Windows> Veritabanı.
Bağlantı əlavə et vurun. Məlumat mənbəyi> MySQL seçin (Yükləmə sürücüsü varsa düyməni basın.)
SSH yoxlamaq üçün SSH/SSL -ə gedin. Raspberry pi etimadnamənizi doldurun (host/user/password). Liman 22 olmalıdır və şifrəni yadda saxlamağı unutmayın.
Generala qayıt. Host localhost olmalı və verilənlər bazası project1 olmalıdır. Project1-admin-dən etimadnaməsini doldurun və əlaqəni yoxlayın.
Bağlantı qaydasındadırsa, Şemalar sekmesine keçin və project1 -in yoxlanıldığından əmin olun.
Verilənlər bazasının doğru olub olmadığını yoxlayın
me@my-rpi: ~ $ echo 'masaları göstər;' | mysql project1 -t -u project1-admin -pŞifrə daxil edin: + --------------------------- + | Tables_in_project1 | + ---------------------------+ | sensor | | istifadəçilər | +---------------------------+
Konfiqurasiya Faylları
Conf qovluğunda 4 fayl tapa bilərsiniz. İstifadəçi adlarını istifadəçi adınıza dəyişdirməlisiniz.
Sistemli
Hər şeyi başlamaq üçün bu əmrləri yerinə yetirməlisiniz.
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-uWSGI nümunəsi Project1 veb interfeysinə xidmət etmək üçün Yükləndi: yükləndi (/etc/systemd/system/project1-flask.service; deaktivdir; satıcı əvvəlcədən təyin edilmiş: aktivdir) Aktiv: aktivdir (işləyir), Paz 2018-06-04 13: 14:56 CEST; 1s əvvəl Əsas PID: 6618 (uwsgi) Tapşırıqlar: 6 (limit: 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
İyun 04 13:14:56 my-rpi uwsgi [6618]: 5 nüvə üçün 383928 bayt (374 KB) xəritələndirildi Jun 04 13:14:56 my-rpi uwsgi [6618]: *** Əməliyyat rejimi: ön işləmə ***
● project1-sensor.service-Layihə 1 sensor xidməti Yükləndi: yükləndi (/etc/systemd/system/project1-sensor.service; deaktivdir; satıcı əvvəlcədən təyin edilmiş: aktivdir) Aktiv: aktivdir (işləyir), Paz 2018-06-04 13: 16:49 CEST; 5s əvvəl Əsas PID: 6826 (python) Tapşırıqlar: 1 (limit: 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 sensor xidmətinə başladı. Jun 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Saveed sensor process_count = b'217 / n 'verilənlər bazasına Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Sensor process_count = b'218 / n 'verilənlər bazasına saxlanıldı
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 default
/etc/nginx/sites-enabled: total 0 lrwxrwxrwx 1 root root 34 Jan 18 13:25 default->/etc/nginx/sites-available/default
Hər şeyi standart etmək üçün bu əmrləri yerinə yetirin.
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
Avtomatik başlama
Hər şeyin avtomatik olaraq başladığından əmin olaq.
Conf qovluğuna gedin və bu son əmrləri yerinə yetirin və işiniz bitdi!
me@my-rpi: ~/project1 $ sudo systemctl project1-* imkan verir
Pi -ni yenidən başlatsanız, avtomatik olaraq başlamalıdır.
Adım 5: Adım 5: Mənzil tikmək
Təkrar emal
Evimi düzəltmək üçün anamın uçub gedəcəyi köhnə bir dolabdan istifadə etdim.
baza
4 taxta (34 sm x 26 sm) gördüm. (buna görə 34 x 34 x 26 ölçüsündə bir kubdur).
Dibinə nazik bir ağac parçası əlavə etdim.
Led ilə lövhə
Ortada hər tərəfdən yuxarıdan 9 sm məsafədə 2 kiçik ağac parçası qoydum. Bu, liderlərin oturacağı lövhəni tutur.
Ledləri olan lövhə kiçik bir taxtadır (32 sm x 32 sm).
Ledlərin çıxması üçün 9 delik açdım.
bölünmə
Bölməni alt hissəsi ilə eyni materialdan və lövhələrlə lövhədən hazırladım.
Hər biri 10,3 sm (9 sm x 31 sm) kəsiklə 4 ədəd. İndi onları bir araya gətirə bilərəm.
Düymələr və RFID oxucu
RFID oxuyucumu və düymələri taxmaq üçün bazada bir deşik etdim. RFID üçün daha təmiz görünməsi üçün önünə nazik bir taxta parçası qoydum.
Addım 6: Adım 6: Hər şeyi Mənzilə Qoyun
Bu, bunu necə etmək istədiyinizə bağlıdır. Şəxsən mən Raspberry Pi -ni yenidən istifadə etmək istədiyim üçün lehimsiz bir çox kabel istifadə etdim.
Ledləri yerə yapışdırdım və RFID oxuyucusunu və çörək lövhələrini kasaya yapışdırdım.
Və beləcə Keysorter hazırlayırsınız!
Tövsiyə:
Arduino Maşını Verən Tapşırıq (aka: Bop-it your own bop-it!): 5 addım
Vəzifə Arduino Maşını Verilməsi (aka: Öz Bop-it!) Məktəbdən özüm üçün standart bir material topladım və ətrafda ən az xarici mat ilə işləyəcək bir şey düşündüm
Myoware əzələ sensoruna reaksiya verən Neopixel Led Strip: 6 addım
Myoware Əzələ Sensoruna Reaksiya Verən Neopixel Led Strip: Məqsəd, Arduinonun köməyi ilə bir əzələ sensoru quraşdırmaq və gələn məlumatları Adafruit IO ilə işləmək və işığın bir dəqiqə ağdan qırmızıya çevrilməsi üçün tətiklə çıxarmaqdır. əzələ sensoru əzələ sensoru
MotoStudent Elektrikli Yarış Velosipedinin Məlumat Alınması və Məlumat Vizualizasiya Sistemi: 23 addım
Bir MotoStudent Elektrik Yarış Velosipedi üçün Məlumat Toplama və Məlumat Görüntüləmə Sistemi: Məlumat əldə etmə sistemi, xarici sensorlardan məlumat toplamaq, sonra saxlamaq və emal etmək üçün birlikdə işləyən aparat və proqram təminatı toplusudur və qrafik olaraq görüntülənə və təhlil edilə bilər. mühəndislərə imkan verir
Ornitopter və İlham verən Arduino Musiqisi: 7 addım
Ornitopter və İlham verən Arduino Musiqisi: -Necə Ornitopter Yaratmaq olar- Necə Fix Səni və Arduinoda Çempionuq
Birlik Oyununuza cavab verən İşıqlı Arduino Oyun Nəzarətçisi: 24 addım
Birlik Oyununuza Cavab verən İşıqlı Arduino Oyun Nəzarətçisi :: Əvvəlcə bu şeyi sözlə yazdım. İlk dəfədir ki, mən təlimat verəndən istifadə edirəm, belə ki, nə vaxt desəm: bu addımı başındakı görüntüyə istinad etdiyimi bildiyiniz kimi kod yazın. Bu layihədə 2 ayrı biti işlətmək üçün 2 arduino istifadə edirəm