Talaan ng mga Nilalaman:

ColorPicker: 10 Hakbang
ColorPicker: 10 Hakbang

Video: ColorPicker: 10 Hakbang

Video: ColorPicker: 10 Hakbang
Video: How to Choose Colors (Easy 3-Step Process) 2024, Nobyembre
Anonim
ColorPicker
ColorPicker

Ang layunin ng proyektong ito ay upang masukat ang mga kulay, at isalin ang mga ito sa iba pang mga system ng kulay. Gamit lamang ang mga halagang RGB na ibinigay ng sensor, maaari mong isalin sa HSL, CYMK, HEX at pati na rin ang pinakamalapit na RAL code (karaniwang ginagamit para sa pintura). Ang proyektong ito ay nangangailangan ng isang pangunahing kaalaman ng Python, MySQL, Linux at Javascript.

Kung pamilyar ka rin sa balangkas ng Flask at SocketIO, kung gayon ang code para sa proyektong ito ay dapat na madaling maunawaan para sa iyo.

Ang proyektong ito ay maaaring magamit ng mga pintor, interiour na tagadisenyo o ng sinumang nangangailangan na sukatin ang mga kulay.

Ang proyektong ito ay hindi gaanong mahal, at nagkakahalaga ng tinatayang _ euro, hindi kasama ang pagpapadala.

Mga gamit

Maaari nating hatiin ang seksyong ito sa dalawang bahagi:

  • Hardware
  • Software

Hardware

Ginagamit namin ang mga sumusunod na sangkap

  • HC04: Distansya sensor, kung gaano kalayo ang sinusukat namin mula sa object
  • LCD display 2x16
  • Modul ng LCD I2C (HW061)
  • Module ng kulay ng sensor ng TCS34725 (Adafruit)
  • Puting LED
  • Raspberry Pi 3 (Anumang Raspberry Pi ay dapat gumana)
  • 5x 1k Ohm risistor
  • 1x 220 o 330 Ohm risistor
  • SD card 16GB (14.4GB)

Software

  • Python IDE, tulad ng Visual Code o Pycharm (Pycharm na ginamit dito)
  • MySQL Workbench
  • Putty (I-download ang Putty)
  • Rufus o anumang iba pang manunulat ng SD card (I-download ang Rufus)

Pagpepresyo

Ang proyektong ito ay medyo mura, kung mayroon ka ng isang Rapsberry Pi.

  • HC04: Simula sa paligid ng € 2.5 € (China) at hanggang € 6 para sa mas maraming mga lokal na tindahan.
  • LCD: Sa paligid ng 6-8 euro.
  • I2C module: Tulad ng murang sa ilalim ng € 1 (China), ngunit hanggang sa € 4 para sa mas maraming mga lokal na tindahan.
  • TCS34725: Sa paligid ng € 9-12 euro. Pinakamahal na bahagi (Hindi kasama ang RPi)
  • Pinangunahan ng puti: Nabili nang maramihan, 20 LEDS na mas mababa sa € 1
  • Raspberry Pi: Nakasalalay sa aling bersyon, humigit-kumulang € 40 €
  • Mga resistorista: € 0.10 para sa isang risistor
  • SD card: humigit-kumulang € 8

Ang power adapter para sa Raspberry Pi ay hindi kasama sa gastos ng presyo, dahil ang adapter na ito ay karaniwang pangkaraniwan.

Overal na saklaw ng presyo: sa paligid ng € 70, kung isinama mo ang Raspberry Pi at ang kaso para sa proyekto.

Upang maitayo ang kaso, gumamit ako ng magaan na manipis na kahoy. Ni-recycle ko ang kahoy na ito mula sa muwebles. Nasa iyo ang materyal para sa kaso.

Hakbang 1: Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet

Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet
Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet
Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet
Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet
Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet
Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet
Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet
Hakbang 1: Pag-install ng RPi OS, Pag-configure ng SSH at Pag-access sa Internet

Hakbang 1.1: Pag-install ng imahe

I-download ang imahe mula sa opisyal na site ng Raspberry Pi. Hindi mahalaga kung anong imahe ang na-install mo. Para sa proyektong ito, hindi kinakailangan ang isang GUI, dahil makakonekta lamang kami gamit ang SSH.

Isulat ang imahe sa (walang laman) SD card (Ang lahat ng mga file sa card ay mabubura).

Upang isulat ang lahat sa SD card, gagamit kami ng isang tool na tinatawag na 'Rufus'. Pagkatapos i-download ang imahe, buksan ang Rufus at piliin ang file ng imahe. Piliin ang target drive at isulat ang imahe sa drive. Maaari itong magtagal

> Rufus

Hakbang 1.2: Pag-install ng SSH

Ang susunod na hakbang ay ang paglikha ng isang koneksyon sa SD card. Upang magawa iyon, kailangan nating paganahin ang SSH.

Upang gawin iyon nang hindi gumagamit ng isang monitor, buksan ang iyong file explorer at buksan ang pagkahati ng boot ng SD card. Lumikha ng isang walang laman na file na tinatawag na "ssh", nang walang extension ng file.

Gayundin, buksan ang "cmdline.txt"

Idagdag ang "169.254.10.1" sa dulo ng file at i-save ito.

I-unmount ang SD card at ipasok ito sa Raspberry Pi.

Ngayon ay maaari naming ikonekta ang Raspberry Pi sa isang mapagkukunan ng kuryente at mag-boot up at kumonekta gamit ang SSH.

Upang kumonekta gamit ang SSH, ginagamit namin ang program na "Putty". Ikonekta ang iyong RPi at PC gamit ang isang ehternet cable bago gawin iyon. Buksan ang Putty at pumunta sa tab na SSH, at punan ang IP na ito: 169.254.10.1. I-click ang 'kumonekta' at makakonekta ka.

> Masilya

Ang default na pag-login na ginamit ng Raspberry Pi ay 'pi' bilang username at 'raspberry' para sa password.

Hakbang 1.3: Wireless na koneksyon

Ang iyong Raspberry Pi ay pinagagana na ngayon.

Nais din naming kumonekta sa RPi gamit ang Wifi, sa ganoong paraan hindi na namin kailangan ng ethernet cable.

Isagawa ang sumusunod na linya:

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

Bubuksan nito ang 'nano' text editor na may mataas na mga karapatan.

Idagdag ang mga sumusunod na linya sa file:

network = {

ssid = "SSID"

psk = "Password"

}

Palitan ang "SSID" ng SSID ng iyong Wifi network

Palitan ang "Password" ng iyong password.

Pagkatapos gawin ang Ctrl + X at piliin ang opsyong 'oo'. Ang file ay nai-save na ngayon.

Ngayon kailangan naming i-restart ang serbisyo sa networking

Isagawa ang mga sumusunod na utos:

  • 'sudo -i'
  • 'sudo systemctl restart networking'

Maaari mong subukan ang iyong koneksyon sa internet gamit ang wget command.

Halimbawa: 'wget google.com'

> utos ng Wget

Hakbang 2: Hakbang 2: Pag-install ng Software sa RPi

Para sa proyektong ito kailangan naming mag-install ng ilang mga aklatan.

  • Mariadb: MySQL database (sudo apt-get install mariadb-server)
  • Adafruit library para sa color sensor: Pagsukat ng mga kulay (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', pumili ng apache webserver)

I-install din ang mga sumusunod na library ng pip:

  • flask_socketio
  • prasong
  • flask_cors
  • sumakay
  • busio
  • netifaces

Hakbang 3: Hakbang 3: Kumokonekta sa MySQL Database, Lumilikha ng Database

Hakbang 3: Kumokonekta sa MySQL Database, Lumilikha ng Database
Hakbang 3: Kumokonekta sa MySQL Database, Lumilikha ng Database
Hakbang 3: Kumokonekta sa MySQL Database, Lumilikha ng Database
Hakbang 3: Kumokonekta sa MySQL Database, Lumilikha ng Database
Hakbang 3: Kumokonekta sa MySQL Database, Lumilikha ng Database
Hakbang 3: Kumokonekta sa MySQL Database, Lumilikha ng Database

Ang susunod na hakbang, ay upang kumonekta sa MySQL database gamit ang MySQL workbench.

> IP a

Ipatupad ang utos na 'ip a', tulad ng ipinakita sa imahe sa itaas (I-click ang link)

Sa karamihan ng mga sitwasyon, ipapakita ang 3 mga entry. Kailangan namin ng 'wlan0' na entry. Kopyahin ang IP sa tabi ng 'inet', o sa halimbawang ito '192.168.1.44'

. >> Lumikha ng bagong koneksyon

Tulad ng ipinakita sa imahe sa itaas, lumikha ng isang bagong koneksyon sa mga sumusunod na paramter (Larawan sa ibaba para sa mga params)

> Mga parameter ng koneksyon

I-double click ang bagong nilikha na koneksyon upang kumonekta.

Kung may lalabas na isang prompt, i-click ang 'Oo'.

Ito ay isang walang laman na database, kaya't magdagdag tayo ng ilang mga talahanayan.

Lumikha muna ng isang schema, upang gawin iyon, sa kaliwang bahagi 'kanang pag-click' at piliin ang 'lumikha ng schema'.

Bigyan ng pangalan ang iskema at kumpirmahin.

Ngayon kailangan naming magdagdag ng mga talahanayan. Palawakin ang iskema at 'pag-right click', 'mga talahanayan'.

Lumikha ng mga sumusunod na iskema:

> Talahanayan 1: RALcolors

> Talahanayan 2: Mga uri ng sensor

> Talahanayan 3: Mga Pagsukat (Sa larawan, ginamit ang 'metingen', Dutch para sa mga sukat)

> Talahanayan 4: Website_data || Talahanayan 4 sa ibaba

Ang MySQL ay isang sistemang pangkaugnay na database, nangangahulugan iyon na makakalikha tayo ng mga ugnayan sa pagitan ng mga talahanayan.

Ang unang ugnayan na dapat nating likhain ay sa pagitan ng 'sensor_type' at 'mga sukat'.

Tulad ng ipinakita sa larawan, i-link ang dalawang mga key.

> I-edit ang isang talahanayan at mga link ng link

Huwag kalimutang i-save ang mga pagbabago sa pamamagitan ng pag-click sa 'Ilapat' sa ibabang sulok.

I-edit din ang talahanayan na 'website_data' at i-link ang 'MetingID'.

Tapos na kami sa paglikha ng mga talahanayan at paglikha ng mga relasyon.

Pagdaragdag ng data:

Ang talahanayan ng RALcolors ay isang nakapirming talahanayan, kung saan ang mga halaga ay hindi magbabago. Maaari naming idagdag ang mga halagang ito

napakadali.

> Mag-download ng file na Excel

I-download ang excel file sa itaas at piliin ang lahat ng data at 'kopyahin'. Gawin tulad ng sa imahe

> Ipakita ang talahanayan

'right-click' sa talahanayan at piliin ang 'I-paste ang mga hilera'. 'click' 'apply' sa ibabang sulok upang idagdag ang data.

Ngayon lahat ng RALcolors ay nai-save sa database.

Kailangan lamang naming idagdag ang sensor_type sa database ngayon.

> Data ng Sensortype

Tandaan: Ang paglalarawan ng sensor ay nasa 'Dutch'

Hakbang 4: Hakbang 4: Filezilla

Hakbang 4: Filezilla
Hakbang 4: Filezilla

Upang madaling kumonekta sa Raspberry Pi at maglipat ng mga file, maaari naming gamitin ang Filezilla.

> I-download ang Filezilla

Mag-file sa mga detalye ng koneksyon at kumonekta. Sa kanang bahagi maaari mo na ngayong ilipat ang mga file sa pamamagitan ng pag-drag sa kanila.

> Pinagmulan ng Github

I-download ang mga file mula sa mapagkukunan ng github sa itaas.

Hakbang 5: Hakbang 5: Paglikha ng Website

Hakbang 5: Paglikha ng Website
Hakbang 5: Paglikha ng Website
Hakbang 5: Paglikha ng Website
Hakbang 5: Paglikha ng Website

Para sa pagho-host ng website, gumagamit kami ng PHPmyAdmin at Apache2.

Ang webserver sa Raspberry Pi ay gumagamit ng direktoryo na '/ var / www / html' bilang ugat.

Kung ilalagay mo ang iyong mga file doon, ma-host ang mga ito sa IP ng Raspberry Pi. (IP = tingnan ang 'ip a')

Maaari mong i-download ang kinakailangang mga file mula sa aking github repo (nakaraang hakbang)

Sa '/ var / www / html /', i-paste ang lahat ng mga file mula sa folder na 'Frontend'.

> / var / www / html /

Hakbang 6: Hakbang 6: Paglikha ng Backend (Flask)

Ang backend ng website ay batay sa Flask.

Ang lahat ng mga file ay matatagpuan sa github repo.

Kopyahin ang lahat ng mga file sa anumang direktoryo sa Raspberry Pi.

Halimbawa '/ home / pi / colorpicker.

Upang lumikha ng isang direktoryo, mag-navigate sa direktoryo ng patutunguhan gamit ang 'cd', at pagkatapos ay isagawa ang 'mkdir'.

Yun lang sa ngayon. Ang code ay ipapaliwanag sa mga susunod na hakbang.

Hakbang 7: Hakbang 7: Hardware

> scheme ng pag-download

Lumikha ng pamamaraan tulad ng ipinakita sa dokumento sa itaas.

TANDAAN: Magdagdag din ng isang puting LED, na may isang risistor (220 o 330 Ohms).

Pagpapaliwanag sa hardware

HC04

Ang sensor ng HC04 ay naglalabas ng mga alon, na sumasalamin at muling natatanggap ng sensor.

Sa pamamagitan ng pagkalkula ng delta ng oras sa pagitan ng emit at recieve, maaari nating kalkulahin ang distansya.

Distansya = ((Timestamp_recieve - Timestamp_emit) / bilis ng tunog) / 2

Hinahati tayo ng dalawa dahil sumasalamin ang alon, nangangahulugang naglalakbay ito ng dalawang beses.

LCD

Gumagamit kami ng isang LCD display upang maipakita ang RGB at HEX, tulad ng IP sa pagsisimula ng programa.

Para sa LCD na ito, bumili ako ng isang module na I2C. 4 na wire lang ang kailangan namin ngayon. SDA, SCL, GND, VCC

Upang magamit ang LCD na ito, nagsulat ako ng isang klase ng Python, upang mas madaling gamitin.

TCS34725

Pinapayagan ka ng sensor na ito na sukatin ang mga kulay. Gumagamit kami ng isang library upang masukat ang halaga ng RGB.

Hakbang 8: Hakbang 8: Ipinaliwanag ang Code

Hakbang 8: Ipinaliwanag ang Code
Hakbang 8: Ipinaliwanag ang Code
Hakbang 8: Ipinaliwanag ang Code
Hakbang 8: Ipinaliwanag ang Code
Hakbang 8: Ipinaliwanag ang Code
Hakbang 8: Ipinaliwanag ang Code
Hakbang 8: Ipinaliwanag ang Code
Hakbang 8: Ipinaliwanag ang Code

Ang harapan

Ang frontend ay mayroon ng tatlong pangunahing mga bahagi.

Una ang mga html file, na nagtatayo ng istraktura ng aming website, ngunit hindi naglalaman ng o kaunting layout.

Pangalawa mayroon kaming mga css file, o mga style style, aling istilo at layout ng aming website.

Ang dalawa ay lubos na madaling basahin at maunawaan, na ang dahilan kung bakit hindi ko ipaliwanag ang mga ito.

Huling mayroon kaming Javascript, na may dalawang aklatan.

Ang dalawang aklatan na ginamit ay SocketIO at URLSearchParams.

Pinapayagan ka ng SocketIO na magpadala ng mga mensahe mula sa backend patungo sa frontend, at vice versa.

Maaaring ipadala ang mga mensahe sa isang client, ngunit marami ring kliyente (Broadcast)

> Socket IO Javascript

> Socket IO Python

Sa mga imahe sa itaas, maaari mong makita ang isa sa mga koneksyon sa Socket na ginawa sa proyektong ito.

Ang utos na magpadala ng mga mensahe ay 'emit', ang pagtanggap ay ginagawa ng 'on'.

Pinapayagan ka ng URLSearchParms na makakuha ng mga halaga mula sa isang querystring madali.

Halimbawa ng querystring: halimbawa.com/index.html?id=1

Ibabalik sa iyo ng URLSearchParams: {'id' = '1'}

> Halimbawa ng URLSearchParams

Ang backend

Ang backend ay buong nakasulat sa Python, na may isang grupo ng mga aklatan.

Ang unang library na nai-import namin ay 'Flask'. Kailangan ang library na ito upang lumikha ng isang API, upang magawa ang lahat ng mga pagkilos na CRUD para sa MySQL database. Ang CRUD ay nangangahulugang Lumikha ng Basahin ang I-update ang Tanggalin.

> Prasko

Ang imahe sa itaas ay nagpapakita ng ilang mga 'ruta' ng Flask. Sa pamamagitan ng pag-surf sa isang ruta, awtomatiko kang gagawa ng isang 'GET' na pamamaraan, ang code ay isasagawa at tatanggapin mo ang halaga mula sa return method. Mayroon ding iba pang mga pamamaraan, tulad ng 'POST' at 'TANGGALIN'. Upang masubukan ang mga nasabing pamamaraan, kakailanganin mo ng isang programa tulad ng Postman.

Ang susunod na library ng pag-import ay ang SocketIO, na ipinaliwanag ko na sa harap na seksyon ng pagtatapos.

Susunod na isa ay ang GPIO.

Pinapayagan kang kontrolin ang mga GPIO pin ng Rapsberry Pi.

Ang pinakamahalagang utos ay:

  • GPIO.setmode (GPIO. BCM) Piliin ang config ng mga pin.
  • GPIO.output (, GPIO. LOW o GPIO. HIGHT) Sumulat ng isang KABABA o TAAS sa isang pin.
  • GPIO.setup (,) Tukuyin ang isang PIN bilang input o output, o pulldown o pullup

Susunod na mayroon kaming threading.

Ang tanging utos na ginagamit namin ay:

  • Thread (target =)
  • .start ()

Gamit ang mga thread, maaari naming patakbuhin ang maraming mga pagkakataon ng code nang sabay. Sa ganitong paraan masusukat namin ang distansya at sa parehong oras, makinig sa mga papasok na socket io na mensahe.

Ang unang utos na Thread (target =) ay lilikha ng isang klase ng Thread, na noong nagsimulang gumamit ng 'start ()', tatakbo ang pagpapaandar sa keyword na 'target', na ibinigay sa paglikha ng klase.

Susunod na mayroon kaming silid-aklatan ng colorensor, na kung saan ay tuwid na pasulong. Hindi ko ipaliwanag ang library na ito, dahil ang mga pamamaraan ay napakalinaw at ipinaliwanag sa code.

Huling mayroon kaming mga netiface. Pinapayagan kami nitong kunin ang IP address na ginagamit namin para sa koneksyon sa Wireless at Wired.

Huling gumawa ako ng ilang mga klase para sa distansya sensor, ang LED at ang LCD.

Hindi ko ipapaliwanag kung paano gumagana ang mga iyon.

Hakbang 9: Hakbang 9: Lumilikha ng isang Kaso

Hakbang 9: Lumilikha ng isang Kaso
Hakbang 9: Lumilikha ng isang Kaso
Hakbang 9: Lumilikha ng isang Kaso
Hakbang 9: Lumilikha ng isang Kaso
Hakbang 9: Lumilikha ng isang Kaso
Hakbang 9: Lumilikha ng isang Kaso

Para sa proyektong ito, lumikha ako ng isang kahoy na kaso.

Ang kahoy ay magaan, manipis at hindi gastos ng malaki.

Bilang mga sukat na ginamit ko:

  • Taas: 5 cm
  • Lapad: 10.5cm
  • Haba: 12.5cm

Para sa mga sensor, kailangan mong magdagdag ng 2 butas at ilagay ang mga ito sa tabi ng bawat isa.

Matapos likhain ang kaso, i-install ang mga sensor, LED at LCD.

Hakbang 10: Pangwakas na Mga Hakbang

Ang lahat ay pangunahing ginagawa.

Ngayon ay tiyakin lamang naming magsimula ang aming code, sa sandaling mai-plug namin ang aming mapagkukunan ng kuryente.

Maraming pamamaraan upang magawa ito.

> Mga halimbawa

Gagamitin namin ang unang pamamaraan:

Isagawa ang linyang ito: 'sudo nano /etc/rc.local'

Idagdag ang iyong utos upang patakbuhin ang code: 'sudo python3'

I-save ang file gamit ang Ctrl-X.

Kung mayroon kang mga problema sa pag-edit. Gawin ulit ang hakbang na ito, ngunit ipatupad muna ang 'sudo -i'.

Inirerekumendang: