Turinys:
- Prekės
- 1 žingsnis: „Rasperry Pi“paruošimas
- 2 veiksmas: nustatykite „Visual Studio Code“ir „MySQL Workbench“
- 3 žingsnis: Fritzing Diagrama
- 4 žingsnis: koduokite „Github“
- 5 veiksmas: normalizuota duomenų bazės struktūra
- 6 veiksmas: kortelių platintojo atvejis
- 7 žingsnis: Programuokite kaip paslaugą
Video: Automatinis kortelių platintojas: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
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š
- Atsisiųskite ZIP failą
- Ištraukite ZIP failą, kur jį lengvai rasite
- Atidarykite „Win32 Disk Imager“ir pasirinkite išgautą vaizdą
- Išskleidžiamajame meniu pasirinkite SD kortelę ir spustelėkite rašyti
- Baigę rašymo procesą, galite uždaryti „Win32 Disk Imager“
Dabar turime padaryti dar keletą dalykų, kad galėtume prisijungti prie „Pi“
- Eikite į įkrovos aplanką SD kortelėje
- Atidarykite failą cmdline.txt
- Pridėkite „ip = 169.254.10.1“eilutės pabaigoje, atskirtoje tarpais
- Išsaugokite ir išeikite iš failo
- 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)
- Saugiai išimkite SD kortelę ir įdėkite ją į „Pi“
Dabar galime prisijungti prie „Pi“:
- Paimkite eterneto kabelį ir vieną galą įkiškite į „Pi“, o kitą - į kompiuterį
- Atidarykite Putty
- Lauke „Host name“įveskite 169.254.10.1
- Įsitikinkite, kad pasirinktas SSH ir 22 prievadas
- Spustelėkite atidaryti
- Jei gausite įspėjimą, galite tiesiog tęsti ir ignoruoti
- 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
Š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
Šiame etape importuosime duomenų bazę.
- Prisijunkite prie „Raspberry Pi“naudodami „MySQL Workbench“
- Spustelėkite Serveris -> Duomenų importavimas
- Pasirinkite Importuoti savarankišką failą
- Aplanke Database-export from Github yra SQL failas, vadinamas dump_project1.sql
- Eikite į šį failą ir spustelėkite Pradėti importuoti
Viskas. „Pi“dabar gali pasiekti duomenų bazę, jei turi teisingą informaciją.
6 veiksmas: kortelių platintojo atvejis
Š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:
Prekybos kortelių aparato kortelių skaitytuvas: 13 žingsnių (su paveikslėliais)
Prekių kortelių aparato kortelių skaitytuvas: Prekybos kortelių aparato kortelių skaitytuvas Pakeitimų žurnalą galite rasti paskutiniame žingsnyje. Fonas „Card Feeder Intro“paaiškinau pagrindinę savo projekto motyvaciją. Bet trumpai tariant, aš ir mano vaikai sukaupėme daug prekybos kortelių
Kortelių tiektuvas prekybos kortelių mašinai: 10 žingsnių (su paveikslėliais)
Kortelių tiektuvas prekybos kortelių mašinai: kortelių tiektuvas prekybinių kortelių aparatui Fonas Kai buvau jaunas, surinkau daugybę prekybos kortelių, tačiau keletą metų aistra rinkti mažėjo. Tuo tarpu aš turiu vaikų ir lėtai, bet tikrai jie taip pat pradeda augti
Lazeriu supjaustytos kortelių kaladės: 3 žingsniai
Lazeriu iškirptos kortų kaladės: „Makerspace“projektuojame daugybę žaidimų, norėdami pademonstruoti koncepciją ar sistemą, apie kurią mokiniai mokėsi, arba studentus, kad jie mokytų kitus mokinius apie koncepciją ar sistemą. Turime 3D spausdintuvus, skirtus žaidimo detalėms ir elementams gaminti
Prekių kortelių aparato kortelių rūšiuotojas (atnaujinimas 2019-01-10): 12 žingsnių (su paveikslėliais)
Prekių kortelių aparato kortelių rūšiuotojas (atnaujinimas 2019-01-10): Prekių kortelių aparato kortelių rūšiuotojas Pakeitimų žurnalą galite rasti paskutiniame žingsnyje. Fonas Aš jau paaiškinau savo projekto motyvą straipsnyje Kortelių tiektuvas. Bet trumpai tariant, aš ir mano vaikai sukaupėme daug prekybos kortelės
Automatinis kortelių maišytuvas: 6 žingsniai (su nuotraukomis)
Automatinis kortelių maišytuvas: Sveiki! Šis nurodymas buvo sukurtas vykdant Pietų Floridos universiteto „Makecourse“projekto reikalavimą. (www.makecourse.com) Šioje instrukcijoje nurodysiu, kaip sukurti automatinį kortelių maišymą