Cuprins:
- Provizii
- Pasul 1: Pregătirea Rasperry Pi
- Pasul 2: Configurarea Visual Studio Code și MySQL Workbench
- Pasul 3: Diagrama Fritzing
- Pasul 4: Cod pe Github
- Pasul 5: Structura normalizată a bazei de date
- Pasul 6: Carcasă pentru distribuitorul de carduri
- Pasul 7: Programează ca serviciu
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
Am ales un distribuitor de carduri inteligente ca prim proiect pentru că îmi place să joc un joc de cărți. Lucrul care nu-mi place cel mai mult este împărțirea cărților. Trebuie să vă amintiți pentru fiecare joc câte cărți primește fiecare persoană. Acest lucru devine confuz atunci când cunoașteți multe jocuri de cărți. Proiectul meu va ajuta, de asemenea, persoanele care au probleme cu distribuirea cardurilor, cum ar fi persoanele în vârstă și persoanele care suferă de Parkinson.
Provizii
- 1 Raspberry Pi (am folosit un Raspberry Pi 4)
- Card SD (se recomandă 16 GB)
- 1 bucată de pâine pentru Raspberry Pi (piesă T)
- 2 panouri
- 1 Modul de alimentare pentru panou, 5V și 3V3
- 1 ecran LCD
- 1 Potențiometru
- 1 MPU6050 (accelerometru și giroscop)
- 1 tranzistoare NPN
- 1 expansor I / O PCF8574N
- 1 motor pas cu pas
- 1 placă de rupere ULN2003 pentru controlul motorului pas cu pas
- 1 senzor cu ultrasunete HC-SR04
- 1 motoare 5V DC
- 1 diode
- 6 470 Ohm rezistențe
- 4 rezistențe de 10K Ohm
- Sârmă electrică pentru a conecta totul
Util pentru a avea în timp ce realizați:
- Ciocan de lipit
- Solder
- Dremel sau ferăstrău (ceva pentru a tăia lemnul și plasticul din abs)
Software:
- Chit
- Bancul de lucru MySQL
- Win32 Disk Imager
- Editor de cod (recomand codul Visual Studio)
- WinSCP
- Imagine Raspbian
Pasul 1: Pregătirea Rasperry Pi
Mai întâi trebuie să pregătim Raspberry Pi înainte de a face orice altceva. Deoarece totul va funcționa cu Pi, aceasta este una dintre cele mai importante piese ale distribuitorului de carduri.
Instalare:
Descărcați imaginea Raspbian de pe
- Descărcați fișierul ZIP
- Extrageți fișierul ZIP unde îl puteți găsi cu ușurință
- Deschideți Win32 Disk Imager și selectați imaginea extrasă
- Selectați cardul SD din meniul derulant și faceți clic pe Scrieți
- Odată ce procesul de scriere este finalizat, puteți închide Win32 Disk Imager
Acum trebuie să mai facem câteva lucruri înainte să ne putem conecta la Pi
- Navigați la folderul de încărcare de pe cardul SD
- Deschideți fișierul cmdline.txt
- Adăugați „ip = 169.254.10.1” la capătul liniei separat cu un spațiu
- Salvați și ieșiți din fișier
- Creați în același director un fișier numit ssh și eliminați extensia (aceasta va activa ssh la prima încărcare, astfel încât să ne putem conecta la Pi)
- Scoateți în siguranță cardul SD și puneți-l în Pi
Acum ne putem conecta la Pi:
- Luați un cablu Ethernet și introduceți un capăt în Pi și celălalt capăt în computer
- Deschide Putty
- Introduceți 169.254.10.1 în câmpul Nume gazdă
- Asigurați-vă că SSH este selectat și portul este 22
- Faceți clic pe Deschidere
- Dacă primiți un avertisment, îl puteți continua și ignora
- Numele de utilizator este pi, iar parola este zmeură
Configurarea și instalarea software-ului:
Deschideți raspi-config cu următoarea comandă:
sudo raspi-config
Selectați a 5-a opțiune: Opțiuni de interfață
Activați SPI și I2C
Dezactivați următoarele lucruri în cea de-a treia opțiune: Opțiuni de încărcare:
- Ecran splash
- Alegeți cli pentru pornire și nu pentru desktop
Configurare Wifi:
Wifi este util pentru a naviga cu ușurință la site-ul web. Asigurați-vă că aveți acreditările dvs. wifi aproape.
Pentru a configura wifi avem nevoie de câteva lucruri:
Adăugați Wi-Fi utilizând această comandă și schimbați SSID și PAROLĂ la informațiile dvs.:
sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf
Executați această comandă pentru a vă reconfigura wifi-ul:
sudo wpa_cli
Selectați interfața corectă:
interfață wlan0
Reconfigurați interfața:
reconfigura
Verificați dacă reconfigurarea a reușit cu această comandă:
ip a
Dacă vedeți o adresă IP pe interfața wlan0, atunci totul este configurat.
Actualizarea sistemului de operare
Actualizați sistemul de operare cu aceste 2 comenzi:
actualizare sudo apt
sudo apt full-upgrade
Configurarea MariaDB:
Instalarea Apache Webserver:
sudo apt instalează apache2 -y
Instalarea serverului MariaDB:
sudo apt instalează mariadb-server -y
Acum trebuie să repornim:
sudo reboot
Se recomandă securizarea instalării MariaDB. Puteți face acest lucru executând această comandă:
sudo mysql_secure_installation
Mai întâi vi se va cere parola curentă de root, dar instalarea implicită nu o are, așa că apăsați Enter.
Apoi veți fi întrebat dacă doriți să setați o parolă root, tastați y. Asigurați-vă că vă puteți aminti parola!
- Introduceți y pentru a elimina utilizatorii anonimi
- Introduceți y pentru a dezactiva conectarea root la distanță
- Introduceți y pentru a elimina bazele de date de testare și accesați-le
- Introduceți y pentru a reîncărca privilegii
Instalarea dvs. MariaDB ar trebui să fie sigură!
Acum putem crea un nou utilizator:
Introduceți shell-ul mysql cu această comandă:
sudo mysql
Creați un utilizator cu numele de utilizator mysql și o parolă (parola_ dvs.) următoarele comenzi:
creați utilizatorul mysql @ localhost identificat prin „parola_vostru”;
acordă toate privilegiile pe *. * către mysql @ localhost;
PRIVILEGII DE FLUSH;
Ieșiți din shell-ul mysql cu această comandă:
Ieșire;
Pachete Python:
Python ar trebui să fie deja instalat dacă nu alegeți versiunea Lite:
sudo apt instalează python3-pip
Avem nevoie de o cantitate bună de pachete Python, le puteți instala pe toate cu următoarea comandă:
pip3 instala mysql-connector-python flask-socketio flask-cors gevent gevent-websocket
Acum trebuie să repornim încă o dată
sudo reboot
Pasul 2: Configurarea Visual Studio Code și MySQL Workbench
Conectarea la Pi cu MySQL Workbench:
Deschideți MySQL Workbench
Faceți o nouă conexiune la Pi cu următoarele informații:
- Numele conexiunii: Raspi
- Metoda de conectare: TCP / IP standard pe SSH
- SSH Hostname: adresa IP a Pi
Puteți obține adresa IP cu această comandă:
ip a
- Nume utilizator SSH: pi
- Numele gazdei MySQL: 127.0.0.1
- Port server MySQL: 3306
- Nume utilizator: mysql
Faceți clic pe ok și introduceți parola pentru utilizatorul pi, apoi introduceți parola pentru utilizatorul mysql.
Configurarea codului Visual Studio:
Deschideți codul Visual Studio
Instalați aceste 2 extensii:
- Telecomandă - SSH
- Remote - SSH: Editarea fișierelor de configurare
Apăsați în Visual Studio Code F1 și tastați ssh
Alegeți Remote SSH: Adăugați o nouă gazdă SSH
Completați ssh pi @ adresa IP
În pasul următor apăsați Enter
Conexiunea se face acum cu Pi. Vă puteți conecta la Pi apăsând F1 și selectând conectare la gazdă la distanță.
Introduceți parola, astfel încât Visual Studio Code să aibă acces la Pi.
Încă un lucru: instalați extensia Python pe mașina de la distanță, astfel încât să puteți rula cu ușurință și să depanați codul.
Pasul 3: Diagrama Fritzing
În acest pas voi explica circuitul.
Schemele de mai sus sunt realizate cu Fritzing.
Motor DC:
Conectați GPIO 18 la baza colectorului, pinul central al unui tranzistor npn. Conectați pământul motorului la colectorul de la tranzistor și puterea motorului la 5V. Conectați pământul tranzistorului la linia de pământ. Conectați bariera diodei peste motor astfel încât să blocheze curentul să curgă direct la tranzistor.
Motor pas cu pas:
Conectați motorul pas cu pas la placa de control. Pe placa de control există pinii dintr-o parte pentru a conecta 5V și masă. Ceilalți pini sunt pini de control. Acești pini controlează magneții din interiorul motorului, astfel încât acesta să se poată roti. Conectați acești pini la GPIO 12, 16, 20 și 21 de pe Raspberry Pi.
HC-SR04 cu ultrasunete:
Acest senzor poate măsura distanțe la aproximativ 4,5 metri folosind sunetul.
Conectați pinul VCC la 5V, pinul de declanșare la GPIO 25, pinul de ecou cu o rezistență de 470 Ohm la GPIO 24 și solul cu un rezistor de 470 Ohm la sol.
MPU6050:
Conectați pinul VCC la 3V3, solul la sol, scl la scl de pe Pi și sda la sda de pe Pi. Pentru acest senzor folosesc I2C pentru a-l controla. Puteți citi mai multe despre asta aici. Iată o explicație de bază: Pi este stăpânul și MPU6050 este sclavul. Prin linia scl, Pi controlează temporizările, iar linia sda este utilizată pentru a trimite date de la comandant la sclav sau de la sclav către comandant. Numai comandantul poate iniția transferul de date.
Rezistorul depinde de lumină:
Pentru a obține citiri corecte de la LDR, folosesc un cip MCP3008. Acest lucru asigură faptul că citirile din ldr sunt stabile și corecte convertite de la semnale analogice la digitale.
Conectați 3V3 la o parte a ldr-ului cu un rezistor de 10K Ohm între acesta. Între ldr și rezistor conectați un fir la canalul 0 al MCP3008. Apoi conectați cealaltă parte a ldr la sol.
Ecran LCD:
Puteți utiliza afișajul LCD fără un PCF8574, dar deoarece pinii GPIO de pe Pi sunt limitați, eu folosesc un PCF8574 pentru a salva niște pini GPIO. De asemenea, puteți utiliza un registru de schimbare, dar prefer un PCF8574. Puteți controla PCF8574 cu protocolul SMbus, dar am scris propria mea clasă pentru a o controla. Potențiometrul controlează contrastul.
Pinii afișajului LCD:
- VSS la sol
- VDD la 5V
- V0 la pinul variabil al potențiometrului
- RS către GPIO 13
- R / W la masă pentru că scriu doar pe afișaj și nu citesc
- E la GPIO 19
- DB0 la P0 al PCF
- DB1 la P1
- DB2 la P2
- DB3 la P3
- DB4 la P4
- DB5 la P5
- DB6 la P6
- DB7 la P7
- LED + la 5V
- LED- la masă
PCF8574 pini:
- A0 la sol
- A1 la sol
- A2 la sol
- Sol la sol
- VCC la 5V
- SDA la GPIO 27
- SCL la GPIO 22 cu rezistor de 330 Ohm
Este posibil să nu aveți LED + și LED- în funcție de tipul de afișaj pe care l-ați primit. LED + și LED- sunt pentru iluminarea din spate.
Conectați partea pozitivă a potențiometrului la 5V și solul la masă.
Asigurați-vă că utilizați rezistențe pull-up!
Pasul 4: Cod pe Github
Puteți găsi toate codurile necesare pe Github.
Dosar proiect1:
Acest folder conține tot codul pentru backend. În folderul Klasses sunt toate clasele de control al hardware-ului.
Depozitele de dosare conțin 2 fișiere: Database.py și DataRepository.py. Database.py menține conexiunea la baza de date și gestionează interogările. DataRepository.py conține toate interogările necesare pentru site.
App.py este fișierul principal al backend-ului. Acest fișier pornește automat la pornirea Pi.
Config.py conține câteva setări pentru conectarea la baza de date. Asigurați-vă că completați aceste fișiere cu propriile informații.
Puteți plasa acest folder oriunde în directorul dvs. de acasă.
Dosar html:
Acest folder conține toate fișierele pentru site, frontend.
- Dosarul conține fișierele pentru aspectul site-ului.
- Fonturi conține fonturile utilizate pe site.
- Scriptul conține toate fișierele Javascript pentru a face site-ul dinamic
Acest folder trebuie să fie în folderul / var / www / html
Puteți copia un fișier sau folder cu această comandă:
sudo mv / cale / către / curent / director / cale / către / destinație / director
Pentru a naviga la site, tastați în browser adresa IP afișată pe ecranul LCD.
Pasul 5: Structura normalizată a bazei de date
În acest pas vom importa baza de date.
- Conectați-vă la Raspberry Pi cu MySQL Workbench
- Faceți clic pe Server -> Import date
- Selectați Importați fișier autonom
- În folderul Database-export din Github există un fișier sql numit dump_project1.sql
- Navigați la acest fișier și faceți clic pe Start import
Asta e. Pi poate accesa acum baza de date dacă are informațiile corecte.
Pasul 6: Carcasă pentru distribuitorul de carduri
În acest pas voi explica ce am folosit pentru caz și cum am montat totul.
Pentru cazul în care am folosit 2 cutii ABS:
- 265 x 185 x 95 mm
- 171 x 121 x 80 mm
Găurile pe care le-am făcut în cutii
O gaură pentru afișajul LCD, 3 găuri pentru cablurile de alimentare, una pentru firele de la motorul pas cu pas, motorul DC și senzorul cu ultrasunete.
În cea mai mică cutie am făcut o gaură pentru firele din componente și o gaură pentru trecerea cărților. În partea de sus am făcut cea mai mare gaură, astfel încât să puteți așeza cărți de joc în dispozitiv.
Am montat motorul de curent continuu cu un suport și o bandă dublă. Am făcut o scândură de lemn pe care să așez cărțile cu o gaură pentru ca roata să tragă o carte.
Am ales pentru plasticul ABS, deoarece este ușor, astfel încât motorul pas cu pas îl poate roti cu ușurință. Lemnul poate fi foarte greu și motorul pas cu pas poate avea probleme cu acest lucru. Pentru a tăia găurile, am folosit un burghiu cu burghie concepute pentru metal și un Dremel. Tăierea găurilor mai mari a necesitat mult mai multă muncă și un ferăstrău cu jig ar fi mai bun.
Pasul 7: Programează ca serviciu
Este foarte util ca codul să înceapă după pornirea Pi. Pentru asta vom face un serviciu.
Creați un fișier nou numit smartcard.service cu următoarea comandă:
sudo nano /etc/systemd/system/smartcard.service
Acest lucru trebuie să intre în fișier:
[Unitate]
Descriere = Backend card inteligent După = network.target [Service] ExecStart = / usr / bin / python3 -u app.py WorkingDirectory = / home / pi / project1 StandardOutput = inherit StandardError = eredita Restart = întotdeauna User = pi [Instalare] WantedBy = multi-user.target WorkingDirectory este calea către folderul în care se află programul
Acum ai propriul tău Smart Card!
Recomandat:
Distribuitor automat de alcool cu gel cu Esp32: 9 pași
Dispenser automat de alcool cu gel cu Esp32: În tutorial vom vedea cum să realizăm un prototip complet, pentru a asambla un dozator automat de alcool cu gel cu esp32, acesta va include asamblare pas cu pas, circuit electronic și, de asemenea, codul sursă explicat pas cu pas Etapa
DISTRIBUITOR AUTOMAT DE ALIMENTE PENTRU ANIMALE PENTRU ANIMALE PENTRU ANIMALE: 9 pași
DISTRIBUITOR AUTOMAT DE ALIMENTE PENTRU ANIMALE: Ai simțit vreodată că ai pierdut prea mult timp hrănindu-ți animalul? A trebuit vreodată să suni pe cineva să-ți hrănească animalele de companie în timp ce erai în vacanță? Am încercat să rezolv aceste două probleme cu proiectul meu actual de școală: Petfeed
Distribuitor automat de săpun folosind Arduino: 8 pași
Distribuitor automat de săpun folosind Arduino: Distribuitor automat de săpun folosind arduino: Deci, hei, tipul este binevenit înapoi la noul articol din acest articol, vom face un distribuitor automat de săpun folosind arduino. Acest distribuitor de săpun este foarte ușor de realizat
Distribuitor automat de alcool cu Arduino: 6 pași
Distribuitor automat de alcool cu Arduino: Acest proiect arduino vă va ghida cum să faceți un distribuitor automat de alcool. Utilizatorul nu trebuie să atingă nimic pentru a obține alcool, trebuie doar să se apropie de senzorul cu ultrasunete, alcoolul va fi împins afară, apoi va fi redat un fișier audio pentru a informa utilizatorul să păstreze
Schimbator automat de carduri: 6 pași (cu imagini)
Schimbător automat de carduri: Bună ziua! Acest instructable a fost creat pentru a îndeplini cerințele de proiect ale Makecourse la Universitatea din Florida de Sud. (www.makecourse.com) În acest instructiv, vă voi ghida prin procesul de creare a unui amestec automat de carduri