Cuprins:
- Provizii
- Pasul 1: Pasul 1: Instalarea sistemului de operare RPi, configurarea SSH și a accesului la Internet
- Pasul 2: Pasul 2: Instalarea software-ului pe RPi
- Pasul 3: Pasul 3: Conectarea la baza de date MySQL, crearea bazei de date
- Pasul 4: Pasul 4: Filezilla
- Pasul 5: Pasul 5: Crearea site-ului web
- Pasul 6: Pasul 6: Crearea backend-ului (balon)
- Pasul 7: Pasul 7: Hardware
- Pasul 8: Pasul 8: Codul explicat
- Pasul 9: Pasul 9: Crearea unui caz
- Pasul 10: pașii finali
Video: ColorPicker: 10 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
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.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
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
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
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
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
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:
Cum să faci 4G LTE dublă antenă BiQuade Pași simpli: 3 pași
Cum să fac 4G LTE Double BiQuade Antenna Pași simpli: De cele mai multe ori mă confrunt, nu am o putere de semnal bună pentru lucrările mele de zi cu zi. Asa de. Căut și încerc diferite tipuri de antenă, dar nu funcționează. După un timp pierdut, am găsit o antenă pe care sper să o fac și să o testez, pentru că nu se bazează pe principiul
Design de joc în Flick în 5 pași: 5 pași
Designul jocului în Flick în 5 pași: Flick este un mod foarte simplu de a crea un joc, în special ceva de genul puzzle, roman vizual sau joc de aventură
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino - Pași cu pași: 4 pași
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino | Pași cu pas: în acest proiect, voi proiecta un senzor senzor de parcare inversă Arduino Car Circuit folosind senzorul cu ultrasunete Arduino UNO și HC-SR04. Acest sistem de avertizare auto bazat pe Arduino poate fi utilizat pentru navigație autonomă, autonomie robotică și alte r
Detectarea feței pe Raspberry Pi 4B în 3 pași: 3 pași
Detectarea feței pe Raspberry Pi 4B în 3 pași: În acest instructabil vom efectua detectarea feței pe Raspberry Pi 4 cu Shunya O / S folosind Biblioteca Shunyaface. Shunyaface este o bibliotecă de recunoaștere / detectare a feței. Proiectul își propune să obțină cea mai rapidă viteză de detectare și recunoaștere cu
Cum să faci un contor de pași ?: 3 pași (cu imagini)
Cum să fac un contor de pași ?: obișnuiam să performez bine la multe sporturi: mersul pe jos, alergatul, mersul pe bicicletă, jocul de badminton etc. Îmi place să călăresc să călătoresc în preajmă. Ei bine, uită-te la burtica mea ostilă …… Ei bine, oricum, decid să reîncep să fac mișcare. Ce echipament ar trebui să pregătesc?