Cuprins:

ColorPicker: 10 pași
ColorPicker: 10 pași

Video: ColorPicker: 10 pași

Video: ColorPicker: 10 pași
Video: colour चुन के पैसा कमाए | Colour choose money earning | How to earn money from colour choose | Rxce 2024, Noiembrie
Anonim
Selector de culoare
Selector de culoare

Scopul acestui proiect este de a măsura culorile și de a le traduce în alte sisteme de culori. Folosind doar valorile RGB date de senzor, puteți traduce în HSL, CYMK, HEX și, de asemenea, în cel mai apropiat cod RAL (standard utilizat pentru vopsea). Acest proiect necesită cunoștințe de bază despre Python, MySQL, Linux și Javascript.

Dacă sunteți familiarizat și cu cadrul Flask și SocketIO, atunci codul pentru acest proiect ar trebui să fie ușor de înțeles pentru dvs.

Acest proiect poate fi folosit de pictori, designeri interiori sau doar de oricine are nevoie să măsoare culorile.

Acest proiect nu este atât de costisitor și costă aproximativ _ euro, transportul nu este inclus.

Provizii

Putem împărți această secțiune în două părți:

  • Hardware
  • Software

Hardware

Folosim următoarele componente

  • HC04: Senzor de distanță, cât de departe măsurăm de obiect
  • Afișaj LCD 2x16
  • Modul LCD I2C (HW061)
  • TCS34725 Modul senzor de culoare (Adafruit)
  • LED alb
  • Raspberry Pi 3 (Orice Raspberry Pi ar trebui să funcționeze)
  • Rezistor 5x 1k Ohm
  • 1x rezistor de 220 sau 330 Ohm
  • Card SD de 16 GB (14,4 GB)

Software

  • Python IDE, cum ar fi Visual Code sau Pycharm (Pycharm folosit aici)
  • MySQL Workbench
  • Putty (Descărcați Putty)
  • Rufus sau orice alt scriitor de carduri SD (Descărcați Rufus)

Prețuri

Acest proiect este destul de ieftin, dacă aveți deja un Rapsberry Pi.

  • HC04: Începând cu aproximativ 2,5 euro (China) și până la 6 euro pentru mai multe magazine locale.
  • LCD: Aproximativ 6-8 euro.
  • Modul I2C: La fel de ieftin sub 1 € (China), dar până la 4 € pentru mai multe magazine locale.
  • TCS34725: Aproximativ 9-12 euro euro. Cea mai scumpă parte (cu excepția RPi)
  • Led alb: cumpărat în vrac, 20 de LED-uri de la 1 EUR
  • Raspberry Pi: În funcție de ce versiune, în jur de 40 de euro
  • Rezistoare: 0,10 EUR pentru un rezistor
  • Card SD: în jur de 8 €

Adaptorul de alimentare pentru Raspberry Pi este exclus în costul prețului, deoarece acest adaptor este destul de obișnuit.

Gama generală de preț: aproximativ 70 €, dacă ați inclus Raspberry Pi și carcasa pentru proiect.

Pentru a construi carcasa, am folosit lemn subțire ușor. Am reciclat acest lemn din mobilier. Materialul pentru caz depinde de dvs.

Pasul 1: Pasul 1: Instalarea sistemului de operare RPi, configurarea SSH și a accesului la Internet

Pasul 1: Instalarea RPi OS, configurarea SSH și acces la Internet
Pasul 1: Instalarea RPi OS, configurarea SSH și acces la Internet
Pasul 1: Instalarea RPi OS, configurarea SSH și acces la Internet
Pasul 1: Instalarea RPi OS, configurarea SSH și acces la Internet
Pasul 1: Instalarea RPi OS, configurarea SSH și acces la Internet
Pasul 1: Instalarea RPi OS, configurarea SSH și acces la Internet
Pasul 1: Instalarea sistemului de operare RPi, configurarea SSH și a accesului la Internet
Pasul 1: Instalarea sistemului de operare RPi, configurarea SSH și a accesului la Internet

Pasul 1.1: Instalarea imaginii

Descărcați imaginea de pe site-ul oficial al Raspberry Pi. Nu contează cu adevărat ce imagine instalați. Pentru acest proiect, nu este necesară o interfață grafică, deoarece ne vom conecta numai folosind SSH.

Scrieți imaginea pe cardul SD (gol) (Toate fișierele de pe card vor fi șterse).

Pentru a scrie totul pe cardul SD, vom folosi un instrument numit „Rufus”. După descărcarea imaginii, deschideți Rufus și selectați fișierul imagine. Selectați unitatea țintă și scrieți imaginea pe unitate. Acest lucru poate dura ceva timp.

> Rufus

Pasul 1.2: Instalarea SSH

Următorul pas este crearea unei conexiuni la cardul SD. Pentru a face acest lucru, trebuie să activăm SSH.

Pentru a face acest lucru fără a utiliza un monitor, deschideți fișierul de explorare și deschideți partiția de încărcare a cardului SD. Creați un fișier gol numit „ssh”, fără extensie de fișier.

De asemenea, deschideți „cmdline.txt”

Adăugați „169.254.10.1” la sfârșitul fișierului și salvați-l.

Demontați cardul SD și introduceți-l în Raspberry Pi.

Acum putem conecta Raspberry Pi la o sursă de alimentare și putem porni și conecta folosind SSH.

Pentru a ne conecta folosind SSH, folosim programul „Putty”. Conectați-vă RPi și PC folosind un cablu ehternet înainte de a face acest lucru. Deschideți Putty și accesați fila SSH și completați acest IP: 169.254.10.1. Faceți clic pe „conectați” și veți fi conectat.

> Chit

Conectarea implicită utilizată de Raspberry Pi este „pi” ca nume de utilizator și „zmeură” pentru parolă.

Pasul 1.3: Conexiune wireless

Raspberry Pi este acum pornit.

De asemenea, dorim să ne conectăm la RPi folosind Wifi, astfel nu mai avem nevoie de un cablu Ethernet.

Executați următoarea linie:

„sudo nano /etc/wpa_supplicant/wpa_supplicant.conf”

Aceasta va deschide editorul de text „nano” cu drepturi ridicate.

Adăugați următoarele linii în fișier:

rețea = {

ssid = "SSID"

psk = "Parolă"

}

Înlocuiți „SSID” cu SSID-ul rețelei dvs. Wifi

Înlocuiți „Parola” cu parola.

Apoi faceți Ctrl + X și selectați opțiunea „da”. Fișierul va fi acum salvat.

Acum trebuie să repornim serviciul de rețea

Executați următoarele comenzi:

  • „sudo -i”
  • „sudo systemctl reporniți rețeaua”

Puteți testa conexiunea la internet folosind comanda wget.

Exemplu: „wget google.com”

> Comanda Wget

Pasul 2: Pasul 2: Instalarea software-ului pe RPi

Pentru acest proiect trebuie să instalăm câteva biblioteci.

  • Mariadb: baza de date MySQL (sudo apt-get install mariadb-server)
  • Biblioteca Adafruit pentru senzorul de culoare: Măsurarea culorilor (pip3 instalează adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', alegeți serverul web apache)

Instalați, de asemenea, următoarele biblioteci de pip:

  • flask_socketio
  • balon
  • flask_cors
  • bord
  • busio
  • netifaces

Pasul 3: Pasul 3: Conectarea la baza de date MySQL, crearea bazei de date

Pasul 3: Conectarea la baza de date MySQL, crearea bazei de date
Pasul 3: Conectarea la baza de date MySQL, crearea bazei de date
Pasul 3: Conectarea la baza de date MySQL, crearea bazei de date
Pasul 3: Conectarea la baza de date MySQL, crearea bazei de date
Pasul 3: Conectarea la baza de date MySQL, crearea bazei de date
Pasul 3: Conectarea la baza de date MySQL, crearea bazei de date

Următorul pas este să vă conectați la baza de date MySQL utilizând bancul de lucru MySQL.

> IP a

Executați comanda „ip a”, așa cum se arată în imaginea de mai sus (faceți clic pe link)

În cele mai multe situații, vor fi afișate 3 intrări. Avem nevoie de intrarea „wlan0”. Copiați adresa IP lângă „inet” sau în acest exemplu „192.168.1.44”

. >> Creați o conexiune nouă

Așa cum se arată în imaginea de mai sus, creați o nouă conexiune cu următorii parametri (imaginea de mai jos pentru parametri)

> Parametrii conexiunii

Faceți dublu clic pe noua conexiune creată pentru a vă conecta.

Dacă apare o solicitare, faceți clic pe „Da”.

Aceasta este încă o bază de date goală, deci să adăugăm câteva tabele.

Mai întâi creați o schemă, pentru a face acest lucru, în partea stângă „faceți clic dreapta” și alegeți „creați schema”.

Dați schemei un nume și confirmați.

Acum trebuie să adăugăm tabele. Extindeți schema și „faceți clic dreapta”, „tabele”.

Creați următoarele scheme:

> Tabelul 1: Culori RAL

> Tabelul 2: Tipuri de senzori

> Tabelul 3: Măsurători (În imagine, se utilizează „metingen”, olandeză pentru măsurători)

> Tabelul 4: Site_data || Tabelul 4 de jos

MySQL este un sistem de baze de date relaționale, ceea ce înseamnă că putem crea relații între tabele.

Prima relație pe care trebuie să o creăm este între „senzor_tip” și „măsurători”.

După cum se arată în imagine, legați cele două taste.

> Editați un tabel și chei de legătură

Nu uitați să salvați modificările făcând clic pe „Aplicați” în colțul de jos.

Editați, de asemenea, tabelul „website_data” și conectați „MetingID”.

Acum am terminat cu crearea tabelelor și crearea relațiilor.

Adăugarea datelor:

Tabelul RALcolors este un tabel fix, unde valorile nu se vor schimba niciodată. Putem adăuga aceste valori

foarte usor.

> Descărcați fișierul Excel

Descărcați fișierul Excel de mai sus și selectați toate datele și „copiați”. Faceți ca în imagine

> Arată tabelul

„faceți clic dreapta” pe masă și alegeți „Lipiți rânduri”. „faceți clic pe„ aplicați”în colțul de jos pentru a adăuga datele.

Acum toate culorile RAL sunt salvate în baza de date.

Trebuie doar să adăugăm sensor_type la baza de date acum.

> Date sensortype

Notă: descrierea senzorului este în „olandeză”

Pasul 4: Pasul 4: Filezilla

Pasul 4: Filezilla
Pasul 4: Filezilla

Pentru a ne conecta cu ușurință la Raspberry Pi și a transfera fișiere, putem folosi Filezilla.

> Descărcați Filezilla

Înregistrați în detaliile conexiunii și conectați-vă. În partea dreaptă puteți transfera acum fișiere trăgându-le.

> Sursa Github

Descărcați fișierele din sursa github de mai sus.

Pasul 5: Pasul 5: Crearea site-ului web

Pasul 5: Crearea site-ului web
Pasul 5: Crearea site-ului web
Pasul 5: Crearea site-ului web
Pasul 5: Crearea site-ului web

Pentru găzduirea site-ului web, folosim PHPmyAdmin și Apache2.

Serverul web de pe Raspberry Pi folosește directorul „/ var / www / html” ca root.

Dacă plasați fișierele acolo, acestea vor fi găzduite pe IP-ul Raspberry Pi. (IP = vezi „ip a”)

Puteți descărca fișierele necesare din repo-ul meu github (pasul anterior)

În „/ var / www / html /”, lipiți toate fișierele din folderul „Frontend”.

> / var / www / html /

Pasul 6: Pasul 6: Crearea backend-ului (balon)

Backend-ul site-ului web se bazează pe Flask.

Toate fișierele pot fi găsite la github repo.

Copiați toate fișierele în orice director de pe Raspberry Pi.

De exemplu '/ home / pi / colorpicker.

Pentru a crea un director, navigați la directorul de destinație folosind „cd”, apoi executați „mkdir”.

Asta este tot pentru acum. Codul va fi explicat în pașii următori.

Pasul 7: Pasul 7: Hardware

> Schema de descărcare

Creați schema așa cum se arată în documentul de mai sus.

NOTĂ: Adăugați și un LED alb, cu un rezistor (220 sau 330 Ohmi).

Explicarea hardware-ului

HC04

Senzorul HC04 emite unde, care se reflectă și sunt primite din nou de către senzor.

Prin calcularea deltei de timp dintre emisie și recepție, putem calcula distanța.

Distanță = ((Timestamp_recieve - Timestamp_emit) / viteza sunetului) / 2

Împărțim la doi pentru că unda se reflectă, ceea ce înseamnă că parcurge distanța de două ori.

LCD

Folosim un afișaj LCD pentru a afișa RGB și HEX, ca și IP-ul la pornirea programului.

Pentru acest LCD, am cumpărat un modul I2C. Avem nevoie doar de 4 fire acum. SDA, SCL, GND, VCC

Pentru a folosi acest LCD, am scris o clasă Python, pentru a fi mai ușor de utilizat.

TCS34725

Acest senzor vă permite să măsurați culorile. Folosim o bibliotecă pentru a măsura valoarea RGB.

Pasul 8: Pasul 8: Codul explicat

Pasul 8: Codul explicat
Pasul 8: Codul explicat
Pasul 8: Codul explicat
Pasul 8: Codul explicat
Pasul 8: Codul explicat
Pasul 8: Codul explicat
Pasul 8: Codul explicat
Pasul 8: Codul explicat

Frontendul

Frontend-ul există din trei părți majore.

Mai întâi sunt fișierele html, care construiesc structura site-ului nostru, dar nu conțin sau un aspect minim.

În al doilea rând, avem fișierele css, sau fișiere de stil, care stil și aspect site-ul nostru.

Cele două sunt destul de ușor de citit și de înțeles, motiv pentru care nu le voi explica.

În sfârșit avem Javascript, cu două biblioteci.

Cele două biblioteci utilizate sunt SocketIO și URLSearchParams.

SocketIO vă permite să trimiteți mesaje din backend în frontend și invers.

Mesajele pot fi trimise către un singur client, dar și mai mulți clienți (Broadcast)

> Socket IO Javascript

> Socket IO Python

În imaginile de mai sus, puteți vedea una dintre conexiunile Socket realizate în acest proiect.

Comanda pentru a trimite mesaje este „emit”, primirea se face prin „activat”.

URLSearchParms vă permite să obțineți cu ușurință valori dintr-un șir de interogare.

Exemplu de interogare: example.com/index.html?id=1

URLSearchParams vă va restitui: {'id' = '1'}

> Exemplu URLSearchParams

Backend-ul

Backend-ul este complet scris în Python, cu o grămadă de biblioteci.

Prima bibliotecă pe care o importăm este „Flask”. Această bibliotecă este necesară pentru a crea un API, pentru a face toate acțiunile CRUD pentru baza de date MySQL. CRUD înseamnă Create Read Update Delete.

> Balon

Imaginea de mai sus prezintă câteva „rute” din Flask. Navigând la o rută, veți face automat o metodă „GET”, codul se va executa și veți primi valoarea din metoda de returnare. Există, de asemenea, alte metode, cum ar fi „POST” și „DELETE”. Pentru a testa astfel de metode, veți avea nevoie de un program precum Postman.

Următoarea bibliotecă de import este SocketIO, pe care am explicat-o deja în secțiunea front-end.

Următorul este GPIO.

Acest lucru vă permite să controlați pinii GPIO ai Rapsberry Pi.

Cele mai importante comenzi sunt:

  • GPIO.setmode (GPIO. BCM) Alegeți configurația pinilor.
  • GPIO.output (, GPIO. LOW sau GPIO. HIGH) Scrieți un LOW sau HIGH pe un pin.
  • GPIO.setup (,) Definiți un cod PIN ca intrare sau ieșire sau ca derulare sau extragere

Apoi avem threading.

Singurele comenzi pe care le folosim sunt:

  • Fir (țintă =)
  • .start()

Folosind fire, putem rula mai multe instanțe de cod în același timp. În acest fel putem măsura distanța și, în același timp, putem asculta mesajele socket io primite.

Prima comandă Thread (target =) va crea o clasă Thread, care la începutul utilizării „start ()”, va rula funcția din cuvântul cheie „target”, care a fost dată la crearea clasei.

Apoi avem biblioteca senzorului de culori, care este destul de direct. Nu voi explica această bibliotecă, deoarece metodele sunt foarte clare și sunt explicate în cod.

În sfârșit avem netifaces. Acest lucru ne permite să recuperăm adresa IP pe care o folosim pentru conexiunea wireless și prin cablu.

În ultima vreme am făcut eu câteva cursuri pentru senzorul de distanță, LED-ul și LCD-ul.

Nu voi explica cum funcționează acestea.

Pasul 9: Pasul 9: Crearea unui caz

Pasul 9: Crearea unui caz
Pasul 9: Crearea unui caz
Pasul 9: Crearea unui caz
Pasul 9: Crearea unui caz
Pasul 9: Crearea unui caz
Pasul 9: Crearea unui caz

Pentru acest proiect, am creat o carcasă din lemn.

Lemnul este ușor, subțire și nu costă mult.

Ca dimensiuni am folosit:

  • Înălțime: 5 cm
  • Lățime: 10,5cm
  • Lungime: 12,5cm

Pentru senzori, trebuie să adăugați 2 găuri și să le așezați una lângă alta.

După crearea carcasei, instalați senzorii, LED-urile și LCD-ul.

Pasul 10: pașii finali

Totul este făcut în principiu.

Acum trebuie doar să ne asigurăm că începe codul nostru, în momentul în care ne conectăm sursa de alimentare.

Există o mulțime de metode pentru a face acest lucru.

> Exemple

Vom folosi prima metodă:

Executați această linie: „sudo nano /etc/rc.local”

Adăugați comanda pentru a rula codul: 'sudo python3'

Salvați fișierul folosind Ctrl-X.

Dacă aveți probleme de editare. Re-faceți acest pas, dar mai întâi executați „sudo -i”.

Recomandat: