Բովանդակություն:

ColorPicker: 10 քայլ
ColorPicker: 10 քայլ

Video: ColorPicker: 10 քայլ

Video: ColorPicker: 10 քայլ
Video: How To Create News Channel Using AI | AI News Video Generator | Make Money Online 2024, Նոյեմբեր
Anonim
ColorPicker
ColorPicker

Այս նախագծի նպատակն է չափել գույները և դրանք թարգմանել այլ գունային համակարգերի: Օգտագործելով սենսորի կողմից տրված միայն RGB արժեքները, կարող եք թարգմանել HSL, CYMK, HEX և նաև մոտակա RAL կոդ (ստանդարտ, որն օգտագործվում է ներկի համար): Այս նախագիծը պահանջում է Python- ի, MySQL- ի, Linux- ի և Javascript- ի հիմնական գիտելիքներ:

Եթե դուք նույնպես ծանոթ եք Flask շրջանակին և SocketIO- ին, ապա այս նախագծի ծածկագիրը պետք է ձեզ համար հեշտ հասկանալի լինի:

Այս նախագիծը կարող են օգտագործվել նկարիչների, ինտերիերի դիզայներների կամ պարզապես բոլորի կողմից, ովքեր պետք է չափեն գույները:

Այս նախագիծը այնքան էլ թանկ չէ, և արժե մոտավորապես _ եվրո, առաքումը ներառված չէ:

Պարագաներ

Այս բաժինը կարող ենք բաժանել երկու մասի

  • Սարքավորումներ
  • Ծրագրային ապահովում

Սարքավորումներ

Մենք օգտագործում ենք հետևյալ բաղադրիչները

  • HC04. Հեռավորության ցուցիչ, որքան ենք մենք չափում օբյեկտից
  • LCD էկրան 2x16
  • LCD I2C մոդուլ (HW061)
  • TCS34725 Գույնի տվիչի մոդուլ (Adafruit)
  • Սպիտակ LED
  • Raspberry Pi 3 (Rasանկացած Raspberry Pi պետք է աշխատի)
  • 5x 1k Ohm դիմադրություն
  • 1x 220 կամ 330 Օմ դիմադրություն
  • SD քարտ 16 ԳԲ (14.4 ԳԲ)

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

  • Python IDE, ինչպես Visual Code- ը կամ Pycharm- ը (Pycharm- ն օգտագործվում է այստեղ)
  • MySQL Workbench
  • Putեփամածիկ (Ներբեռնեք tyեփամածիկ)
  • Rufus կամ որևէ այլ SD քարտ գրող (ներբեռնեք Rufus)

Գնագոյացում

Այս նախագիծը բավականին էժան է, եթե արդեն ունեք Rapsberry Pi:

  • HC04. Սկսած € 2,5 եվրոյից (Չինաստան) և մինչև € 6 ավելի շատ տեղական խանութների համար:
  • LCD: Մոտ 6-8 եվրո:
  • I2C մոդուլ. 1 եվրոյից ցածր (Չինաստան), բայց մինչև 4 եվրո ավելի շատ տեղական խանութների համար:
  • TCS34725. Մոտ 9-12 եվրո: Ամենաթանկ մասը (առանց RPi- ի)
  • Սպիտակ լամպ. Գնված է մեծածախ, 20 LEDS 1 եվրոյից ցածր
  • Raspberry Pi. Կախված տարբերակից, մոտ 40 եվրո
  • Ռեզիստորներ `0,10 եվրո մեկ դիմադրության դիմաց
  • SD քարտ ՝ մոտ 8 եվրո

Raspberry Pi- ի էներգիայի ադապտերը բացառվում է գնի մեջ, քանի որ այս ադապտերը բավականին տարածված է:

Ընդհանուր գների միջակայք. Մոտ 70 եվրո, եթե ներառեք Raspberry Pi- ն և նախագծի պատյանը:

Գործը կառուցելու համար ես օգտագործեցի թեթև բարակ փայտ: Այս փայտը ես վերամշակեցի կահույքից: Գործի նյութը ձերն է:

Քայլ 1: Քայլ 1. RPi OS- ի տեղադրում, SSH և ինտերնետ հասանելիության կարգավորում

Քայլ 1. Տեղադրեք RPi OS, կազմաձևեք SSH և ինտերնետ հասանելիություն
Քայլ 1. Տեղադրեք RPi OS, կազմաձևեք SSH և ինտերնետ հասանելիություն
Քայլ 1. Տեղադրեք RPi OS, կազմաձևեք SSH և ինտերնետ հասանելիություն
Քայլ 1. Տեղադրեք RPi OS, կազմաձևեք SSH և ինտերնետ հասանելիություն
Քայլ 1. Տեղադրեք RPi OS, կազմաձևեք SSH և ինտերնետ հասանելիություն
Քայլ 1. Տեղադրեք RPi OS, կազմաձևեք SSH և ինտերնետ հասանելիություն
Քայլ 1. Տեղադրեք RPi OS, կազմաձևեք SSH և ինտերնետ հասանելիություն
Քայլ 1. Տեղադրեք RPi OS, կազմաձևեք SSH և ինտերնետ հասանելիություն

Քայլ 1.1. Պատկերի տեղադրում

Ներբեռնեք պատկերը Raspberry Pi- ի պաշտոնական կայքից: Կարևոր չէ, թե ինչ պատկեր եք տեղադրում: Այս նախագծի համար GUI- ն անհրաժեշտ չէ, քանի որ մենք կկապվենք միայն SSH- ի միջոցով:

Պատկերը գրեք (դատարկ) SD քարտի վրա (Քարտի բոլոր ֆայլերը կջնջվեն):

SD քարտին ամեն ինչ գրելու համար մենք կօգտագործենք «Rufus» անունով գործիք: Պատկերը ներբեռնելուց հետո բացեք Rufus- ը և ընտրեք պատկերի ֆայլը: Ընտրեք նպատակային սկավառակը և գրեք պատկերը սկավառակի վրա: Սա կարող է որոշ ժամանակ տևել:

> Ռուֆուս

Քայլ 1.2. SSH- ի տեղադրում

Հաջորդ քայլը SD քարտի հետ կապի ստեղծումն է: Դա անելու համար մենք պետք է միացնենք SSH- ը:

Դա անելու համար ՝ առանց մոնիտոր օգտագործելու, բացեք ձեր ֆայլերի հետազոտողը և բացեք SD քարտի բեռնախցիկը: Ստեղծեք դատարկ ֆայլ «ssh», առանց ֆայլի ընդլայնման:

Բացի այդ, բացեք "cmdline.txt"

Ֆայլի վերջում ավելացրեք «169.254.10.1» և պահեք այն:

Տեղահանեք SD քարտը և տեղադրեք այն Raspberry Pi- ում:

Այժմ մենք կարող ենք միացնել Raspberry Pi- ն էներգիայի աղբյուրին և գործարկել և միացնել SSH- ի միջոցով:

SSH- ի միջոցով միանալու համար մենք օգտագործում ենք «tyեփամածիկ» ծրագիրը: Նախքան դա անելը միացրեք ձեր RPi- ն և համակարգիչը ehternet մալուխի միջոցով: Բացեք tyեփամածիկը և անցեք SSH ներդիրին և լրացրեք այս IP հասցեն ՝ 169.254.10.1: Կտտացրեք «միացնել» և միացված կլինեք:

> tyեփամածիկ

Raspberry Pi- ի կողմից օգտագործված կանխադրված մուտքն է 'pi' որպես օգտվողի անուն և 'ազնվամորի' գաղտնաբառի համար:

Քայլ 1.3. Անլար կապ

Ձեր Raspberry Pi- ն այժմ միացված է:

Մենք նաև ցանկանում ենք միանալ RPi- ին ՝ օգտագործելով Wifi, այդպիսով մեզ այլևս անհրաժեշտ չէ Ethernet մալուխ:

Կատարեք հետևյալ տողը.

'sudo nano /etc/wpa_supplicant/wpa_supplicant.conf'

Սա կբացի «նանո» տեքստային խմբագրիչը `բարձր իրավունքներով:

Ֆայլում ավելացրեք հետևյալ տողերը.

ցանց = {

ssid = "SSID"

psk = "Գաղտնաբառ"

}

Փոխարինեք «SSID» - ը ձեր Wifi ցանցի SSID- ով

«Գաղտնաբառը» փոխարինեք ձեր գաղտնաբառով:

Այնուհետև կատարեք Ctrl+X և ընտրեք «այո» տարբերակը: Այժմ ֆայլը կպահվի:

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

Կատարեք հետևյալ հրամանները.

  • 'sudo -i'
  • «sudo systemctl վերագործարկել ցանցը»

Դուք կարող եք ստուգել ձեր ինտերնետային կապը ՝ օգտագործելով wget հրամանը:

Օրինակ ՝ 'wget google.com'

> Wget հրաման

Քայլ 2: Քայլ 2. Softwareրագրակազմի տեղադրում RPi- ում

Այս նախագծի համար մենք պետք է տեղադրենք մի քանի գրադարան:

  • Mariadb: MySQL տվյալների շտեմարան (sudo apt-get install mariadb-server)
  • Adafruit գրադարան գույնի տվիչի համար. Չափման գույներ (pip3 տեղադրել adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', ընտրեք apache վեբ սերվեր)

Տեղադրեք նաև հետևյալ pip գրադարանները.

  • flask_socketio
  • շիշ
  • տափաշիշեր
  • տախտակ
  • ավտոբուս
  • ցանցային դեմքեր

Քայլ 3. Քայլ 3. Միացում MySQL տվյալների շտեմարանին, տվյալների բազայի ստեղծում

Քայլ 3. Միացում MySQL տվյալների շտեմարանին, տվյալների բազայի ստեղծում
Քայլ 3. Միացում MySQL տվյալների շտեմարանին, տվյալների բազայի ստեղծում
Քայլ 3. Միացում MySQL տվյալների շտեմարանին, տվյալների բազայի ստեղծում
Քայլ 3. Միացում MySQL տվյալների շտեմարանին, տվյալների բազայի ստեղծում
Քայլ 3. Միացում MySQL տվյալների շտեմարանին, տվյալների բազայի ստեղծում
Քայլ 3. Միացում MySQL տվյալների շտեմարանին, տվյալների բազայի ստեղծում

Հաջորդ քայլը MySQL տվյալների բազային միանալն է ՝ օգտագործելով MySQL աշխատանքային սեղանը:

> IP ա

Կատարեք «ip a» հրամանը, ինչպես ցույց է տրված վերևի նկարում (կտտացրեք հղմանը)

Շատ իրավիճակներում կցուցադրվի 3 գրառում: Մեզ անհրաժեշտ է «wlan0» գրառումը: Պատճենեք IP- ն «inet» - ի կողքին կամ այս օրինակում «192.168.1.44»

. >> Ստեղծեք նոր կապ

Ինչպես ցույց է տրված վերևի նկարում, ստեղծեք նոր կապ հետևյալ պարամետրերի հետ (ներքևի պատկերը պարամետրերի համար)

> Միացման պարամետրեր

Կրկնակի կտտացրեք նորաստեղծ միացման միացման համար:

Եթե այնտեղ հայտնվում է հուշում, կտտացրեք «Այո»:

Սա դեռ դատարկ տվյալների բազա է, ուստի եկեք ավելացնենք որոշ աղյուսակներ:

Նախ ստեղծեք սխեմա, դա անելու համար ձախ կողմում «աջ սեղմեք» և ընտրեք «ստեղծել սխեմա»:

Տվեք սխեմայի անուն և հաստատեք:

Այժմ մենք պետք է աղյուսակներ ավելացնենք: Ընդլայնեք սխեման և «աջ սեղմեք», «աղյուսակներ»:

Ստեղծեք հետևյալ սխեմաները

> Աղյուսակ 1. RALcolors

> Աղյուսակ 2. Սենսորների տեսակները

> Աղյուսակ 3. Չափումներ (նկարում օգտագործվում է «metingen», չափումների համար ՝ հոլանդերեն)

> Աղյուսակ 4. Կայքի_տվյալներ || Աղյուսակ 4 ներքևում

MySQL- ը հարաբերական տվյալների բազայի համակարգ է, ինչը նշանակում է, որ մենք կարող ենք հարաբերություններ ստեղծել աղյուսակների միջև:

Առաջին հարաբերությունը, որը մենք պետք է ստեղծենք, «սենսորային_տիպի» և «չափումների» միջև է:

Ինչպես ցույց է տրված նկարում, միացրեք երկու ստեղները:

> Խմբագրել սեղանի և հղման բանալիները

Մի մոռացեք պահպանել փոփոխությունները `կտտացնելով« Դիմել »ներքևի անկյունում:

Խմբագրեք նաև «վեբկայքի_տվյալների» աղյուսակը և հղումը «MetingID»:

Այժմ մենք ավարտել ենք սեղանների ստեղծումը և հարաբերությունների ստեղծումը:

Տվյալների ավելացում

RALcolors աղյուսակը ֆիքսված սեղան է, որտեղ արժեքները երբեք չեն փոխվի: Մենք կարող ենք ավելացնել այս արժեքները

շատ հեշտությամբ:

> Ներբեռնեք Excel ֆայլը

Ներբեռնեք վերը նշված Excel ֆայլը և ընտրեք բոլոր տվյալները և «պատճենեք»: Արեք այնպես, ինչպես պատկերված է

> Showուցադրել սեղանը

«սեղմեք աջ» սեղանի վրա և ընտրեք «Կպցնել տողերը»: «կտտացրեք» «կիրառել» ստորին անկյունում ՝ տվյալները ավելացնելու համար:

Այժմ բոլոր RALcolors պահվում են տվյալների բազայում:

Մեզ այժմ անհրաժեշտ է միայն ավելացնել sensor_type- ը տվյալների բազայում:

> Սենսորային տվյալներ

Նշում. Սենսորի նկարագրությունը «հոլանդերեն» է

Քայլ 4: Քայլ 4: Filezilla

Քայլ 4: Filezilla
Քայլ 4: Filezilla

Raspberry Pi- ին հեշտությամբ միանալու և ֆայլեր փոխանցելու համար կարող ենք օգտագործել Filezilla- ն:

> Ներբեռնեք Filezilla

Կցեք կապի մանրամասները և միացեք: Աջ կողմում այժմ կարող եք ֆայլեր փոխանցել ՝ դրանք ներքև քաշելով:

> Github աղբյուր

Ներբեռնեք ֆայլերը վերը նշված github աղբյուրից:

Քայլ 5: Քայլ 5: Կայքի ստեղծում

Քայլ 5: Կայքի ստեղծում
Քայլ 5: Կայքի ստեղծում
Քայլ 5: Կայքի ստեղծում
Քայլ 5: Կայքի ստեղծում

Կայքի հոստինգի համար մենք օգտագործում ենք PHPmyAdmin և Apache2:

Վեբ սերվերը Raspberry Pi- ում օգտագործում է '/var/www/html' գրացուցակը որպես արմատ:

Եթե ձեր ֆայլերը տեղադրեք այնտեղ, դրանք կհյուրընկալվեն Raspberry Pi- ի IP հասցեով: (IP = տես 'ip a')

Դուք կարող եք ներբեռնել անհրաժեշտ ֆայլերը իմ github repo- ից (նախորդ քայլ)

'/Var/www/html/' - ում տեղադրեք բոլոր ֆայլերը 'Frontend' թղթապանակից:

>/var/www/html/

Քայլ 6: Քայլ 6. Հետևի ստեղծում (շիշ)

Կայքի backend- ը հիմնված է Flask- ի վրա:

Բոլոր ֆայլերը կարելի է գտնել github repo- ում:

Պատճենեք բոլոր ֆայլերը Raspberry Pi- ի ցանկացած գրացուցակում:

Օրինակ '/home/pi/colorpicker:

Գրացուցակ ստեղծելու համար նավարկեք դեպի նպատակակետի գրացուցակը ՝ օգտագործելով «cd», այնուհետև կատարեք «mkdir»:

Առայժմ այդքանը: Կոդը կբացատրվի հաջորդ քայլերում:

Քայլ 7: Քայլ 7: Սարքաշար

> Ներբեռնման սխեմա

Ստեղծեք սխեմա, ինչպես ցույց է տրված վերը նշված փաստաթղթում:

Նշում. Ավելացրեք նաև մեկ սպիտակ LED, մեկ դիմադրիչով (220 կամ 330 Օմ):

Սարքավորումների բացատրություն

HC04

HC04 սենսորը արտանետում է ալիքներ, որոնք անդրադարձնում և նորից ստանում են սենսորը:

Արտանետման և ստացման միջև ընկած ժամանակային դելտայի հաշվարկով մենք կարող ենք հաշվարկել հեռավորությունը:

Հեռավորություն = ((Timestamp_recieve - Timestamp_emit) / ձայնի արագություն) / 2

Մենք բաժանում ենք երկուսի, քանի որ ալիքը արտացոլում է, այսինքն ՝ այն երկու անգամ է անցնում տարածությունը:

LCD

Մենք օգտագործում ենք LCD էկրան ՝ RGB- ն և HEX- ը ցույց տալու համար, ինչպես նաև IP- ն, երբ ծրագիրը սկսվում է:

Այս LCD- ի համար ես գնել եմ I2C մոդուլ: Այժմ մեզ միայն 4 լար է պետք: SDA, SCL, GND, VCC

Այս LCD- ն օգտագործելու համար ես գրեցի Python դաս, որպեսզի այն ավելի հեշտ օգտագործվի:

TCS34725

Այս սենսորը թույլ է տալիս չափել գույները: Մենք օգտագործում ենք գրադարան ՝ RGB արժեքը չափելու համար:

Քայլ 8. Քայլ 8. Կոդ բացատրված

Քայլ 8: Բացատրված ծածկագիր
Քայլ 8: Բացատրված ծածկագիր
Քայլ 8: Բացատրված ծածկագիր
Քայլ 8: Բացատրված ծածկագիր
Քայլ 8: Բացատրված ծածկագիր
Քայլ 8: Բացատրված ծածկագիր
Քայլ 8: Բացատրված ծածկագիր
Քայլ 8: Բացատրված ծածկագիր

Ֆրոնտենդը

Առջևը գոյություն ունի երեք հիմնական մասից.

Նախ `html ֆայլերն են, որոնք կառուցում են մեր վեբ կայքի կառուցվածքը, բայց չեն պարունակում կամ նվազագույն դասավորություն:

Երկրորդ, մենք ունենք css ֆայլեր կամ ոճային ֆայլեր, որոնք ոճավորում և դասավորում են մեր կայքը:

Երկուսը բավականին հեշտ է կարդալ և հասկանալ, այդ իսկ պատճառով ես դրանք չեմ բացատրի:

Վերջինս մենք ունենք Javascript ՝ երկու գրադարաններով:

Օգտագործված երկու գրադարաններն են SocketIO- ն և URLSearchParams- ը:

SocketIO- ն թույլ է տալիս հաղորդագրություններ ուղարկել հետևի մասից դեպի առջև և հակառակը:

Հաղորդագրությունները կարող են ուղարկվել մեկ հաճախորդի, բայց նաև բազմաթիվ հաճախորդների (հեռարձակում)

> Socket IO Javascript

> Socket IO Python

Վերևի պատկերներում դուք կարող եք տեսնել այս նախագծում կատարված Socket միացումներից մեկը:

Հաղորդագրություններ ուղարկելու հրամանը «արտանետել» է, ստացումը կատարվում է «միացված» -ի միջոցով:

URLSearchParms- ը թույլ է տալիս հեշտությամբ արժեքներ ստանալ հարցման տողից:

Հարցման տողի օրինակ. Example.com/index.html?id=1

URLSearchParams- ը հետ կտա ձեզ ՝ {'id' = '1'}

> URLSearchParams Օրինակ

Հետին պլան

Հետին պլանը ամբողջությամբ գրված է Python- ում ՝ մի շարք գրադարաններով:

Առաջին գրադարանը, որը մենք ներմուծում ենք, «Ֆլասկ» -ն է: Այս գրադարանը անհրաժեշտ է API ստեղծելու, MySQL տվյալների բազայի համար բոլոր CRUD գործողությունները կատարելու համար: CRUD- ը նշանակում է Ստեղծել կարդալու թարմացում ջնջել:

> շիշ

Վերևի պատկերը ցույց է տալիս մի քանի շիշ «երթուղիներ»: Ingամփորդելով դեպի երթուղի, դուք ինքնաբերաբար կկատարեք «GET» մեթոդը, ծածկագիրը կգործարկվի և արժեքը կստանաք վերադարձի մեթոդից: Կան նաև այլ մեթոդներ, օրինակ ՝ «ՓՈՍՏ» և «LEՆLEԵԼ»: Նման մեթոդները փորձարկելու համար ձեզ հարկավոր կլինի այնպիսի ծրագիր, ինչպիսին Փոստատարն է:

Հաջորդ ներմուծման գրադարանը SocketIO- ն է, որը ես բացատրեցի արդեն առջևի հատվածում:

Հաջորդը GPIO- ն է:

Սա թույլ է տալիս վերահսկել Rapsberry Pi- ի GPIO կապերը:

Ամենակարևոր հրամանները հետևյալն են.

  • GPIO.setmode (GPIO. BCM) Ընտրեք կապում կազմաձևը:
  • GPIO.output (, GPIO. LOW կամ GPIO. HIGH) Գրեք LIN կամ HIGH BIN- ին:
  • GPIO.setup (,) Սահմանեք PIN- ը որպես մուտք կամ ելք, կամ քաշեք կամ քաշեք

Հաջորդը մենք ունենք թելեր:

Միակ հրամանները, որոնք մենք օգտագործում ենք, հետևյալն են.

  • Թեման (թիրախ =)
  • .սկսել ()

Օգտագործելով թելեր ՝ մենք կարող ենք միաժամանակ մի քանի կոդ գործարկել: Այս կերպ մենք կարող ենք չափել հեռավորությունը և միևնույն ժամանակ, լսել մուտքային վարդակից io հաղորդագրությունները:

Առաջին հրամանը Thread (target =) կստեղծի Thread դաս, որը սկսելով օգտագործել «start ()», գործարկելու է գործառույթը «target» հիմնաբառում, որը տրվել է դասի ստեղծման ժամանակ:

Հաջորդը մենք ունենք գունային սենսորի գրադարանը, որը բավականին ուղիղ է: Ես չեմ բացատրի այս գրադարանը, քանի որ մեթոդները շատ հստակ և բացատրված են ծածկագրում:

Վերջապես մենք ունենք ցանցեր: Սա թույլ է տալիս մեզ ստանալ IP հասցեն, որը մենք օգտագործում ենք անլար և լարային կապի համար:

Վերջին անգամ ես որոշ դասեր պատրաստեցի հեռավորության սենսորի, LED- ի և LCD- ի համար:

Ես չեմ բացատրի, թե ինչպես են դրանք աշխատում:

Քայլ 9: Քայլ 9. Գործի ստեղծում

Քայլ 9: Գործի ստեղծում
Քայլ 9: Գործի ստեղծում
Քայլ 9: Գործի ստեղծում
Քայլ 9: Գործի ստեղծում
Քայլ 9: Գործի ստեղծում
Քայլ 9: Գործի ստեղծում

Այս նախագծի համար ես ստեղծեցի փայտե պատյան:

Փայտը թեթև է, բարակ և մեծ ծախսեր չի պահանջում:

Որպես չափսեր ես օգտագործել եմ.

  • Բարձրությունը `5 սմ
  • Լայնությունը `10.5 սմ
  • Երկարություն ՝ 12,5 սմ

Սենսորների համար անհրաժեշտ է ավելացնել 2 անցք և տեղադրել դրանք միմյանց կողքին:

Գործը ստեղծելուց հետո տեղադրեք տվիչները, LED- ն և LCD- ը:

Քայլ 10: Վերջնական քայլեր

Ամեն ինչ հիմնովին արված է:

Այժմ մենք միայն պետք է համոզվենք, որ մեր կոդը սկսվում է, այն պահին, երբ մենք միացնում ենք մեր էներգիայի աղբյուրը:

Դրա համար շատ մեթոդներ կան:

> Օրինակներ

Մենք կօգտագործենք առաջին մեթոդը.

Կատարեք այս տողը. 'Sudo nano /etc/rc.local'

Ավելացրեք ձեր հրամանը ՝ կոդը գործարկելու համար ՝ 'sudo python3'

Պահեք ֆայլը Ctrl-X- ի միջոցով:

Եթե խմբագրման խնդիրներ ունեք: Կրկնեք այս քայլը, բայց նախ կատարեք «sudo -i»:

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