Talaan ng mga Nilalaman:

Awtomatikong Pamamahagi ng Card: 7 Mga Hakbang
Awtomatikong Pamamahagi ng Card: 7 Mga Hakbang

Video: Awtomatikong Pamamahagi ng Card: 7 Mga Hakbang

Video: Awtomatikong Pamamahagi ng Card: 7 Mga Hakbang
Video: MP EPP 5 Q4 W7 Mabilis na Pagkuwenta; i-Spreadsheet Mo Na 2024, Nobyembre
Anonim
Awtomatikong Pamamahagi ng Card
Awtomatikong Pamamahagi ng Card

Pinili ko ang isang distributor ng smart card bilang aking unang proyekto dahil gusto kong maglaro ng isang cardgame. Ang bagay na pinaka ayaw ko ay ang pagharap sa mga kard. Kailangan mong tandaan para sa bawat laro kung gaano karaming mga kard ang nakukuha ng bawat tao. Nakakalito iyon kapag alam mo ang maraming mga laro sa card. Tutulungan din ng aking proyekto ang mga taong nagkakaproblema sa pamamahagi ng mga kard tulad ng mga matatandang tao at mga taong nagdurusa kay Parkinson.

Mga gamit

  • 1 Raspberry Pi (Gumamit ako ng isang Raspberry Pi 4)
  • SD card (inirerekumenda ng 16GB)
  • 1 Outbread na piraso para sa Raspberry Pi (T-piece)
  • 2 mga breadboard
  • 1 Power module ng supply para sa breadboard, 5V at 3V3
  • 1 LCD display
  • 1 Potensyomiter
  • 1 MPU6050 (accelerometer at gyroscope)
  • 1 mga transistor ng NPN
  • 1 PCF8574N I / O expander
  • 1 stepper motor
  • 1 ULN2003 breakout board upang makontrol ang stepper motor
  • 1 HC-SR04 ultrasonic sensor
  • 1 5V DC motors
  • 1 diode
  • 6 470 Ohm resistors
  • 4 10K Ohm resistors
  • Electric wire upang ikonekta ang lahat

Kapaki-pakinabang na mayroon habang gumagawa:

  • Panghinang
  • Panghinang
  • Dremel o jig saw (isang bagay upang pumutol ng kahoy at abs plastic)

Software:

  • Putty
  • MySQL workbench
  • Win32 Disk Imager
  • Code editor (Inirerekumenda ko ang Visual Studio Code)
  • WinSCP
  • Larawan ng raspbian

Hakbang 1: Paghahanda ng Rasperry Pi

Una kailangan naming ihanda ang Raspberry Pi bago gumawa ng iba pa. Dahil ang lahat ay tatakbo sa Pi kaya't ito ang isa sa pinakamahalagang piraso ng namamahagi ng card.

Pag-install:

I-download ang Raspbian na imahe mula sa

  1. I-download ang ZIP-file
  2. I-extract ang ZIP-file kung saan madali mo itong mahahanap
  3. Buksan ang Win32 Disk Imager at piliin ang nakuha na imahe
  4. Piliin ang SD card sa dropdown menu at i-click ang isulat
  5. Kapag tapos na ang proseso ng pagsulat maaari mong isara ang Win32 Disk Imager

Ngayon kailangan naming gumawa ng ilang mga bagay bago kami makakonekta sa Pi

  1. Mag-navigate sa folder ng boot sa SD card
  2. Buksan ang file cmdline.txt
  3. Idagdag ang 'ip = 169.254.10.1' sa dulo ng linya na pinaghiwalay ng isang puwang
  4. I-save at lumabas sa file
  5. Lumikha sa parehong direktoryo ng isang file na tinatawag na ssh at alisin ang extension (papayagan nito ang ssh sa unang boot upang makakonekta kami sa Pi)
  6. Ligtas na palabasin ang SD card at ilagay ito sa Pi

