INHOUDSOPGAWE:

Outomatiese kaartverspreider: 7 stappe
Outomatiese kaartverspreider: 7 stappe

Video: Outomatiese kaartverspreider: 7 stappe

Video: Outomatiese kaartverspreider: 7 stappe
Video: ГРИБОК?! Как выровнять ТРАВМИРОВАНЫЙ НОГОТЬ. УДАЛЕНИЕ. Педикюр пошагово. НЕ ДЛЯ СЛАБОНЕРВНЫХ 2024, November
Anonim
Outomatiese kaartverspreider
Outomatiese kaartverspreider

Ek het 'n slimkaartverspreider as my eerste projek gekies omdat ek daarvan hou om 'n kaartspel te speel. Die ding waarvan ek die meeste hou, is om kaartjies te deel. U moet vir elke wedstryd onthou hoeveel kaarte elke persoon kry. Dit word verwarrend as u baie kaartspeletjies ken. My projek sal ook mense help wat probleme ondervind met die verspreiding van kaarte soos ouer mense en mense wat aan Parkinson ly.

Voorrade

  • 1 Raspberry Pi (ek het 'n Raspberry Pi 4 gebruik)
  • SD -kaart (16 GB aanbeveel)
  • 1 Uitbroodstuk vir Framboos Pi (T-stuk)
  • 2 broodborde
  • 1 Kragtoevoermodule vir broodbord, 5V en 3V3
  • 1 LCD -skerm
  • 1 Potensiometer
  • 1 MPU6050 (versnellingsmeter en gyroscoop)
  • 1 NPN -transistors
  • 1 PCF8574N I/O uitbreider
  • 1 stapmotor
  • 1 ULN2003 -uitbreekbord om stappermotor te beheer
  • 1 ultrasoniese sensor van HC-SR04
  • 1 5V DC motors
  • 1 diodes
  • 6 470 Ohm weerstande
  • 4 10K Ohm weerstande
  • Elektriese draad om alles aan te sluit

Handig om te hê tydens die maak:

  • Soldeerbout
  • Soldeer
  • Dremel- of malzaag (iets om hout en abs -plastiek te sny)

Sagteware:

  • Stopverf
  • MySQL werkbank
  • Win32 Disk Imager
  • Kode -redakteur (ek beveel Visual Studio -kode aan)
  • WinSCP
  • Raspbian beeld

Stap 1: Berei die Rasperry Pi voor

Eerstens moet ons die Raspberry Pi voorberei voordat ons iets anders doen. Omdat alles met die Pi werk, is dit een van die belangrikste stukke van die kaartverspreider.

Installasie:

Laai die Raspbian-prent af van

  1. Laai die zip-lêer af
  2. Pak die zip-lêer uit waar u dit maklik kan vind
  3. Maak Win32 Disk Imager oop en kies die uittreksel
  4. Kies die SD -kaart in die keuselys en klik op skryf
  5. Sodra die skryfproses voltooi is, kan u Win32 Disk Imager sluit

Nou moet ons nog 'n paar dinge doen voordat ons met die Pi kan skakel

  1. Gaan na die opstartmap op die SD -kaart
  2. Maak die lêer cmdline.txt oop
  3. Voeg 'ip = 169.254.10.1' by aan die einde van die reël, geskei met 'n spasie
  4. Stoor en verlaat die lêer
  5. Skep 'n lêer genaamd ssh in dieselfde gids en verwyder die uitbreiding (dit sal ssh moontlik maak by die eerste opstart sodat ons met die Pi kan skakel)
  6. Gooi die SD -kaart veilig uit en sit dit in die Pi

Nou kan ons aan die Pi koppel:

  1. Gryp 'n ethernetkabel en steek die een kant in die Pi en die ander kant in u rekenaar
  2. Maak stopverf oop
  3. Voer 169.254.10.1 in die veld Gasheernaam in
  4. Maak seker dat SSH gekies is en die poort 22 is
  5. Klik oop
  6. As u 'n waarskuwing kry, kan u voortgaan en dit ignoreer
  7. Die gebruikersnaam is pi en die wagwoord is framboos

Konfigurasie en installering van sagteware:

Maak raspi-config oop met die volgende opdrag:

sudo raspi-config

Kies die 5de opsie: koppelvlakopsies

Aktiveer SPI en I2C

Skakel die volgende dinge uit in die 3de opsie: opstartopsies:

  • Spatskerm
  • Kies cli vir die begin en nie desktop nie

Wifi -opstelling:

Wifi is handig om maklik na die webwerf te navigeer. Maak seker dat u wifi -inskrywings naby is.

Om wifi op te stel, benodig ons 'n paar dinge:

Voeg u wifi by deur hierdie opdrag te gebruik en verander SSID en PASSWORD in u inligting:

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

Voer hierdie opdrag uit om u wifi te herkonfigureer:

sudo wpa_cli

Kies die korrekte koppelvlak:

koppelvlak wlan0

Herkonfigureer die koppelvlak:

herkonfigureer

Kontroleer of die herkonfigurasie suksesvol was met hierdie opdrag:

ip a

As u 'n IP-adres op die wlan0-koppelvlak sien, is alles opgestel.

Dateer bedryfstelsel op

Dateer die bedryfstelsel op met hierdie twee opdragte:

sudo apt -opdatering

sudo apt volledige opgradering

Die oprigting van MariaDB:

Installeer Apache Webserver:

sudo apt installeer apache2 -y

Die installering van MariaDB -bediener:

sudo apt installeer mariadb -server -y

Nou moet ons herlaai:

sudo herlaai

Dit word aanbeveel om die MariaDB -installasie te beveilig. U kan dit doen deur hierdie opdrag uit te voer:

sudo mysql_secure_installation

Eerstens word u gevra vir die huidige wortelwagwoord, maar die standaardinstallasie het nie een nie, druk op enter.

Vervolgens word u gevra of u 'n root -wagwoord wil instel, tik y. Maak seker dat u die wagwoord kan onthou!

  • Voer y in om anonieme gebruikers te verwyder
  • Voer y in om wortelaanmelding op afstand uit te skakel
  • Voer y in om toetsdatabasisse te verwyder en toegang daartoe te verkry
  • Voer y in om die regte te herlaai

U MariaDB -installasie behoort veilig te wees!

Nou kan ons 'n nuwe gebruiker skep:

Voer die mysql -dop in met hierdie opdrag:

sudo mysql

Skep 'n gebruiker met die gebruikersnaam mysql en 'n wagwoord (your_password) die volgende opdragte:

skep gebruiker mysql@localhost geïdentifiseer deur 'your_password';

verleen alle voorregte op *. * aan mysql@localhost;

FLUSH VOORREGTE;

Verlaat die mysql -dop met hierdie opdrag:

uitgang;

Python pakkette:

Python moet reeds geïnstalleer word, tensy u die Lite -weergawe gekies het:

sudo apt installeer python3-pip

Ons benodig 'n goeie hoeveelheid Python -pakkette; u kan dit almal installeer met die volgende opdrag:

pip3 installeer mysql-connector-python fles-socketio flask-cors gevent gevent-websocket

Nou moet ons weer begin

sudo herlaai

Stap 2: Stel Visual Studio Code en MySQL Workbench op

Koppel aan die Pi met MySQL Workbench:

Maak MySQL -werkbank oop

Maak 'n nuwe verbinding met die Pi met die volgende inligting:

  • Verbindingsnaam: Raspi
  • Verbindingsmetode: Standaard TCP/IP oor SSH
  • SSH-gasheernaam: IP-adres van die Pi

U kan die IP-adres kry met hierdie opdrag:

ip a

  • SSH -gebruikersnaam: pi
  • MySQL -gasheernaam: 127.0.0.1
  • MySQL -bedienerpoort: 3306
  • Gebruikersnaam: mysql

Klik op ok en voer die wagwoord vir die gebruiker pi in en voer dan die wagwoord in vir die gebruiker mysql.

Stel Visual Studio -kode op:

Maak Visual Studio -kode oop

Installeer hierdie 2 uitbreidings:

  • Afstandsbediening - SSH
  • Remote - SSH: Konfigurasie lêers wysig

Druk Visual Studio Code F1 in en tik ssh in

Kies Remote SSH: Voeg nuwe SSH -gasheer by

Vul ssh pi@IP-adres in

Druk in die volgende stap enter

Die verbinding is nou gemaak met die Pi. U kan aan die Pi koppel deur op F1 te druk en verbinding met eksterne gasheer te kies.

Voer die wagwoord in sodat Visual Studio Code toegang tot die Pi het.

Nog 'n ding: installeer die Python -uitbreiding op die afgeleë masjien, sodat u die kode maklik kan laat loop en ontfout.

Stap 3: Fritzing -diagram

Fritzing diagram
Fritzing diagram
Fritzing diagram
Fritzing diagram
Fritzing diagram
Fritzing diagram

In hierdie stap sal ek die kring verduidelik.

Die skemas hierbo is gemaak met Fritzing.

GS motor:

Koppel GPIO 18 aan die basis van die kollektor, die middelste pen op 'n npn -transistor. Verbind die grond van die motor met die versamelaar vanaf die transistor en die krag van die motor met 5V. Verbind die grond van die transistor met die grondlyn. Koppel die diode in die versperring oor die motor sodat dit die stroom nie direk na die transistor vloei nie.

Stapmotor:

Koppel die stapmotor aan die beheerbord. Op die bedieningsbord is daar penne aan die een kant om 5V en grond aan te sluit. Die ander penne is beheerpenne. Hierdie penne beheer die magnete in die motor sodat dit kan draai. Koppel hierdie penne aan GPIO 12, 16, 20 en 21 op die Raspberry Pi.

Ultrasoniese HC-SR04:

Hierdie sensor kan afstande meet tot ongeveer 4,5 meter met behulp van klank.

Koppel die VCC -pen aan die 5V, die snellerpen aan GPIO 25, die eggo -pen met 'n weerstand van 470 Ohm op GPIO 24 en die grond met 'n weerstand van 470 Ohm op die grond.

MPU6050:

Koppel die VCC -pen aan 3V3, die grond tot die grond, scl aan die scl op die Pi en die sda na sda op die Pi. Vir hierdie sensor gebruik ek I2C om dit te beheer. U kan hier meer hieroor lees. Hier is 'n basiese verduideliking: Die Pi is die meester en die MPU6050 is die slaaf. Deur die scl -lyn beheer die Pi die tydsberekeninge en die sda -lyn word gebruik om data van die meester na die slaaf of van die slaaf na die meester te stuur. Slegs die meester kan data -oordrag begin.

Weerstand van lig afhanklik:

Om die korrekte lesings van die LDR te kry, gebruik ek 'n MCP3008 -chip. Dit verseker dat die lesings van die ldr stabiel is en korrek omgeskakel word van analoog na digitale seine.

Koppel 3V3 aan die een kant van die ldr met 'n weerstand van 10K Ohm tussenin. Verbind 'n draad tussen die ldr en die weerstand met die kanaal 0 van die MCP3008. Koppel dan die ander kant van die ldr aan die grond.

LCD -skerm:

U kan die LCD -skerm sonder 'n PCF8574 gebruik, maar omdat die GPIO -penne op die Pi beperk is, gebruik ek 'n PCF8574 om 'n paar GPIO -penne te stoor. U kan ook 'n skofregister gebruik, maar ek verkies 'n PCF8574. U kan die PCF8574 beheer met die SMbus -protokol, maar ek het my eie klas geskryf om dit te beheer. Die potensiometer beheer die kontras.

LCD -skermpenne:

  • VSS na die grond
  • VDD tot 5V
  • V0 na die veranderlike pen van die potensiometer
  • RS na GPIO 13
  • R/W na die grond, want ek skryf net na die skerm en lees nie
  • E na GPIO 19
  • DB0 tot P0 van die PCF
  • DB1 tot P1
  • DB2 tot P2
  • DB3 tot P3
  • DB4 tot P4
  • DB5 tot P5
  • DB6 tot P6
  • DB7 tot P7
  • LED+ tot 5V
  • LED- grond toe

PCF8574 penne:

  • A0 grond toe
  • A1 grond toe
  • A2 grond toe
  • Grond tot grond
  • VCC tot 5V
  • SDA na GPIO 27
  • SCL tot GPIO 22 met weerstand van 330 Ohm

U het moontlik nie LED+ en LED nie, afhangende van die tipe skerm wat u het. LED+ en LED- is vir die agtergrond.

Verbind die positiewe kant van die potensiometer met 5V en die grond met die grond.

Maak seker dat u optrekweerstands gebruik!

Stap 4: Kode op Github

U kan al die nodige kode op my Github vind.

Vouerprojek 1:

Hierdie gids bevat al die kode vir die backend. In die gids Klasses is al die klasse om die hardeware te beheer.

Die lêergids bevat twee lêers: Database.py en DataRepository.py. Database.py behou die verbinding met die databasis en hanteer navrae. DataRepository.py bevat al die navrae wat nodig is vir die webwerf.

App.py is die hooflêer van die backend. Hierdie lêer begin outomaties wanneer die Pi begin.

Config.py bevat 'n paar instellings om aan te sluit op die databasis. Maak seker dat u hierdie lêers met u eie inligting invul.

U kan hierdie gids oral in u tuisgids plaas.

Folder html:

Hierdie gids bevat al die lêers vir die webwerf, die voorkant.

  • Die gids bevat die lêers vir die uitleg van die webwerf.
  • Lettertipes bevat die lettertipes wat op die webwerf gebruik word.
  • Die script bevat al die Javascript -lêers om die webwerf dinamies te maak

Hierdie gids moet in die map/var/www/html wees

U kan 'n lêer of gids met hierdie opdrag kopieer:

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

Om na die webwerf te gaan, tik in u blaaier die IP-adres wat op die LCD-skerm verskyn.

Stap 5: Genormaliseerde databasisstruktuur

Genormaliseerde databasisstruktuur
Genormaliseerde databasisstruktuur

In hierdie stap gaan ons die databasis invoer.

  1. Koppel aan u Raspberry Pi met MySQL Workbench
  2. Klik op bediener -> data -invoer
  3. Kies Importeer selfstandige lêer
  4. In die gids Database-uitvoer vanaf Github is daar 'n sql-lêer genaamd dump_project1.sql
  5. Blaai na hierdie lêer en klik op begin invoer

Dis dit. Die Pi kan nou toegang tot die databasis kry as dit die korrekte inligting het.

Stap 6: Kassie vir die kaartverspreider

Kassie vir die kaartverspreider
Kassie vir die kaartverspreider
Kassie vir die kaartverspreider
Kassie vir die kaartverspreider
Kassie vir die kaartverspreider
Kassie vir die kaartverspreider

In hierdie stap sal ek verduidelik wat ek vir die saak gebruik het en hoe ek alles gemonteer het.

Vir die saak het ek 2 ABS -bokse gebruik:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Die gate wat ek in die bokse gemaak het

'N Gat vir die LCD -skerm, 3 gate vir die kragkabels, een vir die drade van die stapmotor, die GS -motor en die ultrasoniese sensor.

In die kleinste boks het ek 'n gat vir die drade gemaak van die komponente en 'n gat vir die kaarte om deur te gaan. Aan die bokant het ek die grootste gat gemaak sodat jy speelkaarte in die toestel kan plaas.

Ek het die GS -motor gemonteer met 'n hakie en 'n dubbelzijdige band. Ek het 'n houtbord gemaak om die kaarte op te lê met 'n gat vir die wiel om 'n kaart te skiet.

Ek het gekies vir ABS -plastiek omdat dit liggewig is, sodat die stapmotor dit maklik kan draai. Hout kan baie swaar wees en die stepper motor kan probleme hiermee ondervind. Om die gate te sny, gebruik ek 'n boor met boorpunte wat ontwerp is vir metaal en 'n Dremel. Om die groter gate te sny, verg baie meer werk en 'n malsaag sou beter wees.

Stap 7: Program as a Service

Dit is regtig handig om die kode te laat begin nadat die Pi opgestart is. Daarvoor gaan ons 'n diens lewer.

Skep 'n nuwe lêer genaamd smartcard.service met die volgende opdrag:

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

Dit moet in die lêer ingaan:

[Eenheid]

Beskrywing = Smart card backend After = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = erwe StandardError = erwe Herstart = altyd Gebruiker = pi [Installeer] WantedBy = multi-user.target WorkingDirectory is die pad na die gids waar die program geleë is

Nou het u u eie slimkaart gekry!

Aanbeveel: