Քարտի ավտոմատ դիստրիբյուտոր `7 քայլ
Քարտի ավտոմատ դիստրիբյուտոր `7 քայլ
Anonim
Քարտերի ավտոմատ դիստրիբյուտոր
Քարտերի ավտոմատ դիստրիբյուտոր

Ես ընտրել եմ խելացի քարտերի դիստրիբյուտորը որպես իմ առաջին նախագիծ, քանի որ սիրում եմ քարտախաղ խաղալ: Ամենից շատ ինձ դուր չի գալիս դիլինգ քարտերը: Յուրաքանչյուր խաղի համար պետք է հիշել, թե քանի քարտ է ստանում յուրաքանչյուր մարդ: Դա շփոթեցնող է դառնում, երբ շատ քարտային խաղեր գիտես: Իմ նախագիծը կօգնի նաև այն մարդկանց, ովքեր խնդիրներ ունեն քարտերի բաշխման հետ, ինչպես տարեցները և մարդիկ, ովքեր տառապում են Պարկինսոնից:

Պարագաներ

  • 1 Raspberry Pi (ես օգտագործեցի Raspberry Pi 4)
  • SD քարտ (առաջարկվում է 16 ԳԲ)
  • 1 թխվածքաբլիթ Raspberry Pi- ի համար (T- կտոր)
  • 2 տախտակ
  • 1 Էներգամատակարարման մոդուլ հացահատիկի համար, 5V և 3V3
  • 1 LCD էկրան
  • 1 պոտենցիոմետր
  • 1 MPU6050 (արագացուցիչ և գիրոսկոպ)
  • 1 NPN տրանզիստորներ
  • 1 PCF8574N I/O ընդլայնիչ
  • 1 քայլ շարժիչ
  • 1 ULN2003 ճեղքման տախտակ `սլաքային շարժիչը կառավարելու համար
  • 1 HC-SR04 ուլտրաձայնային տվիչ
  • 1 5V DC շարժիչ
  • 1 դիոդ
  • 6 470 Օմ դիմադրություն
  • 4 10K Օմ դիմադրություն
  • Էլեկտրական լար `ամեն ինչ միացնելու համար

Օգտակար է պատրաստել պատրաստելիս

  • Sոդման երկաթ
  • Sոդող
  • Dremel կամ jig saw (փայտ և պլաստմասսա կտրելու բան)

Softwareրագրային ապահովում:

  • Մածիկ
  • MySQL աշխատանքային սեղան
  • Win32 Disk Imager
  • Կոդի խմբագիր (խորհուրդ եմ տալիս Visual Studio Code)
  • WinSCP
  • Ռասպյան պատկերը

Քայլ 1: Rasperry Pi- ի պատրաստում

Նախ պետք է պատրաստել Raspberry Pi- ն, նախքան որևէ այլ բան անելը: Քանի որ ամեն ինչ կաշխատի Pi- ով, այնպես որ սա քարտի դիստրիբյուտորի ամենակարևոր կտորներից մեկն է:

Տեղադրում:

Ներբեռնեք Raspbian պատկերը https://www.raspberrypi.org/downloads/raspberry-pi-os/ կայքից

  1. Ներբեռնեք ZIP ֆայլը
  2. Քաշեք ZIP ֆայլը, որտեղից կարող եք հեշտությամբ գտնել այն
  3. Բացեք Win32 Disk Imager- ը և ընտրեք արդյունահանված պատկերը
  4. Բացվող ընտրացանկում ընտրեք SD քարտը և կտտացրեք գրել
  5. Գրելու գործընթացն ավարտվելուց հետո կարող եք փակել Win32 Disk Imager- ը

Այժմ մենք պետք է մի քանի այլ բան անենք, նախքան Pi- ին միանալը

  1. Գնացեք SD քարտի բեռնախցիկի թղթապանակ
  2. Բացեք ֆայլը cmdline.txt
  3. Տողատակի վերջում ավելացրած 'ip = 169.254.10.1' ՝ բացատով
  4. Պահեք և դուրս եկեք ֆայլից
  5. Նույն գրացուցակում ստեղծեք ssh անունով ֆայլ և հեռացրեք ընդլայնումը (սա հնարավորություն կտա ssh- ն առաջին բեռնման ժամանակ, որպեսզի մենք կարողանանք միանալ Pi- ին)
  6. Ապահով դուրս հանեք SD քարտը և դրեք այն Pi- ի մեջ

Այժմ մենք կարող ենք միանալ Pi- ին.

  1. Բռնեք մի Ethernet մալուխ և մի ծայրը տեղադրեք Pi- ի մեջ, իսկ մյուս ծայրը ՝ համակարգչի մեջ
  2. Բաց ծեփամածիկ
  3. Հյուրընկալողի անվան դաշտում մուտքագրեք 169.254.10.1
  4. Համոզվեք, որ SSH- ն ընտրված է, և պորտը 22 է
  5. Սեղմեք բաց
  6. Եթե նախազգուշացում եք ստանում, կարող եք պարզապես շարունակել և անտեսել այն
  7. Օգտվողի անունը pi է, իսկ գաղտնաբառը ՝ ազնվամորի

Softwareրագրակազմի կազմաձևում և տեղադրում

Բացեք raspi-config- ը հետևյալ հրամանով.

sudo raspi-config

Ընտրեք 5 -րդ տարբերակը `Ինտերֆեյսի ընտրանքներ

Միացնել SPI- ն և I2C- ն

3 -րդ տարբերակում անջատեք հետևյալ իրերը. Բեռնման ընտրանքներ.

  • Ջուր շաղ տալ էկրանին
  • Գործարկման համար ընտրեք cli և ոչ աշխատասեղան

Wifi կարգավորում.

Wifi- ն օգտակար է վեբ կայք հեշտությամբ նավարկելու համար: Համոզվեք, որ ձեր WiFi հավատարմագրերը փակ են:

Wi -Fi- ի տեղադրման համար մեզ անհրաժեշտ է մի քանի բան.

Ավելացրեք ձեր wifi- ն `օգտագործելով այս հրամանը և ձեր տեղեկատվությանը փոխեք SSID- ն ու PASSWORD- ը.

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

Կատարեք այս հրամանը ՝ ձեր WiFi- ի վերակազմակերպման համար.

sudo wpa_cli

Ընտրեք ճիշտ ինտերֆեյսը.

ինտերֆեյս wlan0

Վերակազմավորեք ինտերֆեյսը.

վերակազմավորել

Ստուգեք, արդյոք վերակազմավորումը հաջողվեց այս հրամանով.

ip a

Եթե wlan0 ինտերֆեյսում տեսնում եք IP հասցե, ապա ամեն ինչ կարգավորված է:

Օպերացիոն համակարգի թարմացում

Թարմացրեք օպերացիոն համակարգը այս 2 հրամանով.

sudo apt թարմացում

sudo apt լրիվ արդիականացում

MariaDB- ի կարգավորում

Apache վեբ սերվերի տեղադրում.

sudo apt տեղադրել apache2 -y

MariaDB սերվերի տեղադրում.

sudo apt տեղադրել mariadb -server -y

Այժմ մենք պետք է վերագործարկենք.

sudo վերագործարկում

Խորհուրդ է տրվում ապահովել MariaDB տեղադրումը: Դուք կարող եք դա անել ՝ գործարկելով այս հրամանը.

sudo mysql_secure_installation

Նախ ձեզանից կպահանջվի ընթացիկ արմատային գաղտնաբառ, սակայն կանխադրված տեղադրումը չունի այն, այնպես որ սեղմեք enter:

Հաջորդը ձեզ կհարցնեն, թե արդյոք ցանկանում եք արմատային գաղտնաբառ սահմանել, մուտքագրեք y: Համոզվեք, որ կարող եք հիշել գաղտնաբառը:

  • Մուտքագրեք y ՝ անանուն օգտվողներին հեռացնելու համար
  • Մուտքագրեք y ՝ արմատային մուտքը հեռակա կարգով անջատելու համար
  • Մուտքագրեք y ՝ թեստային տվյալների շտեմարանները հեռացնելու և դրան մուտք գործելու համար
  • Մուտքագրեք y ՝ առավելությունները վերբեռնելու համար

Ձեր MariaDB- ի տեղադրումը պետք է ապահով լինի:

Այժմ մենք կարող ենք ստեղծել նոր օգտվող.

Մուտքագրեք mysql վահանակը այս հրամանով.

sudo mysql

Ստեղծեք օգտվող mysql անունով և գաղտնաբառով (your_password) հետևյալ հրամանները.

ստեղծել օգտվողի mysql@localhost ՝ նույնականացված «your_password» - ով;

* * * * բոլոր առավելությունները շնորհեք mysql@localhost- ին;

FLԱՌԱՅԻՆ ԱՌԱIՆՈԹՅՈՆՆԵՐ;

Այս հրամանից դուրս եկեք mysql shell- ից.

ելք;

Python փաթեթներ

Python- ը պետք է արդեն տեղադրված լինի, եթե չեք ընտրել Lite տարբերակը.

sudo apt տեղադրեք python3-pip

Մեզ անհրաժեշտ է մեծ քանակությամբ Python փաթեթներ, դրանք բոլորը կարող եք տեղադրել հետևյալ հրամանով.

pip3 տեղադրել mysql-connector-python flask-socketio flask-cors gevent gevent-websocket

Այժմ մենք պետք է նորից վերագործարկենք

sudo վերագործարկում

Քայլ 2. Visual Studio կոդի և MySQL Workbench- ի տեղադրում

Pi- ին միանալը MySQL Workbench- ով

Բացեք MySQL Workbench- ը

Նոր կապ հաստատեք Pi- ի հետ հետևյալ տեղեկատվությամբ.

  • Միացման անվանումը ՝ Raspi
  • Միացման եղանակ. Ստանդարտ TCP/IP SSH- ի միջոցով
  • SSH Hostname: Pi- ի IP հասցեն

IP հասցեն կարող եք ստանալ այս հրամանով.

ip a

  • SSH Մականուն: pi
  • MySQL հյուրընկալողի անունը ՝ 127.0.0.1
  • MySQL սերվերի նավահանգիստ ՝ 3306
  • Մականուն: mysql

Կտտացրեք ok և մուտքագրեք pi օգտվողի գաղտնաբառը, այնուհետև մուտքագրեք օգտվողի mysql գաղտնաբառը:

Visual Studio կոդի տեղադրում

Բացեք Visual Studio Code- ը

Տեղադրեք այս 2 ընդլայնումները.

  • Հեռակա - SSH
  • Հեռակա - SSH: կազմաձևման ֆայլերի խմբագրում

Սեղմեք Visual Studio Code F1- ում և մուտքագրեք ssh

Ընտրեք Հեռակա SSH. Ավելացրեք նոր SSH հյուրընկալող

Լրացրեք ssh pi@IP- հասցեն

Հաջորդ քայլում սեղմեք enter

Այժմ կապը կատարվում է Pi- ի հետ: Դուք կարող եք Pi- ին միանալ ՝ սեղմելով F1 և ընտրելով միացում Հեռակա սերվերին:

Մուտքագրեք գաղտնաբառը, որպեսզի Visual Studio Code- ին հասանելի լինի Pi- ն:

Եվս մեկ բան. Տեղադրեք Python ընդլայնումը հեռակա մեքենայի վրա, որպեսզի կարողանաք հեշտությամբ գործարկել և կարգաբերել կոդը:

Քայլ 3. Փխրման դիագրամ

Ֆրիտզինգի դիագրամ
Ֆրիտզինգի դիագրամ
Ֆրիտզինգի դիագրամ
Ֆրիտզինգի դիագրամ
Ֆրիտզինգի դիագրամ
Ֆրիտզինգի դիագրամ

Այս քայլում ես կբացատրեմ միացումը:

Վերոնշյալ սխեմաները պատրաստված են Fritzing- ով:

DC շարժիչ:

Միացրեք GPIO 18 -ը կոլեկտորի հիմքին, միջին քորոցը npn տրանզիստորի վրա: Շարժիչի հիմքը միացրեք տրանզիստորից կոլեկտորին, իսկ շարժիչի հզորությունը `5 Վ -ին: Տրանզիստորի հիմքը միացրեք գետնի գծին: Միացրեք դիոդը շարժիչի վրա պատնեշի վրա, որպեսզի այն արգելափակի ուղիղ հոսքը ուղիղ դեպի տրանզիստոր:

Քայլ շարժիչ

Միացրեք քայլող շարժիչը կառավարման տախտակին: Կառավարման տախտակի վրա մի կողմում կան 5V և գետնին միացնող կապիչներ: Մնացած քորոցները վերահսկիչ են: Այս կապումներն վերահսկում են շարժիչի ներսում գտնվող մագնիսները, որպեսզի այն շրջվի: Միացրեք այս կապումները GPIO 12, 16, 20 և 21 -ին Raspberry Pi- ում:

HC-SR04 Ուլտրաձայնային

Այս տվիչը ձայնի միջոցով կարող է չափել մոտ 4,5 մետր հեռավորություն:

Միացրեք VCC կապը 5 Վ -ին, ձգան կապիչը GPIO 25 -ին, էխոյի քորոցը ՝ 470 Օմ դիմադրիչով GPIO 24 -ին և գետինը ՝ 470 Օմ դիմադրիչով գետնին:

MPU6050:

VCC կապը միացրեք 3V3- ին, գետինը գետնին, scl- ը ՝ Pi- ի scl- ին, իսկ sda- ն ՝ sda- ին Pi- ին: Այս սենսորի համար ես օգտագործում եմ I2C այն վերահսկելու համար: Դրա մասին ավելին կարող եք կարդալ այստեղ: Ահա հիմնական բացատրությունը. Pi- ն վարպետն է, իսկ MPU6050- ը ՝ ստրուկը: Scl գծի միջոցով Pi- ն վերահսկում է ժամկետները, և sda գիծը օգտագործվում է ՝ տվյալները տիրոջից ստրուկին կամ ստրուկից ՝ տիրոջը ուղարկելու համար: Միայն վարպետը կարող է նախաձեռնել տվյալների փոխանցում:

Լույսից կախված դիմադրություն

LDR- ից ճիշտ ընթերցումներ ստանալու համար ես օգտագործում եմ MCP3008 չիպ: Սա ապահովում է, որ ldr- ի ընթերցումները կայուն և ճիշտ փոխարկվեն անալոգայինից թվային ազդանշանների:

3V3- ը միացրեք ldr- ի մի կողմին, որի միջև կա 10K Օմ դիմադրություն: Ldr- ի և դիմադրության միջև մետաղալար միացրեք MCP3008- ի 0 ալիքին: Այնուհետև ldr- ի մյուս կողմը միացրեք գետնին:

LCD էկրան

Դուք կարող եք օգտագործել LCD էկրանը առանց PCF8574- ի, բայց քանի որ Pi- ի GPIO կապերը սահմանափակ են, ես օգտագործում եմ PCF8574 ՝ որոշ GPIO կապում պահելու համար: Կարող եք նաև օգտագործել հերթափոխի գրանցամատյան, բայց ես նախընտրում եմ PCF8574- ը: Դուք կարող եք վերահսկել PCF8574- ը SMbus արձանագրությամբ, բայց ես այն գրել եմ իմ սեփական դասը `այն վերահսկելու համար: Պոտենցիոմետրը վերահսկում է հակադրությունը:

LCD էկրանին կապում

  • VSS գետնին
  • VDD- ից մինչև 5V
  • V0 դեպի պոտենցիոմետրի փոփոխական քորոցը
  • RS- ից GPIO 13
  • R/W գետնին, քանի որ ես միայն գրում եմ էկրանին և չեմ կարդում
  • E- ից GPIO 19 -ին
  • PCF- ի DB0- ից P0
  • DB1- ից P1
  • DB2- ից P2
  • DB3- ից P3
  • DB4- ից P4
  • DB5- ից P5
  • DB6- ից P6
  • DB7- ից P7
  • LED+ մինչև 5V
  • LED- գետնին

PCF8574 կապում:

  • A0 գետնին
  • A1 գետնին
  • A2 գետնին
  • Հողից գետին
  • VCC- ից մինչև 5V
  • SDA- ից GPIO 27 -ին
  • SCL- ից GPIO 22 -ին `330 Օմ դիմադրությամբ

Հնարավոր է, որ դուք չունեք LED+ և LED- կախված նրանից, թե ինչ տեսակի էկրան եք ստացել: LED+ և LED- լուսարձակի համար է:

Միացրեք պոտենցիոմետրի դրական կողմը 5 Վ -ին, իսկ գետինը ՝ գետնին:

Համոզվեք, որ օգտագործում եք Pull-up resistors:

Քայլ 4: Կոդ Github- ում

Դուք կարող եք գտնել բոլոր անհրաժեշտ ծածկագիրը իմ Github- ում:

Թղթապանակի նախագիծ 1:

Այս թղթապանակը պարունակում է հետևի ամբողջ ծածկագիրը: Թղթապանակում Ակնոցները բոլոր դասերն են `սարքավորումները վերահսկելու համար:

Թղթապանակի պահոցները պարունակում են 2 ֆայլ ՝ Database.py և DataRepository.py: Database.py- ն պահպանում է տվյալների բազայի հետ կապը և վարում հարցումները: DataRepository.py- ն պարունակում է կայքի համար անհրաժեշտ բոլոր հարցումները:

App.py- ն հետընթացի հիմնական ֆայլն է: Այս ֆայլը ավտոմատ կերպով սկսվում է, երբ Pi- ն գործարկում է:

Config.py- ն պարունակում է տվյալների բազային միանալու մի քանի պարամետր: Համոզվեք, որ այս ֆայլերը լրացնում եք ձեր սեփական տեղեկություններով:

Դուք կարող եք տեղադրել այս թղթապանակը ձեր տնային գրացուցակում ցանկացած վայրում:

Թղթապանակ html:

Այս թղթապանակը պարունակում է կայքի համար նախատեսված բոլոր ֆայլերը ՝ ֆրոնտենդը:

  • Թղթապանակը պարունակում է կայքի դասավորության ֆայլեր:
  • Տառատեսակները պարունակում են կայքում օգտագործվող տառատեսակներ:
  • Script- ը պարունակում է Javascript- ի բոլոր ֆայլերը `կայքը դինամիկ դարձնելու համար

Այս թղթապանակը պետք է լինի թղթապանակում/var/www/html

Այս հրամանի միջոցով կարող եք պատճենել ֆայլ կամ թղթապանակ:

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

Ձեր դիտարկիչում կայք մուտք գործելու համար LCD էկրանին ցուցադրվող IP հասցեն:

Քայլ 5. Նորմալացված տվյալների բազայի կառուցվածքը

Նորմալացված տվյալների բազայի կառուցվածքը
Նորմալացված տվյալների բազայի կառուցվածքը

Այս քայլով մենք պատրաստվում ենք ներմուծել տվյալների բազան:

  1. Միացեք ձեր Raspberry Pi- ին MySQL Workbench- ով
  2. Կտտացրեք սերվեր -> տվյալների ներմուծում
  3. Ընտրեք Ներմուծել ինքնամփոփ ֆայլ
  4. Github- ից Database-export թղթապանակում կա sql ֆայլ, որը կոչվում է dump_project1.sql
  5. Գտեք այս ֆայլը և կտտացրեք սկսել ներմուծումը

Վերջ: Pi- ն այժմ կարող է մուտք գործել տվյալների բազա, եթե այն ունի ճիշտ տեղեկատվություն:

Քայլ 6: Պատյան Քարտի դիստրիբյուտորի համար

Պատյան Քարտի դիստրիբյուտորի համար
Պատյան Քարտի դիստրիբյուտորի համար
Պատյան Քարտի դիստրիբյուտորի համար
Պատյան Քարտի դիստրիբյուտորի համար
Պատյան Քարտի դիստրիբյուտորի համար
Պատյան Քարտի դիստրիբյուտորի համար

Այս քայլով ես կբացատրեմ, թե ինչ եմ օգտագործել պատյանում և ինչպես եմ ամեն ինչ ամրացրել:

Գործի համար ես օգտագործել եմ 2 ABS տուփ.

- 265 x 185 x 95 մմ

- 171 x 121 x 80 մմ

Տուփերի մեջ իմ արած անցքերը

LCD էկրանին անցք, 3 անցք հոսանքի մալուխների համար, մեկը ՝ սլաքային շարժիչից լարերի, DC շարժիչի և ուլտրաձայնային տվիչի համար:

Ամենափոքր տուփի մեջ ես անցքեր արեցի բաղադրիչներից լարերի համար և քարտերի անցք: Վերևում ես բացեցի ամենամեծ անցքը, որպեսզի կարողանաք խաղաթղթեր տեղադրել սարքում:

Ես ամրացրեցի DC շարժիչը փակագծով և երկկողմանի ժապավենով: Ես փայտե տախտակ պատրաստեցի, որպեսզի քարտերը դնեմ անիվի վրա, որպեսզի քարտ բացվի:

Ես ընտրել եմ ABS պլաստիկի համար, քանի որ այն թեթև է, այնպես որ քայլող շարժիչը կարող է հեշտությամբ պտտել այն: Փայտը կարող է իսկապես ծանր լինել, և քայլող շարժիչը կարող է խնդիրներ ունենալ դրա հետ: Փոսերը կտրելու համար ես օգտագործեցի հորատիչ ՝ մետաղի և Dremel- ի համար նախատեսված հորատիչներով: Ավելի մեծ անցքեր կտրելը շատ ավելի աշխատանք տևեց, և սղոցը ավելի լավ կլիներ:

Քայլ 7: Asրագիրը որպես ծառայություն

Իսկապես օգտակար է, որ կոդը սկսվի Pi- ի գործարկումից հետո: Դրա համար մենք պատրաստվում ենք ծառայություն մատուցել:

Ստեղծեք նոր ֆայլ, որը կոչվում է smartcard.service հետևյալ հրահանգով.

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

Սա պետք է մտնի ֆայլի մեջ.

[Միավոր]

Նկարագրություն = Smart card backend After = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = ժառանգել StandardError = ժառանգել Վերագործարկում = միշտ User = pi [Տեղադրեք] WantedBy = multi-user.target WorkingDirectory- ը այն պանակի ուղին է, որտեղ գտնվում է ծրագիրը

Այժմ դուք ունեք ձեր սեփական Smart Card- ը:

Խորհուրդ ենք տալիս: