İçindekiler:
- Adım 1: Adım 1: Neye İhtiyacım Olacak?
- Adım 2: Adım 2: Bir Veritabanı Şeması Oluşturma
- Adım 3: Adım 3: Kodlama
- Adım 4: Adım 4: Kodu Raspberry Pi'me Koymak
- Adım 5: Adım 5: Bir Konut Yapımı
- Adım 6: Adım 6: Her Şeyi Muhafazaya Yerleştirme
Video: Anahtar Sıralayıcı: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Ş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?
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
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
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ı
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:
Paralel Sıralayıcı Synth: 17 Adım (Resimlerle)
Parallel Sequencer Synth: Bu, basit bir sıralayıcı oluşturmak için bir kılavuzdur. Sıralayıcı, daha sonra bir osilatörü çalıştıran bir dizi adımı döngüsel olarak üreten bir cihazdır. Her adıma farklı bir ton atanabilir ve böylece ilginç sekanslar veya ses efektleri oluşturulabilir.
Basit Sıralayıcı: 16 Adım (Resimlerle)
Basit Sıralayıcı: İyi müzik yapmanın anahtarlarından biri akılsız tekrardır. Basit sıralayıcının harika olduğu şey budur. Aynı şeyi sekiz notalı bir dizide tekrar tekrar yapıyor. Notun sıklığını, notun süresini ve
Bira Sıralayıcı: 7 Adım
Beer Sequencer: Cos'èIl Beer Sequencer è un sıralayıcı bir sedici adım attivabili tramite dei pesi. Her zaman ve her yerde kullanılabilir. La vara
DOKUNMATİK ANAHTAR - Transistör ve Breadboard Kullanarak Dokunmatik Anahtar Nasıl Yapılır: 4 Adım
DOKUNMATİK ANAHTAR | Transistör ve Breadboard Kullanarak Dokunmatik Anahtar Nasıl Yapılır.: Dokunmatik anahtar, transistör uygulamasına dayanan çok basit bir projedir. Bu projede dokunmatik anahtar görevi gören BC547 transistör kullanılmaktadır. PROJE HAKKINDA TAM AYRINTILI VİDEOYU İZLEDİĞİNİZDEN EMİN OLUNUZ
4 Adım Dijital Sıralayıcı: 19 Adım (Resimlerle)
4 Adım Dijital Sıralayıcı: CPE 133, Cal Poly San Luis ObispoProje Yaratıcıları: Jayson Johnston ve Bjorn NelsonGünümüzün müzik endüstrisinde, en yaygın olarak kullanılan “enstrümanlardan” biri; dijital sentezleyicidir. Hip-hop'tan pop'a ve eve kadar her tür müzik