Innehållsförteckning:
- Tillbehör
- Steg 1: Förbereda Rasperry Pi
- Steg 2: Konfigurera Visual Studio Code och MySQL Workbench
- Steg 3: Fritzing Diagram
- Steg 4: Kod på Github
- Steg 5: Normaliserad databasstruktur
- Steg 6: Fodral för kortdistributören
- Steg 7: Programmera som en tjänst
Video: Automatisk kortdistributör: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:39
Jag har valt en smart card -distributör som mitt första projekt eftersom jag gillar att spela ett kortspel. Det jag ogillar mest är att dela kort. Du måste komma ihåg för varje spel hur många kort varje person får. Det blir förvirrande när du kan många kortspel. Mitt projekt kommer också att hjälpa människor som har problem med att dela ut kort som äldre och personer som lider av Parkinson.
Tillbehör
- 1 Raspberry Pi (jag använde en Raspberry Pi 4)
- SD -kort (rekommenderas 16 GB)
- 1 brödbröd för Raspberry Pi (T-bit)
- 2 brödbrädor
- 1 Strömförsörjningsmodul för brödbräda, 5V och 3V3
- 1 LCD -skärm
- 1 Potentiometer
- 1 MPU6050 (accelerometer och gyroskop)
- 1 NPN -transistorer
- 1 PCF8574N I/O -expander
- 1 stegmotor
- 1 ULN2003 breakout board för att styra stegmotorn
- 1 ultraljudssensor HC-SR04
- 1 5V likströmsmotorer
- 1 dioder
- 6 470 Ohm motstånd
- 4 10K Ohm motstånd
- Elektrisk kabel för att ansluta allt
Användbart att ha när du gör:
- Lödkolv
- Löda
- Dremel eller sticksåg (något att skära i trä och abs -plast)
Programvara:
- Spackel
- MySQL -arbetsbänk
- Win32 Disk Imager
- Kodredigerare (jag rekommenderar Visual Studio Code)
- WinSCP
- Raspbian bild
Steg 1: Förbereda Rasperry Pi
Först måste vi förbereda Raspberry Pi innan vi gör något annat. Eftersom allt kommer att fungera med Pi så är detta en av de viktigaste delarna av kortdistributören.
Installation:
Ladda ner Raspbian-bilden från
- Ladda ner ZIP-filen
- Extrahera ZIP-filen där du enkelt kan hitta den
- Öppna Win32 Disk Imager och välj den extraherade bilden
- Välj SD -kortet i rullgardinsmenyn och klicka på skriv
- När skrivprocessen är klar kan du stänga Win32 Disk Imager
Nu måste vi göra några saker till innan vi kan ansluta till Pi
- Navigera till startmappen på SD -kortet
- Öppna filen cmdline.txt
- Lägg till 'ip = 169.254.10.1' i slutet av raden åtskild med ett mellanslag
- Spara och avsluta filen
- Skapa i samma katalog en fil som heter ssh och ta bort tillägget (detta aktiverar ssh vid den första starten så att vi kan ansluta till Pi)
- Ta ut SD -kortet på ett säkert sätt och sätt det i Pi
Nu kan vi ansluta till Pi:
- Ta en ethernetkabel och sätt in ena änden i Pi och den andra änden i din dator
- Öppna kitt
- Ange 169.254.10.1 i fältet Värdnamn
- Se till att SSH är valt och att porten är 22
- Klicka på öppna
- Om du får en varning kan du bara fortsätta och ignorera den
- Användarnamnet är pi och lösenordet är hallon
Konfiguration och installation av programvara:
Öppna raspi-config med följande kommando:
sudo raspi-config
Välj det femte alternativet: Gränssnittsalternativ
Aktivera SPI och I2C
Inaktivera följande saker i det tredje alternativet: Startalternativ:
- Startbild
- Välj cli för start och inte skrivbord
Wifi -inställning:
Wifi är användbart för att enkelt navigera till webbplatsen. Se till att du har din wifi -referens nära.
För att konfigurera wifi behöver vi några saker:
Lägg till din wifi med det här kommandot och ändra SSID och LÖSENORD till din information:
sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf
Utför det här kommandot för att omkonfigurera ditt wifi:
sudo wpa_cli
Välj rätt gränssnitt:
gränssnitt wlan0
Konfigurera om gränssnittet:
omkonfigurera
Kontrollera om omkonfigurationen lyckades med det här kommandot:
ip a
Om du ser en IP-adress på wlan0-gränssnittet är allt inställt.
Uppdaterar operativsystem
Uppdatera operativsystemet med dessa två kommandon:
sudo apt uppdatering
sudo apt full-upgrade
Konfigurera MariaDB:
Installera Apache Webserver:
sudo apt installera apache2 -y
Installera MariaDB -server:
sudo apt installera mariadb -server -y
Nu måste vi starta om:
sudo starta om
Det rekommenderas att säkra MariaDB -installationen. Du kan göra det genom att köra det här kommandot:
sudo mysql_secure_installation
Först blir du ombedd att ange det aktuella rotlösenordet men standardinstallationen har inte ett så tryck på enter.
Därefter får du frågan om du vill ange ett rotlösenord, skriv y. Se till att du kommer ihåg lösenordet!
- Ange y för att ta bort anonyma användare
- Ange y för att inaktivera rotinloggning på distans
- Ange y för att ta bort testdatabaser och komma åt den
- Ange y för att ladda om privileges
Din MariaDB -installation ska vara säker!
Nu kan vi skapa en ny användare:
Ange mysql -skalet med det här kommandot:
sudo mysql
Skapa en användare med användarnamnet mysql och ett lösenord (ditt_passord) följande kommandon:
skapa användare mysql@localhost identifierad med 'ditt_passord';
bevilja alla privileges på *. * till mysql@localhost;
FLUSH PRIVILEGER;
Avsluta mysql -skalet med det här kommandot:
utgång;
Python -paket:
Python bör redan installeras om du inte väljer Lite -versionen:
sudo apt installera python3-pip
Vi behöver en hel del Python -paket, du kan installera dem alla med följande kommando:
pip3 installera mysql-connector-python-kolv-socketio-kolv-cors gevent gevent-websocket
Nu måste vi starta om en gång till
sudo starta om
Steg 2: Konfigurera Visual Studio Code och MySQL Workbench
Anslutning till Pi med MySQL Workbench:
Öppna MySQL Workbench
Gör en ny anslutning till Pi med följande information:
- Anslutningsnamn: Raspi
- Anslutningsmetod: Standard TCP/IP över SSH
- SSH-värdnamn: Pi: s IP-adress
Du kan få IP-adressen med det här kommandot:
ip a
- SSH Användarnamn: pi
- MySQL -värdnamn: 127.0.0.1
- MySQL -serverport: 3306
- Användarnamn: mysql
Klicka på ok och ange lösenordet för användarens pi och ange sedan lösenordet för användaren mysql.
Konfigurera Visual Studio Code:
Öppna Visual Studio Code
Installera dessa 2 tillägg:
- Fjärrkontroll - SSH
- Remote - SSH: Redigering av konfigurationsfiler
Tryck på Visual Studio Code F1 och skriv in ssh
Välj Remote SSH: Lägg till ny SSH -värd
Fyll i ssh pi@IP-adress
Tryck på enter i nästa steg
Anslutningen är nu gjord till Pi. Du kan ansluta till Pi genom att trycka på F1 och välja anslut till fjärrvärd.
Ange lösenordet så att Visual Studio Code har åtkomst till Pi.
En sak till: Installera Python -tillägget på fjärrdatorn så att du enkelt kan köra och felsöka kod.
Steg 3: Fritzing Diagram
I detta steg kommer jag att förklara kretsen.
Schemat ovan är gjord med Fritzing.
Likströmsmotor:
Anslut GPIO 18 till basen av kollektorn, mittstiftet på en npn -transistor. Anslut motorns jord till kollektorn från transistorn och motorns effekt till 5V. Anslut transistorns jord till jordledningen. Anslut dioden i barriären över motorn så att den blockerar kurvan från att strömma direkt till transistorn.
Stegmotor:
Anslut stegmotorn till styrkortet. På styrkortet finns på ena sidan stift för att ansluta 5V och jord. De andra stiften är kontrollnålar. Dessa stift styr magneterna inuti motorn så att den kan vända. Anslut dessa stift till GPIO 12, 16, 20 och 21 på Raspberry Pi.
HC-SR04 Ultraljud:
Denna sensor kan mäta avstånd till cirka 4,5 meter med hjälp av ljud.
Anslut VCC -stiftet till 5V, utlösarstiftet till GPIO 25, ekostiftet med ett motstånd på 470 Ohm till GPIO 24 och marken med ett motstånd på 470 Ohm mot marken.
MPU6050:
Anslut VCC -stiftet till 3V3, marken till marken, scl till scl på Pi och sda till sda på Pi. För denna sensor använder jag I2C för att styra den. Du kan läsa mer om det här. Här är en grundläggande förklaring: Pi är mästaren och MPU6050 är slaven. Genom scl -linjen styr Pi timingen och sda -raden används för att skicka data från mastern till slaven eller från slaven till mastern. Endast master kan initiera dataöverföring.
Ljusberoende motstånd:
För att få korrekta avläsningar från LDR använder jag ett MCP3008 -chip. Detta säkerställer att avläsningarna från ldr är stabila och korrekt omvandlade från analoga till digitala signaler.
Anslut 3V3 till ena sidan av ldr med ett motstånd på 10K Ohm mellan det. Mellan ldr och motståndet ansluter du en kabel till kanalen 0 på MCP3008. Anslut sedan den andra sidan av ldr till marken.
LCD skärm:
Du kan använda LCD -skärmen utan en PCF8574 men eftersom GPIO -stiften på Pi är begränsade använder jag en PCF8574 för att spara några GPIO -stift. Du kan också använda ett skiftregister men jag föredrar en PCF8574. Du kan styra PCF8574 med SMbus -protokollet men jag skrev min egen klass för att styra den. Potentiometern styr kontrasten.
LCD -skärmstift:
- VSS till marken
- VDD till 5V
- V0 till potentiometerns variabla stift
- RS till GPIO 13
- R/W till jord eftersom jag bara skriver till displayen och inte läser
- E till GPIO 19
- DB0 till P0 i PCF
- DB1 till P1
- DB2 till P2
- DB3 till P3
- DB4 till P4
- DB5 till P5
- DB6 till P6
- DB7 till P7
- LED+ till 5V
- LED- till jord
PCF8574 stift:
- A0 till marken
- A1 till marken
- A2 till marken
- Mark till mark
- VCC till 5V
- SDA till GPIO 27
- SCL till GPIO 22 med motstånd på 330 Ohm
Du kanske inte har LED+ och LED- beroende på vilken typ av skärm du har. LED+ och LED- är för bakgrundsbelysningen.
Anslut den positiva sidan av potentiometern till 5V och marken till marken.
Se till att du använder uppdragningsmotstånd!
Steg 4: Kod på Github
Du kan hitta all nödvändig kod på min Github.
Mapprojekt1:
Den här mappen innehåller all kod för backend. I mappen Klasses finns alla klasser för att styra hårdvaran.
Mappförvaren innehåller 2 filer: Database.py och DataRepository.py. Database.py upprätthåller anslutningen till databasen och hanterar frågor. DataRepository.py innehåller alla frågor som behövs för webbplatsen.
App.py är huvudfilen för backend. Denna fil startar automatiskt när Pi startar.
Config.py innehåller några inställningar för att ansluta till databasen. Se till att du fyller i dessa filer med din egen information.
Du kan placera den här mappen var som helst i din hemkatalog.
Mapp html:
Den här mappen innehåller alla filer för webbplatsen, frontend.
- Mappen innehåller filerna för webbplatsens layout.
- Teckensnitt innehåller de teckensnitt som används på webbplatsen.
- Skriptet innehåller alla Javascript -filer för att göra webbplatsen dynamisk
Den här mappen måste finnas i mappen/var/www/html
Du kan kopiera en fil eller mapp med det här kommandot:
sudo mv/path/to/current/directory/path/to/destination/directory
För att navigera till webbplatsen skriver du i din webbläsare IP-adressen som visas på LCD-skärmen.
Steg 5: Normaliserad databasstruktur
I det här steget kommer vi att importera databasen.
- Anslut till din Raspberry Pi med MySQL Workbench
- Klicka på Server -> Dataimport
- Välj Importera fristående fil
- I mappen Database-export från Github finns en sql-fil som heter dump_project1.sql
- Bläddra till den här filen och klicka på startimport
Det är allt. Pi kan nu komma åt databasen om den har rätt information.
Steg 6: Fodral för kortdistributören
I det här steget kommer jag att förklara vad jag använde för fodralet och hur jag monterade allt.
I fallet använde jag 2 ABS -lådor:
- 265 x 185 x 95 mm
- 171 x 121 x 80 mm
Hålen gjorde jag i lådorna
Ett hål för LCD -skärmen, 3 hål för strömkablarna, ett för ledningarna från stegmotorn, likströmsmotorn och ultraljudssensorn.
I den minsta lådan gjorde jag ett hål för trådarna från komponenterna och ett hål för korten att passera igenom. I toppen gjorde jag det största hålet så att du kan placera spelkort i enheten.
Jag monterade likströmsmotorn med en konsol och lite dubbelsidig tejp. Jag gjorde en träbräda att lägga korten på med ett hål för hjulet för att skjuta ett kort.
Jag har valt ABS -plast eftersom den är lätt så att stegmotorn enkelt kan vrida den. Trä kan vara riktigt tungt och stegmotorn kan ha problem med detta. För att skära hålen använde jag en borr med borrbitar avsedda för metall och en Dremel. Att klippa de större hålen tog mycket mer arbete och en jiggsåg skulle vara bättre.
Steg 7: Programmera som en tjänst
Det är verkligen användbart att koden startar efter att Pi startats. För det kommer vi att göra en tjänst.
Skapa en ny fil som heter smartcard.service med följande kommando:
sudo nano /etc/systemd/system/smartcard.service
Detta måste gå in i filen:
[Enhet]
Beskrivning = Smart card backend Efter = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = ärva StandardError = ärva Starta om = alltid Användare = pi [Installera] WantedBy = multi-user.target WorkingDirectory är sökvägen till mappen där programmet finns
Nu har du fått ditt eget smartkort!
Rekommenderad:
Automatisk handdesinfektion: 8 steg
Automatisk handdesinfektion: COVID-19-pandemin har blivit något som allmänheten har hört mycket ofta under 2020. Varje medborgare som hör ordet "COVID-19" kommer omedelbart att tänka på ordet "Farligt", "Dödligt", "Håll rent”Och andra ord. Denna COVID-19 har också
DIY automatisk handdesinfektionsdispenser: 6 steg
DIY automatisk handdesinfektionsdispenser: I detta projekt kommer vi att bygga en automatisk handdesinfektionsdispenser. Detta projekt kommer att använda Arduino, ultraljudssensor, vattenpump och handsprit. En ultraljudssensor används för att kontrollera närvaron av händer under utloppet på desinfektionsmaskinen.
Automatisk gelalkoholautomat med Esp32: 9 steg
Automatisk gelalkoholautomat med Esp32: I handledning kommer vi att se hur man gör en komplett prototyp, att montera en automatisk gelalkoeldispenser med esp32, den kommer att inkludera steg-för-steg-montering, elektronisk krets och även källkoden förklarad steg för steg steg
Automatisk hundmatare !!: 4 steg
Automatisk hundmatare !!: Lätt, hjälpsam och hälsosam
Automatisk medicindispenser: 5 steg
Automatisk medicindispenser: Detta projekt är avsett för användning inom det medicinska området, där äldre patienter måste ha ett pålitligt sätt att få medicinering portionerad och utdelad. Med denna enhet kan medicinering delas upp upp till 9 dagar i förväg och automatiskt doseras i önskad