Turinys:

Automatinis kortelių platintojas: 7 žingsniai
Automatinis kortelių platintojas: 7 žingsniai

Video: Automatinis kortelių platintojas: 7 žingsniai

Video: Automatinis kortelių platintojas: 7 žingsniai
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Lapkritis
Anonim
Automatinis kortelių platintojas
Automatinis kortelių platintojas

Pirmu projektu pasirinkau išmaniųjų kortelių platintoją, nes man patinka žaisti kortų žaidimą. Labiausiai nemėgstu dalinti kortelių. Kiekviename žaidime turite prisiminti, kiek kortų gauna kiekvienas žmogus. Tai tampa painu, kai žinai daug kortų žaidimų. Mano projektas taip pat padės žmonėms, turintiems problemų platinant korteles, pavyzdžiui, vyresnio amžiaus žmonėms ir žmonėms, sergantiems Parkinsono liga.

Prekės

  • 1 „Raspberry Pi“(aš naudojau „Raspberry Pi 4“)
  • SD kortelė (rekomenduojama 16 GB)
  • 1 kepsnys „Raspberry Pi“(T-gabalas)
  • 2 duonos lentos
  • 1 5V ir 3V3 maitinimo plokštės maitinimo modulis
  • 1 LCD ekranas
  • 1 potenciometras
  • 1 MPU6050 (akselerometras ir giroskopas)
  • 1 NPN tranzistorius
  • 1 PCF8574N I/O plėtiklis
  • 1 žingsninis variklis
  • 1 ULN2003 pertraukimo plokštė, skirta valdyti žingsninį variklį
  • 1 ultragarso jutiklis HC-SR04
  • 1 5 V nuolatinės srovės varikliai
  • 1 diodas
  • 6 470 omų rezistoriai
  • 4 10K omų rezistoriai
  • Elektros laidas viskam prijungti

Naudinga turėti gaminant:

  • Lituoklis
  • Lituoklis
  • „Dremel“arba pjūklas (kažkas medžiui ir abs plastikui pjauti)

Programinė įranga:

  • Glaistas
  • „MySQL“darbastalis
  • „Win32“disko vaizdavimo priemonė
  • Kodo redaktorius (rekomenduoju „Visual Studio Code“)
  • WinSCP
  • Raspianiškas vaizdas

1 žingsnis: „Rasperry Pi“paruošimas

Prieš pradėdami ką nors daryti, pirmiausia turime paruošti „Raspberry Pi“. Kadangi viskas veiks „Pi“, tai yra vienas iš svarbiausių kortelių platintojo elementų.

Montavimas:

Atsisiųskite Raspbian vaizdą iš

  1. Atsisiųskite ZIP failą
  2. Ištraukite ZIP failą, kur jį lengvai rasite
  3. Atidarykite „Win32 Disk Imager“ir pasirinkite išgautą vaizdą
  4. Išskleidžiamajame meniu pasirinkite SD kortelę ir spustelėkite rašyti
  5. Baigę rašymo procesą, galite uždaryti „Win32 Disk Imager“

Dabar turime padaryti dar keletą dalykų, kad galėtume prisijungti prie „Pi“

  1. Eikite į įkrovos aplanką SD kortelėje
  2. Atidarykite failą cmdline.txt
  3. Pridėkite „ip = 169.254.10.1“eilutės pabaigoje, atskirtoje tarpais
  4. Išsaugokite ir išeikite iš failo
  5. Tame pačiame kataloge sukurkite failą pavadinimu ssh ir pašalinkite plėtinį (tai įgalins ssh pirmą kartą paleidus, kad galėtume prisijungti prie Pi)
  6. Saugiai išimkite SD kortelę ir įdėkite ją į „Pi“

Dabar galime prisijungti prie „Pi“:

  1. Paimkite eterneto kabelį ir vieną galą įkiškite į „Pi“, o kitą - į kompiuterį
  2. Atidarykite Putty
  3. Lauke „Host name“įveskite 169.254.10.1
  4. Įsitikinkite, kad pasirinktas SSH ir 22 prievadas
  5. Spustelėkite atidaryti
  6. Jei gausite įspėjimą, galite tiesiog tęsti ir ignoruoti
  7. Vartotojo vardas yra pi, o slaptažodis - avietinis

Programinės įrangos konfigūravimas ir diegimas:

Atidarykite raspi-config naudodami šią komandą:

sudo raspi-config

Pasirinkite 5 -ą parinktį: sąsajos parinktys

Įgalinti SPI ir I2C

Trečioje parinktyje išjunkite šiuos dalykus: Įkrovos parinktys:

  • Ekrano užsklanda
  • Pradžiai pasirinkite „cli“, o ne darbalaukį

„Wi -Fi“sąranka:

„Wifi“yra naudingas norint lengvai pereiti prie svetainės. Įsitikinkite, kad turite „Wi -Fi“prisijungimo duomenis.

Norėdami nustatyti „Wi -Fi“, mums reikia kelių dalykų:

Pridėkite „Wi -Fi“naudodami šią komandą ir pakeiskite SSID ir PASSWORD į savo informaciją:

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

Vykdykite šią komandą, kad sukonfigūruotumėte „Wi -Fi“:

sudo wpa_cli

Pasirinkite tinkamą sąsają:

sąsaja wlan0

Iš naujo sukonfigūruokite sąsają:

perkonfigūruoti

Su šia komanda patikrinkite, ar perstatymas buvo sėkmingas:

ip a

Jei „wlan0“sąsajoje matote IP adresą, tada viskas yra nustatyta.

Atnaujinama operacinė sistema

Atnaujinkite operacinę sistemą šiomis 2 komandomis:

sudo apt atnaujinimas

sudo apt pilnas atnaujinimas

„MariaDB“nustatymas:

„Apache“žiniatinklio serverio diegimas:

sudo apt įdiegti apache2 -y

Įdiegus „MariaDB“serverį:

sudo apt įdiegti mariadb -server -y

Dabar turime iš naujo paleisti:

sudo perkraukite

Rekomenduojama apsaugoti „MariaDB“diegimą. Tai galite padaryti vykdydami šią komandą:

sudo mysql_secure_installation

Pirmiausia jūsų bus paprašyta įvesti dabartinį šakninį slaptažodį, tačiau numatytasis diegimas jo neturi, todėl paspauskite „Enter“.

Tada jūsų paklaus, ar norite nustatyti pagrindinį slaptažodį, įveskite y. Įsitikinkite, kad galite prisiminti slaptažodį!

  • Norėdami pašalinti anoniminius vartotojus, įveskite y
  • Įveskite y, jei norite išjungti root prisijungimą nuotoliniu būdu
  • Norėdami pašalinti bandymų duomenų bazes ir prieigą prie jų, įveskite y
  • Jei norite iš naujo įkelti privilegijas, įveskite y

Jūsų „MariaDB“diegimas turėtų būti saugus!

Dabar galime sukurti naują vartotoją:

Įveskite „mysql“apvalkalą naudodami šią komandą:

sudo mysql

Sukurkite vartotoją naudodami „mysql“vartotojo vardą ir slaptažodį („your_password“) šias komandas:

sukurti vartotoją mysql@localhost, identifikuotą pagal „your_password“;

suteikti visas privilegijas *. * mysql@localhost;

PLŪŠIMO PRIVILEGIJOS;

Išeikite iš „mysql“apvalkalo naudodami šią komandą:

išėjimas;

„Python“paketai:

„Python“jau turėtų būti įdiegtas, nebent pasirinkote „Lite“versiją:

sudo apt įdiegti python3-pip

Mums reikia gero „Python“paketų kiekio, juos visus galite įdiegti naudodami šią komandą:

pip3 įdiegti mysql-connector-python kolba-socketio kolba-cors gevent gevent-websocket

Dabar turime dar kartą paleisti iš naujo

sudo perkraukite

2 veiksmas: nustatykite „Visual Studio Code“ir „MySQL Workbench“

Prisijungimas prie „Pi“naudojant „MySQL Workbench“:

Atidarykite „MySQL Workbench“

Užmegzkite naują ryšį su „Pi“naudodami šią informaciją:

  • Ryšio pavadinimas: Raspi
  • Ryšio būdas: standartinis TCP/IP per SSH
  • SSH pagrindinio kompiuterio pavadinimas: „Pi“IP adresas

IP adresą galite gauti naudodami šią komandą:

ip a

  • SSH vartotojo vardas: pi
  • „MySQL“pagrindinio kompiuterio pavadinimas: 127.0.0.1
  • „MySQL“serverio prievadas: 3306
  • Vartotojo vardas: mysql

Spustelėkite Gerai ir įveskite vartotojo pi slaptažodį, tada įveskite vartotojo mysql slaptažodį.

„Visual Studio“kodo nustatymas:

Atidarykite „Visual Studio Code“

Įdiekite šiuos 2 plėtinius:

  • Nuotolinis - SSH
  • Nuotolinis - SSH: konfigūracijos failų redagavimas

Paspauskite „Visual Studio Code F1“ir įveskite ssh

Pasirinkite Nuotolinis SSH: pridėkite naują SSH prieglobą

Užpildykite ssh pi@IP-adresą

Kitame žingsnyje paspauskite „Enter“

Dabar ryšys su „Pi“. Galite prisijungti prie „Pi“paspausdami F1 ir pasirinkę prisijungti prie nuotolinio kompiuterio.

Įveskite slaptažodį, kad „Visual Studio Code“galėtų pasiekti „Pi“.

Dar vienas dalykas: įdiekite „Python“plėtinį į nuotolinį kompiuterį, kad galėtumėte lengvai paleisti ir derinti kodą.

3 žingsnis: Fritzing Diagrama

Fritzingo diagrama
Fritzingo diagrama
Fritzingo diagrama
Fritzingo diagrama
Fritzingo diagrama
Fritzingo diagrama

Šiame žingsnyje aš paaiškinsiu grandinę.

Aukščiau pateiktos schemos sudarytos naudojant „Fritzing“.

DC variklis:

Prijunkite GPIO 18 prie kolektoriaus pagrindo, npn tranzistoriaus vidurinio kaiščio. Prijunkite variklio įžeminimą prie kolektoriaus iš tranzistoriaus, o variklio galia - 5 V. Prijunkite tranzistoriaus įžeminimą prie įžeminimo linijos. Prijunkite diodą prie barjero virš variklio, kad jis neleistų srovei tekėti tiesiai į tranzistorių.

Žingsninis variklis:

Prijunkite žingsninį variklį prie valdymo plokštės. Valdymo plokštėje vienoje pusėje yra kaiščiai, skirti prijungti 5V ir įžeminimą. Kiti kaiščiai yra valdymo kaiščiai. Šie kaiščiai valdo magnetus variklio viduje, kad jis galėtų pasisukti. Prijunkite šiuos kaiščius prie „Raspberry Pi“GPIO 12, 16, 20 ir 21.

Ultragarsinis HC-SR04:

Šis jutiklis gali išmatuoti atstumą iki maždaug 4,5 metro, naudodamas garsą.

Prijunkite VCC kaištį prie 5 V, gaiduko kaiščio prie GPIO 25, aido kaiščio su 470 omų rezistoriumi prie GPIO 24 ir įžeminimo su 470 omų rezistoriumi prie žemės.

MPU6050:

Prijunkite VCC kaištį prie 3V3, žemės į žemę, scl prie Pi scl ir sda prie sda prie Pi. Šiam jutikliui valdyti naudoju I2C. Daugiau apie tai galite paskaityti čia. Štai pagrindinis paaiškinimas: Pi yra pagrindinis, o MPU6050 - vergas. Per scl liniją Pi kontroliuoja laiką, o sda linija naudojama duomenims siųsti iš valdovo į vergą arba iš vergo į pagrindinį. Tik kapitonas gali pradėti duomenų perdavimą.

Nuo šviesos priklausomas rezistorius:

Norėdami gauti teisingus LDR rodmenis, naudoju MCP3008 mikroschemą. Tai užtikrina, kad rodmenys iš ldr yra stabilūs ir teisingi, konvertuoti iš analoginių į skaitmeninius signalus.

Prijunkite 3V3 prie vienos ldr pusės, tarp kurių yra 10 K omų rezistorius. Tarp ldr ir rezistoriaus prijunkite laidą prie MCP3008 kanalo 0. Tada prijunkite kitą ldr pusę prie žemės.

LCD ekranas:

Skystųjų kristalų ekraną galite naudoti be PCF8574, tačiau kadangi „Pi“GPIO kaiščiai yra riboti, naudoju PCF8574, kad išsaugotų kai kuriuos GPIO kaiščius. Taip pat galite naudoti pamainų registrą, bet man labiau patinka PCF8574. Galite valdyti PCF8574 naudodami SMbus protokolą, bet aš parašiau savo klasę, kad jį valdyčiau. Potenciometras kontroliuoja kontrastą.

LCD ekrano kaiščiai:

  • VSS į žemę
  • VDD iki 5V
  • V0 prie kintamo potenciometro kaiščio
  • RS į GPIO 13
  • R/W į žemę, nes aš rašau tik į ekraną, o ne skaitau
  • E iki GPIO 19
  • PCF nuo DB0 iki P0
  • Nuo DB1 iki P1
  • Nuo DB2 iki P2
  • Nuo DB3 iki P3
  • Nuo DB4 iki P4
  • Nuo DB5 iki P5
  • Nuo DB6 iki P6
  • Nuo DB7 iki P7
  • LED+ iki 5V
  • LED- į žemę

PCF8574 kaiščiai:

  • A0 į žemę
  • A1 į žemę
  • A2 į žemę
  • Nuo žemės iki žemės
  • VCC iki 5V
  • SDA į GPIO 27
  • SCL į GPIO 22 su 330 omų rezistoriumi

Priklausomai nuo to, kokio tipo ekraną gavote, gali nebūti LED+ ir LED-. LED+ ir LED- yra skirti foniniam apšvietimui.

Prijunkite teigiamą potenciometro pusę prie 5 V, o žemę prie žemės.

Būtinai naudokite traukiamus rezistorius!

4 žingsnis: koduokite „Github“

Visą reikiamą kodą galite rasti mano „Github“.

Aplanko projektas1:

Šiame aplanke yra visas vidinės sistemos kodas. Aplanke „Klasses“yra visos aparatūros valdymo klasės.

Aplanko saugyklose yra 2 failai: Database.py ir DataRepository.py. Database.py palaiko ryšį su duomenų baze ir tvarko užklausas. „DataRepository.py“yra visos užklausos, reikalingos svetainei.

„App.py“yra pagrindinis vidinės programos failas. Šis failas paleidžiamas automatiškai, kai „Pi“paleidžiamas.

Config.py yra keletas nustatymų, kaip prisijungti prie duomenų bazės. Būtinai užpildykite šiuos failus savo informacija.

Šį aplanką galite įdėti bet kurioje namų katalogo vietoje.

Aplanko html:

Šiame aplanke yra visi svetainės failai.

  • Aplanke yra svetainės išdėstymo failai.
  • Šriftuose yra svetainėje naudojami šriftai.
  • Skripte yra visi „Javascript“failai, kad svetainė būtų dinamiška

Šis aplankas turi būti aplanke/var/www/html

Failą ar aplanką galite nukopijuoti naudodami šią komandą:

sudo mv/kelias/į/dabartinis/katalogas/kelias/į/paskirties vietą/katalogą

Norėdami naršyklėje pereiti prie svetainės tipo, LCD ekrane rodomas IP adresas.

5 veiksmas: normalizuota duomenų bazės struktūra

Normalizuota duomenų bazės struktūra
Normalizuota duomenų bazės struktūra

Šiame etape importuosime duomenų bazę.

  1. Prisijunkite prie „Raspberry Pi“naudodami „MySQL Workbench“
  2. Spustelėkite Serveris -> Duomenų importavimas
  3. Pasirinkite Importuoti savarankišką failą
  4. Aplanke Database-export from Github yra SQL failas, vadinamas dump_project1.sql
  5. Eikite į šį failą ir spustelėkite Pradėti importuoti

Viskas. „Pi“dabar gali pasiekti duomenų bazę, jei turi teisingą informaciją.

6 veiksmas: kortelių platintojo atvejis

Kortelių platintojo byla
Kortelių platintojo byla
Kortelių platintojo byla
Kortelių platintojo byla
Kortelių platintojo byla
Kortelių platintojo byla

Šiame žingsnyje paaiškinsiu, ką naudojau korpusui ir kaip viską sumontavau.

Šiuo atveju naudojau 2 ABS dėžutes:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Skylės, kurias padariau dėžėse

Skylė LCD ekranui, 3 skylės maitinimo kabeliams, viena - žingsninio variklio, nuolatinės srovės variklio ir ultragarso jutiklio laidams.

Mažiausioje dėžutėje padariau skylę laidams iš komponentų ir skylę kortoms praeiti. Viršuje padariau didžiausią skylę, kad galėtumėte įrenginyje įdėti lošimo korteles.

Aš sumontavau nuolatinės srovės variklį su laikikliu ir šiek tiek dvipuse juosta. Aš padariau medinę lentą, ant kurios padėjau korteles, su skylute ratui kortai nušauti.

Aš pasirinkau ABS plastiką, nes jis yra lengvas, todėl žingsninis variklis gali jį lengvai pasukti. Mediena gali būti tikrai sunki, o žingsninis variklis gali turėti problemų. Skylėms pjauti naudoju gręžtuvą su metaliniais gręžtuvais ir „Dremel“. Didesnių skylių pjovimas pareikalavo daug daugiau darbo, o pjūklas būtų geresnis.

7 žingsnis: Programuokite kaip paslaugą

Tikrai naudinga, kad kodas prasidėtų po to, kai bus paleistas „Pi“. Tam mes ketiname teikti paslaugą.

Sukurkite naują failą, pavadintą smartcard.service, naudodami šią komandą:

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

Tai turi patekti į failą:

[Vienetas]

Aprašymas = Išmaniųjų kortelių užpakalinė dalis = = network.target [Paslauga] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = paveldėti StandardError = paveldėti Paleisti iš naujo = visada Vartotojas = pi [Įdiegti] WantedBy = kelių vartotojų.tikslas „WorkingDirectory“yra kelias į aplanką, kuriame yra programa

Dabar jūs turite savo išmaniąją kortelę!

Rekomenduojamas: