Indholdsfortegnelse:

Automatisk kortfordeler: 7 trin
Automatisk kortfordeler: 7 trin

Video: Automatisk kortfordeler: 7 trin

Video: Automatisk kortfordeler: 7 trin
Video: Molo - Automatisk (Lyrics) 2024, November
Anonim
Automatisk kortfordeler
Automatisk kortfordeler

Jeg har valgt en smart card -distributør som mit første projekt, fordi jeg kan lide at spille et kortspil. Det jeg mest kan lide er at dele kort. Du skal huske for hvert spil, hvor mange kort hver person får. Det bliver forvirrende, når du kender mange kortspil. Mit projekt vil også hjælpe mennesker, der har problemer med at distribuere kort som ældre mennesker og mennesker, der lider af Parkinson.

Forbrugsvarer

  • 1 Raspberry Pi (jeg brugte en Raspberry Pi 4)
  • SD -kort (16 GB anbefales)
  • 1 brødbrød til Raspberry Pi (T-stykke)
  • 2 brødbrætter
  • 1 Strømforsyningsmodul til brødbræt, 5V og 3V3
  • 1 LCD -display
  • 1 Potentiometer
  • 1 MPU6050 (accelerometer og gyroskop)
  • 1 NPN -transistorer
  • 1 PCF8574N I/O -ekspander
  • 1 trinmotor
  • 1 ULN2003 breakout board til styring af trinmotor
  • 1 ultralydssensor HC-SR04
  • 1 5V DC motorer
  • 1 dioder
  • 6 470 Ohm modstande
  • 4 10K Ohm modstande
  • Elektrisk ledning til at forbinde alt

Nyttig at have, mens du laver:

  • Loddekolbe
  • Lodde
  • Dremel eller pilesav (noget at skære træ og abs plastik)

Software:

  • Kitt
  • MySQL -arbejdsbord
  • Win32 Disk Imager
  • Kodeditor (jeg anbefaler Visual Studio Code)
  • WinSCP
  • Raspbian billede

Trin 1: Forberedelse af Rasperry Pi

Først skal vi forberede Raspberry Pi, før vi gør noget andet. Fordi alt kører med Pi, så dette er en af de vigtigste dele af kortfordeleren.

Installation:

Download Raspbian-billedet fra

  1. Download ZIP-filen
  2. Udpak ZIP-filen, hvor du let kan finde den
  3. Åbn Win32 Disk Imager, og vælg det uddragne billede
  4. Vælg SD -kortet i rullemenuen, og klik på skriv
  5. Når skriveprocessen er udført, kan du lukke Win32 Disk Imager

Nu skal vi gøre et par ting mere, før vi kan oprette forbindelse til Pi

  1. Naviger til boot -mappen på SD -kortet
  2. Åbn filen cmdline.txt
  3. Tilføj 'ip = 169.254.10.1' i slutningen af linjen adskilt med et mellemrum
  4. Gem og afslut filen
  5. Opret i samme bibliotek en fil kaldet ssh og fjern udvidelsen (dette aktiverer ssh ved den første boot, så vi kan oprette forbindelse til Pi)
  6. Skub SD -kortet sikkert ud og sæt det i Pi

Nu kan vi oprette forbindelse til Pi:

  1. Tag et ethernet -kabel, og indsæt den ene ende i Pi og den anden ende i din computer
  2. Åben kitt
  3. Indtast 169.254.10.1 i feltet Værtsnavn
  4. Sørg for, at SSH er valgt, og at porten er 22
  5. Klik på Åbn
  6. Hvis du får en advarsel, kan du bare fortsætte og ignorere den
  7. Brugernavnet er pi og adgangskoden er hindbær

Konfiguration og installation af software:

Åbn raspi-config med følgende kommando:

sudo raspi-config

Vælg den femte mulighed: Grænsefladeindstillinger

Aktiver SPI og I2C

Deaktiver følgende ting i den tredje mulighed: Boot -muligheder:

  • Stænk skærm
  • Vælg cli til opstart og ikke desktop

Wifi opsætning:

Wifi er nyttig til let at navigere til webstedet. Sørg for, at du har dine wifi -legitimationsoplysninger tæt på.

For at konfigurere wifi har vi brug for et par ting:

Tilføj din wifi ved hjælp af denne kommando, og skift SSID og PASSWORD til dine oplysninger:

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

Udfør denne kommando for at omkonfigurere din wifi:

sudo wpa_cli

Vælg den korrekte grænseflade:

grænseflade wlan0

Omkonfigurer grænsefladen:

omkonfigurere

Kontroller, om rekonfigurationen var vellykket med denne kommando:

ip a

Hvis du ser en IP-adresse på wlan0-grænsefladen, er alt opsat.

Opdaterer operativsystem

Opdater operativsystemet med disse 2 kommandoer:

sudo apt opdatering

sudo apt fuld opgradering

Opsætning af MariaDB:

Installation af Apache Webserver:

sudo apt installere apache2 -y

Installation af MariaDB -server:

sudo apt installer mariadb -server -y

Nu skal vi genstarte:

sudo genstart

Det anbefales at sikre MariaDB -installationen. Du kan gøre det ved at køre denne kommando:

sudo mysql_secure_installation

Først bliver du bedt om det aktuelle root -kodeord, men standardinstallationen har ikke en, så tryk på enter.

Dernæst bliver du spurgt, om du vil angive en root -adgangskode, skriv y. Sørg for at du kan huske adgangskoden!

  • Indtast y for at fjerne anonyme brugere
  • Indtast y for at deaktivere root -login eksternt
  • Indtast y for at fjerne testdatabaser og få adgang til den
  • Indtast y for at genindlæse private rettigheder

Din MariaDB -installation skal være sikker!

Nu kan vi oprette en ny bruger:

Indtast mysql -skallen med denne kommando:

sudo mysql

Opret en bruger med brugernavnet mysql og en adgangskode (dit_passord) følgende kommandoer:

opret bruger mysql@localhost identificeret med 'dit_passord';

give alle rettigheder til *. * til mysql@localhost;

FLUSH -PRIVILEGER;

Afslut mysql -shell med denne kommando:

Afslut;

Python -pakker:

Python bør allerede være installeret, medmindre du vælger Lite -versionen:

sudo apt installer python3-pip

Vi har brug for en god mængde Python -pakker, du kan installere dem alle med følgende kommando:

pip3 installer mysql-connector-python kolbe-socketio kolbe-cors gevent gevent-websocket

Nu skal vi genstarte endnu en gang

sudo genstart

Trin 2: Opsætning af Visual Studio Code og MySQL Workbench

Tilslutning til Pi med MySQL Workbench:

Åbn MySQL Workbench

Opret en ny forbindelse til Pi med følgende oplysninger:

  • Forbindelsesnavn: Raspi
  • Tilslutningsmetode: Standard TCP/IP over SSH
  • SSH-værtsnavn: IP-adressen på Pi

Du kan få IP-adressen med denne kommando:

ip a

  • SSH Brugernavn: pi
  • MySQL -værtsnavn: 127.0.0.1
  • MySQL -serverport: 3306
  • Brugernavn: mysql

Klik på ok, og indtast adgangskoden til brugerens pi, og indtast derefter adgangskoden til brugeren mysql.

Opsætning af Visual Studio Code:

Åbn Visual Studio Code

Installer disse 2 udvidelser:

  • Fjernbetjening - SSH
  • Remote - SSH: Redigering af konfigurationsfiler

Tryk på Visual Studio Code F1, og indtast ssh

Vælg Remote SSH: Tilføj ny SSH -vært

Udfyld ssh pi@IP-adresse

I det næste trin skal du trykke på enter

Forbindelsen er nu lavet til Pi. Du kan oprette forbindelse til Pi ved at trykke på F1 og vælge Opret forbindelse til ekstern vært.

Indtast adgangskoden, så Visual Studio Code har adgang til Pi.

En ting mere: Installer Python -udvidelsen på den eksterne maskine, så du nemt kan køre og fejlsøge kode.

Trin 3: Fritzing Diagram

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

I dette trin vil jeg forklare kredsløbet.

Skemaerne ovenfor er lavet med Fritzing.

DC motor:

Tilslut GPIO 18 til bunden af kollektoren, den midterste pin på en npn -transistor. Tilslut motorens jord til kollektoren fra transistoren og motorens effekt til 5V. Tilslut transistorens jord til jordlinjen. Tilslut dioden i barriere over motoren, så den blokerer for kurven fra at strømme direkte til transistoren.

Stepmotor:

Tilslut trinmotoren til kontrolkortet. På kontrolkortet er der på den ene side ben til at forbinde 5V og jord. De andre ben er betjeningsnåle. Disse ben styrer magneterne inde i motoren, så den kan dreje. Tilslut disse ben til GPIO 12, 16, 20 og 21 på Raspberry Pi.

HC-SR04 Ultralyd:

Denne sensor kan måle afstande til omkring 4,5 meter ved hjælp af lyd.

Tilslut VCC -stiften til 5V, udløsertappen til GPIO 25, ekko -stiften med en modstand på 470 Ohm til GPIO 24 og jorden med en modstand på 470 Ohm til jorden.

MPU6050:

Tilslut VCC -stiften til 3V3, jorden til jorden, scl til scl på Pi og sda til sda på Pi. Til denne sensor bruger jeg I2C til at styre den. Du kan læse mere om det her. Her er en grundlæggende forklaring: Pi er mesteren og MPU6050 er slaven. Gennem scl -linjen styrer Pi timerne, og sda -linjen bruges til at sende data fra masteren til slaven eller fra slaven til masteren. Kun master kan starte dataoverførsel.

Lys afhængig modstand:

For at få korrekte aflæsninger fra LDR bruger jeg en MCP3008 -chip. Dette sikrer, at aflæsningerne fra ldr er stabile og korrekte konverteres fra analoge til digitale signaler.

Tilslut 3V3 til den ene side af ldr med en modstand på 10K Ohm mellem den. Mellem ldr og modstanden forbindes en ledning til kanalen 0 i MCP3008. Tilslut derefter den anden side af ldr til jorden.

LCD display:

Du kan bruge LCD -skærmen uden en PCF8574, men fordi GPIO -benene på Pi er begrænsede, bruger jeg en PCF8574 til at gemme nogle GPIO -ben. Du kan også bruge et skiftregister, men jeg foretrækker en PCF8574. Du kan styre PCF8574 med SMbus -protokollen, men jeg skrev min egen klasse for at styre den. Potentiometeret styrer kontrasten.

LCD display pins:

  • VSS til jorden
  • VDD til 5V
  • V0 til potentiometerets variable ben
  • RS til GPIO 13
  • R/W til jorden, fordi jeg kun skriver til displayet og ikke læser
  • E til GPIO 19
  • DB0 til P0 i PCF
  • DB1 til P1
  • DB2 til P2
  • DB3 til P3
  • DB4 til P4
  • DB5 til P5
  • DB6 til P6
  • DB7 til P7
  • LED+ til 5V
  • LED- til jord

PCF8574 stifter:

  • A0 til jorden
  • A1 til jorden
  • A2 til jorden
  • Jord til jord
  • VCC til 5V
  • SDA til GPIO 27
  • SCL til GPIO 22 med en modstand på 330 Ohm

Du har muligvis ikke LED+ og LED- afhængigt af hvilken type skærm du har. LED+ og LED- er til baggrundsbelysningen.

Tilslut den positive side af potentiometeret til 5V og jorden til jorden.

Sørg for at bruge pull-up modstande!

Trin 4: Kode på Github

Du kan finde al den nødvendige kode på min Github.

Mappe projekt1:

Denne mappe indeholder al koden til backend. I mappen Klasses er alle klasserne til at styre hardwaren.

Mappelagrene indeholder 2 filer: Database.py og DataRepository.py. Database.py opretholder forbindelsen til databasen og håndterer forespørgsler. DataRepository.py indeholder alle de forespørgsler, der er nødvendige for webstedet.

App.py er hovedfilen i backend. Denne fil starter automatisk, når Pi starter.

Config.py indeholder et par indstillinger for at oprette forbindelse til databasen. Sørg for at udfylde disse filer med dine egne oplysninger.

Du kan placere denne mappe hvor som helst i din hjemmekatalog.

Mappe html:

Denne mappe indeholder alle filerne til webstedet, frontend.

  • Mappen indeholder filerne til webstedets layout.
  • Skrifttyper indeholder de skrifttyper, der bruges på webstedet.
  • Script indeholder alle Javascript -filer for at gøre webstedet dynamisk

Denne mappe skal være i mappen/var/www/html

Du kan kopiere en fil eller mappe med denne kommando:

sudo mv/path/to/current/directory/path/to/destination/directory

For at navigere til sitetypen i din browser skal IP-adressen vises på LCD-displayet.

Trin 5: Normaliseret databasestruktur

Normaliseret databasestruktur
Normaliseret databasestruktur

I dette trin skal vi importere databasen.

  1. Opret forbindelse til din Raspberry Pi med MySQL Workbench
  2. Klik på Server -> Dataimport
  3. Vælg Importer selvstændig fil
  4. I mappen Database-export fra Github er der en sql-fil kaldet dump_project1.sql
  5. Gennemse denne fil, og klik på Start import

Det er det. Pi kan nu få adgang til databasen, hvis den har de korrekte oplysninger.

Trin 6: Etui til kortdistributøren

Etui til kortdistributøren
Etui til kortdistributøren
Etui til kortdistributøren
Etui til kortdistributøren
Etui til kortdistributøren
Etui til kortdistributøren

I dette trin vil jeg forklare, hvad jeg brugte til sagen, og hvordan jeg monterede alt.

I sagen brugte jeg 2 ABS -kasser:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Hullerne lavede jeg i æskerne

Et hul til LCD -displayet, 3 huller til strømkablerne, et til ledningerne fra trinmotoren, DC -motoren og ultralydssensoren.

I den mindste kasse lavede jeg et hul til ledningerne fra komponenterne og et hul, som kortene skulle passere igennem. I toppen lavede jeg det største hul, så du kan placere spillekort i enheden.

Jeg monterede DC -motoren med et beslag og noget dobbeltsidet tape. Jeg lavede et træbræt til at lægge kortene på med et hul til hjulet til at skyde et kort.

Jeg har valgt ABS -plast, fordi den er let, så trinmotoren let kan dreje den. Træ kan være virkelig tungt, og trinmotoren kan have problemer med dette. Til at skære hullerne brugte jeg en boremaskine med boremaskiner designet til metal og en Dremel. At skære de større huller tog meget mere arbejde, og en jigssav ville være bedre.

Trin 7: Programmer som en service

Det er virkelig nyttigt at få koden til at starte, efter at Pi er startet. Til det vil vi lave en service.

Opret en ny fil kaldet smartcard.service med følgende kommando:

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

Dette skal gå ind i filen:

[Enhed]

Beskrivelse = Smartkort -backend Efter = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = arv StandardError = arv Genstart = altid Bruger = pi [Installer] WantedBy = multi-user.target WorkingDirectory er stien til den mappe, hvor programmet er placeret

Nu har du fået dit eget Smart Card!

Anbefalede: