Мазмуну:

ColorPicker: 10 кадам
ColorPicker: 10 кадам

Video: ColorPicker: 10 кадам

Video: ColorPicker: 10 кадам
Video: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, Ноябрь
Anonim
ColorPicker
ColorPicker

Бул долбоордун максаты - түстөрдү өлчөө жана аларды башка түстүү системаларга которуу. Сенсор берген RGB баалуулуктарын колдонуп, HSL, CYMK, HEX жана ошондой эле жакынкы RAL кодун (боек үчүн колдонулган стандарт) которууга болот. Бул долбоор Python, MySQL, Linux жана Javascript боюнча негизги билимди талап кылат.

Эгерде сиз Flask framework жана SocketIO менен тааныш болсоңуз, анда бул долбоордун коду сиз үчүн түшүнүктүү болушу керек.

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

Бул долбоор анча кымбат эмес жана болжолдуу түрдө _ евро турат, жеткирүү кирбейт.

Жабдуулар

Биз бул бөлүмдү эки бөлүккө бөлө алабыз:

  • Аппараттык
  • Программалык камсыздоо

Аппараттык

Биз төмөнкү компоненттерди колдонобуз

  • HC04: Алыстык сенсору, биз объекттен канча аралыкты ченеп жатабыз
  • ЖК дисплей 2х16
  • LCD I2C модулу (HW061)
  • TCS34725 Түс сенсорунун модулу (Adafruit)
  • Ак LED
  • Raspberry Pi 3 (Ар бир Raspberry Pi иштеши керек)
  • 5x 1k Ohm каршылыгы
  • 1х 220 же 330 Ом каршылыгы
  • SD карта 16GB (14.4GB)

Программалык камсыздоо

  • 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 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ту ачып, сүрөт файлын тандаңыз. Максаттуу дискти тандап, сүрөттү дискке жазыңыз. Буга бир аз убакыт кетиши мүмкүн.

> Rufus

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

Кийинки кадам - SD картага байланыш түзүү. Бул үчүн биз SSHди иштетишибиз керек.

Мониторду колдонбостон, файл изилдөөчүңүздү ачыңыз жана SD картанын жүктөөчү бөлүгүн ачыңыз. Файл кеңейтүүсүз "ssh" деп аталган бош файлды түзүңүз.

Ошондой эле, "cmdline.txt" ачыңыз

Файлдын аягына "169.254.10.1" кошуп, сактап коюңуз.

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

Эми биз Raspberry Pi'ди кубат булагына туташтырып, SSH аркылуу жүктөп жана туташтыра алабыз.

SSH аркылуу туташуу үчүн биз "Putty" программасын колдонобуз. Муну жасоодон мурун RPi менен компьютериңизди ehternet кабели аркылуу туташтырыңыз. Putty ачып, SSH өтмөгүнө өтүңүз жана бул IPди толтуруңуз: 169.254.10.1. 'Туташууну' чыкылдатыңыз жана туташасыз.

> Putty

Raspberry Pi колдонгон демейки логин пароль үчүн 'pi' жана колдонуучу аты катары 'малина' болуп саналат.

1.3 -кадам: Зымсыз байланыш

Сиздин Raspberry Pi азыр күйгүзүлдү.

Биз ошондой эле Wifi аркылуу 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
  • netifaces

3 -кадам: 3 -кадам: MySQL маалымат базасына туташуу, маалымат базасын түзүү

3 -кадам: MySQL маалымат базасына туташуу, маалымат базасын түзүү
3 -кадам: MySQL маалымат базасына туташуу, маалымат базасын түзүү
3 -кадам: MySQL маалымат базасына туташуу, маалымат базасын түзүү
3 -кадам: MySQL маалымат базасына туташуу, маалымат базасын түзүү
3 -кадам: MySQL маалымат базасына туташуу, маалымат базасын түзүү
3 -кадам: MySQL маалымат базасына туташуу, маалымат базасын түзүү

Кийинки кадам, MySQL маалымат базасына MySQL Workbenchти колдонуу менен туташуу.

> IP a

Жогорудагы сүрөттө көрсөтүлгөндөй '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 -кадам: Аппараттык

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

Жогорудагы документте көрсөтүлгөндөй схеманы түзүңүз.

ЭСКЕРТҮҮ: Ошондой эле бир каршылыгы бар бир ак LED кошуу (220 же 330 Ом).

Аппаратты түшүндүрүү

HC04

HC04 сенсору толкундарды чыгарат, алар чагылышат жана сенсор тарабынан кайра алынат.

Чыгаруу менен алуунун ортосундагы убакыт дельтасын эсептөө менен биз аралыкты эсептей алабыз.

Расстояние = ((Timestamp_recieve - Timestamp_emit) / үн ылдамдыгы) / 2

Биз экиге бөлөбүз, анткени толкун чагылдырат, бул аралыкты эки жолу басып өтөт.

LCD

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

Бул ЖК үчүн мен I2C модулун сатып алдым. Бизге азыр 4 зым гана керек. SDA, SCL, GND, VCC

Бул ЖКны колдонуу үчүн мен аны колдонууну жеңилдетүү үчүн Python классын жаздым.

TCS34725

Бул сенсор түстөрдү өлчөөгө мүмкүндүк берет. Биз китепкананы RGB баасын өлчөө үчүн колдонобуз.

8 -кадам: 8 -кадам: Код түшүндүрүлдү

8 -кадам: Код түшүндүрүлдү
8 -кадам: Код түшүндүрүлдү
8 -кадам: Код түшүндүрүлдү
8 -кадам: Код түшүндүрүлдү
8 -кадам: Код түшүндүрүлдү
8 -кадам: Код түшүндүрүлдү
8 -кадам: Код түшүндүрүлдү
8 -кадам: Код түшүндүрүлдү

Алдыңкы бет

Frontend үч негизги бөлүктөн турат.

Биринчиден, биздин веб -сайттын структурасын түзгөн, бирок камтылган же минималдуу макети жок html файлдары.

Экинчиден, биздин веб -сайтыбыздын стили жана жайгашуусу боюнча CSS файлдары же стиль файлдары бар.

Экөөнү окуу жана түшүнүү абдан оңой, ошондуктан мен аларды түшүндүрбөйм.

Акыркы бизде Javascript бар, эки китепканасы бар.

Колдонулган эки китепкана - SocketIO жана URLSearchParams.

SocketIO сизге backendден алдыңкы бетке билдирүүлөрдү жөнөтүүгө мүмкүндүк берет жана тескерисинче.

Кабарлар бир кардарга, бирок бир нече кардарга жөнөтүлүшү мүмкүн (Уктуруу)

> Socket IO Javascript

> Socket IO Python

Жогорудагы сүрөттөрдө сиз бул долбоордо жасалган Socket байланыштарынын бирин көрө аласыз.

Билдирүүлөрдү жөнөтүү буйругу 'emit', кабыл алуу 'on' аркылуу аткарылат.

URLSearchParms сизге суроо тилкесинен оңой баалуулуктарды алууга мүмкүндүк берет.

Мисал querystring: example.com/index.html?id=1

URLSearchParams сизге кайтарып берет: {'id' = '1'}

> URLSearchParams мисал

Арткы жагы

Арткы бөлүгү толугу менен Python менен жазылган, көптөгөн китепканалары бар.

Биз импорттогон биринчи китепкана 'Flask'. Бул китепкана API түзүүгө, MySQL маалымат базасы үчүн бардык CRUD аракеттерин жасоого керек. CRUD "Окууну жаңыртууну жок кылуу" дегенди билдирет.

> Колба

Жогорудагы сүрөттө бир нече Flask 'маршруттары' көрсөтүлгөн. Маршрутка серфинг жүргүзүү менен сиз автоматтык түрдө "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 =) биринчи буйругу Thread классын түзөт, ал 'start ()' колдонула баштаганда, классты түзүүдө берилген 'target' ачкыч сөзүндөгү функцияны иштетет.

Андан кийин бизде түстөр сенсорунун китепканасы бар, ал абдан түз. Мен бул китепкананы түшүндүрбөйм, анткени методдор абдан ачык жана коддо түшүндүрүлгөн.

Акыркы жолу бизде netifaces бар. Бул бизди зымсыз жана зымдуу туташуу үчүн колдонгон IP дарегин алууга мүмкүнчүлүк берет.

Акыркы жолу мен аралык сенсор, LED жана ЖК үчүн кээ бир класстарды өзүм жасадым.

Мен алардын кантип иштээрин түшүндүрбөйм.

9 -кадам: 9 -кадам: Ишти түзүү

9 -кадам: Ишти түзүү
9 -кадам: Ишти түзүү
9 -кадам: Ишти түзүү
9 -кадам: Ишти түзүү
9 -кадам: Ишти түзүү
9 -кадам: Ишти түзүү

Бул долбоор үчүн мен жыгач корпусту жасадым.

Жыгач жеңил, ичке жана анча кымбатка турбайт.

Мен колдонгон өлчөмдөр катары:

  • Бийиктиги: 5 см
  • Туурасы: 10.5см
  • Узундугу: 12.5 см

Сенсорлор үчүн 2 тешикти кошуп, аларды жанаша жайгаштыруу керек.

Корпусту түзгөндөн кийин, сенсорлорду, LED жана ЖК орнотуңуз.

10 -кадам: Акыркы кадамдар

Баары негизинен жасалат.

Эми биз жөн гана биздин коддун башталганына, электр булагыбызды туташтырганга ишенишибиз керек.

Бул үчүн көптөгөн ыкмалар бар.

> Мисалдар

Биз биринчи ыкманы колдонобуз:

Бул линияны аткарыңыз: 'sudo nano /etc/rc.local'

Кодду иштетүү үчүн буйругуңузду кошуңуз: 'sudo python3'

Файлды Ctrl-X аркылуу сактаңыз.

Эгер түзөтүүдө кыйынчылыктар болсо. Бул кадамды кайра жасаңыз, бирок адегенде 'sudo -i' аткарыңыз.

Сунушталууда: