Kazalo:

ColorPicker: 10 korakov
ColorPicker: 10 korakov
Anonim
ColorPicker
ColorPicker

Cilj tega projekta je meriti barve in jih prevajati v druge barvne sisteme. Z uporabo samo vrednosti RGB, ki jih poda senzor, lahko prevedete v HSL, CYMK, HEX in tudi najbližjo kodo RAL (standard za barvanje). Ta projekt zahteva osnovno znanje o Pythonu, MySQL, Linuxu in Javascriptu.

Če poznate tudi okvir Flask in SocketIO, bi vam morala biti koda tega projekta enostavno razumljiva.

Ta projekt lahko uporabljajo slikarji, notranji oblikovalci ali vsi, ki potrebujejo merjenje barv.

Ta projekt ni tako drag in stane približno €, brez poštnine.

Zaloge

Ta razdelek lahko razdelimo na dva dela:

  • Strojna oprema
  • Programska oprema

Strojna oprema

Uporabljamo naslednje komponente

  • HC04: Senzor razdalje, kako daleč merimo od objekta
  • LCD zaslon 2x16
  • LCD I2C modul (HW061)
  • TCS34725 Barvni senzorski modul (Adafruit)
  • Bela LED
  • Raspberry Pi 3 (Vsak Raspberry Pi bi moral delovati)
  • 5x 1k ohmski upor
  • 1x 220 ali 330 ohmski upor
  • SD kartica 16 GB (14,4 GB)

Programska oprema

  • Python IDE, na primer vizualna koda ali Pycharm (tukaj se uporablja Pycharm)
  • Delovna miza MySQL
  • Putty (Prenesite Putty)
  • Rufus ali kateri koli drug zapisovalec kartic SD (prenesite Rufus)

Cenitev

Ta projekt je precej poceni, če že imate Rapsberry Pi.

  • HC04: Od 2,5 EUR naprej (Kitajska) in do 6 EUR za več lokalnih trgovin.
  • LCD: Okoli 6-8 evrov.
  • Modul I2C: poceni pod 1 EUR (Kitajska), do 4 EUR pa za več lokalnih trgovin.
  • TCS34725: Približno 9-12 evrov. Najdražji del (brez RPi)
  • Bela LED: kupljena v razsutem stanju, 20 LED diod že za 1 €
  • Raspberry Pi: odvisno od katere različice, okoli 40 evrov
  • Upori: 0,10 € za en upor
  • SD kartica: okoli 8 €

Napajalnik za Raspberry Pi je v ceni izključen, saj je ta adapter precej pogost.

Celoten cenovni razpon: okoli 70 €, če ste vključili Raspberry Pi in etui za projekt.

Za izdelavo ohišja sem uporabil lahek tanek les. Ta les sem recikliral iz pohištva. Material za ohišje je odvisen od vas.

1. korak: 1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta

1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta
1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta
1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta
1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta
1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta
1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta
1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta
1. korak: Namestitev RPi OS, konfiguriranje SSH in dostopa do interneta

Korak 1.1: Namestitev slike

Prenesite sliko z uradne strani Raspberry Pi. Ni pomembno, kakšno sliko namestite. Za ta projekt grafični vmesnik ni potreben, saj se bomo povezovali samo prek SSH.

Zapišite sliko na (prazno) kartico SD (Vse datoteke na kartici bodo izbrisane).

Za zapisovanje vsega na kartico SD bomo uporabili orodje z imenom 'Rufus'. Ko naložite sliko, odprite Rufus in izberite slikovno datoteko. Izberite ciljni pogon in napišite sliko na pogon. To lahko traja nekaj časa.

> Rufus

Korak: Namestitev SSH

Naslednji korak je vzpostavitev povezave s kartico SD. Če želite to narediti, moramo omogočiti SSH.

Če želite to narediti brez uporabe monitorja, odprite raziskovalca datotek in odprite zagonsko particijo kartice SD. Ustvarite prazno datoteko, imenovano "ssh", brez razširitve datoteke.

Odprite tudi »cmdline.txt«

Na koncu datoteke dodajte "169.254.10.1" in jo shranite.

Odstranite kartico SD in jo vstavite v Raspberry Pi.

Zdaj lahko Raspberry Pi povežemo z virom napajanja in se zaženemo in povežemo s pomočjo SSH.

Za povezavo s pomočjo SSH uporabljamo program "Putty". Preden to storite, povežite svoj RPi in računalnik s kablom ehternet. Odprite Putty in pojdite na zavihek SSH ter vnesite ta IP: 169.254.10.1. Kliknite »poveži« in povezani boste.

> Kiti

Privzeta prijava, ki jo uporablja Raspberry Pi, je "pi" kot uporabniško ime in "malina" za geslo.

Korak 1.3: Brezžična povezava

Vaš Raspberry Pi je zdaj vklopljen.

Prav tako se želimo povezati z RPi prek Wi -Fi -ja, zato ne potrebujemo več ethernetnega kabla.

Izvedite naslednjo vrstico:

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

S tem se odpre urejevalnik besedil "nano" s povišanimi pravicami.

V datoteko dodajte naslednje vrstice:

omrežje = {

ssid = "SSID"

psk = "Geslo"

}

Zamenjajte "SSID" s SSID vašega omrežja Wifi

"Geslo" zamenjajte z geslom.

Nato naredite Ctrl+X in izberite možnost »da«. Datoteka bo zdaj shranjena.

Zdaj moramo znova zagnati omrežno storitev

Izvedite naslednje ukaze:

  • 'sudo -i'
  • 'sudo systemctl znova zaženite omrežje'

Svojo internetno povezavo lahko preizkusite z ukazom wget.

Primer: 'wget google.com'

> Ukaz Wget

2. korak: 2. korak: Namestitev programske opreme na RPi

Za ta projekt moramo namestiti nekaj knjižnic.

  • Mariadb: baza podatkov MySQL (sudo apt-get install mariadb-server)
  • Knjižnica Adafruit za barvni senzor: merjenje barv (pip3 namestite adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', izberite apache spletni strežnik)

Namestite tudi naslednje knjižnice pip:

  • flask_socketio
  • bučko
  • flask_cors
  • deska
  • busio
  • netifaces

Korak 3: Korak 3: Povezovanje z bazo podatkov MySQL, ustvarjanje baze podatkov

3. korak: Povezovanje z bazo podatkov MySQL, ustvarjanje baze podatkov
3. korak: Povezovanje z bazo podatkov MySQL, ustvarjanje baze podatkov
3. korak: Povezovanje z bazo podatkov MySQL, ustvarjanje baze podatkov
3. korak: Povezovanje z bazo podatkov MySQL, ustvarjanje baze podatkov
3. korak: Povezovanje z bazo podatkov MySQL, ustvarjanje baze podatkov
3. korak: Povezovanje z bazo podatkov MySQL, ustvarjanje baze podatkov

Naslednji korak je povezovanje z bazo podatkov MySQL z uporabo delovne mize MySQL.

> IP a

Izvedite ukaz 'ip a', kot je prikazano na zgornji sliki (kliknite povezavo)

V večini primerov bodo prikazani 3 vnosi. Potrebujemo vnos 'wlan0'. Kopirajte IP poleg »inet« ali v tem primeru »192.168.1.44«

. >> Ustvari novo povezavo

Kot je prikazano na zgornji sliki, ustvarite novo povezavo z naslednjimi parametri (slika spodaj za parametre)

> Parametri povezave

Dvokliknite novo ustvarjeno povezavo za povezavo.

Če se prikaže poziv, kliknite »Da«.

To je še vedno prazna baza podatkov, zato dodajmo nekaj tabel.

Najprej ustvarite shemo, da to storite, na levi strani 'desni klik' in izberite 'ustvari shemo'.

Dajte shemi ime in potrdite.

Zdaj moramo dodati tabele. Razširite shemo in "desni klik", "tabele".

Ustvarite naslednje sheme:

> Tabela 1: Barve RAL

> Tabela 2: Vrste senzorjev

> Tabela 3: Meritve (na sliki se uporablja 'metingen', nizozemščina za meritve)

> Tabela 4: Podatki o spletnem mestu || Spodnja tabela 4

MySQL je relacijski sistem baz podatkov, kar pomeni, da lahko ustvarimo odnose med tabelami.

Prvo razmerje, ki ga moramo ustvariti, je med 'senzorskim tipom' in 'meritvami'.

Kot je prikazano na sliki, povežite oba ključa.

> Uredite tabelo in ključe za povezavo

Ne pozabite shraniti sprememb, tako da v spodnjem kotu kliknete »Uporabi«.

Uredite tudi tabelo 'website_data' in povežite 'MetingID'.

Zdaj smo končali z ustvarjanjem tabel in ustvarjanjem odnosov.

Dodajanje podatkov:

Tabela RALcolors je fiksna tabela, pri kateri se vrednosti ne bodo nikoli spremenile. Te vrednosti lahko dodamo

zelo enostavno.

> Prenesite datoteko Excel

Prenesite datoteko excel zgoraj, izberite vse podatke in "kopirajte". Naredite tako kot je na sliki

> Pokaži tabelo

'desni klik' na tabeli in izberite 'Prilepi vrstice'. 'kliknite' 'uporabi' 'v spodnjem kotu, da dodate podatke.

Zdaj so vse barve RAL shranjene v bazi podatkov.

Zdaj moramo samo dodati senzorski tip v bazo podatkov.

> Podatki tipa tipa

Opomba: Opis senzorja je v "nizozemščini"

4. korak: 4. korak: Filezilla

4. korak: Filezilla
4. korak: Filezilla

Za preprosto povezavo z Raspberry Pi in prenos datotek lahko uporabimo Filezilla.

> Prenesite Filezilla

Vnesite podatke o povezavi in se povežite. Na desni strani lahko zdaj datoteke prenašate tako, da jih povlečete.

> Vir Github

Prenesite datoteke iz zgornjega vira github.

5. korak: 5. korak: Ustvarjanje spletnega mesta

5. korak: Ustvarite spletno mesto
5. korak: Ustvarite spletno mesto
5. korak: Ustvarite spletno mesto
5. korak: Ustvarite spletno mesto

Za gostovanje spletnega mesta uporabljamo PHPmyAdmin in Apache2.

Spletni strežnik na Raspberry Pi uporablja imenik '/var/www/html' kot korenski.

Če svoje datoteke namestite tja, bodo gostile IP na naslovu Raspberry Pi. (IP = glej 'ip a')

Zahtevane datoteke lahko prenesete iz mojega github repo (prejšnji korak)

V polje '/var/www/html/' prilepite vse datoteke iz mape 'Frontend'.

>/var/www/html/

Korak 6: Korak 6: Ustvarjanje zaledja (Flask)

Zaledje spletnega mesta temelji na Flasku.

Vse datoteke najdete na github repo.

Kopirajte vse datoteke v kateri koli imenik na Raspberry Pi.

Na primer '/home/pi/colorpicker.

Če želite ustvariti imenik, se s 'cd' pomaknite do ciljnega imenika in nato izvedite 'mkdir'.

To je vse za zdaj. Koda bo pojasnjena v naslednjih korakih.

7. korak: 7. korak: Strojna oprema

> Prenesite shemo

Ustvarite shemo, kot je prikazano v zgornjem dokumentu.

OPOMBA: Dodajte tudi eno belo LED z enim uporom (220 ali 330 ohmov).

Razlaga strojne opreme

HC04

Senzor HC04 oddaja valove, ki se odbijajo in jih senzor ponovno sprejme.

Z izračunom časovne delte med oddajanjem in sprejemom lahko izračunamo razdaljo.

Razdalja = ((Timestamp_recieve - Timestamp_emit) / hitrost zvoka) / 2

Delimo na dva, ker se val odseva, kar pomeni, da dvakrat prepotuje razdaljo.

LCD

Z LCD zaslonom prikažemo RGB in HEX ter IP ob zagonu programa.

Za ta LCD sem kupil modul I2C. Zdaj potrebujemo le 4 žice. SDA, SCL, GND, VCC

Za uporabo tega LCD -ja sem napisal razred Python za lažjo uporabo.

TCS34725

Ta senzor vam omogoča merjenje barv. Za merjenje vrednosti RGB uporabljamo knjižnico.

8. korak: 8. korak: Razložena koda

8. korak: Razložena koda
8. korak: Razložena koda
8. korak: Razložena koda
8. korak: Razložena koda
8. korak: Razložena koda
8. korak: Razložena koda
8. korak: Razložena koda
8. korak: Razložena koda

Frontend

Frontend obstaja iz treh glavnih delov.

Najprej so datoteke html, ki gradijo strukturo našega spletnega mesta, vendar ne vsebujejo ali imajo minimalno postavitev.

Drugič, imamo datoteke css ali datoteke s slogom, ki določajo slog in postavitev našega spletnega mesta.

Oba sta precej enostavna za branje in razumevanje, zato ju ne bom razlagal.

Nazadnje imamo Javascript z dvema knjižnicama.

Dve knjižnici, ki se uporabljata, sta SocketIO in URLSearchParams.

SocketIO vam omogoča pošiljanje sporočil iz zaledja na prednjo stran in obratno.

Sporočila je mogoče poslati eni stranki, lahko pa tudi več odjemalcem (oddajanje)

> Vtičnica IO Javascript

> Vtičnica IO Python

Na zgornjih slikah lahko vidite eno od povezav vtičnice, narejeno v tem projektu.

Ukaz za pošiljanje sporočil je 'emit', sprejem pa opravi 'on'.

URLSearchParms vam omogoča enostavno pridobivanje vrednosti iz nizov poizvedb.

Primer nizov poizvedb: example.com/index.html?id=1

URLSearchParams vam bo vrnil: {'id' = '1'}

> Primer URLSearchParams

Zaledje

Zaledje je v celoti napisano v Pythonu s kopico knjižnic.

Prva knjižnica, ki jo uvozimo, je 'Flask'. Ta knjižnica je potrebna za ustvarjanje API -ja za izvajanje vseh dejanj CRUD za bazo podatkov MySQL. CRUD pomeni Ustvari Read Read Update Delete.

> Bučka

Na zgornji sliki je prikazanih nekaj 'poti' Flaska. Če brskate po poti, boste samodejno uporabili metodo "GET", koda se bo izvedla in vrednost boste prejeli iz metode vrnitve. Obstajajo tudi druge metode, na primer 'POST' in 'DELETE'. Za preizkušanje takšnih metod boste potrebovali program, kot je Poštar.

Naslednja uvozna knjižnica je SocketIO, ki sem jo razložil že v uvodnem razdelku.

Naslednji je GPIO.

To vam omogoča nadzor GPIO zatičev Rapsberry Pi.

Najpomembnejši ukazi so:

  • GPIO.setmode (GPIO. BCM) Izberite konfiguracijo zatičev.
  • GPIO.output (, GPIO. LOW ali GPIO. HIGH) Zapišite nizko ali visoko na pin.
  • GPIO.setup (,) Določite kodo PIN kot vhodno ali izhodno ali spustno ali povlečno

Nato imamo nit.

Edini ukazi, ki jih uporabljamo, so:

  • Nit (cilj =)
  • .start ()

Z uporabo niti lahko hkrati izvajamo več primerkov kode. Na ta način lahko merimo razdaljo in hkrati poslušamo dohodna sporočila vtičnice io.

Prvi ukaz Thread (target =) bo ustvaril razred Thread, ki bo ob začetku uporabe 'start ()' zagnal funkcijo v ključni besedi 'target', ki je bila dana ob ustvarjanju razreda.

Nato imamo knjižnico barvnega senzorja, ki je povsem naravnost. Te knjižnice ne bom razlagal, ker so metode zelo jasne in razložene v kodi.

Nazadnje imamo netifaces. To nam omogoča, da pridobimo naslov IP, ki ga uporabljamo za brezžično in žično povezavo.

Nazadnje sem sam opravil nekaj tečajev za senzor razdalje, LED in LCD.

Ne bom razlagal, kako to deluje.

9. korak: 9. korak: Ustvarjanje primera

9. korak: Ustvarjanje primera
9. korak: Ustvarjanje primera
9. korak: Ustvarjanje primera
9. korak: Ustvarjanje primera
9. korak: Ustvarjanje primera
9. korak: Ustvarjanje primera

Za ta projekt sem ustvaril leseno ohišje.

Les je lahek, tanek in ne stane veliko.

Kot dimenzije sem uporabil:

  • Višina: 5 cm
  • Širina: 10,5 cm
  • Dolžina: 12,5 cm

Za senzorje morate dodati 2 luknji in jih postaviti drug poleg drugega.

Ko ustvarite ohišje, namestite senzorje, LED in LCD.

10. korak: Zadnji koraki

Vse je v osnovi narejeno.

Zdaj moramo le še poskrbeti, da se naša koda zažene, v trenutku, ko priključimo vir napajanja.

Obstaja veliko načinov za to.

> Primeri

Uporabili bomo prvo metodo:

Izvedite to vrstico: 'sudo nano /etc/rc.local'

Dodajte ukaz za zagon kode: 'sudo python3'

Shranite datoteko s tipko Ctrl-X.

Če imate težave pri urejanju. Ponovite ta korak, vendar najprej izvedite 'sudo -i'.

Priporočena: