Мазмұны:

ColorPicker: 10 қадам
ColorPicker: 10 қадам

Бейне: ColorPicker: 10 қадам

Бейне: ColorPicker: 10 қадам
Бейне: Джемпер спицами детский регланом сверху. Ложная кеттлевка, росток, подрезы. 2024, Қараша
Anonim
ColorPicker
ColorPicker

Бұл жобаның мақсаты - түстерді өлшеу және оларды басқа түс жүйелеріне аудару. Тек сенсор берген RGB мәндерін қолдана отырып, сіз HSL, CYMK, HEX, сонымен қатар ең жақын RAL кодын (бояу үшін қолданылатын стандарт) аударуға болады. Бұл жоба Python, MySQL, Linux және Javascript туралы негізгі білімді қажет етеді.

Егер сіз Flask құрылымымен және SocketIO -мен таныс болсаңыз, онда бұл жобаның коды сізге түсінікті болуы керек.

Бұл жобаны суретшілер, интерьер дизайнерлері немесе түстерді өлшеуді қажет ететін кез келген адам қолдана алады.

Бұл жоба соншалықты қымбат емес және оның бағасы _ еуроны құрайды, жеткізілім кірмейді.

Жабдықтар

Бұл бөлімді екіге бөлуге болады:

  • Аппараттық құрал
  • Бағдарламалық қамтамасыз ету

Аппараттық құрал

Біз келесі компоненттерді қолданамыз

  • HC04: қашықтық сенсоры, біз объектіден қаншалықты қашықтықты өлшейміз
  • СКД дисплейі 2х16
  • LCD I2C модулі (HW061)
  • TCS34725 Түсті сенсор модулі (Adafruit)
  • Ақ жарықдиодты
  • Raspberry Pi 3 (кез келген Raspberry Pi жұмыс істеуі керек)
  • 5х 1к Ом резисторы
  • 1х 220 немесе 330 Ом резисторы
  • SD картасы 16 ГБ (14.4 ГБ)

Бағдарламалық қамтамасыз ету

  • Python IDE, мысалы Visual Code немесе Pycharm (Pycharm мұнда пайдаланылады)
  • MySQL Workbench
  • Putty (Putty жүктеу)
  • Rufus немесе кез келген басқа SD картасын жазушы (Rufus жүктеу)

Баға қою

Егер сізде Rapsberry Pi болса, бұл жоба өте арзан.

  • HC04: 2,5 евродан басталады (Қытай) және басқа жергілікті дүкендер үшін 6 еуроға дейін.
  • СКД: шамамен 6-8 евро.
  • I2C модулі: 1 евродан төмен (Қытай), бірақ жергілікті дүкендер үшін 4 еуроға дейін.
  • TCS34725: 9-12 еуро шамасында. Ең қымбат бөлігі (RPi қоспағанда)
  • Ақ светодиод: жаппай сатып алынды, 20 светодиод 1 евродан төмен
  • Raspberry Pi: Қай нұсқаға байланысты, шамамен 40 евро
  • Резисторлар: бір резистор үшін 0,10 евро
  • SD картасы: шамамен 8 евро

Raspberry Pi қуат адаптері бағаға қосылмайды, өйткені бұл адаптер өте кең таралған.

Шамадан тыс баға диапазоны: шамамен 70 евро, егер сіз Raspberry Pi мен жобаның корпусын қоссаңыз.

Корпусты салу үшін мен жеңіл жұқа ағашты қолдандым. Мен бұл ағашты жиһаздан қайта өңдедім. Істің материалы сізге байланысты.

1 -қадам: 1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау

1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау
1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау
1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау
1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау
1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау
1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау
1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау
1 -қадам: RPi ОЖ орнату, SSH мен Интернетке қатынауды конфигурациялау

1.1 -қадам: суретті орнату

Суретті Raspberry Pi ресми сайтынан жүктеп алыңыз. Қандай суретті орнатқаныңыз маңызды емес. Бұл жоба үшін GUI қажет емес, өйткені біз тек SSH арқылы қосыламыз.

