Innehållsförteckning:

Automatisk kortdistributör: 7 steg
Automatisk kortdistributör: 7 steg

Video: Automatisk kortdistributör: 7 steg

Video: Automatisk kortdistributör: 7 steg
Video: Molo - Automatisk (Lyrics) 2024, November
Anonim
Automatisk kortdistributör
Automatisk kortdistributör

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

  1. Ladda ner ZIP-filen
  2. Extrahera ZIP-filen där du enkelt kan hitta den
  3. Öppna Win32 Disk Imager och välj den extraherade bilden
  4. Välj SD -kortet i rullgardinsmenyn och klicka på skriv
  5. 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

  1. Navigera till startmappen på SD -kortet
  2. Öppna filen cmdline.txt
  3. Lägg till 'ip = 169.254.10.1' i slutet av raden åtskild med ett mellanslag
  4. Spara och avsluta filen
  5. 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)
  6. Ta ut SD -kortet på ett säkert sätt och sätt det i Pi

Nu kan vi ansluta till Pi:

  1. Ta en ethernetkabel och sätt in ena änden i Pi och den andra änden i din dator
  2. Öppna kitt
  3. Ange 169.254.10.1 i fältet Värdnamn
  4. Se till att SSH är valt och att porten är 22
  5. Klicka på öppna
  6. Om du får en varning kan du bara fortsätta och ignorera den
  7. 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

Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
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

Normaliserad databasstruktur
Normaliserad databasstruktur

I det här steget kommer vi att importera databasen.

  1. Anslut till din Raspberry Pi med MySQL Workbench
  2. Klicka på Server -> Dataimport
  3. Välj Importera fristående fil
  4. I mappen Database-export från Github finns en sql-fil som heter dump_project1.sql
  5. 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

Fodral för kortdistributören
Fodral för kortdistributören
Fodral för kortdistributören
Fodral för kortdistributören
Fodral för kortdistributören
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: