İçindekiler:

Otomatik Kart Dağıtıcı: 7 Adım
Otomatik Kart Dağıtıcı: 7 Adım

Video: Otomatik Kart Dağıtıcı: 7 Adım

Video: Otomatik Kart Dağıtıcı: 7 Adım
Video: Şerit Takip Sistemi Kaza Anı 🚘 Lane Tracking System Accident ⚡️🆘⚠️⛔️ 2024, Kasım
Anonim
Otomatik Kart Dağıtıcı
Otomatik Kart Dağıtıcı

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.

  1. ZIP dosyasını indirin
  2. ZIP dosyasını kolayca bulabileceğiniz bir yere çıkarın
  3. Win32 Disk Imager'ı açın ve çıkarılan görüntüyü seçin
  4. Açılır menüden SD kartı seçin ve yaz'a tıklayın
  5. Yazma işlemi tamamlandıktan sonra Win32 Disk Imager'ı kapatabilirsiniz.

Şimdi Pi'ye bağlanmadan önce birkaç şey daha yapmamız gerekiyor.

  1. SD karttaki önyükleme klasörüne gidin
  2. cmdline.txt dosyasını açın
  3. Bir boşlukla ayrılmış satırın sonuna 'ip=169.254.10.1' ekleyin
  4. Dosyayı kaydedin ve çıkın
  5. 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)
  6. SD kartı güvenle çıkarın ve Pi'ye yerleştirin

Şimdi Pi'ye bağlanabiliriz:

  1. Bir ethernet kablosu alın ve bir ucunu Pi'ye ve diğer ucunu bilgisayarınıza takın
  2. Açık Macun
  3. Ana bilgisayar adı alanına 169.254.10.1 girin
  4. SSH'nin seçili olduğundan ve bağlantı noktasının 22 olduğundan emin olun
  5. Aç'ı tıklayın
  6. Bir uyarı alırsanız, devam edebilir ve görmezden gelebilirsiniz.
  7. 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ı

Fritzing Diyagramı
Fritzing Diyagramı
Fritzing Diyagramı
Fritzing Diyagramı
Fritzing Diyagramı
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ı

Normalleştirilmiş Veritabanı Yapısı
Normalleştirilmiş Veritabanı Yapısı

Bu adımda veritabanını import edeceğiz.

  1. MySQL Workbench ile Raspberry Pi'nize bağlanın
  2. Sunucu -> Veri İçe Aktar'a tıklayın
  3. Bağımsız Dosyayı İçe Aktar'ı seçin
  4. Github'dan Database-export klasöründe dump_project1.sql adında bir sql dosyası var.
  5. 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

Kart Distribütörü Davası
Kart Distribütörü Davası
Kart Distribütörü Davası
Kart Distribütörü Davası
Kart Distribütörü Davası
Kart Distribütörü Davası

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: