Բովանդակություն:
- Քայլ 1: Նյութեր
- Քայլ 2: Էլեկտրական միացում
- Քայլ 3: Սենսորների կոդավորում
- Քայլ 4: Սենսորների պատրաստում և տեղադրում
- Քայլ 5. Մատրիցային մոդուլի պատրաստում և տեղադրում
- Քայլ 6: Այն դարձնել IoT
- Քայլ 7: Միացրեք Raspberry Pi- ն
- Քայլ 8: Տվյալների բազայի ստեղծում
- Քայլ 9: Վեբ կայքի ստեղծում
- Քայլ 10: Միացում Համաշխարհային ցանցին
- Քայլ 11: Ավարտումը անջատված է
Video: Raspberry Pi IoT Foosball սեղան ՝ 11 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Բարի գալուստ կոտրված ֆոսբոլի սեղանի իմ տարբերակը `Նոր մեդիայի և հաղորդակցության տեխնոլոգիայի ուսանողական նախագծի շրջանակներում: Ես հիմնականում մեծացել եմ ֆոսբոլի և լողավազանի սեղանների շուրջ, ուստի մտածեցի, որ հիանալի կլինի փորձել այս սարքերից մեկը ինտերնետին միացնել:
Հիմնական կարգավորումը օգտագործում է գոյություն ունեցող foosball սեղան, որը միացված է Raspberry Pi- ին, որը կարող է կատարել հետևյալ բոլոր առաջադրանքները.
- Օգտագործում է GPIO կապում ՝ IR LED/ընդունիչներ և 8x8 կետային մատրիցային մոդուլներ վարելու համար
- Գործարկում է Flask կայքը ՝ օգտագործելով nginx
- Գործարկում է MySQL/MariaDB տվյալների շտեմարան տվյալների պահպանման համար
Այս նախագիծը վերստեղծելու համար ձեզ հարկավոր են հետևյալ հմտությունները.
Հետնապահ:
- HTML/CSS/Javascript հասկանալ կայքի հաճախորդի համար
- Python- ի ըմբռնում Flask/Flask-SocketIO/Jinja2 կայքի սերվերային կողմի համար
- MySQL- ի հիմնական իմացություն
- Իմացեք, թե ինչպես վարել վեբ սերվեր
Նախատիպ
- Հիմնական գիտելիքներ, թե ինչպես միացնել էլեկտրական սխեման
- Oldոդման
- Հիմնական հասկացություն, թե ինչպես գրել սցենար Python- ում
- Աշխատեք Linux- ի հետ (Raspbian)
- Շատ համբերություն ունենալ, քանի որ շատ վրիպազերծումներ կլինեն
Քայլ 1: Նյութեր
Ահա աղյուսակի համար անհրաժեշտ բոլոր մասերով ցուցակը.
- Raspberry Pi Model 3 (պատյանով)
- T-Cobbler ՝ Pi- ն հացահատիկին միացնելու համար
- Foosball սեղան (ես օգտագործել եմ այս սեղանին նման շատ հին սեղան: Պետք է պատրաստ լինել դրա մեջ անցքեր բացել)
- MAX7219 Arduino Dot Matrix մոդուլ (2)
- IR LED ճառագայթիչներ (2+, քանի որ դրանք կոտրվում են, ինչպես այս մեկը)
- IR ընդունիչներ (2+, քանի որ դրանք նույնպես կոտրվում են, ինչպես այս մեկը)
- Հիմնական առանց զոդման տախտակ
- Շատ և շատ մետաղալարեր (կախված ֆոսբոլի սեղանի չափից)
- արական միակցիչներ (30+)
- իգական միակցիչներ (10+)
- 100-220 Օմ դիմադրողներ (4+)
- զոդման նյութեր
- մետաղալարեր
- LED կրողներ
- մի քանի փայտ/պտուտակներ, եթե ցանկանում եք գնդակը փոխանցել ջրհորի մեջ
Այս նախագծի ընդհանուր արժեքը ամբողջությամբ կախված է ձեր ֆոսբոլի սեղանի արժեքից (թանկ): Բացի սեղանից, նյութերը կլինեն առավելագույնը 150 եվրո:
Քայլ 2: Էլեկտրական միացում
Soldոդման փորձ կատարելուց առաջ հավաքեք բոլոր բաղադրիչները, որոնք խորհուրդ եմ տալիս նախ փորձարկել այն տախտակի վրա: Ավելի հեշտ է փոխարինել անսարք բաղադրիչները, նախքան դրանք ժամեր կպցնելը:
Սկզբում ես փորձեցի ներդնել 8x8 LED մատրիցը 74HC595 հերթափոխի գրանցամատյանով (առաջին պատկերը) և տրանզիստորային զանգվածով, սակայն բազմաթիվ լարերի և շատ ցածր թողարկման պատճառով ես անցա MAX7219 կետային մատրիցային մոդուլին, քանի որ այն տանում է ընդամենը 5 լար և ուղղակիորեն շարժվում է SPI ավտոբուս:
Շրջանը, որն ի վերջո օգտագործեցի, գծված է Ֆրիտզինգի միջոցով: Խնդրում ենք նկատի ունենալ, որ IR LEDS- ը և ընդունիչները կարող են միացված լինել ձեր անվճար GPIO կապումներին:
IR ընդունիչներն ու LED- ը պետք է ուղղակիորեն միմյանց դիմաց լինեն, իսկ LED- ի գագաթը պետք է ուղղված լինի դեպի ստացողը: Քանի որ մենք ցանկանում ենք մոդելավորել ուղիղ ճառագայթը, որը կարող է կոտրվել գնդակի շարժումով, որի դեպքում ստացողի ՏՎՅԱԼՆԵՐԻ տողի վիճակային փոփոխություն կլինի 0 -ից 1:
Քայլ 3: Սենսորների կոդավորում
Այս ծրագրի մեծ մասը ծածկագրել եմ Pycharm- ով, քանի որ այն թույլ է տալիս հեշտությամբ SSH տեղակայել ձեր Raspberry Pi- ում ՝ օգտագործելով հեռակա թարգմանիչ: Չեմ մանրամասնի, թե ինչպես է աշխատում այս ծրագիրը, բայց շատ տեղեկություններ կարելի է գտնել pycharm կայքում:
Ես դեռ աշխատում եմ նախագծի վրա, բայց երբ ամեն ինչ արվի, ամբողջ նախագիծը հասանելի կլինի իմ github պրոֆիլում
Սենսորների ծածկագիրը բաղկացած է 3 դասից, որոնք գործարկվում են իմ Flask սերվերի ֆոնային շարանում (որը կբացատրվի ավելի ուշ).
- Նպատակների դաս (հղում)
- Մատրիցային դաս (հղում) -Սա MAX7219 մոդուլը միացնելու հիմնական դասն է
- LED և ստացողի դաս (հղում) - Սա ինֆրակարմիր ճառագայթների միացման հիմնական դասն է ՝ օգտագործելով առանձին թելեր ՝ RPi- ի պրոցեսորի բեռը նվազեցնելու համար:
LED- ը և ընդունիչը երկուսն էլ աշխատում են 38 կՀց հաճախականությամբ, և ընդունիչները միշտ ակնկալում են, որ 50% բարձր և 50% վար զարկերակը կաշխատի ճիշտ:
Քայլ 4: Սենսորների պատրաստում և տեղադրում
Այժմ մենք պատրաստվում ենք պատրաստել IR LED և ընդունիչ: Աղյուսակի նկարում կարող եք գտնել այն վայրերը, որտեղ պետք է տեղադրվեն RPi- ն և տվիչները:
Բայց նախ մենք պետք է պատրաստենք էլեկտրագծերը.
- Համոզվեք, որ չափեք մետաղալարերի քանակը, որոնք անհրաժեշտ են RPi/տախտակի տեղադրությունից մինչև սենսորի գտնվելու վայրը
- Receոդեք IR ստացողի կապում լարերի մի ծայրին (COM/GND/V+)
- Լարերի մյուս ծայրին միացրեք արական միակցիչի կտորները
Այժմ մենք պատրաստվում ենք պատրաստել սեղանը.
- Կատարեք հիմնական նկարը (նկարի հիման վրա), թե որտեղ պետք է փորել: Շատ կարևոր է, որ 2 անցքերը իրար հավասար լինեն, քանի որ սա կլինի ճառագայթների տեղադրման վայրը:
- Հորատեք անցքերը
- Եթե ունեք մի քանի լուսադիոդներ (հղում), կարող եք դրանք տեղադրել անցքի ներսում `այն ավելի ամուր դարձնելու համար
- Տեղադրեք + ժապավենը LED + ընդունիչը երկու կողմից
- Լարերը ամրացրեք + դրանք փայտով, որպեսզի դրանք շատ չանցնեն
- Տեղադրեք արական կապտուկները տախտակի վրա ՝ նախկինում տրամադրված սխեմայի համաձայն
Քայլ 5. Մատրիցային մոդուլի պատրաստում և տեղադրում
Հաջորդը մենք մտադիր ենք միացնել 2 LED մատրիցային մոդուլներ:
Նշում:
Քանի որ ես օգտագործում էի հին ֆոսբոլի սեղան, ծխախոտի բռնակների պատճառով արդեն անցքեր էին բարձրանում դեպի վերին հատվածը: Եթե դուք չունեք դրանք, ապա ձեզ հարկավոր կլինի դրանք ստեղծել:
Լարերը պատրաստելու համար.
- Չափեք մետաղալարը հացահատիկից դեպի սեղանի վերին հատվածը
- Լարերի առաջին ծայրին միացրեք մի քանի կին միակցիչներ
- Լարերի մյուս ծայրին միացրեք արական միակցիչներ
Մատրիցայի տեղադրում.
- Դուրս բերեք մատրիցը վերևի անցքից
- Rapապավեն + կպցրեք ներսի լարերը փայտի վրա, որպեսզի դրանք չանցնեն
- Տեղադրեք արական կապտուկները սեղանի վրա ՝ նախկինում տրամադրված ցիրկիի համաձայն
Ինչ -որ պահի ես կավելացնեմ մի փոքր DIY քայլ ՝ մատրիցային մոդուլի պատյան ավելացնելու համար, բայց առայժմ նրանք մերկ են:
Քայլ 6: Այն դարձնել IoT
Եթե դուք պարզապես ցանկանում եք գրանցել և ցուցադրել միավորները, կարող եք ավարտել նախագիծը ՝ գրելով փոքրիկ վազող պիթոնի սցենար, որը շրջվում է, մինչև որ հաշիվներից մեկը հասնի 9 -ի, այնուհետև վերակայվի:
Այնուամենայնիվ, եթե ցանկանում եք ձեր սեղանը միացնել ինտերնետին, հաջորդ մի քանի քայլերը պետք է ուղղվեն ձեր նրբանցքին:
Հաջորդ մի քանի քայլերում մենք կանդրադառնանք հետևյալին.
- Raspberry Pi- ի կազմաձևում
- Պահեստավորման համար տվյալների բազայի ստեղծում
- Վեբ կայքի ստեղծում
- Տեղադրելով այն առցանց
Այս պահին, եթե ծանոթ եք git- ին, խորհուրդ եմ տալիս u ստեղծել պահոց GitHub/GitLab- ում ՝ ձեր ֆայլերին հետևելու համար: Եթե դուք չեք, կարող եք ստեղծել նույն կառուցվածքով թղթապանակ, ինչպես նկարում:
Ամբողջ նախագիծը շուտով հասանելի կլինի GitHub- ում: Այնուամենայնիվ, առկա է ժամանակավոր rar ֆայլ ՝ բոլոր անհրաժեշտ ֆայլերով:
Քայլ 7: Միացրեք Raspberry Pi- ն
Հաջորդը մենք պատրաստվում ենք կարգավորել ազնվամորու pi միջավայրը, դրա համար անհրաժեշտ է կատարել հետևյալ քայլերը.
- Միացեք SSH- ով ձեր Rasberry Pi- ին (կարող եք օգտագործել PuTTY)
- Ստեղծեք թղթապանակ (օրինակ mkdir նախագիծ) և տեղափոխեք այս պանակը ՝ օգտագործելով cd հրամանը
- Ստեղծեք վիրտուալ Python միջավայր այս թղթապանակում ՝ օգտագործելով python3 -m venv --system-site-packages env հրամանը
- Ակտիվացրեք վիրտուալ թարգմանիչը աղբյուրի/env/bin/activ հրամանով
- Տեղադրեք փաթեթները պահանջներից: txt python -m pip install package -name հրամանով
- Նախկինում տրամադրված project_example.rar ֆայլից ֆայլերը փոխանցեք ձեր ծրագրի պանակում գտնվող SSH- ով
Այժմ դուք պետք է կարողանաք ամբողջ նախագիծը գործարկել ձեր Raspberry Pi- ի վրա: Ես խորհուրդ եմ տալիս օգտագործել Python IDE- ն, ինչպիսին է PyCharm- ը, որը թույլ է տալիս Ձեզ օգտագործել SSH- ում ձեր հեռակա թարգմանիչից կարգաբերելու և անհրաժեշտության դեպքում ուղղակիորեն փոփոխություններ ներբեռնելու համար:
Քայլ 8: Տվյալների բազայի ստեղծում
Այժմ դուք պետք է ստեղծեք շատ հիմնական տվյալների բազա ՝ հիմնված այս մոդելի վրա:
Դրանով զբաղվելու ամենահեշտ ձևը ձեր տվյալների բազան ստեղծելն է MySQL աշխատատեղում, որտեղ կարող եք նաև որոշ փորձարկումներ կատարել:
Ավարտելուց հետո կարող եք արտահանել ձեր տվյալների շտեմարանը և տեղադրել այն ձեր RPi- ում, այնուհետև այն կատարել sudo mariadb <pathtofile/file.sql- ով
Քայլ 9: Վեբ կայքի ստեղծում
Հաջորդը կարող եք վերլուծել (և օգտագործել) project_example.rar ֆայլում ներկայացված կոդը:
Հիմնական ֆայլը Flask.py- ն է, որն այս նախագծի հացն ու կարագն է.
- Գործարկում է Flask-SocketIO ծրագիրը, որը կարգավորում է վեբ կայքի հետնամասը
- Ստեղծում է կապ տվյալների բազայի և Flask- ի միջև
- Ապահովում է մուտքի վավերացում և օգտագործողի գրանցում
- Տրամադրում է անհրաժեշտ ծածկագիր, թե ինչպես խաղալ, օգտագործում է socketio- ն ՝ խաղի ընթացքում կայքը իրական ժամանակում թարմացնելու համար
- Խաղի արդյունքները տեղադրում է տվյալների բազայում
Ստատիկ և ձևանմուշների պանակներում կարող եք գտնել HTML/CSS/JS- ը, որոնք ապահովում են կայքի առջևի հատվածը: Ազատորեն փոփոխեք դրանք ըստ ձեր սեփական նախասիրությունների:
Քայլ 10: Միացում Համաշխարհային ցանցին
Մեր կայքը վեբին միացնելու համար մենք կօգտագործենք nginx և uwsgi: Նախագծի օրինակով կարող եք գտնել անհրաժեշտ ֆայլերը conf թղթապանակում:
Այս ֆայլերում առաջին հերթին պետք է թարմացնել հետևյալը.
- Uwsgi-flask.ini- ում պետք է վիրտուալ պարամետրերի ուղին փոխել ձեր թարգմանիչին
- Project1-flask.service- ում դուք պետք է թարմացնեք ֆայլի առայություն] մասը ՝ ձեր հավատարմագրերով և հարակից ֆայլերի ուղիներով
- Nginx ֆայլում անհրաժեշտ է թարմացնել սերվերը և գտնվելու վայրը / ուղին դեպի հարակից վարդակից
Հաջորդը դուք պետք է փոխարինեք կանխադրված nginx վեբ սերվերի ֆայլը ձեր nginx կազմաձևման ֆայլի տեղադրությամբ, ստորև բերված է դա Linux- ի հրամանների օրինակ
- me@my-rpi:/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
- me@my-rpi:/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
- me@my-rpi:/project1 $ sudo ln -s/etc/nginx/կայքեր-հասանելի/project1/etc/nginx/կայքեր-միացված/նախագիծ 1
- me@my-rpi: ~/project1 $ sudo systemctl վերագործարկել nginx.service
Ի վերջո, դուք պետք է ձեր համակարգված թղթապանակին ավելացնեք հարմարեցված ծառայություններ, սա օրինակ է, թե ինչպես դա անել.
- me@my-rpi: ~/project1 $ sudo cp conf/project1-*. ծառայություն/այլն/systemd/system/
- me@my-rpi: ~/project1 $ sudo systemctl daemon-reload
- me@my-rpi:/project1 $ sudo systemctl սկսել նախագիծը 1-*
- me@my-rpi: ~/project1 $ sudo systemctl կարգավիճակի նախագիծ 1-*
Եթե ցանկանում եք, որ վեբ սերվերը սկսի ձեր ազնվամորու pi- ի բեռնման ժամանակ, ապա պետք է օգտագործեք sudo systemctl միացման project1-*ծառայության հրամանը:
Եթե դա ճիշտ արվի, համակարգի վերագործարկումից հետո ձեր կայքը պետք է աշխատի ձեր IP հասցեով: Եթե ցանկանում եք խմբագրել այս կազմաձևման ֆայլերից մեկը, միշտ պետք է դադարեցնեք ծառայությունը, վերբեռնեք ֆայլերը և օգտագործեք daemon-reload հրամանը, որին հաջորդում է մեկնարկը, հակառակ դեպքում փոփոխությունները արդյունավետ չեն լինի:
Քայլ 11: Ավարտումը անջատված է
Այս ուսանելի ուսուցման վերջին մասը մուտքագրելիս ՝ այս փոքրիկ դպրոցական նախագիծը դեռ ընթացքի մեջ է:
Ես անհամար ժամեր եմ ծախսել 2,5 շաբաթվա ընթացքում դա անելու համար: Չնայած ամեն ինչ մի փոքր շտապեց, ես դեռ հպարտ եմ այն ամենով, ինչին հասել եմ: Մոնտաժման փուլում ես հանդիպել եմ անհամար սխալների/սխալների/անսարք սենսորների, այնպես որ շատ մի հուսահատվեք, եթե ամեն ինչ չի աշխատում առաջին փորձից:
Ամենալավ բանը, որ կարող եք անել, ինտերնետում օգնություն խնդրելն է կամ փնտրելը, կան շատ ավելի լավ գիտելիքներով մարդիկ, ովքեր շատ են ցանկանում օգնել ձեզ:
Վերջին, բայց ոչ ամենակարևորը, ես ուզում եմ շնորհակալություն հայտնել Նոր մեդիայի և հաղորդակցության տեխնոլոգիայի ուսուցիչներիս, ովքեր ինձ շատ խորհուրդներ տվեցին և օգնեցին ինձ ավարտել այս նախագիծը:
Խորհուրդ ենք տալիս:
Arduino Interactive LED սուրճի սեղան ՝ 6 քայլ (նկարներով)
Arduino Interactive LED սուրճի սեղան. Ես պատրաստեցի ինտերակտիվ սուրճի սեղան, որը միացնում է լուսադիոդային լույսերը առարկայի տակ, երբ առարկան տեղադրվում է սեղանի վրա: Միայն լուսարձակները, որոնք գտնվում են այդ օբյեկտի տակ, կլուսավորվեն: Դա անում է արդյունավետորեն օգտագործելով հարևանության տվիչները, և երբ մոտակա սահմանը
LED ձայնային ռեակտիվ անսահմանության խորանարդի վերջնական սեղան `6 քայլ (նկարներով)
LED ձայնային ռեակտիվ անսահմանության խորանարդի վերջնական սեղան. Վա! Ի Whatնչ զով ազդեցություն է: - Սրանք այն բաներից են, որոնք դուք կլսեք ուղեցույցը լրացնելուց հետո: Ամբողջովին միտքը կծկող, գեղեցիկ, հիպնոսիկ, ձայնային-ռեակտիվ անվերջության խորանարդ: Սա համեստորեն առաջադեմ զոդման նախագիծ է, ինձ տևեց մոտ 12 մարդ
Arduino պտտվող սեղան `4 քայլ
Arduino Պտույտ. Այս պտտվող սարքը կառուցվել է, որպեսզի թույլ տա տեսանյութեր նկարել ներկված որոշ շշերի վրա: Կարևոր առանձնահատկությունները դանդաղ արագությունն էին և ողջամիտ բեռնվածության հնարավորությունը: Օգտագործված քայլային շարժիչը թույլ է տալիս մեծ բեռներ շատ վերահսկելի դանդաղ արագությամբ: Սա կարող է հեշտությամբ բ
Կոկտեյլային սեղան Արկադային պահարան `8 քայլ
Cocktail Table Arcade Cabinet. Ես որոշեցի ինչ -որ լավ բան անել ինձ համար և օգտագործել արձակուրդային հանգստյան օրերս `այս նախագիծը վերջապես ավարտելու համար:
Խաղ վիճակախաղի պտտվող սեղան. 6 քայլ
Game վիճակախաղի պտտվող սարք. Բարի գալուստ իմ Arduino նախագիծ: Սա վիճակախաղով պտտվող սեղան է ՝ բոլոր տեսակի խաղեր խաղալու համար, որոնք պետք է լինեն արդար: Ահա թե ինչպես է կատարվում խաղը. Նախ, ձախ ներքևում կա սև կոճակ: Վիճակախաղը սկսելու համար հարկավոր է սեղմել դրա վրա: Հետո