Суретті SD картасына жазыңыз (картадағы барлық файлдар өшіріледі).

Барлығын SD картасына жазу үшін біз 'Rufus' құралын қолданамыз. Кескінді жүктегеннен кейін Rufus бағдарламасын ашып, сурет файлын таңдаңыз. Мақсатты дискіні таңдап, суретті дискіге жазыңыз. Бұл біраз уақыт алуы мүмкін.

> Rufus

1.2 -қадам: SSH орнату

Келесі қадам - SD картасына қосылу. Мұны істеу үшін бізге SSH қосылуы керек.

Мұны істеу үшін мониторды пайдаланбай, файл зерттеушісін ашып, SD картаның жүктеу бөлімін ашыңыз. Файл кеңейтімі жоқ «ssh» деп аталатын бос файл жасаңыз.

Сонымен қатар, «cmdline.txt» ашыңыз.

Файлдың соңына «169.254.10.1» қосыңыз және оны сақтаңыз.

SD картасын ажыратып, оны Raspberry Pi -ге салыңыз.

Енді біз Raspberry Pi -ді қуат көзіне қосып, SSH арқылы жүктеп, қосуға болады.

SSH көмегімен қосылу үшін біз «Putty» бағдарламасын қолданамыз. Мұны жасамас бұрын, RPi мен компьютерді электронды кабель арқылы қосыңыз. Putty ашыңыз және SSH қойындысына өтіңіз және осы IP -ді толтырыңыз: 169.254.10.1. «Қосылу» түймесін басыңыз, сонда сіз қосыласыз.

> Шпатлевка

Raspberry Pi пайдаланатын әдепкі логин - пайдаланушы аты ретінде 'pi' және пароль үшін 'таңқурай'.

1.3 -қадам: сымсыз байланыс

Сіздің Raspberry Pi қазір қосылған.

Біз сондай -ақ Wi -Fi арқылы RPi -ге қосылғымыз келеді, осылайша бізге енді 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 -қадам: Бағдарламалық қамтамасыз етуді RPi -ге орнату

Бұл жоба үшін бізге бірнеше кітапханалар орнату қажет.

  • Mariadb: MySQL дерекқоры (sudo apt-get install mariadb-server)
  • Түс сенсорына арналған Adafruit кітапханасы: Түстерді өлшеу (pip3 орнату adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', apache веб -серверін таңдаңыз)

Сонымен қатар келесі құбыр кітапханаларын орнатыңыз:

  • flask_socketio
  • колба
  • flask_cors
  • тақта
  • busio
  • желі беттері

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 -кесте: Website_data || Төменгі 4 кесте

MySQL - бұл дерекқордың реляциялық жүйесі, яғни кестелер арасында байланыс жасай аламыз.

Біз жасауымыз керек бірінші қатынас - «sensor_type» пен «өлшеу» арасында.

Суретте көрсетілгендей, екі пернені байланыстырыңыз.

> Кестені және сілтеме кілттерін өңдеу

Төменгі бұрыштағы «Қолдану» түймесін басу арқылы өзгерістерді сақтауды ұмытпаңыз.

Сондай -ақ, 'website_data' кестесін өңдеңіз және 'MetingID' сілтемесін жасаңыз.

Енді біз кестелерді құруды және қатынастарды құруды аяқтадық.

Деректерді қосу:

RALcolors кестесі - бұл тұрақты кесте, онда мәндер ешқашан өзгермейді. Біз бұл мәндерді қосамыз

өте оңай.

> Excel файлын жүктеңіз

Жоғарыдағы Excel файлын жүктеп алып, барлық деректерді және 'көшіруді' таңдаңыз. Суреттегідей жасаңыз

> Кестені көрсету

кестеде «тінтуірдің оң жақ түймешігімен нұқыңыз» және «Жолдарды қою» таңдаңыз. Деректерді қосу үшін төменгі бұрыштағы 'қолдану' түймесін басыңыз.

Енді барлық RALcolors мәліметтер базасында сақталады.

Біз қазір sensor_type дерекқорына қосуымыз керек.

> Sensortype деректері

Ескерту: сенсордың сипаттамасы «голландша»

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 репо -дан жүктей аласыз (алдыңғы қадам)

'/Var/www/html/' ішіне барлық файлдарды 'Frontend' қалтасынан қойыңыз.

>/var/www/html/

6 -қадам: 6 -қадам: Артқы жағын жасау (колба)

Веб -сайттың артқы жағы Flask -қа негізделген.

Барлық файлдарды github реподан табуға болады.

Барлық файлдарды Raspberry Pi кез келген каталогына көшіріңіз.

Мысалы, '/home/pi/colorpicker.

Каталог құру үшін 'cd' көмегімен тағайындалған каталогқа өтіңіз, содан кейін 'mkdir' орындаңыз.

Әзірге бәрі осы. Код келесі қадамдарда түсіндіріледі.

7 -қадам: 7 -қадам: Аппараттық құрал

> Жүктеу схемасы

Жоғарыдағы құжатта көрсетілгендей схеманы құрыңыз.

ЕСКЕРТПЕ: Сондай -ақ, бір резисторы бар бір ақ жарық диодты қосыңыз (220 немесе 330 Ом).

Техникалық құралдарды түсіндіру

HC04

HC04 сенсоры толқындар шығарады, олар шағылысады және сенсор қайтадан қабылдайды.

Шығару мен алу арасындағы уақыттық дельтаны есептей отырып, біз қашықтықты есептей аламыз.

Қашықтық = ((Timestamp_recieve - Timestamp_emit) / дыбыс жылдамдығы) / 2

Біз екіге бөлеміз, себебі толқын шағылысады, яғни ол қашықтықты екі рет жүріп өтеді.

СКД

Біз LCD дисплейін RGB және HEX көрсету үшін қолданамыз, ол бағдарлама басталған кезде IP -ге сәйкес келеді.

Бұл СКД үшін мен I2C модулін сатып алдым. Бізге қазір тек 4 сым қажет. SDA, SCL, GND, VCC

Бұл СКД -ды пайдалану үшін мен оны пайдалануды жеңілдету үшін Python класын жаздым.

TCS 34725

Бұл сенсор түстерді өлшеуге мүмкіндік береді. Біз RGB мәнін өлшеу үшін кітапхананы қолданамыз.

8 -қадам: 8 -қадам: Код түсіндірілді

8 -қадам: код түсіндірілді
8 -қадам: код түсіндірілді
8 -қадам: код түсіндірілді
8 -қадам: код түсіндірілді
8 -қадам: код түсіндірілді
8 -қадам: код түсіндірілді
8 -қадам: код түсіндірілді
8 -қадам: код түсіндірілді

Алдыңғы жағы

Фронт үш негізгі бөліктен тұрады.

Біріншіден, біздің веб -сайтымыздың құрылымын құратын, бірақ құрамы жоқ немесе минималды орналасуы жоқ html файлдары.

Екіншіден, біздің веб -сайттың стилі мен орналасуы бар CSS файлдары немесе стиль файлдары бар.

Екеуі де оқуға және түсінуге оңай, сондықтан мен оларды түсіндірмеймін.

Соңғы бізде Javascript бар, екі кітапханасы бар.

Қолданылатын екі кітапхана - SocketIO және URLSearchParams.

SocketIO сізге хабарламаны артқы жағынан алдыңғы жаққа жіберуге мүмкіндік береді және керісінше.

Хабарламалар бір клиентке жіберілуі мүмкін, сонымен қатар бірнеше клиенттерге жіберілуі мүмкін (хабар тарату)

> Socket IO Javascript

> IO Python розеткасы

Жоғарыдағы суреттерде сіз осы жобада жасалған Socket қосылымдарының бірін көре аласыз.

Хабар жіберу пәрмені 'emit', қабылдау 'on' арқылы жүзеге асады.

URLSearchParms сұрау жолынан мәндерді оңай алуға мүмкіндік береді.

Сұрау жолының мысалы: example.com/index.html?id=1

URLSearchParams сізге қайтарады: {'id' = '1'}

> URLSearchParams мысалы

Артқы жағы

Артқы жағы Python -да жазылған, көптеген кітапханалары бар.

Біз импорттайтын бірінші кітапхана - бұл «Флакон». Бұл кітапхана API құру үшін, MySQL мәліметтер базасы үшін барлық CRUD әрекеттерін орындау үшін қажет. CRUD - Оқуды жаңартуды жоюды жою дегенді білдіреді.

> Шыныаяқ

Жоғарыдағы суретте Колбаның бірнеше маршруттары көрсетілген. Маршрутқа серуендеу арқылы сіз автоматты түрде 'GET' әдісін жасайсыз, код орындалады және сіз қайтару әдісінің мәнін аласыз. 'POST' және 'DELETE' сияқты басқа әдістер бар. Мұндай әдістерді тексеру үшін сізге Postman сияқты бағдарлама қажет болады.

Келесі импорт кітапханасы - бұл SocketIO, мен оны алдыңғы бөлімде түсіндірдім.

Келесі - GPIO.

Бұл Rapsberry Pi GPIO түйреуіштерін басқаруға мүмкіндік береді.

Ең маңызды командалар:

  • GPIO.setmode (GPIO. BCM) түйреуіштердің конфигурациясын таңдаңыз.
  • GPIO.output (, GPIO. LOW немесе GPIO. HIGH) түйреуішке LOW немесе HIGH деп жазыңыз.
  • GPIO.setup (,) PIN кодын кіріс немесе шығыс ретінде немесе ашылатын немесе тартылатын ретінде анықтаңыз

Әрі қарай бізде жіп бар.

Біз қолданатын жалғыз командалар:

  • Жіп (мақсат =)
  • .start ()

Ағындарды қолдана отырып, біз бір уақытта бірнеше код даналарын іске қоса аламыз. Осылайша біз қашықтықты өлшей аламыз және сонымен бірге кіріс ұялы io хабарларын тыңдай аламыз.

Thread (target =) бірінші пәрмені 'start ()' қолданыла бастаған кезде Thread класын құрады, ол сыныпты құру кезінде берілген 'target' кілт сөзіндегі функцияны іске қосады.

Әрі қарай бізде түстер сенсорының кітапханасы бар, ол тікелей. Мен бұл кітапхананы түсіндірмеймін, себебі әдістер өте түсінікті және кодта түсіндірілген.

Соңғы рет бізде желі желілері бар. Бұл бізге сымсыз және сымды байланыс үшін пайдаланылатын IP мекенжайын алуға мүмкіндік береді.

Соңында мен қашықтық сенсоры, жарық диоды мен СКД үшін бірнеше сабақ жасадым.

Мен олардың қалай жұмыс істейтінін түсіндірмеймін.

9 -қадам: 9 -қадам: Іс құру

9 -қадам: Іс құру
9 -қадам: Іс құру
9 -қадам: Іс құру
9 -қадам: Іс құру
9 -қадам: Іс құру
9 -қадам: Іс құру

Бұл жоба үшін мен ағаштан жасалған корпус жасадым.

Ағаш жеңіл, жұқа және қымбатқа түспейді.

Мен қолданған өлшемдер ретінде:

  • Биіктігі: 5 см
  • Ені: 10,5 см
  • Ұзындығы: 12,5 см

Датчиктер үшін 2 тесік қосып, оларды бір -біріне орналастыру қажет.

Корпусты жасағаннан кейін сенсорларды, жарықдиодты және СКД орнатыңыз.

10 -қадам: Соңғы қадамдар

Барлығы негізінен жасалады.

Енді біз тек біздің кодты қуат көзіне қосқан сәтте басталатынына көз жеткізуіміз керек.

Мұны істеудің көптеген әдістері бар.

> Мысалдар

Біз бірінші әдісті қолданамыз:

Бұл жолды орындаңыз: 'sudo nano /etc/rc.local'

Кодты іске қосу үшін пәрменді қосыңыз: 'sudo python3'

Файлды Ctrl-X көмегімен сақтаңыз.

Егер редакциялауда қиындықтар туындаса. Бұл қадамды қайталаңыз, бірақ алдымен 'sudo -i' орындаңыз.

Ұсынылған: