Sisällysluettelo:

ColorPicker: 10 vaihetta
ColorPicker: 10 vaihetta

Video: ColorPicker: 10 vaihetta

Video: ColorPicker: 10 vaihetta
Video: ESP32 Tutorial 12 - WS2812 RGB Srip 4 Project with SunFounder's ESP32 IoT Learnig kit 2024, Lokakuu
Anonim
Värinvalitsija
Värinvalitsija

Tämän projektin tavoitteena on mitata värejä ja kääntää ne muihin värijärjestelmiin. Käyttämällä vain anturin antamia RGB -arvoja voit kääntää HSL-, CYMK-, HEX- ja lähimmän RAL -koodin (standardi, jota käytetään maalissa). Tämä projekti vaatii perustiedot Pythonista, MySQL: stä, Linuxista ja Javascriptista.

Jos tunnet myös Flask -kehyksen ja SocketIO: n, tämän projektin koodin pitäisi olla sinulle helposti ymmärrettävä.

Tätä projektia voivat käyttää maalarit, sisustussuunnittelijat tai kaikki, jotka tarvitsevat värien mittaamista.

Tämä projekti ei ole niin kallis ja maksaa arviolta _ euroa, ei sisällä toimituskuluja.

Tarvikkeet

Voimme jakaa tämän osan kahteen osaan:

  • Laitteisto
  • Ohjelmisto

Laitteisto

Käytämme seuraavia komponentteja

  • HC04: Etäisyysanturi, kuinka kauas mittaamme kohteesta
  • LCD -näyttö 2x16
  • LCD I2C -moduuli (HW061)
  • TCS34725 Värianturimoduuli (Adafruit)
  • Valkoinen LED
  • Raspberry Pi 3 (minkä tahansa Raspberry Pi: n pitäisi toimia)
  • 5x 1k ohmin vastus
  • 1x 220 tai 330 ohmin vastus
  • SD -kortti 16 Gt (14,4 Gt)

Ohjelmisto

  • Python IDE, kuten Visual Code tai Pycharm (tässä käytetään Pycharmia)
  • MySQL -työpöytä
  • Putty (Lataa Putty)
  • Rufus tai mikä tahansa muu SD -kortin kirjoittaja (Lataa Rufus)

Hinnoittelu

Tämä projekti on melko halpa, jos sinulla on jo Rapsberry Pi.

  • HC04: Alkaen noin 2,5 euroa (Kiina) ja jopa 6 euroa enemmän paikallisia kauppoja.
  • LCD: noin 6-8 euroa.
  • I2C -moduuli: Halpa alle 1 € (Kiina), mutta jopa 4 € enemmän paikallisia kauppoja.
  • TCS34725: Noin 9-12 euroa. Kallein osa (pois lukien RPi)
  • Valkoinen led: Ostettu irtotavarana, 20 LEDiä jopa 1 eurosta
  • Raspberry Pi: Versiosta riippuen noin 40 euroa
  • Vastukset: 0,10 € yksi vastus
  • SD -kortti: noin 8 €

Raspberry Pi -laitteen virtalähde ei sisälly hintaan, koska tämä sovitin on melko yleinen.

Yleinen hintaluokka: noin 70 €, jos otat mukaan Raspberry Pi: n ja projektin kotelon.

Kotelon rakentamiseen käytin kevyttä ohutta puuta. Kierrätin tämän puun huonekaluista. Kotelon materiaali on sinun.

Vaihe 1: Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen

Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen
Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen
Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen
Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen
Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen
Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen
Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen
Vaihe 1: RPi -käyttöjärjestelmän asentaminen, SSH: n ja Internet -yhteyden määrittäminen

Vaihe 1.1: Kuvan asentaminen

Lataa kuva Raspberry Pi: n viralliselta sivustolta. Ei ole väliä, minkä kuvan asennat. Tässä projektissa graafista käyttöliittymää ei tarvita, koska muodostamme yhteyden vain SSH: n avulla.

Kirjoita kuva (tyhjälle) SD -kortille (kaikki kortilla olevat tiedostot poistetaan).

Kirjoittaaksemme kaiken SD -kortille käytämme työkalua nimeltä Rufus. Kun olet ladannut kuvan, avaa Rufus ja valitse kuvatiedosto. Valitse kohdeasema ja kirjoita kuva asemaan. Tämä voi kestää jonkin aikaa.

> Rufus

Vaihe 1.2: SSH: n asennus

Seuraava vaihe on yhteyden luominen SD -kortille. Tätä varten meidän on otettava SSH käyttöön.

Voit tehdä tämän ilman näyttöä avaamalla tiedostonhallinnan ja avaamalla SD -kortin käynnistysosion. Luo tyhjä tiedosto nimeltä "ssh" ilman tiedostopääte.

Avaa myös "cmdline.txt"

Lisää "169.254.10.1" tiedoston loppuun ja tallenna se.

Irrota SD -kortti ja aseta se Raspberry Pi -laitteeseen.

Nyt voimme yhdistää Raspberry Pi virtalähteeseen ja käynnistää ja muodostaa yhteyden SSH: n avulla.

Yhdistämiseen SSH: n avulla käytämme ohjelmaa "Putty". Liitä RPi ja tietokone ehternet -kaapelilla ennen kuin teet sen. Avaa Putty ja siirry SSH -välilehdelle ja täytä tämä IP -osoite: 169.254.10.1. Napsauta 'yhdistä' ja sinut yhdistetään.

> kitti

Raspberry Pi: n käyttämä oletuskirjautuminen on 'pi' käyttäjänimellä ja 'vadelma' salasanalla.

Vaihe 1.3: Langaton yhteys

Raspberry Pi -laitteeseen on nyt kytketty virta.

Haluamme myös muodostaa yhteyden RPi: hen Wi -Fi -yhteyden avulla, joten et tarvitse enää ethernet -kaapelia.

Suorita seuraava rivi:

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

Tämä avaa nano -tekstieditorin, jolla on laajennetut oikeudet.

Lisää seuraavat rivit tiedostoon:

verkko = {

ssid = "SSID"

psk = "Salasana"

}

Korvaa "SSID" Wifi -verkon SSID: llä

Korvaa "Salasana" salasanallasi.

Tee sitten Ctrl+X ja valitse kyllä -vaihtoehto. Tiedosto tallennetaan nyt.

Nyt meidän on käynnistettävä verkkopalvelu uudelleen

Suorita seuraavat komennot:

  • 'sudo -i'
  • 'sudo systemctl käynnistä verkko uudelleen'

Voit testata Internet -yhteyden wget -komennolla.

Esimerkki: wget google.com

> Wget -komento

Vaihe 2: Vaihe 2: Ohjelmiston asentaminen RPi -laitteeseen

Tätä projektia varten meidän on asennettava muutama kirjasto.

  • Mariadb: MySQL-tietokanta (sudo apt-get install mariadb-server)
  • Adafruit-kirjasto värianturille: Värien mittaaminen (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', valitse apache -verkkopalvelin)

Asenna myös seuraavat pip -kirjastot:

  • flask_socketio
  • pullo
  • flask_cors
  • aluksella
  • busio
  • netifasseja

Vaihe 3: Vaihe 3: Yhteyden muodostaminen MySQL -tietokantaan, tietokannan luominen

Vaihe 3: Yhteyden muodostaminen MySQL -tietokantaan, tietokannan luominen
Vaihe 3: Yhteyden muodostaminen MySQL -tietokantaan, tietokannan luominen
Vaihe 3: Yhteyden muodostaminen MySQL -tietokantaan, tietokannan luominen
Vaihe 3: Yhteyden muodostaminen MySQL -tietokantaan, tietokannan luominen
Vaihe 3: Yhteyden muodostaminen MySQL -tietokantaan, tietokannan luominen
Vaihe 3: Yhteyden muodostaminen MySQL -tietokantaan, tietokannan luominen

Seuraava vaihe on muodostaa yhteys MySQL -tietokantaan MySQL -työpöydän avulla.

> IP a

Suorita komento 'ip a, kuten yllä olevassa kuvassa näkyy (napsauta linkkiä)

Useimmissa tilanteissa näytetään 3 merkintää. Tarvitsemme wlan0 -merkinnän. Kopioi IP -osoite "inet" tai tässä esimerkissä "192.168.1.44"

> Luo uusi yhteys

Luo uusi yhteys seuraavien parametrien kanssa (kuten yllä olevassa kuvassa näkyy) (Kuva alla paramille)

> Yhteysparametrit

Muodosta yhteys kaksoisnapsauttamalla äskettäin luotua yhteyttä.

Jos kehote tulee näkyviin, napsauta Kyllä.

Tämä on edelleen tyhjä tietokanta, joten lisätään muutamia taulukoita.

Luo ensin malli, voit tehdä sen napsauttamalla vasemmanpuoleista hiiren kakkospainiketta ja valitsemalla Luo kaava.

Anna skeemalle nimi ja vahvista.

Nyt meidän on lisättävä taulukot. Laajenna kaava ja napsauta hiiren kakkospainikkeella taulukkoja.

Luo seuraavat mallit:

> Taulukko 1: RAL -värit

> Taulukko 2: Anturityypit

> Taulukko 3: Mittaukset (kuvassa käytetään "metingen", hollanniksi mittauksiin)

> Taulukko 4: Verkkosivuston tiedot || Taulukko 4 alhaalla

MySQL on relaatiotietokantajärjestelmä, mikä tarkoittaa, että voimme luoda suhteita taulukoiden välille.

Ensimmäinen suhde, joka meidän on luotava, on "sensor_type" ja "mittaukset".

Yhdistä kaksi näppäintä kuvan mukaisesti.

> Muokkaa taulukkoa ja linkkinäppäimiä

Muista tallentaa muutokset napsauttamalla alareunan Käytä -painiketta.

Muokkaa myös "website_data" -taulukkoa ja linkitä MetingID.

Nyt olemme luoneet taulukot ja luoneet suhteet.

Tietojen lisääminen:

RALcolors -taulukko on kiinteä taulukko, jossa arvot eivät koskaan muutu. Voimme lisätä nämä arvot

tosi helposti.

> Lataa Excel -tiedosto

Lataa yllä oleva Excel -tiedosto ja valitse kaikki tiedot ja "kopioi". Tee kuten kuvassa

> Näytä taulukko

napsauta taulukkoa hiiren kakkospainikkeella ja valitse Liitä rivit. Lisää tiedot napsauttamalla alareunassa olevaa Käytä -painiketta.

Nyt kaikki RAL -värit tallennetaan tietokantaan.

Meidän tarvitsee vain lisätä sensor_type tietokantaan nyt.

> Aistityypin tiedot

Huomautus: Anturin kuvaus on hollanniksi

Vaihe 4: Vaihe 4: Filezilla

Vaihe 4: Filezilla
Vaihe 4: Filezilla

Voimme muodostaa yhteyden Raspberry Pi: hen ja siirtää tiedostoja helposti käyttämällä Filezillaa.

> Lataa Filezilla

Kirjoita yhteystiedot ja muodosta yhteys. Oikealla puolella voit nyt siirtää tiedostoja vetämällä ne sisään.

> Github -lähde

Lataa tiedostot yllä olevasta github -lähteestä.

Vaihe 5: Vaihe 5: Verkkosivuston luominen

Vaihe 5: Verkkosivuston luominen
Vaihe 5: Verkkosivuston luominen
Vaihe 5: Verkkosivuston luominen
Vaihe 5: Verkkosivuston luominen

Sivuston isännöintiin käytämme PHPmyAdminia ja Apache2: ta.

Raspberry Pi -verkkopalvelin käyttää hakemistoa '/var/www/html' juurina.

Jos sijoitat tiedostosi sinne, ne isännöidään Raspberry Pi: n IP -osoitteella. (IP = katso 'ip')

Voit ladata tarvittavat tiedostot github -repostani (edellinen vaihe)

Liitä/var/www/html/-kansioon kaikki tiedostot Frontend -kansiosta.

>/var/www/html/

Vaihe 6: Vaihe 6: Taustaohjelman (pullo) luominen

Verkkosivuston taustajärjestelmä perustuu Flaskiin.

Kaikki tiedostot löytyvät github reposta.

Kopioi kaikki tiedostot mihin tahansa Raspberry Pi -hakemistoon.

Esimerkiksi '/home/pi/colorpicker.

Jos haluat luoda hakemiston, siirry kohdehakemistoon käyttämällä cd -tiedostoa ja suorita sitten mkdir.

Tässä kaikki tältä erää. Koodi selitetään seuraavissa vaiheissa.

Vaihe 7: Vaihe 7: Laitteisto

> Lataa malli

Luo malli yllä olevan asiakirjan mukaisesti.

HUOMAUTUS: Lisää myös yksi valkoinen LED ja yksi vastus (220 tai 330 ohmia).

Laitteiston selitys

HC04

HC04 -anturi lähettää aaltoja, jotka heijastavat ja anturi ottaa ne uudelleen vastaan.

Laskemalla lähetyksen ja vastaanoton välisen ajan delta, voimme laskea etäisyyden.

Etäisyys = (((Aikaleima_saanti - Aikaleima_emit) / äänen nopeus) / 2

Jaamme kahdella, koska aalto heijastuu, eli se kulkee matkan kahdesti.

LCD -näyttö

Käytämme LCD -näyttöä RGB: n ja HEX: n näyttämiseen sekä IP: tä ohjelman alkaessa.

Ostin tälle nestekidenäytölle I2C -moduulin. Tarvitsemme nyt vain 4 johtoa. SDA, SCL, GND, VCC

Tämän LCD -näytön käyttämiseksi kirjoitin Python -luokan käytön helpottamiseksi.

TCS34725

Tämän anturin avulla voit mitata värejä. Käytämme kirjastoa RGB -arvon mittaamiseen.

Vaihe 8: Vaihe 8: Koodi selitetty

Vaihe 8: Koodi selitetty
Vaihe 8: Koodi selitetty
Vaihe 8: Koodi selitetty
Vaihe 8: Koodi selitetty
Vaihe 8: Koodi selitetty
Vaihe 8: Koodi selitetty
Vaihe 8: Koodi selitetty
Vaihe 8: Koodi selitetty

Käyttöliittymä

Käyttöliittymä koostuu kolmesta pääosasta.

Ensinnäkin html -tiedostot, jotka rakentavat verkkosivustomme rakenteen, mutta eivät sisällä tai ovat minimaalisia.

Toiseksi meillä on css -tiedostot tai tyylitiedostot, jotka tyylittävät ja asettavat verkkosivustomme.

Nämä kaksi ovat melko helppolukuisia ja ymmärrettäviä, joten en selitä niitä.

Viimeksi meillä on Javascript, jossa on kaksi kirjastoa.

Kaksi käytettyä kirjastoa ovat SocketIO ja URLSearchParams.

SocketIO: n avulla voit lähettää viestejä taustajärjestelmästä käyttöliittymään ja päinvastoin.

Viestit voidaan lähettää yhdelle asiakkaalle, mutta myös useille asiakkaille (Broadcast)

> Socket IO Javascript

> Socket IO Python

Yllä olevissa kuvissa näet yhden tässä projektissa tehdyistä pistorasiayhteyksistä.

Viestien lähetyskomento on 'emit', vastaanotto tapahtuu 'on'.

URLSearchParmsin avulla voit saada arvoja kyselymerkkijonosta helposti.

Esimerkki kyselymerkkijonosta: example.com/index.html?id=1

URLSearchParams antaa sinulle takaisin: {'id' = '1'}

> URLSearchParams Esimerkki

Taustaosa

Taustaosa on kirjoitettu kokonaan Pythonilla, ja siinä on joukko kirjastoja.

Ensimmäinen tuoma kirjasto on 'Pullo'. Tätä kirjastoa tarvitaan sovellusliittymän luomiseen, jotta kaikki MySQL -tietokannan CRUD -toiminnot voidaan suorittaa. CRUD tarkoittaa Create Read Update Delete.

> Pullo

Yllä oleva kuva esittää muutamia pulloreittejä. Surffaamalla reitille teet automaattisesti GET -menetelmän, koodi suoritetaan ja saat arvon palautusmenetelmästä. On myös muita menetelmiä, kuten "POST" ja "DELETE". Tällaisten menetelmien testaamiseen tarvitset Postmanin kaltaisen ohjelman.

Seuraava tuontikirjasto on SocketIO, jonka selitin jo käyttöliittymän osassa.

Seuraava on GPIO.

Tämän avulla voit hallita Rapsberry Pi: n GPIO -nastoja.

Tärkeimmät komennot ovat:

  • GPIO.setmode (GPIO. BCM) Valitse nastojen kokoonpano.
  • GPIO.output (, GPIO. LOW tai GPIO. HIGH) Kirjoita NAPAA tai HIGH.
  • GPIO.setup (,) Määritä PIN -koodi tuloksi tai ulostuloksi tai vedettäväksi tai vedettäväksi

Seuraavaksi meillä on langoitus.

Ainoat käyttämämme komennot ovat:

  • Säie (kohde =)
  • .alkaa()

Säikeiden avulla voimme suorittaa useita koodin esiintymiä samanaikaisesti. Tällä tavalla voimme mitata etäisyyttä ja samalla kuunnella saapuvia socket io -viestejä.

Ensimmäinen komento Thread (target =) luo säieluokan, joka alkaa käyttää 'start ()' - toimintoa ja suorittaa toiminnon avainsanassa 'target', joka annettiin luokan luomisessa.

Seuraavaksi meillä on värianturin kirjasto, joka on melko suoraviivainen. En aio selittää tätä kirjastoa, koska menetelmät ovat hyvin selkeitä ja selitetty koodissa.

Viimeksi meillä on netifaces. Tämän avulla voimme noutaa langattomassa ja langallisessa yhteydessä käytetyn IP -osoitteen.

Viimeksi tein joitakin luokkia itse etäisyysanturille, LEDille ja nestekidenäytölle.

En selitä miten ne toimivat.

Vaihe 9: Vaihe 9: Kotelon luominen

Vaihe 9: Tapauksen luominen
Vaihe 9: Tapauksen luominen
Vaihe 9: Tapauksen luominen
Vaihe 9: Tapauksen luominen
Vaihe 9: Tapauksen luominen
Vaihe 9: Tapauksen luominen

Tätä projektia varten tein puukotelon.

Puu on kevyttä, ohutta eikä maksa paljon.

Mittoina käytin:

  • Korkeus: 5 cm
  • Leveys: 10,5 cm
  • Pituus: 12,5 cm

Antureita varten sinun on lisättävä 2 reikää ja asetettava ne vierekkäin.

Asenna kotelon luomisen jälkeen anturit, LED ja LCD.

Vaihe 10: Viimeiset vaiheet

Kaikki tehdään periaatteessa.

Nyt meidän on vain varmistettava, että koodimme alkaa heti, kun kytket virtalähteemme.

Tähän on monia menetelmiä.

> Esimerkkejä

Käytämme ensimmäistä menetelmää:

Suorita tämä rivi: 'sudo nano /etc/rc.local'

Lisää komento suorittaaksesi koodin: 'sudo python3'

Tallenna tiedosto näppäinyhdistelmällä Ctrl-X.

Jos muokkaamisessa on ongelmia. Tee tämä vaihe uudelleen, mutta suorita ensin sudo -i.

Suositeltava: