Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Forberedelse af Rasperry Pi
- Trin 2: Opsætning af Visual Studio Code og MySQL Workbench
- Trin 3: Fritzing Diagram
- Trin 4: Kode på Github
- Trin 5: Normaliseret databasestruktur
- Trin 6: Etui til kortdistributøren
- Trin 7: Programmer som en service
Video: Automatisk kortfordeler: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
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
- Download ZIP-filen
- Udpak ZIP-filen, hvor du let kan finde den
- Åbn Win32 Disk Imager, og vælg det uddragne billede
- Vælg SD -kortet i rullemenuen, og klik på skriv
- 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
- Naviger til boot -mappen på SD -kortet
- Åbn filen cmdline.txt
- Tilføj 'ip = 169.254.10.1' i slutningen af linjen adskilt med et mellemrum
- Gem og afslut filen
- 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)
- Skub SD -kortet sikkert ud og sæt det i Pi
Nu kan vi oprette forbindelse til Pi:
- Tag et ethernet -kabel, og indsæt den ene ende i Pi og den anden ende i din computer
- Åben kitt
- Indtast 169.254.10.1 i feltet Værtsnavn
- Sørg for, at SSH er valgt, og at porten er 22
- Klik på Åbn
- Hvis du får en advarsel, kan du bare fortsætte og ignorere den
- 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
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
I dette trin skal vi importere databasen.
- Opret forbindelse til din Raspberry Pi med MySQL Workbench
- Klik på Server -> Dataimport
- Vælg Importer selvstændig fil
- I mappen Database-export fra Github er der en sql-fil kaldet dump_project1.sql
- 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
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:
Automatisk håndrensemiddel: 8 trin
Automatisk håndrensemiddel: COVID-19-pandemien er blevet noget, som offentligheden har hørt meget ofte i løbet af 2020. Enhver borger, der hører ordet "COVID-19", vil straks tænke på ordet "Farligt", "Dødeligt", "Hold rent”Og andre ord. Denne COVID-19 har også
DIY automatisk håndrensemiddel: 6 trin
DIY automatisk hånddesinfektionsdispenser: I dette projekt bygger vi en automatisk håndrensemiddel. Dette projekt vil bruge Arduino, ultralydssensor, vandpumpe og håndrensemiddel. En ultralydssensor bruges til at kontrollere tilstedeværelsen af hænder under stikkontakten til desinfektionsmaskinen
Automatisk gelalkoholautomat med Esp32: 9 trin
Automatisk gelalkoholautomat med Esp32: I vejledningen vil vi se, hvordan man laver en komplet prototype, til at samle en automatisk gelalkooldispenser med esp32, det vil omfatte trinvis montering, elektronisk kredsløb og også kildekoden forklaret trin for trin trin
Automatisk hundefoder !!: 4 trin
Automatisk hundefoder !!: Let, hjælpsom og sund
Automatisk WiFi -planteføder med reservoir - Indendørs/udendørs dyrkningssætning - Vandplanter automatisk med fjernovervågning: 21 trin
Automatisk WiFi -planteføder med reservoir - Indendørs/udendørs dyrkningssætning - Vandplanter automatisk med fjernovervågning: I denne vejledning vil vi demonstrere, hvordan du konfigurerer et brugerdefineret indendørs/udendørs planteføderanlæg, der automatisk vanner planter og kan overvåges eksternt ved hjælp af Adosia -platformen