İçindekiler:

Anahtar Sıralayıcı: 6 Adım
Anahtar Sıralayıcı: 6 Adım

Video: Anahtar Sıralayıcı: 6 Adım

Video: Anahtar Sıralayıcı: 6 Adım
Video: OHAA ! İPAD TABLETİ ARKADAŞINA VERDİ BABASI TEBRİK ETTİ 2024, Temmuz
Anonim
Anahtar sıralayıcı
Anahtar sıralayıcı
Anahtar sıralayıcı
Anahtar sıralayıcı

Şu anda Howest'te NMCT okuyorum. Son dönemimiz için bir proje yapmamız gerekiyordu. Bu yüzden bir Anahtar Sıralayıcı yaptım.

Bu ne işe yarıyor?

Evde bir sürü araba anahtarımız var ve hepsi birbirine benziyor. Bu sorunu çözmek için bir Anahtar Sıralayıcı yaptım.

RFID ile bir anahtara okutup kutuda bir yer vermesi gerekiyor. Aynı anahtarı tekrar tararsam, daha önce atanan yeri gösterecektir. Ayrıca son yıkanan arabayı göstermek için bir düğme vardır.

Bu, Flask aracılığıyla bir web sayfası ekleme seçeneğine de sahip olan bir Raspberry Pi üzerinde çalışacaktır.

Sayfada tüm tuşlara bakabilmeli, bir tuşa bir isim ekleyebilmeli ve bir anahtarı kaldırabilmeliyim.

Adım 1: Adım 1: Neye İhtiyacım Olacak?

Adım 1: Neye İhtiyacım Olacak?
Adım 1: Neye İhtiyacım Olacak?
Adım 1: Neye İhtiyacım Olacak?
Adım 1: Neye İhtiyacım Olacak?

Bu şeyin çalışması için ihtiyaç duyacağım bileşenlerin bir listesini yaparak başladım.

Bileşenler:

  • ahududu pi
  • 2 x Kaydırma kaydı (74hc595)
  • 3 x düğme
  • 9 x yeşil led
  • RFID tarayıcı (MFRC522)
  • 12 x direnç 220 ohm

Sonra tüm bunları fritzing şematiğime koydum.

Bunu bir kez yaptıktan sonra gerçek hayatta yaptım.

Adım 2: Adım 2: Bir Veritabanı Şeması Oluşturma

Adım 2: Veritabanı Şeması Oluşturma
Adım 2: Veritabanı Şeması Oluşturma

Tüm verilerimi kaydetmek için Pi'mde çalışabilecek bir veritabanı oluşturmam gerekiyordu.

Mysql'de yaptım.

Masa arabası:

  • araba kimliği
  • Kullanıcı kimliği
  • Marka (araba markası)
  • Tip
  • Son yıkanmış
  • Anahtar
  • RFID_ID

Adım 3: Adım 3: Kodlama

Adım 3: Kodlama
Adım 3: Kodlama

Bütün bunlar hazır olduğunda kodlamaya başlayabilirdim.

Sensörümün kodunu Python 3.5'te yaparak başladım.

Kodu indirmek için buraya tıklayın.

Projeyi klonlamak için bağlantıyı kullanın.

Adım 4: Adım 4: Kodu Raspberry Pi'me Koymak

Paketleri yükleme

İlk önce bu işi yapmak için ihtiyacım olan tüm paketleri kurdum.

me@my-rpi:~ $ sudo uygun güncelleme

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

Sanal çevre

me@my-rpi:~ $ python3 -m pip kurulumu --upgrade pip kurulum araçları tekerlek virtualenvme@my-rpi:~ $ mkdir proje1 && cd proje1 me@my-rpi:~/project1 $ python3 -m venv --system- site paketleri env me@my-rpi:~/project1 $ source env/bin/activate (env)me@my-rpi:~/project1 $ python -m pip kurulumu mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-bağlayıcı-python passlib

pycharm kullanarak projeyi Pi'nize yükleyin

Pycharm'ı açın ve VCS> Sürüm Kontrolünden İçe Aktar> Github'a gidin ve github dosyamı klonlayın.

Dağıtım yapılandırmasını az önce yaptığınız dizine yerleştirin. (/ev/ben/proje1). Uygula'ya basın!

Tercüman ayarlarına gidin ve az önce yaptığınız sanal ortamı seçin. (/home/me/project1/env/bin/pyhon)

Yol eşlemenin doğru olup olmadığını kontrol edin.

Artık kodu Pycharm kullanarak dizininize yükleyebilirsiniz.

Veri tabanı

Veritabanının çalışıp çalışmadığını kontrol edin. Bunun gibi bir şey almalısınız:

me@my-rpi:~ $ sudo systemctl durumu mysql● mariadb.service - MariaDB veritabanı sunucusu Yüklendi: yüklendi (/lib/systemd/system/mariadb.service; etkin; satıcı ön ayarı: etkin) Aktif: Sun'dan beri aktif (çalışıyor) 2018-06-03 09:41:18 CEST; 1 gün 4 saat önce Ana PID: 781 (mysqld) Durum: "SQL istekleriniz şimdi alınıyor…" Görevler: 28 (sınır: 4915) CGroup: /system.slice/mariadb.service └─781 /usr/sbin/mysqld

Haziran 03 09:41:13 my-rpi systemd[1]: MariaDB veritabanı sunucusu başlatılıyor… Haz 03 09:41:15 my-rpi mysqld[781]: 2018-06-03 9:41:15 4144859136 [Not] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) Haziran 03 09:41:18 my-rpi systemd[1]: MariaDB veritabanı sunucusunu başlattı.

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

Kullanıcı oluşturma ve veritabanını ekleme

ben@my-rpi:~ $ sudo mariadb

veritabanına girdikten sonra bunu yapın.

'adminpassword' İLE TANIMLANAN 'project1-admin'@'localhost' KULLANICI OLUŞTUR; 'web şifresi' İLE TANIMLANAN 'project1-web'@'localhost' KULLANICI OLUŞTUR; CREATE USER 'project1-sensor'@'localhost' 'sensorpassword' TARAFINDAN TANIMLANIR;

CREATE DATABASE projesi1;

Proje1.* ÜZERİNDEKİ TÜM AYRICALIKLARI GRANT OPTION İLE 'project1-admin'@'localhost'a VERİN; Proje1 ÜZERİNDE SEÇİM, EKLE, GÜNCELLEME, SİLME VERİN.* 'proje1-web'@'localhost' için; Proje1 ÜZERİNDE SEÇİM, EKLE, GÜNCELLEME, SİLME VERİN.* 'proje1-sensor'@'localhost' için; FLUSH AYRICALIKLARI;

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) NOT NULL AUTO_INCREMENT, `idUser` int(11) NOT NULL, `Marka` varchar(45) VARSAYILAN NULL, `Type` varchar(45) VARSAYILAN NULL, `Son Yıkanan` tarihsaat VARSAYILAN NULL, 'RFID_Number' varchar(15) VARSAYILAN NULL, 'Anahtar' varchar(5) VARSAYILAN NULL, PRIMARY ANAHTAR ('idCar', 'idUser'), ANAHTAR 'fk_Car_User1_idx' ('idUser'), CONSTRAINT_Userk YABANCI ANAHTAR (`idUser`) REFERANSLAR `kullanıcı` (`idUser`) DELETE AÇIK GÜNCELLEMEDE İŞLEM YOK EYLEM YOK) MOTOR=InnoDB AUTO_INCREMENT=4 VARSAYILAN CHARSET=utf8

Veritabanınızı Pycharm'a bağlayın

Sağ taraftaki veritabanı sekmesine tıklayın. Açık sekmeniz yoksa şunu yapın: Görünüm > Araç Pencereleri > Veritabanı.

Bağlantı ekle'yi tıklayın. Veri Kaynağı > MySQL'i seçin (Bir düğme indirme sürücüsü varsa ona basın.)

SSH/SSL'ye gidin ve SSH'yi kontrol edin. Raspberry pi kimlik bilgilerinizi (ana bilgisayar/kullanıcı/şifre) doldurun. Port 22 olmalı ve şifreyi hatırlamayı kontrol etmeyi unutmayınız.

General'e geri dön. Host localhost olmalı ve veritabanı proje1 olmalıdır. Project1-admin'den kimlik bilgilerini doldurun ve bağlantıyı test edin.

Bağlantı tamamsa, Şemalar sekmesine gidin ve proje1'in işaretli olduğundan emin olun.

Veritabanının doğru olup olmadığını kontrol edin

me@my-rpi:~ $ echo 'tabloları göster;' | mysql proje1 -t -u proje1-admin -pŞifre girin: +--------------------------+ | Tables_in_project1 | +------------------------------------------ | sensör | | kullanıcılar | +------------------------------------------

Yapılandırma Dosyaları

conf dizininde 4 dosya bulacaksınız. Kullanıcı adlarını kullanıcı adınızla değiştirmelisiniz.

sistem

Her şeyi başlatmak için bu komutları uygulamalısınız.

me@my-rpi:~/project1 $ sudo cp conf/project1-*.service /etc/systemd/system/

me@my-rpi:~/project1 $ sudo systemctl arka plan programı-yeniden yükle me@my-rpi:~/project1 $ sudo systemctl projeyi başlat1-* me@my-rpi:~/project1 $ sudo sistemctl durum projesi1-* ● proje1- flask.service - proje1 web arayüzüne hizmet etmek için uWSGI örneği Yüklendi: yüklendi (/etc/systemd/system/project1-flask.service; devre dışı; satıcı ön ayarı: etkin) Aktif: aktif (çalışıyor) 2018-06-04 13'ten beri: 14:56 CEST; 1s önce Ana PID: 6618 (uwsgi) Görevler: 6 (sınır: 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 Haz 13:14:56 my-rpi uwsgi[6618]: 5 çekirdek için 383928 bayt (374 KB) eşlendi 04 Haz 13:14:56 my-rpi uwsgi[6618]: *** Operasyonel MOD: ön çatallama ***

● project1-sensor.service - Proje 1 sensör hizmeti Yüklendi: yüklendi (/etc/systemd/system/project1-sensor.service; devre dışı; satıcı ön ayarı: etkin) Aktif: 2018-06-04 Pzt 13'ten beri aktif (çalışıyor): 16:49 CEST; 5s önce Ana PID: 6826 (python) Görevler: 1 (sınır: 4915) CGroup: /system.slice/project1-sensor.service └─6826 /home/me/project1/env/bin/python /home/me/project1 /sensor/sensor.py

Haziran 04 13:16:49 my-rpi systemd[1]: Project 1 sensör hizmetini başlattı. 04 Haz 13:16:49 my-rpi python[6826]: DEBUG:_main_:Kaydedilen sensör process_count=b'217\n' veritabanına 04 Haz 13:16:55 my-rpi python[6826]: DEBUG:_main_: Sensör process_count=b'218\n' veritabanına kaydedildi

nginx

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

/etc/nginx/sites-available: toplam 4 -rw-r--r-- 1 kök kök 2416 12 Temmuz 2017 varsayılan

/etc/nginx/sites-etkin: toplam 0 lrwxrwxrwx 1 kök kök 34 18 Ocak 13:25 varsayılan -> /etc/nginx/sites-available/default

Her şeyi varsayılan yapmak için bu komutları yürütün.

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'i yeniden başlat

Otomatik başlatma

Her şeyin otomatik olarak başladığından emin olalım.

conf dizinine gidin ve bu son komutları uygulayın ve işiniz bitti!

me@my-rpi:~/project1 $ sudo systemctl projeyi etkinleştir1-*

Pi'nizi yeniden başlatırsanız, otomatik olarak başlamalıdır.

Adım 5: Adım 5: Bir Konut Yapımı

Adım 5: Bir Konut Yapmak
Adım 5: Bir Konut Yapmak
Adım 5: Bir Konut Yapmak
Adım 5: Bir Konut Yapmak
Adım 5: Bir Konut Yapmak
Adım 5: Bir Konut Yapmak
Adım 5: Bir Konut Yapmak
Adım 5: Bir Konut Yapmak

geri dönüşüm

Evimi yapmak için annemin çöpe attığı eski bir dolap kullandım.

temel

4 tahta (34 cm x 26 cm) gördüm. (yani 34 x 34 x 26'dan bir küp).

Dipte alt olarak ince bir tahta parçası ekledim.

Led'li tahta

Ortada, her iki tarafına da üstten 9 cm olacak şekilde 2 küçük tahta parçası koydum. Bu, led'lerin oturacağı tahtayı tutar.

Ledli pano küçük bir panodur (32 cm x 32 cm).

Ledlerin çıkması için 9 delik açtım.

Bölüm

Bölmeyi alt kısmı ile aynı malzeme ile panoyu ledli yaptım.

Her biri 10,3 cm (9 cm x 31 cm) kesi ile 4 parça. Şimdi onları bir araya getirebiliyorum.

Düğmeler ve RFID okuyucu

Tabanda RFID okuyucumu ve düğmeleri yerleştirmek için bir delik açtım. RFID için daha temiz görünmesi için önüne ince bir tahta parçası koydum.

Adım 6: Adım 6: Her Şeyi Muhafazaya Yerleştirme

Bu, nasıl yapmak istediğinize bağlıdır. Raspberry Pi'mi yeniden kullanabilmek istediğim için şahsen lehimlemeden çok fazla kablo kullandım.

Ledleri yerine yapıştırdım ve kasaya RFID okuyucu ve devre tahtalarını bantladım.

Ve işte böyle bir Anahtar Sıralayıcı yaparsınız!

Önerilen: