İçindekiler:
- Gereçler
- Adım 1: Rasperry Pi'nin Hazırlanması
- 2. Adım: Visual Studio Code ve MySQL Workbench'i Ayarlama
- Adım 3: Fritzing Diyagramı
- Adım 4: Github'da Kodlama
- Adım 5: Normalleştirilmiş Veritabanı Yapısı
- Adım 6: Kart Distribütörü İçin Vaka
- 7. Adım: Hizmet Olarak Programlayın
Video: Otomatik Kart Dağıtıcı: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bir kart oyunu oynamayı sevdiğim için ilk projem olarak bir akıllı kart dağıtıcısı seçtim. En sevmediğim şey kart dağıtmak. Her oyun için her kişinin kaç kart aldığını hatırlamanız gerekir. Çok fazla kart oyunu bildiğinizde bu kafa karıştırıcı olur. Projem aynı zamanda yaşlılar ve Parkinson hastası insanlar gibi kart dağıtmakta sorun yaşayan insanlara da yardımcı olacak.
Gereçler
- 1 Raspberry Pi (Ben Raspberry Pi 4 kullandım)
- SD kart (16 GB önerilir)
- Raspberry Pi için 1 adet ekmek parçası (T-parçası)
- 2 ekmek tahtası
- Breadboard, 5V ve 3V3 için 1 Güç kaynağı modülü
- 1 LCD ekran
- 1 Potansiyometre
- 1 MPU6050 (ivmeölçer ve jiroskop)
- 1 NPN transistör
- 1 PCF8574N G/Ç genişletici
- 1 step motor
- Step motoru kontrol etmek için 1 ULN2003 devre kartı
- 1 HC-SR04 ultrasonik sensör
- 1 5V DC motor
- 1 diyot
- 6 470 Ohm dirençler
- 4 10K Ohm direnç
- Her şeyi bağlamak için elektrik teli
Yaparken sahip olmak yararlıdır:
- Havya
- Lehim
- Dremel veya dekupaj testeresi (ahşap ve abs plastik kesmek için bir şey)
Yazılım:
- Macun
- MySQL tezgahı
- Win32 Disk Görüntüleyici
- Kod düzenleyici (Visual Studio Code'u öneririm)
- WinSCP
- Ahududu resmi
Adım 1: Rasperry Pi'nin Hazırlanması
Başka bir şey yapmadan önce Raspberry Pi'yi hazırlamamız gerekiyor. Çünkü her şey Pi'den geçeceği için bu, kart dağıtıcısının en önemli parçalarından biridir.
Kurulum:
Raspbian görüntüsünü https://www.raspberrypi.org/downloads/raspberry-pi-os/ adresinden indirin.
- ZIP dosyasını indirin
- ZIP dosyasını kolayca bulabileceğiniz bir yere çıkarın
- Win32 Disk Imager'ı açın ve çıkarılan görüntüyü seçin
- Açılır menüden SD kartı seçin ve yaz'a tıklayın
- Yazma işlemi tamamlandıktan sonra Win32 Disk Imager'ı kapatabilirsiniz.
Şimdi Pi'ye bağlanmadan önce birkaç şey daha yapmamız gerekiyor.
- SD karttaki önyükleme klasörüne gidin
- cmdline.txt dosyasını açın
- Bir boşlukla ayrılmış satırın sonuna 'ip=169.254.10.1' ekleyin
- Dosyayı kaydedin ve çıkın
- Aynı dizinde ssh adında bir dosya oluşturun ve uzantıyı kaldırın (bu, Pi'ye bağlanabilmemiz için ilk açılışta ssh'yi etkinleştirir)
- SD kartı güvenle çıkarın ve Pi'ye yerleştirin
Şimdi Pi'ye bağlanabiliriz:
- Bir ethernet kablosu alın ve bir ucunu Pi'ye ve diğer ucunu bilgisayarınıza takın
- Açık Macun
- Ana bilgisayar adı alanına 169.254.10.1 girin
- SSH'nin seçili olduğundan ve bağlantı noktasının 22 olduğundan emin olun
- Aç'ı tıklayın
- Bir uyarı alırsanız, devam edebilir ve görmezden gelebilirsiniz.
- Kullanıcı adı pi ve şifre ahududu
Yazılımın konfigürasyonu ve kurulumu:
Aşağıdaki komutla raspi-config'i açın:
sudo raspi yapılandırması
5. seçeneği seçin: Arabirim seçenekleri
SPI ve I2C'yi etkinleştirin
3. seçenekte aşağıdakileri devre dışı bırakın: Önyükleme seçenekleri:
- Başlangıç ekranı
- Başlangıç için cli'yi seçin, masaüstü için değil
Wi-Fi kurulumu:
Wifi, web sitesine kolayca gitmek için kullanışlıdır. Wifi kimlik bilgilerinizin kapalı olduğundan emin olun.
Wifi kurmak için birkaç şeye ihtiyacımız var:
Bu komutu kullanarak wifi'nizi ekleyin ve SSID ve ŞİFRE'yi bilgilerinize değiştirin:
sudo wpa_passphrase "SSID" "ŞİFRE" >> /etc/wpa_supplicant/wpa_supplicant.conf
Wifi'nizi yeniden yapılandırmak için bu komutu yürütün:
sudo wpa_cli
Doğru arayüzü seçin:
arayüz wlan0
Arayüzü yeniden yapılandırın:
yeniden yapılandırmak
Bu komutla yeniden yapılandırmanın başarılı olup olmadığını kontrol edin:
ip bir
Wlan0 arayüzünde bir IP adresi görürseniz, her şey ayarlanmıştır.
İşletim sistemi güncelleniyor
İşletim sistemini şu 2 komutla güncelleyin:
sudo uygun güncelleme
sudo apt tam yükseltme
MariaDB'yi kurma:
Apache Web sunucusunu yükleme:
sudo apt apache2'yi yükleyin -y
MariaDB sunucusunu yükleme:
sudo apt mariadb sunucusunu kurun -y
Şimdi yeniden başlatmamız gerekiyor:
sudo yeniden başlatma
MariaDB kurulumunu güvenli hale getirmeniz önerilir. Bu komutu çalıştırarak yapabilirsiniz:
sudo mysql_secure_installation
İlk önce mevcut kök şifreniz istenecek, ancak varsayılan kurulumda bir şifre yok, bu yüzden enter tuşuna basın.
Ardından, bir kök parola belirlemek isteyip istemediğiniz sorulacak, y yazın. Şifreyi hatırlayabildiğinizden emin olun!
- Anonim kullanıcıları kaldırmak için y girin
- Kök girişini uzaktan devre dışı bırakmak için y girin
- Test veritabanlarını kaldırmak ve ona erişmek için y girin
- Ayrıcalıkları yeniden yüklemek için y girin
MariaDB kurulumunuz güvenli olmalı!
Artık yeni bir kullanıcı oluşturabiliriz:
Bu komutla mysql kabuğunu girin:
sudo mysql
Aşağıdaki komutları mysql kullanıcı adı ve parola (your_password) ile bir kullanıcı oluşturun:
'your_password' ile tanımlanan mysql@localhost kullanıcısını oluşturun;
*.* üzerindeki tüm ayrıcalıkları mysql@localhost'a verin;
FLUSH AYRICALIKLARI;
Bu komutla mysql kabuğundan çıkın:
çıkış;
Python paketleri:
Lite sürümünü seçmediyseniz Python zaten kurulu olmalıdır:
sudo apt python3-pip'i kurun
Yeterli miktarda Python paketine ihtiyacımız var, hepsini aşağıdaki komutla kurabilirsiniz:
pip3 mysql-connector-python flask-socketio flask-cors gevent gevent-websocket yükleyin
Şimdi bir kez daha yeniden başlatmamız gerekiyor
sudo yeniden başlatma
2. Adım: Visual Studio Code ve MySQL Workbench'i Ayarlama
MySQL Workbench ile Pi'ye Bağlanma:
MySQL Workbench'i açın
Aşağıdaki bilgilerle Pi ile yeni bir bağlantı kurun:
- Bağlantı adı: Raspi
- Bağlantı Yöntemi: SSH üzerinden Standart TCP/IP
- SSH Ana Bilgisayar Adı: Pi'nin IP adresi
IP adresini şu komutla alabilirsiniz:
ip bir
- SSH Kullanıcı Adı: pi
- MySQL Ana Bilgisayar Adı: 127.0.0.1
- MySQL sunucusu Bağlantı Noktası: 3306
- kullanıcı adı: mysql
Tamam'a tıklayın ve pi kullanıcısının şifresini girin ve ardından mysql kullanıcısının şifresini girin.
Visual Studio Kodunu Ayarlama:
Visual Studio Kodunu Açın
Bu 2 uzantıyı yükleyin:
- Uzak - SSH
- Uzak - SSH: Yapılandırma Dosyalarını Düzenleme
Visual Studio Code F1'e basın ve ssh yazın
Uzak SSH'yi seçin: Yeni SSH ana bilgisayarı ekleyin
ssh pi@IP adresini girin
Bir sonraki adımda enter'a basın
Bağlantı şimdi Pi'ye yapılmıştır. F1'e basarak ve Uzak ana bilgisayara bağlan'ı seçerek Pi'ye bağlanabilirsiniz.
Visual Studio Code'un Pi'ye erişimi olması için parolayı girin.
Bir şey daha: Uzak makineye Python uzantısını yükleyin, böylece kodu kolayca çalıştırabilir ve hatalarını ayıklayabilirsiniz.
Adım 3: Fritzing Diyagramı
Bu adımda devreyi anlatacağım.
Yukarıdaki şemalar Fritzing ile yapılmıştır.
DC motoru:
GPIO 18'i bir npn transistöründeki orta pim olan toplayıcının tabanına bağlayın. Motorun toprağını transistörden toplayıcıya ve motorun gücünü 5V'a bağlayın. Transistörün toprağını toprak hattına bağlayın. Diyodu motorun üzerindeki bariyere bağlayın, böylece akımın doğrudan transistöre akmasını engeller.
step motor:
Step motoru kontrol panosuna bağlayın. Kontrol panosu üzerinde bir tarafta 5V ve toprak bağlantısı için pinler bulunmaktadır. Diğer pinler kontrol pinleridir. Bu pinler motorun içindeki mıknatısları kontrol ederek motorun dönmesini sağlar. Bu pinleri Raspberry Pi üzerindeki GPIO 12, 16, 20 ve 21'e bağlayın.
HC-SR04 Ultrasonik:
Bu sensör, sesi kullanarak yaklaşık 4,5 metreye kadar olan mesafeleri ölçebilir.
VCC pinini 5V'a, tetik pinini GPIO 25'e, eko pinini 470 Ohm dirençli GPIO 24'e ve topraklamayı 470 Ohm dirençli toprağa bağlayın.
MPU6050:
VCC pinini 3V3'e, toprağı toprağa, scl'yi Pi'deki scl'ye ve sda'yı Pi'deki sda'ya bağlayın. Bu sensörü kontrol etmek için I2C kullanıyorum. Bununla ilgili daha fazla bilgiyi buradan okuyabilirsiniz. İşte temel bir açıklama: Pi efendi ve MPU6050 köledir. Scl hattı aracılığıyla Pi, zamanlamaları kontrol eder ve sda hattı, master'dan slave'e veya slave'den master'a veri göndermek için kullanılır. Yalnızca master veri aktarımını başlatabilir.
Işığa bağlı direnç:
LDR'den doğru okumalar almak için bir MCP3008 çipi kullanıyorum. Bu, ldr'den gelen okumaların kararlı olmasını ve analogdan dijital sinyallere doğru dönüştürülmesini sağlar.
3V3'ü ldr'nin bir tarafına, aralarında 10K Ohm'luk bir dirençle bağlayın. Ldr ve direnç arasında MCP3008'in 0 kanalına bir kablo bağlayın. Ardından ldr'nin diğer tarafını toprağa bağlayın.
LCD ekran:
LCD ekranı PCF8574 olmadan kullanabilirsiniz ancak Pi üzerindeki GPIO pinleri sınırlı olduğu için bazı GPIO pinlerini kaydetmek için bir PCF8574 kullanıyorum. Kaydırmalı yazmaç da kullanabilirsiniz ama ben bir PCF8574'ü tercih ederim. PCF8574'ü SMbus protokolü ile kontrol edebilirsiniz ancak kontrol etmek için kendi sınıfımı yazdım. Potansiyometre kontrastı kontrol eder.
LCD ekran pimleri:
- toprağa VSS
- VDD'den 5V'a
- Potansiyometrenin değişken pinine V0
- RS'den GPIO 13'e
- R/W'den toprağa çünkü sadece ekrana yazıyorum ve okumuyorum
- E'den GPIO'ya 19
- PCF'nin DB0 ila P0
- DB1'den P1'e
- DB2'den P2'ye
- DB3'ten P3'e
- DB4'ten P4'e
- DB5'ten P5'e
- DB6'dan P6'ya
- DB7'den P7'ye
- LED+ ila 5V
- LED-toprağa
PCF8574 pimleri:
- A0'dan toprağa
- A1'den yere
- A2'den toprağa
- Yerden yere
- VCC'den 5V'a
- SDA'dan GPIO 27'ye dönüştürücü
- 330 Ohm dirençli SCL - GPIO 22
Ne tür bir ekrana sahip olduğunuza bağlı olarak LED+ ve LED-'iniz olmayabilir. LED+ ve LED- arka ışık içindir.
Potansiyometrenin pozitif tarafını 5V'a ve toprağı toprağa bağlayın.
Pull-up dirençleri kullandığınızdan emin olun!
Adım 4: Github'da Kodlama
Gerekli tüm kodları Github'ımda bulabilirsiniz.
Klasör projesi1:
Bu klasör, arka uç için tüm kodu içerir. Klasörde, donanımı kontrol etmek için tüm sınıflar bulunur.
Klasör havuzları 2 dosya içerir: Database.py ve DataRepository.py. Database.py, veritabanıyla bağlantıyı korur ve sorguları işler. DataRepository.py, site için gereken tüm sorguları içerir.
App.py, arka ucun ana dosyasıdır. Pi önyüklendiğinde bu dosya otomatik olarak başlar.
Config.py, veritabanına bağlanmak için birkaç ayar içerir. Bu dosyaları kendi bilgilerinizle doldurduğunuzdan emin olun.
Bu klasörü ana dizininizin herhangi bir yerine yerleştirebilirsiniz.
Klasör html:
Bu klasör, site, ön uç için tüm dosyaları içerir.
- Klasör, sitenin düzeni için dosyaları içerir.
- Yazı Tipleri sitede kullanılan yazı tiplerini içerir.
- Komut dosyası, siteyi dinamik hale getirmek için tüm Javascript dosyalarını içerir
Bu klasör /var/www/html klasöründe olmalıdır.
Bu komutla bir dosya veya klasörü kopyalayabilirsiniz:
sudo mv /path/to/current/directory /path/to/hedef/dizin
Tarayıcınızda site türüne gitmek için LCD ekranda görüntülenen IP adresi.
Adım 5: Normalleştirilmiş Veritabanı Yapısı
Bu adımda veritabanını import edeceğiz.
- MySQL Workbench ile Raspberry Pi'nize bağlanın
- Sunucu -> Veri İçe Aktar'a tıklayın
- Bağımsız Dosyayı İçe Aktar'ı seçin
- Github'dan Database-export klasöründe dump_project1.sql adında bir sql dosyası var.
- Bu dosyaya göz atın ve içe aktarmayı başlat'ı tıklayın
Bu kadar. Pi artık doğru bilgiye sahipse veritabanına erişebilir.
Adım 6: Kart Distribütörü İçin Vaka
Bu adımda kasa için ne kullandığımı ve her şeyi nasıl monte ettiğimi açıklayacağım.
Durum için 2 ABS kutusu kullandım:
- 265 x 185 x 95 mm
- 171 x 121 x 80 mm
Kutularda açtığım delikler
LCD ekran için bir delik, güç kabloları için 3 delik, step motordan, DC motordan ve ultrasonik sensörden gelen teller için bir delik.
En küçük kutuda, bileşenlerden gelen teller için bir delik ve kartların geçmesi için bir delik açtım. Cihaza oyun kartlarını yerleştirebilmeniz için en büyük deliği en üstte açtım.
DC motoru bir braket ve bir miktar çift taraflı bant ile monte ettim. Tekerleğin kart çekmesi için bir deliği olan kartları yerleştirmek için tahta bir tahta yaptım.
Hafif olduğu için ABS plastiği seçtim, böylece step motor kolayca dönebilir. Ahşap gerçekten ağır olabilir ve step motorun bununla ilgili sorunları olabilir. Delikleri kesmek için metal için tasarlanmış matkap uçlu bir matkap ve bir Dremel kullandım. Daha büyük delikleri kesmek çok daha fazla iş gerektiriyordu ve bir dekupaj testeresi daha iyi olurdu.
7. Adım: Hizmet Olarak Programlayın
Kodun Pi başlatıldıktan sonra başlaması gerçekten yararlıdır. Bunun için bir hizmet yapacağız.
Aşağıdaki komutla smartcard.service adlı yeni bir dosya oluşturun:
sudo nano /etc/systemd/system/smartcard.service
Bunun dosyaya girmesi gerekiyor:
[Birim]
Description=Akıllı kart arka ucu After=network.target [Service] ExecStart=/usr/bin/python3 -u app.py WorkingDirectory=/home/pi/project1 StandardOutput=StandardError'ı devral=Restart'ı devral=her zaman User=pi [Yükle] WantedBy =çok kullanıcılı.hedef WorkingDirectory, programın bulunduğu klasörün yoludur.
Artık kendi Akıllı Kartınız var!
Önerilen:
Otomatik İlaç Dağıtıcı: 5 Adım
Otomatik İlaç Dağıtıcı: Bu proje, yaşlı hastaların ilaçlarını porsiyonlara ayırıp dağıtmak için güvenilir bir yola sahip olması gereken tıp alanında kullanım içindir. Bu cihaz, ilaçların 9 gün öncesine kadar porsiyonlara bölünmesine ve istenilen zamanda otomatik olarak verilmesine olanak tanır
Otomatik Hap Dağıtıcı Nasıl Yapılır: 6 Adım
Otomatik Hap Dağıtıcı Nasıl Yapılır: Bu benim Otomatik Hap Dağıtıcım. Bunu okulumda bir proje için yaptım. Bunu yapmamın nedeni, erkek arkadaşımın büyükannesinin çok fazla hap almasıydı ve o sırada hangisini alması gerektiğini bilmesi onun için çok zordu
Otomatik Hap Dağıtıcı: 10 Adım (Resimlerle)
Otomatik Hap Dağıtıcı: Brüksel Mühendislik Fakültesi'nde (kısaca "Bruface") Elektro-mekanik mühendisliğinin ilk Yüksek Lisans öğrencileriyiz. Bu, Brüksel'in merkezinde bulunan iki üniversitenin bir girişimidir: Université Libre de Bruxelles (UL
Otomatik Hap Dağıtıcı: Arjan West Projesi: 7 Adım (Resimlerle)
Otomatik Hap Dağıtıcı: Arjan West Projesi: Merhaba, bu talimatta, kullanıcının ne zaman hap alması gerektiğini ve hangi hapı alması gerektiğini bilmesini sağlayan bir hap kutusu yapmanıza yardımcı olacağım. Bu vaka, kişiyi hap alma zamanı geldiğinde uyaran bir piezzobuzzer ve 12 led ile gelecek
Otomatik Kart Karıştırıcı: 6 Adım (Resimlerle)
Otomatik Kart Karıştırıcı: Merhaba! Bu talimat, Güney Florida Üniversitesi'ndeki Makecourse proje gereksinimini yerine getirmek için oluşturulmuştur. (www.makecourse.com) Bu talimatta size otomatik kart karıştırma oluşturma sürecinde rehberlik edeceğim