Indholdsfortegnelse:

ColorPicker: 10 trin
ColorPicker: 10 trin

Video: ColorPicker: 10 trin

Video: ColorPicker: 10 trin
Video: Pickr - An Awesome Color Picker for your next Project! 2024, November
Anonim
ColorPicker
ColorPicker

Målet med dette projekt er at måle farver og oversætte dem til andre farvesystemer. Ved blot at bruge de RGB -værdier, sensoren giver, kan du oversætte til HSL, CYMK, HEX og også den nærmeste RAL -kode (standard, der bruges til maling). Dette projekt kræver en grundlæggende viden om Python, MySQL, Linux og Javascript.

Hvis du også er bekendt med Flask -rammen og SocketIO, skal koden til dette projekt være let at forstå for dig.

Dette projekt kan bruges af malere, mellemstore designere eller bare af alle, der har brug for at måle farver.

Dette projekt er ikke så dyrt og koster anslået _ euro, forsendelse er ikke inkluderet.

Forbrugsvarer

Vi kan dele dette afsnit i to dele:

  • Hardware
  • Software

Hardware

Vi bruger følgende komponenter

  • HC04: Afstandssensor, hvor langt måler vi fra objektet
  • LCD -display 2x16
  • LCD I2C -modul (HW061)
  • TCS34725 farvesensormodul (Adafruit)
  • Hvid LED
  • Raspberry Pi 3 (Enhver Raspberry Pi burde fungere)
  • 5x 1k Ohm modstand
  • 1x 220 eller 330 Ohm modstand
  • SD -kort 16 GB (14,4 GB)

Software

  • Python IDE, som Visual Code eller Pycharm (Pycharm bruges her)
  • MySQL Workbench
  • Putty (Download Putty)
  • Rufus eller enhver anden SD -kortskriver (Download Rufus)

Prissætning

Dette projekt er ret billigt, hvis du allerede har en Rapsberry Pi.

  • HC04: Fra omkring € 2,5 euro (Kina) og op til € 6 for flere lokale butikker.
  • LCD: Omkring 6-8 euro.
  • I2C -modul: Som billigt under € 1 (Kina), men op til € 4 for flere lokale butikker.
  • TCS34725: Omkring € 9-12 euro. Den dyreste del (eksklusive RPi)
  • Hvid LED: Købt i løs vægt, 20 lysdioder helt ned til € 1
  • Raspberry Pi: Afhængigt af hvilken version, omkring € 40 euro
  • Modstande: 0,10 € for en modstand
  • SD -kort: omkring 8 €

Strømadapteren til Raspberry Pi er ikke inkluderet i prisen, da denne adapter er ret almindelig.

Overordnet prisklasse: omkring € 70, hvis du inkluderede Raspberry Pi og etuiet til projektet.

Til at bygge sagen brugte jeg let tyndt træ. Jeg genbrugte dette træ fra møbler. Materialet til sagen er op til dig.

Trin 1: Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang

Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang

Trin 1.1: Installation af billedet

Download billedet fra det officielle websted for Raspberry Pi. Det er ikke ligegyldigt, hvilket billede du installerer. Til dette projekt er der ikke brug for en GUI, da vi kun forbinder ved hjælp af SSH.

Skriv billedet til det (tomme) SD -kort (Alle filer på kortet slettes).

For at skrive alt til SD -kortet bruger vi et værktøj kaldet 'Rufus'. Efter download af billedet skal du åbne Rufus og vælge billedfilen. Vælg måldrevet, og skriv billedet til drevet. Dette kan tage et stykke tid.

> Rufus

Trin 1.2: Installation af SSH

Det næste trin er at oprette en forbindelse til SD -kortet. For at gøre det skal vi aktivere SSH.

For at gøre det uden at bruge en skærm skal du åbne din filforsker og åbne bootpartitionen på SD -kortet. Opret en tom fil kaldet "ssh" uden filtypenavn.

Åbn også "cmdline.txt"

Tilføj "169.254.10.1" i slutningen af filen, og gem den.

Afmonter SD -kortet, og indsæt det i Raspberry Pi.

Nu kan vi slutte Raspberry Pi til en strømkilde og starte op og oprette forbindelse med SSH.

For at oprette forbindelse ved hjælp af SSH bruger vi programmet "Putty". Tilslut din RPi og pc ved hjælp af et ehternet -kabel, før du gør det. Åbn Putty og gå til fanen SSH, og udfyld denne IP: 169.254.10.1. Klik på 'forbind', og du vil blive tilsluttet.

> Spartel

Standard -login, der bruges af Raspberry Pi, er 'pi' som brugernavn og 'hindbær' for adgangskoden.

Trin 1.3: Trådløs forbindelse

Din Raspberry Pi er nu tændt.

Vi vil også oprette forbindelse til RPi'en ved hjælp af Wifi, på den måde har vi ikke brug for et Ethernet -kabel mere.

Udfør følgende linje:

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

Dette åbner tekst -editoren 'nano' med forhøjede rettigheder.

Tilføj følgende linjer i filen:

netværk = {

ssid = "SSID"

psk = "Adgangskode"

}

Erstat "SSID" med SSID'et på dit Wifi -netværk

Udskift "Password" med din adgangskode.

Derefter gør du Ctrl+X og vælger 'ja'. Filen gemmes nu.

Nu skal vi genstarte netværkstjenesten

Udfør følgende kommandoer:

  • 'sudo -i'
  • 'sudo systemctl genstart netværk'

Du kan teste din internetforbindelse ved hjælp af wget -kommandoen.

Eksempel: 'wget google.com'

> Wget -kommando

Trin 2: Trin 2: Installation af software på RPi

Til dette projekt skal vi installere et par biblioteker.

  • Mariadb: MySQL-database (sudo apt-get install mariadb-server)
  • Adafruit bibliotek til farvesensoren: Måling af farver (pip3 installer adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', vælg apache webserver)

Installer også følgende pip -biblioteker:

  • flask_socketio
  • kolbe
  • flask_cors
  • bestyrelse
  • busio
  • netfaces

Trin 3: Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database

Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database
Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database
Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database
Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database
Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database
Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database

Det næste trin er at oprette forbindelse til MySQL -databasen ved hjælp af MySQL -arbejdsbordet.

> IP a

Udfør kommandoen 'ip a', som vist på billedet ovenfor (Klik på link)

I de fleste situationer vil der blive vist 3 poster. Vi har brug for posten 'wlan0'. Kopier IP ved siden af 'inet', eller i dette eksempel '192.168.1.44'

. >> Opret ny forbindelse

Som vist på billedet ovenfor skal du oprette en ny forbindelse med følgende parametre (billede nedenfor for params)

> Forbindelsesparametre

Dobbeltklik på den nyoprettede forbindelse for at oprette forbindelse.

Hvis der vises en prompt, skal du klikke på 'Ja'.

Dette er stadig en tom database, så lad os tilføje nogle tabeller.

Opret først et skema for at gøre det ved at højreklikke i venstre side og vælge 'opret skema'.

Giv skemaet et navn, og bekræft.

Nu skal vi tilføje tabeller. Udvid skemaet og 'højreklik', 'tabeller'.

Opret følgende skemaer:

> Tabel 1: RALfarver

> Tabel 2: Sensortyper

> Tabel 3: Målinger (På billedet bruges 'metingen', hollandsk til målinger)

> Tabel 4: Website_data || Tabel 4 nederst

MySQL er et relationsdatabasesystem, det betyder, at vi kan skabe relationer mellem tabellerne.

Den første relation, vi skal skabe, er mellem 'sensor_type' og 'målinger'.

Som vist på billedet skal du forbinde de to taster.

> Rediger en tabel og linknøgler

Glem ikke at gemme ændringerne ved at klikke på 'Anvend' i nederste hjørne.

Rediger også tabellen 'website_data' og link 'MetingID'.

Nu er vi færdige med at oprette tabellerne og skabe relationerne.

Tilføjelse af data:

RALcolors -tabellen er en fast tabel, hvor værdierne aldrig vil ændre sig. Vi kan tilføje disse værdier

meget let.

> Download Excel -fil

Download excel -filen ovenfor, og vælg alle data og 'kopier'. Gør som på billedet

> Vis bord

'højreklik' på tabellen og vælg 'Indsæt rækker'. 'klik' '' anvend '' i nederste hjørne for at tilføje dataene.

Nu gemmes alle RALfarver i databasen.

Vi behøver kun at tilføje sensor_type til databasen nu.

> Sensortype data

Bemærk: Beskrivelsen af sensoren er på 'hollandsk'

Trin 4: Trin 4: Filezilla

Trin 4: Filezilla
Trin 4: Filezilla

For let at oprette forbindelse til Raspberry Pi og overføre filer kan vi bruge Filezilla.

> Download Filezilla

Fil i forbindelsesdetaljerne, og opret forbindelse. I højre side kan du nu overføre filer ved at trække dem ind.

> Github -kilde

Download filerne fra github -kilden ovenfor.

Trin 5: Trin 5: Oprettelse af webstedet

Trin 5: Oprettelse af webstedet
Trin 5: Oprettelse af webstedet
Trin 5: Oprettelse af webstedet
Trin 5: Oprettelse af webstedet

Til hosting af webstedet bruger vi PHPmyAdmin og Apache2.

Webserveren på Raspberry Pi bruger mappen '/var/www/html' som root.

Hvis du placerer dine filer der, bliver de hostet på IP'en til Raspberry Pi. (IP = se 'ip a')

Du kan downloade de nødvendige filer fra min github -repo (forrige trin)

Indsæt alle filer i mappen 'Frontend' i '/var/www/html/'.

>/var/www/html/

Trin 6: Trin 6: Oprettelse af backend (kolbe)

Hjemmesidens backend er baseret på Flask.

Alle filer kan findes på github -repoen.

Kopier alle filer til et bibliotek på Raspberry Pi.

For eksempel '/home/pi/colorpicker.

For at oprette et bibliotek skal du navigere til destinationsmappen ved hjælp af 'cd' og derefter udføre 'mkdir'.

Det er alt for nu. Koden vil blive forklaret i de næste trin.

Trin 7: Trin 7: Hardware

> Download skema

Opret ordningen som vist i dokumentet ovenfor.

BEMÆRK: Tilføj også en hvid LED med en modstand (220 eller 330 Ohm).

Forklarer hardware

HC04

HC04 -sensoren udsender bølger, som reflekterer og modtages igen af sensoren.

Ved at beregne tids deltaet mellem udsendelse og modtagelse kan vi beregne afstanden.

Distance = ((Timestamp_recieve - Timestamp_emit) / lydhastighed) / 2

Vi deler med to, fordi bølgen reflekterer, hvilket betyder, at den tilbagelægger distancen to gange.

LCD

Vi bruger et LCD -display til at vise RGB og HEX, samt IP når programmet starter.

Til denne LCD købte jeg et I2C -modul. Vi mangler kun 4 ledninger nu. SDA, SCL, GND, VCC

For at bruge denne LCD skrev jeg en Python -klasse for at gøre den lettere at bruge.

TCS34725

Denne sensor giver dig mulighed for at måle farver. Vi bruger et bibliotek til at måle RGB -værdien.

Trin 8: Trin 8: Kode forklaret

Trin 8: Kode forklaret
Trin 8: Kode forklaret
Trin 8: Kode forklaret
Trin 8: Kode forklaret
Trin 8: Kode forklaret
Trin 8: Kode forklaret
Trin 8: Kode forklaret
Trin 8: Kode forklaret

Frontenden

Frontend består af tre hoveddele.

Først er html -filer, der bygger strukturen på vores websted, men ikke indeholder eller minimalt layout.

For det andet har vi css -filer, eller stilfiler, som stiler og layouter vores websted.

De to er ret lette at læse og forstå, og derfor vil jeg ikke forklare dem.

Sidst har vi Javascript med to biblioteker.

De to anvendte biblioteker er SocketIO og URLSearchParams.

SocketIO giver dig mulighed for at sende meddelelser fra backend til frontend og omvendt.

Beskederne kan sendes til en klient, men også til flere klienter (Broadcast)

> Socket IO Javascript

> Socket IO Python

På billederne ovenfor kan du se en af de Socket -forbindelser, der er foretaget i dette projekt.

Kommandoen til at sende meddelelser er 'emit', modtagelse sker med 'on'.

URLSearchParms giver dig mulighed for nemt at få værdier fra en forespørgselsstreng.

Eksempel på querystring: example.com/index.html?id=1

URLSearchParams giver dig tilbage: {'id' = '1'}

> URLSearchParams Eksempel

Bagenden

Backend er fuldt ud skrevet i Python, med en masse biblioteker.

Det første bibliotek, vi importerer, er 'Flask'. Dette bibliotek er nødvendigt for at oprette en API til at udføre alle CRUD -handlinger for MySQL -databasen. CRUD står for Create Read Update Delete.

> kolbe

Billedet ovenfor viser et par kolber 'ruter'. Ved at surfe til en rute udfører du automatisk en 'GET' -metode, koden udføres, og du modtager værdien fra returmetoden. Der er også andre metoder, f.eks. 'POST' og 'DELETE'. For at teste sådanne metoder skal du bruge et program som Postman.

Det næste importbibliotek er SocketIO, som jeg forklarede allerede i frontend -sektionen.

Næste er GPIO.

Dette giver dig mulighed for at styre GPIO -benene på Rapsberry Pi.

De vigtigste kommandoer er:

  • GPIO.setmode (GPIO. BCM) Vælg konfigurationen af benene.
  • GPIO.output (, GPIO. LOW eller GPIO. HIGH) Skriv en LOW eller HIGH til en pin.
  • GPIO.setup (,) Definer en PIN -kode som input eller output, eller pulldown eller pullup

Dernæst har vi trådning.

De eneste kommandoer, vi bruger, er:

  • Tråd (mål =)
  • . Start()

Ved hjælp af tråde kan vi køre flere forekomster af kode på samme tid. På denne måde kan vi måle afstanden og samtidig lytte til indgående socket io -meddelelser.

Den første kommando Thread (target =) opretter en Thread -klasse, som ved start med 'start ()' kører funktionen i søgeordet 'target', som blev givet ved oprettelse af klassen.

Dernæst har vi biblioteket med farvesensoren, som er ret ligetil. Jeg vil ikke forklare dette bibliotek, fordi metoderne er meget klare og forklaret i koden.

Sidst har vi netifaces. Dette giver os mulighed for at hente den IP -adresse, vi bruger til den trådløse og kablede forbindelse.

Sidst lavede jeg selv nogle klasser for afstandssensoren, LED og LCD.

Jeg vil ikke forklare, hvordan de fungerer.

Trin 9: Trin 9: Oprettelse af en sag

Trin 9: Oprettelse af en sag
Trin 9: Oprettelse af en sag
Trin 9: Oprettelse af en sag
Trin 9: Oprettelse af en sag
Trin 9: Oprettelse af en sag
Trin 9: Oprettelse af en sag

Til dette projekt lavede jeg en trækasse.

Træet er let, tyndt og koster ikke meget.

Som dimensioner brugte jeg:

  • Højde: 5 cm
  • Bredde: 10,5 cm
  • Længde: 12,5 cm

For sensorerne skal du tilføje 2 huller og placere dem ved siden af hinanden.

Efter oprettelse af sagen skal du installere sensorer, LED og LCD.

Trin 10: Sidste trin

Alt er grundlæggende gjort.

Nu skal vi kun sørge for, at vores kode starter, i det øjeblik vi tilslutter vores strømkilde.

Der er mange metoder til at gøre dette.

> Eksempler

Vi vil bruge den første metode:

Udfør denne linje: 'sudo nano /etc/rc.local'

Tilføj din kommando for at køre koden: 'sudo python3'

Gem filen med Ctrl-X.

Hvis du har problemer med at redigere. Gør dette trin igen, men udfør først 'sudo -i'.

Anbefalede: