Obsah:

ColorPicker: 10 kroků
ColorPicker: 10 kroků

Video: ColorPicker: 10 kroků

Video: ColorPicker: 10 kroků
Video: Pickr - An Awesome Color Picker for your next Project! 2024, Listopad
Anonim
ColorPicker
ColorPicker

Cílem tohoto projektu je změřit barvy a převést je do jiných barevných systémů. Pomocí pouze hodnot RGB daných snímačem můžete přeložit do HSL, CYMK, HEX a také na nejbližší kód RAL (standard používaný pro barvy). Tento projekt vyžaduje základní znalosti Pythonu, MySQL, Linuxu a Javascriptu.

Pokud jste také obeznámeni s rámcem Flask a SocketIO, pak by kód pro tento projekt měl být pro vás snadno pochopitelný.

Tento projekt mohou využít malíři, návrháři interiérů nebo jen kdokoli, kdo potřebuje měřit barvy.

Tento projekt není tak drahý a stojí odhadem _ eur, doprava není zahrnuta.

Zásoby

Tuto část můžeme rozdělit na dvě části:

  • Hardware
  • Software

Hardware

Používáme následující komponenty

  • HC04: Senzor vzdálenosti, jak daleko měříme od objektu
  • LCD displej 2x16
  • Modul LCD I2C (HW061)
  • TCS34725 Modul barevného senzoru (Adafruit)
  • Bílá LED
  • Raspberry Pi 3 (Jakýkoli Raspberry Pi by měl fungovat)
  • Rezistor 5x 1k Ohm
  • 1x odpor 220 nebo 330 ohmů
  • SD karta 16 GB (14,4 GB)

Software

  • Python IDE, jako Visual Code nebo Pycharm (zde se používá Pycharm)
  • Pracovní stůl MySQL
  • Tmel (Stáhnout tmel)
  • Rufus nebo jakýkoli jiný zapisovač karet SD (Stáhnout Rufus)

Ceny

Tento projekt je docela levný, pokud již máte Rapsberry Pi.

  • HC04: Počínaje kolem 2,5 EUR (Čína) a až 6 EUR pro více místních obchodů.
  • LCD: přibližně 6–8 EUR.
  • I2C modul: Jako levný pod 1 EUR (Čína), ale až 4 EUR pro více místních obchodů.
  • TCS34725: Přibližně 9–12 EUR. Nejdražší část (bez RPi)
  • Bílá LED: Koupeno hromadně, 20 LED diod již od 1 EUR
  • Raspberry Pi: V závislosti na verzi asi 40 EUR
  • Rezistory: 0,10 EUR za jeden odpor
  • Karta SD: přibližně 8 EUR

Napájecí adaptér pro Raspberry Pi je zahrnut v ceně, protože tento adaptér je zcela běžný.

Celkové cenové rozpětí: kolem 70 EUR, pokud jste zahrnuli Raspberry Pi a pouzdro pro projekt.

Ke stavbě pouzdra jsem použil lehké tenké dřevo. Toto dřevo jsem recykloval z nábytku. Materiál pouzdra je na vás.

Krok 1: Krok 1: Instalace operačního systému RPi, konfigurace SSH a přístupu k internetu

Krok 1: Instalace RPi OS, konfigurace SSH a přístupu k internetu
Krok 1: Instalace RPi OS, konfigurace SSH a přístupu k internetu
Krok 1: Instalace RPi OS, konfigurace SSH a přístupu k internetu
Krok 1: Instalace RPi OS, konfigurace SSH a přístupu k internetu
Krok 1: Instalace RPi OS, konfigurace SSH a přístupu k internetu
Krok 1: Instalace RPi OS, konfigurace SSH a přístupu k internetu
Krok 1: Instalace RPi OS, konfigurace SSH a přístupu k internetu
Krok 1: Instalace RPi OS, konfigurace SSH a přístupu k internetu

Krok 1.1: Instalace obrazu

Stáhněte si obrázek z oficiálních stránek Raspberry Pi. Nezáleží na tom, jaký obrázek nainstalujete. Pro tento projekt není grafické uživatelské rozhraní potřeba, protože se připojíme pouze pomocí SSH.

Zapište obrázek na (prázdnou) kartu SD (všechny soubory na kartě budou vymazány).

K zápisu všeho na SD kartu použijeme nástroj s názvem 'Rufus'. Po stažení obrázku otevřete Rufus a vyberte soubor obrázku. Vyberte cílovou jednotku a napište na ni obrázek. To může chvíli trvat.

> Rufus

Krok 1.2: Instalace SSH

Dalším krokem je vytvoření připojení k SD kartě. K tomu musíme povolit SSH.

Chcete -li to provést bez použití monitoru, otevřete průzkumník souborů a otevřete spouštěcí oddíl karty SD. Vytvořte prázdný soubor s názvem „ssh“bez přípony souboru.

Také otevřete "cmdline.txt"

Na konec souboru přidejte „169.254.10.1“a uložte jej.

Odpojte kartu SD a vložte ji do Raspberry Pi.

Nyní můžeme Raspberry Pi připojit ke zdroji napájení, spustit a připojit pomocí SSH.

Pro připojení pomocí SSH používáme program „Putty“. Než to uděláte, propojte svůj RPi a počítač pomocí kabelu ehternet. Otevřete Putty a přejděte na kartu SSH a vyplňte tuto IP: 169.254.10.1. Klikněte na „připojit“a budete připojeni.

> Tmel

Výchozí přihlašovací jméno používané Raspberry Pi je 'pi' jako uživatelské jméno a 'raspberry' pro heslo.

Krok 1.3: Bezdrátové připojení

Váš Raspberry Pi je nyní zapnutý.

Chceme se také připojit k RPi pomocí Wifi, takže již nepotřebujeme ethernetový kabel.

Proveďte následující řádek:

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

Otevře se textový editor „nano“se zvýšenými právy.

Přidejte do souboru následující řádky:

síť = {

ssid = "SSID"

psk = "Heslo"

}

Nahraďte „SSID“SSID vaší sítě Wifi

Nahraďte „Heslo“svým heslem.

Poté proveďte Ctrl+X a vyberte možnost „ano“. Soubor bude nyní uložen.

Nyní musíme restartovat síťovou službu

Proveďte následující příkazy:

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

Připojení k internetu můžete vyzkoušet pomocí příkazu wget.

Příklad: 'wget google.com'

> Příkaz Wget

Krok 2: Krok 2: Instalace softwaru na RPi

Pro tento projekt musíme nainstalovat několik knihoven.

  • Mariadb: databáze MySQL (sudo apt-get install mariadb-server)
  • Knihovna Adafruit pro barevný senzor: Měření barev (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', zvolte webový server apache)

Nainstalujte si také následující knihovny pipů:

  • flask_socketio
  • baňka
  • flask_cors
  • prkno
  • busio
  • sítě

Krok 3: Krok 3: Připojení k databázi MySQL, vytvoření databáze

Krok 3: Připojení k databázi MySQL, vytvoření databáze
Krok 3: Připojení k databázi MySQL, vytvoření databáze
Krok 3: Připojení k databázi MySQL, vytvoření databáze
Krok 3: Připojení k databázi MySQL, vytvoření databáze
Krok 3: Připojení k databázi MySQL, vytvoření databáze
Krok 3: Připojení k databázi MySQL, vytvoření databáze

Dalším krokem je připojení k databázi MySQL pomocí pracovního stolu MySQL.

> IP a

Spusťte příkaz „ip a“, jak je znázorněno na obrázku výše (klikněte na odkaz)

Ve většině situací se zobrazí 3 záznamy. Potřebujeme položku 'wlan0'. Zkopírujte IP vedle „inet“nebo v tomto příkladu „192.168.1.44“

. >> Vytvořit nové připojení

Jak je znázorněno na obrázku výše, vytvořte nové spojení s následujícími parametry (obrázek níže pro parametry)

> Parametry připojení

Poklepáním na nově vytvořené připojení se připojíte.

Pokud se zobrazí výzva, klikněte na „Ano“.

Toto je stále prázdná databáze, pojďme tedy přidat nějaké tabulky.

Nejprve vytvořte schéma, k tomu na levé straně klikněte pravým tlačítkem a vyberte možnost „Vytvořit schéma“.

Pojmenujte schéma a potvrďte.

Nyní musíme přidat tabulky. Rozbalte schéma a klikněte pravým tlačítkem na „tabulky“.

Vytvořte následující schémata:

> Tabulka 1: RALcolors

> Tabulka 2: Typy senzorů

> Tabulka 3: Měření (Na obrázku je použit 'metingen', holandský pro měření)

> Tabulka 4: Webová_data || Tabulka 4 dole

MySQL je relační databázový systém, což znamená, že můžeme vytvářet vztahy mezi tabulkami.

První vztah, který musíme vytvořit, je mezi „typem senzoru“a „měřením“.

Jak je znázorněno na obrázku, propojte dva klíče.

> Upravte tabulku a klíče odkazů

Změny nezapomeňte uložit kliknutím na 'Použít' v dolním rohu.

Upravte také tabulku „website_data“a odkaz „MetingID“.

Nyní jsme s vytvářením tabulek a vytvářením vztahů hotovi.

Přidávání dat:

Tabulka RALcolors je pevná tabulka, kde se hodnoty nikdy nezmění. Tyto hodnoty můžeme přidat

velmi lehce.

> Stáhnout soubor aplikace Excel

Stáhněte si soubor aplikace Excel výše a vyberte všechna data a 'zkopírujte'. Líbí se mi na obrázku

> Zobrazit tabulku

„klikněte pravým tlačítkem“na tabulku a vyberte „Vložit řádky“. Údaje přidáte kliknutím na 'Použít' v dolním rohu.

Nyní jsou všechny barvy RAL uloženy v databázi.

Nyní musíme pouze přidat typ senzoru do databáze.

> Data typu Sensortype

Poznámka: Popis senzoru je v 'holandštině'

Krok 4: Krok 4: Filezilla

Krok 4: Filezilla
Krok 4: Filezilla

Pro snadné připojení k Raspberry Pi a přenos souborů můžeme použít Filezilla.

> Stáhněte si Filezilla

Zapište podrobnosti o připojení a připojte se. Na pravé straně nyní můžete přenášet soubory přetažením.

> Zdroj Github

Stáhněte si soubory ze zdroje github výše.

Krok 5: Krok 5: Vytvoření webové stránky

Krok 5: Vytvoření webové stránky
Krok 5: Vytvoření webové stránky
Krok 5: Vytvoření webové stránky
Krok 5: Vytvoření webové stránky

K hostování webových stránek používáme PHPmyAdmin a Apache2.

Webový server na Raspberry Pi používá jako root adresář '/var/www/html'.

Pokud tam umístíte své soubory, budou hostovány na IP Raspberry Pi. (IP = viz 'ip a')

Požadované soubory si můžete stáhnout z mého github repo (předchozí krok)

Do souboru/var/www/html/vložte všechny soubory ze složky Frontend.

>/var/www/html/

Krok 6: Krok 6: Vytvoření backendu (baňky)

Backend webových stránek je založen na Flask.

Všechny soubory najdete na repo github.

Zkopírujte všechny soubory do libovolného adresáře na Raspberry Pi.

Například '/home/pi/colorpicker.

Chcete -li vytvořit adresář, přejděte do cílového adresáře pomocí 'cd' a poté spusťte 'mkdir'.

To je prozatím vše. Kód bude vysvětlen v následujících krocích.

Krok 7: Krok 7: Hardware

> Schéma stahování

Vytvořte schéma, jak je uvedeno v dokumentu výše.

POZNÁMKA: Přidejte také jednu bílou LED s jedním odporem (220 nebo 330 ohmů).

Vysvětlení hardwaru

HC04

Senzor HC04 vyzařuje vlny, které se odrážejí a jsou senzorem znovu přijímány.

Výpočtem časové delty mezi vysíláním a příjmem můžeme vypočítat vzdálenost.

Vzdálenost = ((Timestamp_recieve - Timestamp_emit) / rychlost zvuku) / 2

Dělíme dvěma, protože vlna se odráží, což znamená, že urazí vzdálenost dvakrát.

LCD

Pomocí LCD displeje zobrazujeme RGB a HEX, stejně jako IP při spuštění programu.

Pro tento LCD jsem koupil modul I2C. Nyní potřebujeme pouze 4 vodiče. SDA, SCL, GND, VCC

Abych mohl tento LCD používat, napsal jsem třídu Python, aby bylo používání jednodušší.

TCS34725

Tento senzor vám umožňuje měřit barvy. K měření hodnoty RGB používáme knihovnu.

Krok 8: Krok 8: Vysvětlen kód

Krok 8: Kód vysvětlen
Krok 8: Kód vysvětlen
Krok 8: Kód vysvětlen
Krok 8: Kód vysvětlen
Krok 8: Kód vysvětlen
Krok 8: Kód vysvětlen
Krok 8: Kód vysvětlen
Krok 8: Kód vysvětlen

Frontend

Frontend existuje ze tří hlavních částí.

Nejprve jsou to soubory html, které vytvářejí strukturu našich webových stránek, ale neobsahují ani minimální rozložení.

Za druhé máme soubory css nebo soubory stylů, které styl a rozvržení našich webových stránek.

Ty dva jsou celkem snadno čitelné a srozumitelné, a proto je nebudu vysvětlovat.

Jako poslední tu máme Javascript se dvěma knihovnami.

Dvě použité knihovny jsou SocketIO a URLSearchParams.

SocketIO vám umožňuje posílat zprávy z backendu do frontendu a naopak.

Zprávy lze odesílat jednomu klientovi, ale také více klientům (vysílání)

> Socket IO Javascript

> Socket IO Python

Na obrázcích výše můžete vidět jedno ze Socketových připojení provedených v tomto projektu.

Příkaz k odesílání zpráv je 'emit', příjem je proveden 'on'.

URLSearchParms vám umožní snadno získat hodnoty z řetězce dotazů.

Příklad řetězce dotazů: example.com/index.html?id=1

URLSearchParams vám vrátí: {'id' = '1'}

> Příklad URLSearchParams

Backend

Backend je plně napsán v Pythonu s mnoha knihovnami.

První knihovna, kterou importujeme, je 'Flask'. Tato knihovna je potřebná k vytvoření API, k provedení všech akcí CRUD pro databázi MySQL. CRUD znamená Create Read Update Delete.

> Baňka

Na výše uvedeném obrázku je několik „tras“baňek. Surfováním na trasu automaticky provedete metodu „ZÍSKAT“, kód se spustí a vy obdržíte hodnotu z návratové metody. Existují také další metody, například „POST“a „DELETE“. K testování takových metod budete potřebovat program jako Postman.

Další knihovna importu je SocketIO, kterou jsem vysvětlil již v sekci front -end.

Další je GPIO.

To vám umožní ovládat piny GPIO na Rapsberry Pi.

Nejdůležitější příkazy jsou:

  • GPIO.setmode (GPIO. BCM) Vyberte konfiguraci pinů.
  • GPIO.output (, GPIO. LOW nebo GPIO. HIGH) Napište LOW nebo HIGH na špendlík.
  • GPIO.setup (,) Definujte PIN jako vstup nebo výstup, nebo rozbalovací nebo vytahovací

Dále máme vlákno.

Používáme pouze tyto příkazy:

  • Vlákno (cíl =)
  • . Start()

Pomocí vláken můžeme spouštět více instancí kódu současně. Tímto způsobem můžeme měřit vzdálenost a současně poslouchat příchozí zprávy socket io.

První příkaz Thread (target =) vytvoří třídu Thread, která po spuštění pomocí 'start ()' spustí funkci v klíčovém slově 'target', které bylo zadáno při vytvoření třídy.

Dále tu máme knihovnu senzoru barev, která je docela přímočará. Tuto knihovnu nebudu vysvětlovat, protože metody jsou velmi jasné a vysvětlené v kódu.

Jako poslední tu máme sítě. To nám umožňuje získat IP adresu, kterou používáme pro bezdrátové a kabelové připojení.

Naposledy jsem sám vytvořil několik tříd pro snímač vzdálenosti, LED a LCD.

Nebudu vysvětlovat, jak to funguje.

Krok 9: Krok 9: Vytvoření případu

Krok 9: Vytvoření případu
Krok 9: Vytvoření případu
Krok 9: Vytvoření případu
Krok 9: Vytvoření případu
Krok 9: Vytvoření případu
Krok 9: Vytvoření případu

Pro tento projekt jsem vytvořil dřevěné pouzdro.

Dřevo je lehké, tenké a nestojí mnoho.

Jako rozměry jsem použil:

  • Výška: 5 cm
  • Šířka: 10,5 cm
  • Délka: 12,5 cm

U senzorů je třeba přidat 2 otvory a umístit je vedle sebe.

Po vytvoření pouzdra nainstalujte senzory, LED a LCD.

Krok 10: Poslední kroky

Všechno je v zásadě hotové.

Nyní se musíme pouze ujistit, že náš kód začíná, v okamžiku, kdy zapojíme zdroj energie.

K tomu existuje mnoho metod.

> Příklady

Použijeme první metodu:

Proveďte tento řádek: 'sudo nano /etc/rc.local'

Chcete -li spustit kód, přidejte svůj příkaz: 'sudo python3'

Uložte soubor pomocí Ctrl-X.

Pokud máte problémy s úpravou. Tento krok proveďte znovu, ale nejprve spusťte 'sudo -i'.

Doporučuje: