Բովանդակություն:
- Քայլ 1: Մասերի հավաքում
- Քայլ 2: Սփրեյ-ներկում և միջերեսի ձևավորում
- Քայլ 3: Տվյալների բազայի ստեղծում
- Քայլ 4: Մասերը միասին միացնելը
- Քայլ 5: Ազնվամորու Pi- ի կարգավորում
- Քայլ 6: Վեբ հավելվածի գրառում
- Քայլ 7: Պատյաններ ավարտելու համար կտորներ ստեղծելը
- Քայլ 8: Կոդ
Video: CleanBot Guillaume Meurillon- ի կողմից. 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Սա ուղեցույց է այն նախագծի համար, որը ես պատրաստել եմ դպրոցի համար: Նպատակը Raspberry Pi- ի միջոցով ինտերնետին միացված սարքի ստեղծումն էր ՝ միաժամանակ սենսորներից տվյալներ հավաքելով: Այս տվյալները պետք է պահվեին (MySQL) տվյալների բազայում: Տվյալները պետք է արտացոլվեին վեբ կայքի միջոցով ՝ կոդավորված Python- ում ՝ Flask webapp փաթեթով և Jinja2 կաղապարով:
Իմ գաղափարն էր ստեղծել «կոտրված» ռոբոտների վակուում ՝ օգտագործելով Raspberry Pi, Arduino, արդեն կոտրված ռոբոտների վակուում և մի շարք սենսորներ:
Քայլ 1: Մասերի հավաքում
Մինչև որևէ բան ստեղծելը, ես շատ հետազոտություններ կատարեցի այն մասին, թե ինչ մասեր օգտագործել, ինչպես միացնել դրանք, ծրագրաշարի դասեր գրել Python- ում և այլն:
Մասերի ցանկը կներառվի որպես ֆայլ, որպեսզի հեշտությամբ կարողանաք որոնել ձեզ անհրաժեշտ մասերը:
Ես որոշեցի օգտագործել Arduino Uno- ն Raspberry Pi- ի կողքին, որպեսզի կարողանամ արդյունավետ կարդալ իմ տվիչները ՝ առանց շեշտելու իմ Raspberry Pi- ին: Ես նաև ընտրեցի Uno- ի համար, քանի որ այն ունի ժամացույցի գեղեցիկ արագություն և անալոգային կապում: Ես կարող էի օգտագործել ADC (օրինակ ՝ MCP3008) իմ Raspberry Pi- ի համար, բայց ինձ շատ ավելի լարեր կպահանջվեին, դա ավելի թանկ կլիներ, և իմ Pi- ն ստիպված կլիներ ավելի շատ աշխատել:
Այնուհետև ես սկսեցի ստուգել այն մասերը, որոնք օգտագործելի էին կոտրված ռոբոտի վակուումից: Ներքին էլեկտրոնիկան վնասված էր, բայց դա խնդիր չէր, քանի որ ամեն դեպքում ես դրանք ամբողջությամբ կփոխարինեի: Բարեբախտաբար, DC շարժիչները դեռ աշխատում էին, ուստի դրանցից ոչ մեկը պետք չէր փոխարինել:
Մասերի ցուցակ
- Raspberry Pi 3 առնվազն 8 ԳԲ MicroSD դաս 10 և պատյանով;
- Raspberry Pi T-cobbler and breadboard (ներ);
- Arduino Uno կամ նմանատիպ (նախընտրելի է ոչ չինական տարբերակ ՝ արժանապատիվ ADC- ով, որոշ չինացիներ ունեն AREF- ի խնդիրներ) ինչ-որ պատյանով;
- Ethernet մալուխ;
- Ռոբոտի (կոտրված) վակուում;
- 3x HC-SR04 ուլտրաձայնային մոդուլներ;
- 1x սրահի սենսորային մոդուլ;
- Տարբեր արժեքների մի քանի դիմադրիչներ;
- LDR;
- 6x 18650 Li-ion մարտկոցներ + 12 վ լարման 3 բջջային կրիչներ (գերադասելի է օգտագործել նոր մարտկոցներ կամ նույնիսկ ավելի լավ օգտագործել LiPo մարտկոցներ, դրանք ավելի երկար կտևեն);
- 18650 (կամ ինչ տեսակի մարտկոց եք օգտագործելու) 12 վ 3 բջջային լիցքավորման հատ;
- Որոշ PCB DIY տախտակներ `ձեր բաղադրիչները միացնելու համար;
- Պոլիուրեթանային պլաստիկի թերթ;
- Նոթբուք / աշխատասեղան համակարգիչ:
Գործիքների ցուցակ
- Մի քանի փորված բիթերով փորվածք;
- Անկյունային սրիչ (մի օգտագործեք այն, եթե փորձ չունեք) կամ Dremel- ի նման մի բան.
- Հղկող թղթի կտոր;
- Մի քանի պտուտակահան;
- Սոսինձ, ամրացնող սոսինձ,…;
- Eringոդման երկաթ (օգտագործեք քսուք ձեր լարերը ավելի հեշտությամբ կպցնելու համար);
- Մի զույգ մետաղալար կտրող և մերկացնող գործիք:
Softwareրագրաշարի ցուցակ (ըստ ցանկության)
- Adobe XD. Մետաղալարերի շրջանակում և նախատիպի ստեղծում;
- Fritzing: էլեկտրական սխեմայի ստեղծում;
- PyCharm Professional. Python IDE ՝ տեղակայման և հեռակա թարգմանիչ օգտագործելու հնարավորություններով;
- Tyեփամածիկ. Արագ և հեշտ ssh կապ Pi- ի հետ;
- Etcher.io. Raspbian պատկերը SD քարտին միացնելու հեշտ գործիք;
- Win32DiskImager. Հեշտ գործիք ՝ առկա Raspbian կարգավորումից պատկեր ստեղծելու համար;
- Mersրագրավորողների գրքույկ. Պարզ գործիք, որը կարող եք օգտագործել /boot/cmdline.txt ֆայլը ապահով խմբագրելու համար:
Քայլ 2: Սփրեյ-ներկում և միջերեսի ձևավորում
Նախքան դիզայնի ստեղծումը սկսելը, ես ներկով ներկեցի արտաքին տեսքը, քանի որ գույներն ինձ ընդհանրապես դուր չեկան: Ես գնացի խանութ և վերցրեցի պլաստմասե այբբենարան, սպիտակ և փիրուզագույն տարա ՝ վերնաշապիկը քերծելու համար:
Սփրեյ ներկը չորացնելուց հետո ես փնտրեցի օգտագործված ներկի ճշգրիտ վեցանկյուն գույնի ծածկագիրը, որպեսզի կարողանամ կատարելապես համապատասխանեցնել իմ վեբ-ինտերֆեյսը իմ սարքի հետ: Այս վեցանկյուն ծածկագիրը գտնելը բավականին հեշտ էր, քանի որ ես օգտագործում էի Մոնտանա 94 գրաֆիտի, իսկ վեցանկյուն և RGB ծածկագրերը գտնվում էին իրենց կայքում:
Իմ վեբ կայքի յուրաքանչյուր էջի համար ես ստեղծեցի բարձր հավատարմության շրջանակներ, այնպես որ ես հիանալի գիտեի, թե ինչպես եմ պատրաստվում ստեղծել այս ինտերֆեյսը: Ուսուցիչներիս իմ ինտերֆեյսը ցույց տալուց հետո ես խորհուրդ ստացա ՝ հետին պլանը մի փոքր ավելի մոխրագույն դարձնել, իսկ կոճակները ՝ սպիտակ, և արդյունքն իմ կարծիքով լավն էր:
Քայլ 3: Տվյալների բազայի ստեղծում
Հաջորդ տրամաբանական քայլը սկսեց մտածել, թե ինչ տվյալներ եմ ուզում պահել MySQL տվյալների բազայում: Այնքան էլ շատ մարդիկ չեն սիրում իմանալ իրենց վակուումի մասին, այնպես որ ես գնացի օգտվողների և նրանց մուտքի տվյալների, ինչպես նաև տվիչների (մարտկոցի, հեռավորության և փոշու տարա) սեղանների հետ:
Պատկերը ցույց է տալիս MySQL Workbench- ում նկարված իմ սեղանների դասավորությունը `աղյուսակների միջև բոլոր հարաբերություններով:
Իմ օգտվողների համար ես ուզում էի հետևել նրանց անունին և ազգանունին ՝ ինտերֆեյսը և էլ. Հասցեներն անհատականացնելու համար: Իհարկե, էլեկտրոնային նամակներ ուղարկելու համար ինձ անհրաժեշտ էր նաև նրանց էլ. Ես նաև ավելացրեցի աղյուսակ ՝ իմ օգտվողների էլ. Վերջին բանը, որ ես ուզում էի պահել օգտվողների մասին, դա նրանց դերն է սարքի համար: Ես բաժանում եմ օգտվողներին որպես ադմինիստրատորներ և սովորական օգտվողներ: Ադմինիստրատորներն իրավունք ունեն համակարգում ավելացնել, հեռացնել և կառավարել օգտվողներին, մինչդեռ սովորական օգտվողները չեն կարող մուտք գործել այդ գործիքները:
Հաջորդ աղյուսակը պարունակում է «deviceruns», որոնք են սարքի իրական գործարկումները: Deiceruns- ը պատկանում է որոշակի օգտվողի (վազքը սկսած անձին) և ունեն մեկնարկի և ավարտի ժամ `աշխատաժամանակը հաշվարկելու համար:
Մեկ այլ աղյուսակ է օգտագործվում sensordata- ն յուրաքանչյուր devicerun- ին կապելու համար: Սենսորներն իրենք պահվում են մեկ այլ աղյուսակում, որը պարունակում է նրանց id, անունը և նկարագրությունը:
Քայլ 4: Մասերը միասին միացնելը
Տվյալների բազայի սխեման ստեղծելուց հետո ես սկսեցի օգտագործել տախտակներ և էլեկտրագծեր `բոլոր մասերը միմյանց միացնելու համար մեկ աշխատանքային նախատիպի մեջ:
Քայլ 5: Ազնվամորու Pi- ի կարգավորում
Raspbian- ի վերջին պատկերը ներբեռնելու համար այցելեք Raspbian կայքը: Այստեղ կարող եք ընտրել, թե որ դիստրոյն եք ցանկանում ներբեռնել: Ավելի արագ շահագործման համար կարող եք ներբեռնել անգլուխ դիստրոյը, RAM- ի ավելի քիչ օգտագործման համար կամ ներբեռնել աշխատասեղանը GUI- ով, եթե նախընտրում եք գրաֆիկական ինտերֆեյս:
ՕՀ -ը տեղադրելու համար պարզապես ներբեռնեք Etcher, դա GUI գործիք է ՝ պատկերն արագ և հեշտությամբ ձեր միկրո SD քարտին գրելու համար:
Գլխավոր ռեժիմը միացնելու համար, որպեսզի կարողանաք մուտք գործել pi, ձեզ հարկավոր է տեղադրել Putty ձեր համակարգչում: Հաջորդ քայլը պետք է գնալ Etcher- ի ստեղծած Boot թղթապանակին և բացել cmdline.txt ֆայլը ձեր նախընտրած տեքստային խմբագրիչով, նախկին Programmers Notepad- ով: Ավելացրեք այս տեքստը ֆայլի վերջում.
ip = 169.254.10.1
Պարզապես համոզվեք, որ նոր գիծ չեք ստեղծում, սա ավելացրեք տողի վերջում:
Հաջորդը, վերադառնաք Boot թղթապանակի արմատին և ստեղծեք ssh անունով ֆայլ: Մի ավելացրեք որևէ ընդլայնում, սա կապահովի, որ SSH սերվերը գործարկվի ամեն անգամ, երբ ձեր Pi- ն գործարկվի: Այժմ պարզապես տեղադրեք SD քարտը ձեր Pi- ում, միացրեք բավարար էներգիայի աղբյուր ձեր Pi- ին և ավելացրեք Ethernet մալուխ ձեր Pi- ի և ձեր համակարգչի միջև:
Բացեք ծեփամածիկը և մուտքագրեք IP հասցեն ՝ 169.254.10.1: Այժմ կտտացրեք ԱՅՈ և մուտք գործեք, կանխադրված օգտվողի անունը pi է, իսկ գաղտնաբառը `ազնվամորի:
Հաջորդը, կատարեք հետևյալ հրամանը ՝ արդիանալու համար.
sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
Վերջնական քայլը ձեր Raspberry Pi- ի վրա ստեղծել վիրտուալ Python թարգմանիչ, դա կկատարի ձեր կոդը: Դա անելու համար պարզապես բացեք ծեփամածիկը և մուտքագրեք հետևյալը.
sudo mkdir նախագիծ 1
cd project1 python3 -m pip install -upgrade pip setuptools wheel virtualenv python3 -m venv -system -site -packages venv
Քայլ 6: Վեբ հավելվածի գրառում
Յուրաքանչյուր մաս միացնելուց և Raspberry Pi- ի տեղադրումից հետո ես սկսեցի գրել իմ հիմնական վեբ ծրագիրը `օգտագործելով Flask և Jinja2: Flask- ը Python- ի համար հեշտ օգտագործվող backend շրջանակ է, իսկ Jinja2- ը այն կաղապարային լեզուն է, որը ես օգտագործել եմ: Jinja- ի հետ դուք կարող եք ստեղծել սովորական HTML ֆայլեր օղակների համար, եթե կան կառուցվածքներ և այլն:
Հետևի ծածկագիրը կոդավորելիս ես նաև դիմումի հիմնական հատվածն եմ գրել, ներառյալ HTML, CSS և JavaScript որոշ տարրերի համար: Ես օգտագործել եմ ITCSS մեթոդը և BEM նշումը իմ ոճաթերթերի համար:
Բացի հիմնական վեբ հավելվածից, ես ստեղծեցի նաև 2 այլ հիմնական ծրագրեր: Մեկը գրված է `սարքի IP հասցեն ցանկում օգտագործողներին ուղարկելու համար: Յուրաքանչյուր գրանցված օգտվող, ով ընդունել է նամակներ ստանալը, կստանա նամակ `վեբ ինտերֆեյսը գործարկելու հղումով: Այս ծրագիրը գործում է որպես համակարգված ծառայություն:
Մյուս հիմնական ֆայլը իրական սարքի համար է: Այս հիմնականը զանգահարելի է իմ Flask հավելվածի միջոցով ՝ սարքը գործարկելու և դադարեցնելու և տվյալներ հավաքելու համար: Հավաքված տվյալները նույնպես բեռնվում են սարքի տվյալների բազայում այս հիմնականի միջոցով: Այս տվյալները կարող են վիզուալացվել վեբ հավելվածում:
Վեբ-ծրագիրը միացված է Python Threading- ով հիմնական սարքին: Երբ օգտվողը կտտացնում է մեկնարկի կոճակին, ստեղծվում է թել ՝ սարքը հետին պլանում գործարկելու համար: Մինչդեռ օգտվողը կարող է կատարելապես թերթել հավելվածը: Երբ կանգառ սեղմելիս այս շարանը կանգ է առնում և սարքը դադարում է:
Քայլ 7: Պատյաններ ավարտելու համար կտորներ ստեղծելը
Theրագրի ամենամեծ մասը գրելուց հետո ես սկսեցի փոփոխել սարքի պատյանը, որպեսզի իմ սենսորներն ու մյուս մասերը իրականում տեղավորվեն: Դա անելու համար ես պոլիուրեթանային թերթ գնեցի տեղական DIY խանութում և սկսեցի կտրել 2 փակագիծ: Ես օգտագործեցի պոլիուրեթանային այս թերթիկը, քանի որ այն կտրելու հավանականություն չկա, և քանի որ այն բավականին ճկուն է, ինչը կատարյալ է, քանի որ իմ ռոբոտը ունի շրջանաձև ձև:
Առաջին փակագիծը պատրաստված է վերևում գտնվող անցքը լրացնելու համար, որտեղ նախկինում նստած էր դիսփլեյը: Ես էկրանը փոխարինեցի միացման/անջատման անջատիչով, որպեսզի մարտկոցներն իրականում անջատվեն:
Մյուս փակագիծը հենարան է իմ HC-SR04 ուլտրաձայնային տվիչների համար, որոնք տեղադրված են սարքի առջևում:
Վերջին բանը, որ պետք էր անել, անիվներից մեկի ամրացումներում փոս կտրելն էր և մագնիս տեղադրելը, որպեսզի կարողանայի հետևել անիվի պտույտներին:
Այս փակագծերն ավարտելուց հետո ես դրանք ներկեցի նաև ներկով, որը մնացել էր, որպեսզի այն համապատասխանի դիզայնին:
Քայլ 8: Կոդ
Installրագիրը տեղադրելու համար ներբեռնեք ֆայլը code.zip և բացեք այն project1 գրացուցակում:
Հաջորդը, կատարեք այս հրամանը Raspbian- ի կամ Putty- ի տերմինալում.
sudo cp project1/conf/project-1*/etc/systemd/system/
sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl դեմոն-վերաբեռնում sudo systemctl միացնել նախագիծը -1* sudo systemctl միացնել նախագիծը 1* sudo systemctl վերագործարկել nginx
Հաջորդը, բացեք ձեր ստեղծած տվյալների բազան և ստեղծեք նոր օգտվող Argon2 խուզած գաղտնաբառով: Այժմ կարող եք օգտագործել ծրագիրը:
Վայելեք:
Խորհուրդ ենք տալիս:
Հավելվածի կողմից վերահսկվող գունավոր ամպ. 7 քայլ (նկարներով)
Հավելվածի կողմից վերահսկվող գունավոր ամպ. Ամբողջը կարելի է վերահսկել WLAN- ի միջոցով ՝ հավելվածի միջոցով: Բայց ի վերջո դուք կարող եք դա դարձնել խելամիտ
Mini IMac G4 Flat Panel - սնուցվում է NUC- ի կողմից. 9 քայլ (նկարներով)
Mini IMac G4 Flat Panel - Powered by NUC: Ներածություն Ես անցել եմ մի քանի նախագծերի, որոնք ոգեշնչող են եղել այս կառուցման համար: Մեկը պնդում է, որ դա աշխարհի ամենափոքր գործող iMac- ն է, բայց իրականում դա Raspberry Pi- ն է, որն աշխատում է MacOS թեմայով Linux դիստրոյով և չի կարող իրական M
Կնոջ կողմից կառուցված պայուսակ: 14 քայլ (նկարներով)
Պայուսակ ԱՀ Կառուցված կնոջ կողմից. ՔԱՅԼ 1. Գրեք օգտագործվող նյութերը. Բալզա փայտից 3”էկրանի մոնիտոր AMD RYZEN 5 3500X 3.6GHZ 35 ՄԲ պրոցեսոր (6C/6T) GIGABYTE B550 AORUS PRO A WIFI AM4 ATX DDR4 CORSAIR VENGEANCE LPX36 (2X8 ԳԲ) KIT CL18 DDR4 (RYZEN) ADATA XPG SX8200 2TB PRO 2 P
DIY Bluetooth ջրատաքացուցիչ սնուցվում է Arduino- ի կողմից. 4 քայլ
DIY Bluetooth Warրատաքացուցիչ Powered by Arduino. Նշում. Սա պարզապես փորձարկման համար է (UI օգտագործելով remotexy.com) 12v DC ջրատաքացուցիչը կառավարելու համար (ի սկզբանե մեքենայում օգտագործելու համար `12 վ կրակայրիչի հզորության վարդակից): Ես ընդունում եմ, որ որոշ մասերում օգտագործվում էր այս նախագիծը " լավագույն ընտրությունը չէ " իր նպատակի համար, բայց նորից
Ինտերֆեյս DHT11- ի օգտագործումը Arjino- ի կողմից Sujay- ի կողմից. 5 քայլ
Interfacing DHT11- ը Arduino- ի կողմից Sujay- ի միջոցով. Այս հրահանգում դուք կսովորեք, թե ինչպես տեղադրել DHT11 խոնավության և ջերմաստիճանի տվիչը ձեր Arduino UNO- ում: Եվ իմացեք, թե ինչպես է աշխատում Խոնավության տվիչը և ինչպես ստուգել սերիական մոնիտորի ելքային ընթերցումները Նկարագրություն. DHT11- ը հայտնաբերում է