Ngayon ay maaari kaming kumonekta sa Pi:

  1. Grab isang ethernet cable at ipasok ang isang dulo sa Pi at ang kabilang dulo sa iyong computer
  2. Buksan ang Putty
  3. Ipasok ang 169.254.10.1 sa patlang ng Pangalan ng host
  4. Tiyaking napili ang SSH at ang port ay 22
  5. I-click ang bukas
  6. Kung nakakuha ka ng isang babala maaari mo lamang itong ipagpatuloy at huwag pansinin ito
  7. Ang username ay pi at ang password ay raspberry

Pag-configure at pag-install ng software:

Buksan ang raspi-config gamit ang sumusunod na utos:

sudo raspi-config

Piliin ang ika-5 na pagpipilian: Mga pagpipilian sa interfacing

Paganahin ang SPI at I2C

Huwag paganahin ang mga sumusunod na bagay sa ika-3 na pagpipilian: Mga pagpipilian sa boot:

  • Splash screen
  • Pumili ng kliyente para sa pagsisimula at hindi sa desktop

Pag-setup ng wifi:

Ang Wi-Fi ay kapaki-pakinabang upang madaling mag-navigate sa website. Tiyaking malapit na ang iyong mga kredensyal sa wifi.

Upang mag-setup ng wifi kailangan namin ng ilang bagay:

Idagdag ang iyong wifi sa pamamagitan ng paggamit ng utos na ito at baguhin ang SSID at PASSWORD sa iyong impormasyon:

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

Isagawa ang utos na ito upang muling isaayos ang iyong wifi:

sudo wpa_cli

Piliin ang tamang interface:

interface wlan0

I-configure muli ang interface:

muling pag-configure

Suriin kung ang muling pag-configure ay matagumpay sa utos na ito:

ip a

Kung nakakita ka ng isang IP-address sa wlan0 interface pagkatapos ang lahat ay naka-set up.

Ina-update ang operating system

I-update ang operating system gamit ang 2 utos na ito:

sudo apt update

sudo apt full-upgrade

Pag-set up ng MariaDB:

Pag-install ng Apache Webserver:

sudo apt i-install ang apache2 -y

lnstalling MariaDB server:

sudo apt i-install ang mariadb-server -y

Ngayon kailangan naming mag-reboot:

sudo reboot

Inirerekumenda na i-secure ang pag-install ng MariaDB. Maaari mo itong gawin sa pamamagitan ng pagpapatakbo ng utos na ito:

sudo mysql_secure_installation

Hihilingin ka muna para sa kasalukuyang root password ngunit ang default na pag-install ay walang isa kaya pindutin ang enter.

Susunod tatanungin ka kung nais mong magtakda ng isang root password, i-type ang y. Tiyaking maaalala mo ang password!

  • Ipasok ang y upang alisin ang mga hindi nagpapakilalang gumagamit
  • Ipasok ang y upang huwag paganahin ang pag-login sa root nang malayuan
  • Ipasok ang y upang alisin ang mga database ng pagsubok at mag-access dito
  • Ipasok ang y upang i-reload ang mga privelege

Ang iyong pag-install ng MariaDB ay dapat na ligtas!

Maaari na kaming lumikha ng isang bagong gumagamit:

Ipasok ang shell ng MySQL gamit ang utos na ito:

sudo MySQL

Lumikha ng isang gumagamit gamit ang username MySQL at isang password (iyong_password) ang mga sumusunod na utos:

lumikha ng user MySQL @ localhost na kinilala ng 'your_password';

bigyan ang lahat ng mga privelege sa *. * sa MySQL @ localhost;

FLUSH PRIVILEGES;

Lumabas sa shell ng MySQL gamit ang utos na ito:

exit;

Mga pakete ng sawa:

Ang Python ay dapat na mai-install maliban kung pinili mo ang bersyon ng Lite:

sudo apt i-install ang python3-pip

Kailangan namin ng maraming halaga ng mga pakete ng Python, maaari mong mai-install ang lahat ng ito sa sumusunod na utos:

pip3 i-install ang mysql-konektor-python flask-socketio flask-cors gevent gevent-websocket

Ngayon kailangan naming muling mag-reboot muli

sudo reboot

Hakbang 2: Pag-set up ng Visual Studio Code at MySQL Workbench

Pagkonekta sa Pi gamit ang MySQL Workbench:

Buksan ang MySQL Workbench

Gumawa ng isang bagong koneksyon sa Pi na may sumusunod na impormasyon:

  • Pangalan ng koneksyon: Raspi
  • Paraan ng Koneksyon: Karaniwan TCP / IP sa SSH
  • SSH Hostname: IP-address ng Pi

Maaari mong makuha ang IP-address gamit ang utos na ito:

ip a

  • SSH Username: pi
  • MySQL Hostname: 127.0.0.1
  • MySQL server Port: 3306
  • Username: MySQL

Mag-click sa ok at ipasok ang password para sa pi ng gumagamit at pagkatapos ay ipasok ang password para sa MySQL user.

Pagse-set up ng Visual Studio Code:

Buksan ang Visual Studio Code

I-install ang 2 extension na ito:

  • Remote - SSH
  • Remote - SSH: Pag-edit ng Mga File sa Pag-configure

Pindutin ang Visual Studio Code F1 at i-type sa ssh

Piliin ang Remote SSH: Magdagdag ng bagong host ng SSH

Punan ang ssh pi @ IP-address

Sa susunod na hakbang pindutin ang enter

Ang koneksyon ay ginawa ngayon sa Pi. Maaari kang kumonekta sa Pi sa pamamagitan ng pagpindot sa F1 at pagpili ng kumonekta sa Remote host.

Ipasok ang password upang ang Visual Studio Code ay may access sa Pi.

Isa pa: I-install ang extension ng Python sa remote machine upang madali mong patakbuhin at i-debug code.

Hakbang 3: Fritzing Diagram

Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
Fritzing Diagram

Sa hakbang na ito ipapaliwanag ko ang circuit.

Ang mga eskematiko sa itaas ay ginawa kasama si Fritzing.

DC motor:

Ikonekta ang GPIO 18 sa base ng kolektor, ang gitnang pin sa isang transn sa npn. Ikonekta ang lupa ng motor sa kolektor mula sa transistor at ang lakas ng motor sa 5V. Ikonekta ang lupa ng transistor sa linya ng lupa. Ikonekta ang diode sa hadlang sa motor kaya't hinaharangan nito ang currunt na direktang dumaloy sa transistor.

Stepper motor:

Ikonekta ang stepper motor sa control board. Sa control board mayroong sa isang gilid na mga pin upang ikonekta ang 5V at lupa. Ang iba pang mga pin ay control pin. Kinokontrol ng mga pin na ito ang mga magnet sa loob ng motor upang maaari itong lumiko. Ikonekta ang mga pin na ito sa GPIO 12, 16, 20 at 21 sa Raspberry Pi.

HC-SR04 Ultrasonic:

Maaaring sukatin ng sensor na ito ang mga distansya sa halos 4.5 metro gamit ang tunog.

Ikonekta ang VCC pin sa 5V, ang gatilyo ng pin sa GPIO 25, ang echo pin na may risistor na 470 Ohm sa GPIO 24 at ang lupa na may risistor na 470 Ohm sa lupa.

MPU6050:

Ikonekta ang VCC pin sa 3V3, ang lupa sa lupa, scl sa scl sa Pi at ang sda sa sda sa Pi. Para sa sensor na ito ginagamit ko ang I2C upang makontrol ito. Maaari mong basahin ang higit pa tungkol dito. Narito ang isang pangunahing paliwanag: Ang Pi ay ang panginoon at ang MPU6050 ay ang alipin. Sa pamamagitan ng linya ng scl kinokontrol ng Pi ang mga oras at ang linya ng sda ay ginagamit upang magpadala ng data mula sa panginoon sa alipin o mula sa alipin hanggang sa panginoon. Ang master lamang ang maaaring magpasimula ng paglipat ng data.

Ang ilaw ay nakasalalay sa risistor:

Upang makakuha ng wastong pagbabasa mula sa LDR Gumagamit ako ng isang MCP3008 chip. Tinitiyak nito na ang mga pagbasa mula sa ldr ay matatag at wastong nai-convert mula sa analog sa mga digital signal.

Ikonekta ang 3V3 sa isang bahagi ng ldr na may risistor na 10K Ohm sa pagitan nito. Sa pagitan ng ldr at ng risistor kumonekta sa isang kawad sa channel 0 ng MCP3008. Pagkatapos ay ikonekta ang kabilang panig ng ldr sa lupa.

LCD display:

Maaari mong gamitin ang LCD display nang walang PCF8574 ngunit dahil ang mga GPIO pin sa Pi ay limitado Gumagamit ako ng isang PCF8574 upang makatipid ng ilang mga GPIO pin. Maaari mo ring gamitin ang isang rehistro ng shift ngunit mas gusto ko ang isang PCF8574. Maaari mong kontrolin ang PCF8574 sa SMbus protocol ngunit nagsulat ako ng aking sariling klase upang makontrol ito. Kinokontrol ng potentiometer ang kaibahan.

Mga pin na display ng LCD:

  • VSS sa lupa
  • VDD hanggang 5V
  • V0 sa variable pin ng potentiometer
  • RS sa GPIO 13
  • R / W sa lupa dahil sa display lamang ang sinusulat ko at hindi nabasa
  • E hanggang GPIO 19
  • DB0 hanggang P0 ng PCF
  • DB1 hanggang P1
  • DB2 hanggang P2
  • DB3 hanggang P3
  • DB4 hanggang P4
  • DB5 hanggang P5
  • DB6 hanggang P6
  • DB7 hanggang P7
  • LED + hanggang 5V
  • LED- sa lupa

PCF8574 pin:

  • A0 sa lupa
  • A1 sa lupa
  • A2 sa lupa
  • Bumaba sa lupa
  • VCC hanggang 5V
  • SDA hanggang GPIO 27
  • Ang SCL sa GPIO 22 na may resistor na 330 Ohm

Maaaring wala kang LED + at LED- depende sa kung anong uri ng pagpapakita ang nakuha mo. Ang LED + at LED- ay para sa backlight.

Ikonekta ang positibong bahagi ng potensyomiter sa 5V at ang lupa sa lupa.

Tiyaking gumagamit ka ng Mga pull-up resistor!

Hakbang 4: Code sa Github

Mahahanap mo ang lahat ng kinakailangang code sa aking Github.

Proyekto ng folder1:

Naglalaman ang folder na ito ng lahat ng code para sa backend. Sa folder na Klass ay ang lahat ng mga klase upang makontrol ang hardware.

Naglalaman ang mga folder ng repository ng 2 mga file: Database.py at DataRepository.py. Pinapanatili ng Database.py ang koneksyon sa database at humahawak ng mga query. Naglalaman ang DataRepository.py ng lahat ng mga query na kinakailangan para sa site.

Ang App.py ay ang pangunahing file ng backend. Awtomatikong magsisimula ang file na ito kapag nag-boot ang Pi.

Naglalaman ang Config.py ng ilang mga setting upang kumonekta sa database. Tiyaking pinunan mo ang mga file na ito ng iyong sariling impormasyon.

Maaari mong ilagay ang folder na ito saanman sa iyong direktoryo sa bahay.

Html ng folder:

Naglalaman ang folder na ito ng lahat ng mga file para sa site, ang frontend.

  • Naglalaman ang folder ng mga file para sa layout ng site.
  • Naglalaman ang mga font ng mga font na ginamit sa site.
  • Naglalaman ang script ng lahat ng mga Javascript file upang gawing pabago-bago ang site

Ang folder na ito ay dapat na nasa folder / var / www / html

Maaari mong kopyahin ang isang file o folder gamit ang utos na ito:

sudo mv / path / to / kasalukuyang / direktoryo / path / sa / patutunguhan / direktoryo

Upang mag-navigate sa uri ng site sa iyong browser ang IP-address na ipinapakita sa LCD display.

Hakbang 5: Normalisadong Kayarian ng Database

Normalisadong Kayarian ng Database
Normalisadong Kayarian ng Database

Sa hakbang na ito i-import namin ang database.

  1. Kumonekta sa iyong Raspberry Pi sa MySQL Workbench
  2. Mag-click sa Server -> Pag-import ng Data
  3. Piliin ang I-import ang Sariling File
  4. Sa folder na Database-export mula sa Github mayroong isang sql file na tinatawag na dump_project1.sql
  5. Mag-browse sa file na ito at i-click ang simulang pag-import

Ayan yun. Maaari nang ma-access ng Pi ang database kung mayroon itong tamang impormasyon.

Hakbang 6: Kaso para sa Distributor ng Card

Kaso para sa Distributor ng Card
Kaso para sa Distributor ng Card
Kaso para sa Distributor ng Card
Kaso para sa Distributor ng Card
Kaso para sa Distributor ng Card
Kaso para sa Distributor ng Card

Sa hakbang na ito ipapaliwanag ko kung ano ang ginamit ko para sa kaso at kung paano ko na-mount ang lahat.

Para sa kaso gumamit ako ng 2 mga kahon sa ABS:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Ang mga butas na ginawa ko sa mga kahon

Isang butas para sa display ng LCD, 3 butas para sa mga kable ng kuryente, isa para sa mga wire mula sa stepper motor, DC motor at ultrasonic sensor.

Sa pinakamaliit na kahon gumawa ako ng isang butas para sa mga wire mula sa mga bahagi at isang butas para dumaan ang mga kard. Sa tuktok ginawa ko ang pinakamalaking butas upang mailagay mo ang mga play card sa aparato.

Inilagay ko ang DC motor na may isang bracket at ilang dobleng panig na tape. Gumawa ako ng isang board na kahoy upang ipatong ang mga kard na may butas para sa gulong na kunan ng kard.

Pinili ko para sa ABS plastic dahil magaan ito kaya madali itong mapapalitan ng stepper motor. Ang kahoy ay maaaring maging mabigat at ang stepper motor ay maaaring magkaroon ng mga problema dito. Upang maputol ang mga butas ay gumamit ako ng isang drill na may mga drillbits na idinisenyo para sa metal at isang Dremel. Ang pagputol ng mas malaking mga butas ay tumagal ng mas maraming trabaho at ang isang jig saw ay magiging mas mahusay.

Hakbang 7: Programa Bilang Isang Serbisyo

Kapaki-pakinabang talaga na magkaroon ng pagsisimula ng code pagkatapos na ma-boot ang Pi. Para doon gagawa kami ng serbisyo.

Lumikha ng isang bagong file na tinatawag na smartcard.service na may sumusunod na utos:

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

Kailangan itong pumunta sa file:

[Yunit]

Paglalarawan = Smart card backend Pagkatapos = network.target [Serbisyo] ExecStart = / usr / bin / python3 -u app.py WorkingDirectory = / home / pi / project1 StandardOutput = inherit StandardError = inherit Restart = laging User = pi [Install] WantedBy = multi-user.target Ang WorkingDirectory ay ang landas sa folder kung saan matatagpuan ang programa

Nakuha mo na ang iyong sariling Smart Card!

Inirerekumendang: