Innholdsfortegnelse:

ColorPicker: 10 trinn
ColorPicker: 10 trinn

Video: ColorPicker: 10 trinn

Video: ColorPicker: 10 trinn
Video: ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! 2024, Oktober
Anonim
Fargevelger
Fargevelger

Målet med dette prosjektet er å måle farger og oversette dem til andre fargesystemer. Ved å bruke bare RGB -verdiene gitt av sensoren, kan du oversette til HSL, CYMK, HEX og også den nærmeste RAL -koden (standard brukt for maling). Dette prosjektet krever grunnleggende kunnskap om Python, MySQL, Linux og Javascript.

Hvis du også er kjent med Flask -rammeverket og SocketIO, bør koden for dette prosjektet være lett å forstå for deg.

Dette prosjektet kan brukes av malere, interiørdesignere eller bare av alle som trenger å måle farger.

Dette prosjektet er ikke så dyrt, og koster anslagsvis _ euro, frakt er ikke inkludert.

Rekvisita

Vi kan dele denne delen i to deler:

  • Maskinvare
  • Programvare

Maskinvare

Vi bruker følgende komponenter

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

Programvare

  • Python IDE, som Visual Code eller Pycharm (Pycharm brukes her)
  • MySQL Workbench
  • Kitt (Last ned Kitt)
  • Rufus eller annen SD -kortskriver (Last ned Rufus)

Priser

Dette prosjektet er ganske billig, hvis du allerede har en Rapsberry Pi.

  • HC04: Starter rundt € 2,5 euro (Kina) og opptil € 6 for flere lokale butikker.
  • LCD: Rundt 6-8 euro.
  • I2C -modul: Så billig under € 1 (Kina), men opptil € 4 for flere lokale butikker.
  • TCS34725: Rundt € 9-12 euro. Den dyreste delen (unntatt RPi)
  • Hvit led: Kjøpt i bulk, 20 lysdioder så lave som € 1
  • Raspberry Pi: Avhengig av hvilken versjon, rundt € 40 euro
  • Motstander: € 0,10 for en motstand
  • SD -kort: rundt € 8

Strømadapteren for Raspberry Pi er ekskludert i prisen, siden denne adapteren er ganske vanlig.

Overordnet prisklasse: rundt € 70, hvis du inkluderte Raspberry Pi og saken for prosjektet.

For å bygge saken brukte jeg lett tynt tre. Jeg resirkulerte dette treverket fra møbler. Materialet til saken er opp til deg.

Trinn 1: Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang

Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang
Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang
Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang
Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang
Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang
Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang
Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang
Trinn 1: Installere RPi OS, konfigurere SSH og Internett -tilgang

Trinn 1.1: Installere bildet

Last ned bildet fra det offisielle nettstedet til Raspberry Pi. Det spiller ingen rolle hvilket bilde du installerer. For dette prosjektet er det ikke nødvendig med en GUI, siden vi bare vil koble til med SSH.

Skriv bildet til det (tomme) SD -kortet (Alle filene på kortet blir slettet).

For å skrive alt til SD -kortet, bruker vi et verktøy som heter 'Rufus'. Etter at du har lastet ned bildet, åpner du Rufus og velger bildefilen. Velg målstasjonen og skriv bildet til stasjonen. Dette kan ta en stund.

> Rufus

Trinn 1.2: Installere SSH

Det neste trinnet er å opprette en tilkobling til SD -kortet. For å gjøre det må vi aktivere SSH.

For å gjøre det uten å bruke en skjerm, åpner du filutforskeren og åpner oppstartspartisjonen til SD -kortet. Lag en tom fil kalt "ssh", uten filtypen.

Åpne også "cmdline.txt"

Legg til "169.254.10.1" i slutten av filen og lagre den.

Demonter SD -kortet og sett det inn i Raspberry Pi.

Nå kan vi koble Raspberry Pi til en strømkilde og starte opp og koble til med SSH.

For å koble til med SSH bruker vi programmet "Putty". Koble RPi og PC med en ehternet -kabel før du gjør det. Åpne Putty og gå til SSH -fanen, og fyll ut denne IP -adressen: 169.254.10.1. Klikk på "koble til", så blir du koblet til.

> Kitt

Standardpålogging som brukes av Raspberry Pi er 'pi' som brukernavn og 'bringebær' for passordet.

Trinn 1.3: Trådløs tilkobling

Raspberry Pi er nå slått på.

Vi vil også koble til RPi ved hjelp av Wifi, på den måten trenger vi ikke en Ethernet -kabel lenger.

Utfør følgende linje:

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

Dette åpner tekstredigereren 'nano' med forhøyede rettigheter.

Legg til følgende linjer i filen:

nettverk = {

ssid = "SSID"

psk = "Passord"

}

Erstatt "SSID" med SSID for Wifi -nettverket

Erstatt "Passord" med passordet ditt.

Gjør deretter Ctrl+X og velg alternativet "ja". Filen blir nå lagret.

Nå må vi starte nettverkstjenesten på nytt

Utfør følgende kommandoer:

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

Du kan teste internettforbindelsen din ved hjelp av wget -kommandoen.

Eksempel: 'wget google.com'

> Wget -kommando

Trinn 2: Trinn 2: Installere programvare på RPi

For dette prosjektet må vi installere noen få biblioteker.

  • Mariadb: MySQL-database (sudo apt-get install mariadb-server)
  • Adafruit-bibliotek for fargesensoren: Måling av farger (pip3 installer adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', velg apache webserver)

Installer også følgende pip -biblioteker:

  • flask_socketio
  • kolbe
  • flask_cors
  • borde
  • busio
  • nettverk

Trinn 3: Trinn 3: Koble til MySQL -databasen, opprette database

Trinn 3: Koble til MySQL -databasen, opprette database
Trinn 3: Koble til MySQL -databasen, opprette database
Trinn 3: Koble til MySQL -databasen, opprette database
Trinn 3: Koble til MySQL -databasen, opprette database
Trinn 3: Koble til MySQL -databasen, opprette database
Trinn 3: Koble til MySQL -databasen, opprette database

Det neste trinnet er å koble til MySQL -databasen ved hjelp av MySQL -arbeidsbenken.

> IP a

Utfør kommandoen 'ip a', som vist på bildet ovenfor (Klikk på lenken)

I de fleste situasjoner vil det bli vist 3 oppføringer. Vi trenger oppføringen 'wlan0'. Kopier IP ved siden av 'inet', eller i dette eksemplet '192.168.1.44'

. >> Opprett ny tilkobling

Som vist på bildet ovenfor, opprett en ny forbindelse med følgende parametere (Bilde nedenfor for params)

> Tilkoblingsparametere

Dobbeltklikk på den nyopprettede tilkoblingen for å koble til.

Klikk på "Ja" hvis det vises en melding.

Dette er fortsatt en tom database, så la oss legge til noen tabeller.

Lag først et skjema, for å gjøre det ved å høyreklikke på venstre side og velge 'opprett skjema'.

Gi skjemaet et navn og bekreft.

Nå må vi legge til tabeller. Utvid skjemaet og høyreklikk, tabeller.

Lag følgende skjemaer:

> Tabell 1: RALfarger

> Tabell 2: Sensortyper

> Tabell 3: Målinger (På bildet brukes 'metingen', nederlandsk for målinger)

> Tabell 4: Nettsted_data || Tabell 4 bunn

MySQL er et relasjonsdatabasesystem, det betyr at vi kan skape relasjoner mellom tabellene.

Den første relasjonen vi må opprette er mellom 'sensor_type' og 'målinger'.

Som vist på bildet, kobler du de to tastene.

> Rediger en tabell og lenker

Ikke glem å lagre endringene ved å klikke "Bruk" nederst i hjørnet.

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

Nå er vi ferdige med å lage tabellene og lage relasjonene.

Legger til data:

RALcolors -tabellen er en fast tabell, der verdiene aldri vil endres. Vi kan legge til disse verdiene

veldig lett.

> Last ned Excel -fil

Last ned excel -filen ovenfor og velg alle dataene og "kopier". Gjør som på bildet

> Vis tabell

'høyreklikk' på tabellen og velg 'Lim inn rader'. 'klikk' 'bruk' nederst i hjørnet for å legge til dataene.

Nå er alle RALcolors lagret i databasen.

Vi trenger bare å legge til sensor_type i databasen nå.

> Sensortype -data

Merk: Beskrivelsen av sensoren er på 'nederlandsk'

Trinn 4: Trinn 4: Filezilla

Trinn 4: Filezilla
Trinn 4: Filezilla

For enkelt å koble til Raspberry Pi og overføre filer, kan vi bruke Filezilla.

> Last ned Filezilla

Arkiver tilkoblingsdetaljene og koble til. På høyre side kan du nå overføre filer ved å dra dem inn.

> Github -kilde

Last ned filene fra github -kilden ovenfor.

Trinn 5: Trinn 5: Opprette nettstedet

Trinn 5: Opprette nettstedet
Trinn 5: Opprette nettstedet
Trinn 5: Opprette nettstedet
Trinn 5: Opprette nettstedet

For hosting av nettstedet bruker vi PHPmyAdmin og Apache2.

Nettserveren på Raspberry Pi bruker katalogen '/var/www/html' som rot.

Hvis du plasserer filene dine der, blir de plassert på IP -adressen til Raspberry Pi. (IP = se 'ip a')

Du kan laste ned de nødvendige filene fra min github -repo (forrige trinn)

Lim inn alle filene fra 'Frontend' -mappen i '/var/www/html/'.

>/var/www/html/

Trinn 6: Trinn 6: Opprette backend (kolbe)

Nettstedets backend er basert på Flask.

Alle filene finnes på github -repoen.

Kopier alle filene til hvilken som helst katalog på Raspberry Pi.

For eksempel '/home/pi/colorpicker.

For å opprette en katalog, naviger til destinasjonskatalogen med 'cd', og kjør deretter 'mkdir'.

Det er alt for nå. Koden vil bli forklart i de neste trinnene.

Trinn 7: Trinn 7: Maskinvare

> Last ned ordningen

Lag opplegget som vist i dokumentet ovenfor.

MERK: Legg også til en hvit LED, med en motstand (220 eller 330 Ohm).

Forklare maskinvaren

HC04

HC04 -sensoren sender ut bølger, som reflekterer og mottas igjen av sensoren.

Ved å beregne tidsdeltaet mellom utslipp og mottak kan vi beregne avstanden.

Avstand = ((Timestamp_recieve - Timestamp_emit) / lydens hastighet) / 2

Vi deler med to fordi bølgen reflekterer, noe som betyr at den reiser distansen to ganger.

LCD

Vi bruker en LCD -skjerm for å vise RGB og HEX, så vel som IP når programmet starter.

Til denne LCD -en kjøpte jeg en I2C -modul. Vi trenger bare 4 ledninger nå. SDA, SCL, GND, VCC

For å bruke denne LCD -en skrev jeg en Python -klasse for å gjøre den lettere å bruke.

TCS34725

Denne sensoren lar deg måle farger. Vi bruker et bibliotek for å måle RGB -verdien.

Trinn 8: Trinn 8: Kode forklart

Trinn 8: Kode forklart
Trinn 8: Kode forklart
Trinn 8: Kode forklart
Trinn 8: Kode forklart
Trinn 8: Kode forklart
Trinn 8: Kode forklart
Trinn 8: Kode forklart
Trinn 8: Kode forklart

Frontenden

Frontenden består av tre hoveddeler.

Først er html -filene, som bygger strukturen på nettstedet vårt, men ikke inneholder eller minimal layout.

For det andre har vi css -filer, eller stilfiler, som stiler og layouter nettstedet vårt.

De to er ganske enkle å lese og forstå, og derfor vil jeg ikke forklare dem.

Sist har vi Javascript, med to biblioteker.

De to bibliotekene som brukes er SocketIO og URLSearchParams.

SocketIO lar deg sende meldinger fra backend til frontend, og omvendt.

Meldingene kan sendes til en klient, men også til flere klienter (kringkasting)

> Socket IO Javascript

> Socket IO Python

På bildene ovenfor kan du se en av Socket -tilkoblingene som er gjort i dette prosjektet.

Kommandoen for å sende meldinger er 'avgi', mottak gjøres med 'på'.

URLSearchParms lar deg enkelt hente verdier fra en spørringsstreng.

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

URLSearchParams gir deg tilbake: {'id' = '1'}

> URLSearchParams eksempel

Bakenden

Bakenden er fullt skrevet i Python, med en haug med biblioteker.

Det første biblioteket vi importerer er 'Flask'. Dette biblioteket er nødvendig for å lage et API, for å utføre alle CRUD -handlinger for MySQL -databasen. CRUD står for Create Read Update Delete.

> kolbe

Bildet ovenfor viser noen få kolber 'ruter'. Ved å surfe til en rute, vil du automatisk gjøre en "GET" -metode, koden utføres og du vil motta verdien fra returmetoden. Det er også andre metoder, som 'POST' og 'DELETE'. For å teste slike metoder trenger du et program som Postman.

Det neste importbiblioteket er SocketIO, som jeg forklarte allerede i frontend -delen.

Den neste er GPIO.

Dette lar deg kontrollere GPIO -pinnene til Rapsberry Pi.

De viktigste kommandoene er:

  • GPIO.setmode (GPIO. BCM) Velg konfigurasjonen av pinnene.
  • GPIO.output (, GPIO. LOW eller GPIO. HIGH) Skriv en LOW eller HIGH til en pinne.
  • GPIO.setup (,) Definer en PIN -kode som input eller output, eller rullegardinmeny eller pullup

Deretter har vi tråden.

De eneste kommandoene vi bruker er:

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

Ved å bruke tråder kan vi kjøre flere forekomster av kode samtidig. På denne måten kan vi måle avstand og samtidig lytte til innkommende io -meldinger.

Den første kommandoen Thread (target =) vil opprette en Thread -klasse, som ved bruk av 'start ()' vil kjøre funksjonen i søkeordet 'target', som ble gitt ved opprettelsen av klassen.

Deretter har vi biblioteket til fargesensoren, som er ganske rett frem. Jeg vil ikke forklare dette biblioteket, fordi metodene er veldig klare og forklart i koden.

Sist har vi nettverk. Dette tillater oss å hente IP -adressen vi bruker for den trådløse og kablede tilkoblingen.

Sist gjorde jeg noen klasser selv for avstandssensoren, LED og LCD.

Jeg vil ikke forklare hvordan de fungerer.

Trinn 9: Trinn 9: Opprette en sak

Trinn 9: Opprette en sak
Trinn 9: Opprette en sak
Trinn 9: Opprette en sak
Trinn 9: Opprette en sak
Trinn 9: Opprette en sak
Trinn 9: Opprette en sak

For dette prosjektet opprettet jeg en trekasse.

Treverket er lett, tynt og koster ikke mye.

Som dimensjoner brukte jeg:

  • Høyde: 5 cm
  • Bredde: 10,5 cm
  • Lengde: 12,5 cm

For sensorene må du legge til 2 hull og plassere dem ved siden av hverandre.

Etter at du har opprettet saken, installerer du sensorene, LED og LCD.

Trinn 10: Siste trinn

Alt er grunnleggende gjort.

Nå trenger vi bare å sørge for at koden starter, i det øyeblikket vi kobler til strømkilden.

Det er mange metoder for å gjøre dette.

> Eksempler

Vi bruker den første metoden:

Utfør denne linjen: 'sudo nano /etc/rc.local'

Legg til kommandoen din for å kjøre koden: 'sudo python3'

Lagre filen med Ctrl-X.

Hvis du har problemer med å redigere. Gjenta dette trinnet, men kjør først 'sudo -i'.

Anbefalt: