Isi kandungan:

Pengedar Kad Automatik: 7 Langkah
Pengedar Kad Automatik: 7 Langkah

Video: Pengedar Kad Automatik: 7 Langkah

Video: Pengedar Kad Automatik: 7 Langkah
Video: 【MULTI SUB】Anti-routine system EP1-88 2024, November
Anonim
Pengedar Kad Automatik
Pengedar Kad Automatik

Saya telah memilih pengedar kad pintar sebagai projek pertama saya kerana saya suka bermain kad permainan. Perkara yang paling saya tidak gemari adalah kad berniaga. Anda harus ingat untuk setiap permainan berapa banyak kad yang diperoleh setiap orang. Itu membingungkan apabila anda mengetahui banyak permainan kad. Projek saya juga akan membantu orang yang menghadapi masalah dengan mengedarkan kad seperti orang tua dan orang yang menderita Parkinson.

Bekalan

  • 1 Raspberry Pi (Saya menggunakan Raspberry Pi 4)
  • Kad SD (disyorkan 16GB)
  • 1 bahagian Outbread untuk Raspberry Pi (T-piece)
  • 2 papan roti
  • 1 Modul bekalan kuasa untuk papan roti, 5V dan 3V3
  • 1 paparan LCD
  • 1 Potensiometer
  • 1 MPU6050 (pecutan dan giroskop)
  • 1 transistor NPN
  • 1 pengembang I / O PCF8574N
  • 1 motor stepper
  • 1 papan pelarian ULN2003 untuk mengawal motor stepper
  • 1 sensor ultrasonik HC-SR04
  • 1 motor DC 5V
  • 1 diod
  • 6 470 perintang Ohm
  • 4 perintang Ohm 10K
  • Kawat elektrik untuk menghubungkan semuanya

Berguna untuk dimiliki semasa membuat:

  • Besi pematerian
  • Pateri
  • Dremel atau jig saw (sesuatu untuk memotong kayu dan plastik abs)

Perisian:

  • Dempul
  • Meja kerja MySQL
  • Win32 Disk Imager
  • Editor kod (saya cadangkan Visual Studio Code)
  • WinSCP
  • Gambar raspbian

Langkah 1: Menyiapkan Rasperry Pi

Mula-mula kita perlu menyediakan Raspberry Pi sebelum melakukan perkara lain. Kerana semuanya akan berjalan pada Pi jadi ini adalah salah satu bahagian pengedar kad yang paling penting.

Pemasangan:

Muat turun gambar Raspbian dari

  1. Muat turun fail ZIP
  2. Ekstrak fail ZIP di mana anda boleh mencarinya dengan mudah
  3. Buka Win32 Disk Imager dan pilih gambar yang diekstrak
  4. Pilih kad SD di menu lungsur dan klik tulis
  5. Setelah proses menulis selesai anda boleh menutup Win32 Disk Imager

Sekarang kita perlu melakukan beberapa perkara lagi sebelum kita dapat menyambung ke Pi

  1. Navigasi ke folder but pada kad SD
  2. Buka fail cmdline.txt
  3. Tambahkan 'ip = 169.254.10.1' di hujung garisan yang dipisahkan dengan spasi
  4. Simpan dan keluar fail
  5. Buat di direktori yang sama file yang disebut ssh dan hapus ekstensi (ini akan membolehkan ssh pada boot pertama sehingga kita dapat menyambung ke Pi)
  6. Keluarkan kad SD dengan selamat dan masukkan ke dalam Pi

Sekarang kita boleh menyambung ke Pi:

  1. Ambil kabel ethernet dan masukkan satu hujung pada Pi dan hujung yang lain di komputer anda
  2. Buka Putty
  3. Masukkan 169.254.10.1 di medan Nama hos
  4. Pastikan SSH dipilih dan port 22
  5. Klik terbuka
  6. Sekiranya anda mendapat amaran, anda boleh teruskan dan mengabaikannya
  7. Nama pengguna adalah pi dan kata laluan adalah raspberry

Konfigurasi dan pemasangan perisian:

Buka raspi-config dengan arahan berikut:

sudo raspi-config

Pilih pilihan ke-5: Pilihan antara muka

Dayakan SPI dan I2C

Lumpuhkan perkara berikut dalam pilihan ke-3: Pilihan but:

  • Skrin percikan
  • Pilih cli untuk permulaan dan bukan desktop

Penyediaan WiFi:

Wifi berguna untuk menavigasi ke laman web dengan mudah. Pastikan kelayakan wifi anda hampir habis.

Untuk menyediakan wifi, kami memerlukan beberapa perkara:

Tambahkan wifi anda dengan menggunakan perintah ini dan ubah SSID dan PASSWORD ke maklumat anda:

sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf

Jalankan perintah ini untuk mengkonfigurasi ulang wifi anda:

sudo wpa_cli

Pilih antara muka yang betul:

antara muka wlan0

Susun semula antara muka:

susun semula

Periksa sama ada konfigurasi semula berjaya dengan arahan ini:

ip a

Sekiranya anda melihat alamat IP pada antara muka wlan0 maka semuanya sudah disiapkan.

Mengemas kini sistem operasi

Kemas kini sistem operasi dengan 2 arahan berikut:

sudo apt kemas kini

sudo apt peningkatan penuh

Menyiapkan MariaDB:

Memasang Server Web Apache:

sudo apt install apache2 -y

Memasang pelayan MariaDB:

sudo apt pasang mariadb-server -y

Sekarang kita perlu but semula:

rebo sudo

Sebaiknya selamatkan pemasangan MariaDB. Anda boleh melakukannya dengan menjalankan perintah ini:

sudo mysql_secure_installation

Mula-mula anda akan diminta untuk kata laluan root semasa tetapi pemasangan lalai tidak mempunyainya jadi tekan enter.

Seterusnya anda akan ditanya sama ada anda ingin menetapkan kata laluan root, ketik y. Pastikan anda dapat mengingat kata laluan!

  • Masukkan y untuk membuang pengguna tanpa nama
  • Masukkan y untuk mematikan log masuk root dari jauh
  • Masukkan y untuk membuang pangkalan data ujian dan akses ke dalamnya
  • Masukkan y untuk memuat semula hak istimewa

Pemasangan MariaDB anda harus selamat!

Sekarang kita boleh membuat pengguna baru:

Masukkan shell mysql dengan arahan ini:

sudo mysql

Buat pengguna dengan nama pengguna mysql dan kata laluan (kata laluan_anda) arahan berikut:

buat pengguna mysql @ localhost yang dikenal pasti dengan 'your_password';

berikan semua hak istimewa pada *. * kepada mysql @ localhost;

KEISTIMEWAAN FLUSH;

Keluar dari shell mysql dengan arahan ini:

jalan keluar;

Pakej Python:

Python harus dipasang kecuali anda memilih versi Lite:

sudo apt pasang python3-pip

Kami memerlukan banyak pakej Python, anda boleh memasangnya dengan arahan berikut:

pip3 pasang mysql-connector-python flask-socketio flask-cors gevent gevent-websocket

Sekarang kita perlu reboot sekali lagi

rebo sudo

Langkah 2: Menyiapkan Kod Visual Studio dan MySQL Workbench

Menyambung ke Pi dengan MySQL Workbench:

Buka MySQL Workbench

Buat sambungan baru ke Pi dengan maklumat berikut:

  • Nama sambungan: Raspi
  • Kaedah Sambungan: TCP / IP standard melalui SSH
  • Nama Hos SSH: Alamat IP Pi

Anda boleh mendapatkan alamat IP dengan arahan ini:

ip a

  • Nama Pengguna SSH: pi
  • Nama Hos MySQL: 127.0.0.1
  • Port pelayan MySQL: 3306
  • Nama pengguna: mysql

Klik ok dan masukkan kata laluan untuk pengguna pi dan kemudian masukkan kata laluan untuk pengguna mysql.

Menyiapkan Kod Visual Studio:

Buka Kod Visual Studio

Pasang 2 sambungan ini:

  • Jauh - SSH
  • Jauh - SSH: Mengedit Fail Konfigurasi

Tekan dalam Visual Studio Code F1 dan ketik ssh

Pilih SSH Jauh: Tambahkan hos SSH baru

Isi ssh pi @ alamat IP

Pada langkah seterusnya tekan enter

Sambungan kini dibuat ke Pi. Anda boleh menyambung ke Pi dengan menekan F1 dan memilih menyambung ke Host jauh.

Masukkan kata laluan supaya Visual Studio Code dapat mengakses Pi.

Satu perkara lagi: Pasang sambungan Python pada mesin jauh supaya anda dapat menjalankan dan nyahpepijat kod dengan mudah.

Langkah 3: Diagram Fritzing

Rajah Fritzing
Rajah Fritzing
Rajah Fritzing
Rajah Fritzing
Rajah Fritzing
Rajah Fritzing

Dalam langkah ini saya akan menerangkan litar.

Skema di atas dibuat dengan Fritzing.

Motor DC:

Sambungkan GPIO 18 ke dasar pemungut, pin tengah pada transistor npn. Sambungkan arde motor ke pemungut dari transistor dan kuasa motor ke 5V. Sambungkan tanah transistor ke garis tanah. Sambungkan diod di penghalang di atas motor sehingga menyekat arus tidak mengalir terus ke transistor.

Motor stepper:

Sambungkan motor stepper ke papan kawalan. Pada papan kawalan terdapat satu pin sisi untuk menyambung 5V dan tanah. Pin yang lain adalah pin kawalan. Pin ini mengawal magnet di dalam motor sehingga boleh berpusing. Sambungkan pin ini ke GPIO 12, 16, 20 dan 21 di Raspberry Pi.

HC-SR04 Ultrasonik:

Sensor ini dapat mengukur jarak sekitar 4.5 meter menggunakan suara.

Sambungkan pin VCC ke 5V, pin pemicu ke GPIO 25, pin gema dengan perintang 470 Ohm ke GPIO 24 dan tanah dengan perintang 470 Ohm ke tanah.

MPU6050:

Sambungkan pin VCC ke 3V3, tanah ke tanah, scl ke scl pada Pi dan sda ke sda pada Pi. Untuk sensor ini saya menggunakan I2C untuk mengawalnya. Anda boleh membaca lebih lanjut mengenainya di sini. Berikut adalah penjelasan asas: Pi adalah tuan dan MPU6050 adalah hamba. Melalui garis scl, Pi mengawal pemasaan dan garis sda digunakan untuk menghantar data dari tuan kepada hamba atau dari hamba ke tuan. Hanya tuan yang boleh memulakan pemindahan data.

Perintang bergantung cahaya:

Untuk mendapatkan bacaan yang betul dari LDR saya menggunakan cip MCP3008. Ini memastikan bahawa bacaan dari ldr stabil dan betul ditukar dari isyarat analog ke digital.

Sambungkan 3V3 ke satu sisi ldr dengan perintang 10K Ohm di antaranya. Di antara ldr dan perintang sambungkan wayar ke saluran 0 MCP3008. Kemudian sambungkan bahagian ldr yang lain ke tanah.

Paparan LCD:

Anda boleh menggunakan paparan LCD tanpa PCF8574 tetapi kerana pin GPIO pada Pi terhad, saya menggunakan PCF8574 untuk menyimpan beberapa pin GPIO. Anda juga boleh menggunakan shift shift tetapi saya lebih suka PCF8574. Anda boleh mengawal PCF8574 dengan protokol SMbus tetapi saya menulis kelas saya sendiri untuk mengawalnya. Potensiometer mengawal kontras.

Pin paparan LCD:

  • VSS ke tanah
  • VDD hingga 5V
  • V0 ke pin pemboleh ubah potensiometer
  • RS ke GPIO 13
  • R / W ke tanah kerana saya hanya menulis ke paparan dan tidak membaca
  • E ke GPIO 19
  • DB0 hingga P0 PCF
  • DB1 hingga P1
  • DB2 hingga P2
  • DB3 hingga P3
  • DB4 hingga P4
  • DB5 hingga P5
  • DB6 hingga P6
  • DB7 hingga P7
  • LED + hingga 5V
  • LED- ke tanah

PCF8574 pin:

  • A0 ke tanah
  • A1 ke tanah
  • A2 ke tanah
  • Tanah ke tanah
  • VCC hingga 5V
  • SDA ke GPIO 27
  • SCL ke GPIO 22 dengan perintang 330 Ohm

Anda mungkin tidak mempunyai LED + dan LED- bergantung pada jenis paparan yang anda dapat. LED + dan LED- adalah untuk lampu latar.

Sambungkan sisi positif potensiometer ke 5V dan tanah ke tanah.

Pastikan anda menggunakan perintang Pull-up!

Langkah 4: Kod Github

Anda boleh mendapatkan semua kod yang diperlukan di Github saya.

Projek folder1:

Folder ini mengandungi semua kod untuk backend. Dalam folder Klasses adalah semua kelas untuk mengawal perkakasan.

Repositori folder mengandungi 2 fail: Database.py dan DataRepository.py. Database.py mengekalkan sambungan ke pangkalan data dan menangani pertanyaan. DataRepository.py mengandungi semua pertanyaan yang diperlukan untuk laman web ini.

App.py adalah fail utama backend. Fail ini bermula secara automatik semasa Pi boot.

Config.py mengandungi beberapa tetapan untuk menyambung ke pangkalan data. Pastikan anda mengisi fail ini dengan maklumat anda sendiri.

Anda boleh meletakkan folder ini di mana sahaja di direktori rumah anda.

Folder html:

Folder ini mengandungi semua fail untuk laman web, frontend.

  • Folder mengandungi fail untuk susun atur laman web.
  • Font mengandungi fon yang digunakan di laman web ini.
  • Skrip mengandungi semua fail Javascript untuk menjadikan laman web ini dinamik

Folder ini mesti ada di folder / var / www / html

Anda boleh menyalin fail atau folder dengan arahan ini:

sudo mv / path / to / current / direktori / path / to / destination / direktori

Untuk menavigasi ke jenis laman dalam penyemak imbas anda, alamat IP yang dipaparkan pada paparan LCD.

Langkah 5: Struktur Pangkalan Data yang dinormalisasi

Struktur Pangkalan Data Normalisasi
Struktur Pangkalan Data Normalisasi

Pada langkah ini kita akan mengimport pangkalan data.

  1. Sambungkan ke Raspberry Pi anda dengan MySQL Workbench
  2. Klik pada Pelayan -> Import Data
  3. Pilih Import Fail Sendiri
  4. Dalam folder Pangkalan data-eksport dari Github terdapat fail sql yang disebut dump_project1.sql
  5. Semak imbas fail ini dan klik mula import

Itu sahaja. Pi kini boleh mengakses pangkalan data jika mempunyai maklumat yang betul.

Langkah 6: Kes untuk Pengedar Kad

Kes untuk Pengedar Kad
Kes untuk Pengedar Kad
Kes untuk Pengedar Kad
Kes untuk Pengedar Kad
Kes untuk Pengedar Kad
Kes untuk Pengedar Kad

Dalam langkah ini saya akan menerangkan apa yang saya gunakan untuk kes itu dan bagaimana saya memasang semuanya.

Untuk kes itu saya menggunakan 2 kotak ABS:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Lubang yang saya buat di dalam kotak

Lubang untuk paparan LCD, 3 lubang untuk kabel kuasa, satu lubang untuk kabel dari motor stepper, motor DC dan sensor ultrasonik.

Dalam kotak terkecil saya membuat lubang untuk wayar dari komponen dan lubang untuk dilalui kad. Di bahagian atas saya membuat lubang terbesar sehingga anda dapat meletakkan kad permainan di dalam peranti.

Saya memasang motor DC dengan pendakap dan pita dua sisi. Saya membuat papan kayu untuk meletakkan kad dengan lubang roda untuk menembak kad.

Saya telah memilih plastik ABS kerana ringan sehingga motor stepper dapat membalikkannya dengan mudah. Kayu boleh menjadi sangat berat dan motor stepper mungkin menghadapi masalah dengan ini. Untuk memotong lubang saya menggunakan gerudi dengan bit yang direka untuk logam dan Dremel. Memotong lubang yang lebih besar memerlukan lebih banyak kerja dan gergaji jig akan lebih baik.

Langkah 7: Program Sebagai Perkhidmatan

Kod ini sangat berguna untuk memulakan kod setelah Pi di boot. Untuk itu kami akan membuat perkhidmatan.

Buat fail baru yang dipanggil smartcard.service dengan arahan berikut:

sudo nano /etc/systemd/system/smartcard.service

Ini mesti masuk ke dalam fail:

[Unit]

Penerangan = Backend kad pintar Selepas = network.target [Service] ExecStart = / usr / bin / python3 -u app.py WorkingDirectory = / home / pi / project1 StandardOutput = mewarisi StandardError = mewarisi Restart = selalu Pengguna = pi [Pasang] WantedBy = multi-user.target WorkingDirectory adalah jalan ke folder di mana program berada

Kini anda mendapat Kad Pintar anda sendiri!

Disyorkan: