Obsah:

ColorPicker: 10 krokov
ColorPicker: 10 krokov

Video: ColorPicker: 10 krokov

Video: ColorPicker: 10 krokov
Video: Урок 11. Sublime Text 3 - плагин ColorPicker 2024, November
Anonim
ColorPicker
ColorPicker

Cieľom tohto projektu je zmerať farby a preniesť ich do iných farebných systémov. Použitím iba hodnôt RGB daných snímačom môžete preložiť do HSL, CYMK, HEX a tiež na najbližší kód RAL (štandard používaný pre farby). Tento projekt vyžaduje základné znalosti jazyka Python, MySQL, Linux a Javascript.

Ak ste tiež oboznámení s rámcom Flask a SocketIO, potom by mal byť kód pre tento projekt pre vás ľahko zrozumiteľný.

Tento projekt môžu využiť maliari, interiéroví dizajnéri alebo len ktokoľvek, kto potrebuje merať farby.

Tento projekt nie je tak drahý a stojí odhadom _ eur, poštovné nie je zahrnuté.

Zásoby

Túto časť môžeme rozdeliť na dve časti:

  • Hardvér
  • Softvér

Hardvér

Používame nasledujúce komponenty

  • HC04: Snímač vzdialenosti, ako ďaleko meriame od objektu
  • LCD displej 2x16
  • Modul LCD I2C (HW061)
  • Modul snímača farieb TCS34725 (Adafruit)
  • Biela LED
  • Raspberry Pi 3 (Akýkoľvek Raspberry Pi by mal fungovať)
  • Rezistor 5x 1k Ohm
  • 1x odpor 220 alebo 330 ohmov
  • SD karta 16 GB (14,4 GB)

Softvér

  • Python IDE, napríklad Visual Code alebo Pycharm (tu sa používa Pycharm)
  • MySQL Workbench
  • Tmel (Stiahnuť tmel)
  • Rufus alebo akákoľvek iná zapisovačka kariet SD (stiahnuť Rufus)

Ceny

Tento projekt je dosť lacný, ak už máte Rapsberry Pi.

  • HC04: Začína sa okolo 2,5 EUR (Čína) a až 6 EUR pre ďalšie miestne obchody.
  • LCD: Okolo 6-8 eur.
  • Modul I2C: Ako lacný do 1 EUR (Čína), ale do 4 EUR pre viac miestnych obchodov.
  • TCS34725: Okolo 9-12 eur. Najdrahšia časť (bez RPi)
  • Biela LED dióda: Kupované hromadne, 20 LED diód už od 1 EUR
  • Raspberry Pi: Podľa toho, ktorá verzia, okolo 40 eur
  • Rezistory: 0,10 € za jeden odpor
  • Karta SD: približne 8 EUR

Napájací adaptér pre Raspberry Pi je v cene nezahrnutý, pretože tento adaptér je celkom bežný.

Celkové cenové rozpätie: približne 70 EUR, ak ste do projektu zahrnuli Raspberry Pi a puzdro.

Na stavbu puzdra som použil ľahké tenké drevo. Toto drevo som recykloval z nábytku. Materiál puzdra je na vás.

Krok 1: Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet

Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet
Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet
Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet
Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet
Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet
Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet
Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet
Krok 1: Inštalácia systému RPi OS, konfigurácia SSH a prístupu na internet

Krok 1.1: Inštalácia obrazu

Stiahnite si obrázok z oficiálnych stránok Raspberry Pi. Nezáleží na tom, aký obrázok si nainštalujete. Pre tento projekt nie je potrebné GUI, pretože sa pripájame iba pomocou SSH.

Zapíšte obrázok na (prázdnu) kartu SD (všetky súbory na karte budú vymazané).

Na zápis všetkého na kartu SD použijeme nástroj s názvom „Rufus“. Po stiahnutí obrázku otvorte Rufus a vyberte súbor s obrázkom. Vyberte cieľovú jednotku a napíšte na ňu obrázok. To môže chvíľu trvať.

> Rufus

Krok 1.2: Inštalácia SSH

Ďalším krokom je vytvorenie pripojenia k karte SD. Aby sme to urobili, musíme povoliť SSH.

Ak to chcete urobiť bez použitia monitora, otvorte prieskumník súborov a otvorte zavádzací oddiel karty SD. Vytvorte prázdny súbor s názvom „ssh“bez prípony.

Otvorte tiež súbor „cmdline.txt“

Na koniec súboru pridajte „169.254.10.1“a uložte ho.

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

Teraz môžeme Raspberry Pi pripojiť k zdroju napájania, spustiť ho a pripojiť sa pomocou SSH.

Na pripojenie pomocou SSH používame program „Putty“. Predtým prepojte svoj RPi a počítač pomocou kábla ehternet. Otvorte Putty, prejdite na kartu SSH a zadajte túto IP: 169.254.10.1. Kliknite na „pripojiť“a budete pripojení.

> Tmel

Predvolené prihlasovacie meno, ktoré používa Raspberry Pi, je „pi“ako používateľské meno a „Raspberry“ako heslo.

Krok 1.3: Bezdrôtové pripojenie

Váš Raspberry Pi je teraz zapnutý.

Chceme sa tiež pripojiť k RPi pomocou Wifi, takže už nepotrebujeme ethernetový kábel.

Vykonajte nasledujúci riadok:

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

Otvorí sa textový editor „nano“so zvýšenými právami.

Do súboru pridajte nasledujúce riadky:

sieť = {

ssid = "SSID"

psk = "heslo"

}

Nahraďte „SSID“SSID vašej siete Wifi

Nahraďte „Heslo“svojim heslom.

Potom urobte Ctrl+X a vyberte možnosť „áno“. Súbor sa teraz uloží.

Teraz musíme reštartovať sieťovú službu

Vykonajte nasledujúce príkazy:

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

Pripojenie k internetu môžete otestovať pomocou príkazu wget.

Príklad: 'wget google.com'

> Príkaz Wget

Krok 2: Krok 2: Inštalácia softvéru na RPi

Pre tento projekt musíme nainštalovať niekoľko knižníc.

  • Mariadb: MySQL databáza (sudo apt-get install mariadb-server)
  • Knižnica Adafruit pre snímač farieb: Meranie farieb (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', zvoľte webový server apache)

Nainštalujte aj nasledujúce knižnice pipov:

  • flask_socketio
  • fľaša
  • flask_cors
  • doska
  • busio
  • siete

Krok 3: Krok 3: Pripojenie k databáze MySQL, vytvorenie databázy

Krok 3: Pripojenie k databáze MySQL, vytvorenie databázy
Krok 3: Pripojenie k databáze MySQL, vytvorenie databázy
Krok 3: Pripojenie k databáze MySQL, vytvorenie databázy
Krok 3: Pripojenie k databáze MySQL, vytvorenie databázy
Krok 3: Pripojenie k databáze MySQL, vytvorenie databázy
Krok 3: Pripojenie k databáze MySQL, vytvorenie databázy

Ďalším krokom je pripojenie k databáze MySQL pomocou pracovného stola MySQL.

> IP a

Vykonajte príkaz „ip a“, ako je znázornené na obrázku vyššie (Kliknite na odkaz)

Vo väčšine prípadov sa zobrazia 3 záznamy. Potrebujeme vstup 'wlan0'. Skopírujte IP vedľa „inet“alebo v tomto prípade „192.168.1.44“

. >> Vytvorte nové pripojenie

Ako je znázornené na obrázku vyššie, vytvorte nové spojenie s nasledujúcimi parametrami (Parametre nižšie)

> Parametre pripojenia

Pripojte sa dvojitým kliknutím na novo vytvorené pripojenie.

Ak sa zobrazí výzva, kliknite na „Áno“.

Toto je stále prázdna databáza, takže pridáme niekoľko tabuliek.

Najprv vytvorte schému, aby ste to urobili, na ľavej strane kliknite pravým tlačidlom myši a zvoľte „vytvoriť schému“.

Pomenujte schému a potvrďte.

Teraz musíme pridať tabuľky. Rozbaľte schému a kliknite na „pravé tlačidlo myši“, „tabuľky“.

Vytvorte nasledujúce schémy:

> Tabuľka 1: Farby RAL

> Tabuľka 2: Typy senzorov

> Tabuľka 3: Merania (Na obrázku je použitý „metingen“, holandský výraz na meranie)

> Tabuľka 4: Údaje o webových stránkach || Tabuľka 4 dole

MySQL je relačný databázový systém, to znamená, že medzi tabuľkami môžeme vytvárať vzťahy.

Prvý vzťah, ktorý musíme vytvoriť, je medzi „typom senzora“a „meraniami“.

Ako je znázornené na obrázku, prepojte dva kľúče.

> Upravte tabuľku a prepojovacie klávesy

Nezabudnite uložiť zmeny kliknutím na položku Použiť v dolnom rohu.

Upravte tiež tabuľku „website_data“a odkaz „MetingID“.

Teraz sme s vytváraním tabuliek a vytváraním vzťahov hotoví.

Pridávanie údajov:

Tabuľka RALcolors je pevná tabuľka, v ktorej sa hodnoty nikdy nezmenia. Tieto hodnoty môžeme sčítať

veľmi ľahko.

> Stiahnite si súbor programu Excel

Stiahnite si súbor Excel vyššie, vyberte všetky údaje a „skopírujte“. Páči sa vám to na obrázku

> Zobraziť tabuľku

„kliknite pravým tlačidlom myši“na tabuľku a zvoľte „Prilepiť riadky“. Dáta pridáte kliknutím na položku Použiť v dolnom rohu.

Teraz sú všetky farby RAL uložené v databáze.

Teraz musíme do databázy pridať iba typ senzora.

> Údaje typu Sensortype

Poznámka: Popis senzora je v „holandčine“

Krok 4: Krok 4: Filezilla

Krok 4: Filezilla
Krok 4: Filezilla

Na ľahké pripojenie k Raspberry Pi a prenos súborov môžeme použiť Filezilla.

> Stiahnite si Filezilla

Zapíšte podrobnosti o pripojení a pripojte sa. Na pravej strane teraz môžete prenášať súbory ich potiahnutím.

> zdroj Github

Stiahnite si súbory zo zdroja github vyššie.

Krok 5: Krok 5: Vytvorenie webovej stránky

Krok 5: Vytvorenie webovej stránky
Krok 5: Vytvorenie webovej stránky
Krok 5: Vytvorenie webovej stránky
Krok 5: Vytvorenie webovej stránky

Na hostovanie webových stránok používame PHPmyAdmin a Apache2.

Webový server na Raspberry Pi používa ako root adresár '/var/www/html'.

Ak tam umiestnite svoje súbory, budú hostené na IP Raspberry Pi. (IP = pozri „ip a“)

Požadované súbory si môžete stiahnuť z môjho github repo (predchádzajúci krok)

Do súboru/var/www/html/vložte všetky súbory z priečinka Frontend.

>/var/www/html/

Krok 6: Krok 6: Vytvorenie backendu (banka)

Backend webovej stránky je založený na Flask.

Všetky súbory nájdete v repo github.

Skopírujte všetky súbory do ľubovoľného adresára na Raspberry Pi.

Napríklad '/home/pi/colorpicker.

Ak chcete vytvoriť adresár, prejdite do cieľového adresára pomocou „cd“a potom spustite „mkdir“.

To je zatiaľ všetko. Kód bude vysvetlený v ďalších krokoch.

Krok 7: Krok 7: Hardvér

> Schéma sťahovania

Vytvorte schému podľa vyššie uvedeného dokumentu.

POZNÁMKA: Pridajte tiež jednu bielu LED diódu s jedným odporom (220 alebo 330 ohmov).

Vysvetlenie hardvéru

HC04

Senzor HC04 vysiela vlny, ktoré sa odrážajú a sú snímačom opäť prijaté.

Vypočítaním časového delta medzi vysielaním a príjmom môžeme vypočítať vzdialenosť.

Vzdialenosť = ((Timestamp_recieve - Timestamp_emit) / rýchlosť zvuku) / 2

Delíme dvoma, pretože vlna sa odráža, to znamená, že prejde vzdialenosť dvakrát.

LCD

Na spustenie programu používame LCD displej na zobrazenie RGB a HEX, ako aj IP.

K tomuto LCD som kúpil modul I2C. Teraz potrebujeme iba 4 vodiče. SDA, SCL, GND, VCC

Aby som mohol používať tento LCD, napísal som triedu Pythonu, aby bolo používanie jednoduchšie.

TCS34725

Tento senzor vám umožňuje merať farby. Na meranie hodnoty RGB používame knižnicu.

Krok 8: Krok 8: Vysvetlený kód

Krok 8: Vysvetlený kód
Krok 8: Vysvetlený kód
Krok 8: Vysvetlený kód
Krok 8: Vysvetlený kód
Krok 8: Vysvetlený kód
Krok 8: Vysvetlený kód
Krok 8: Vysvetlený kód
Krok 8: Vysvetlený kód

Frontend

Frontend existuje z troch hlavných častí.

Najprv sú to súbory html, ktoré stavajú štruktúru našich webových stránok, ale neobsahujú alebo majú minimálne rozloženie.

Za druhé máme súbory CSS alebo súbory štýlov, ktoré majú štýl a rozloženie.

Tieto dva sa celkom ľahko čítajú a rozumejú, a preto ich nebudem vysvetľovať.

Nakoniec tu máme Javascript s dvoma knižnicami.

Dve použité knižnice sú SocketIO a URLSearchParams.

SocketIO vám umožňuje odosielať správy z backendu do frontendu a naopak.

Správy je možné odosielať jednému klientovi, ale aj viacerým klientom (vysielanie)

> Socket IO Javascript

> Socket IO Python

Na vyššie uvedených obrázkoch môžete vidieť jedno zo zásuvkových pripojení vytvorených v tomto projekte.

Príkaz na odosielanie správ je „emitovať“, prijímanie sa vykonáva pomocou „zapnuté“.

URLSearchParms vám umožňuje ľahko získať hodnoty z reťazca dotazov.

Príklad reťazca dotazov: example.com/index.html?id=1

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

> Príklad URLSearchParams

Backend

Backend je kompletne napísaný v Pythone s mnohými knižnicami.

Prvá knižnica, ktorú importujeme, je 'Flask'. Táto knižnica je potrebná na vytvorenie API, aby bolo možné vykonávať všetky akcie CRUD pre databázu MySQL. CRUD je skratka pre Create Read Update Delete.

> Banka

Obrázok vyššie ukazuje niekoľko „trás“banky. Pri surfovaní na trase automaticky urobíte metódu „ZÍSKAŤ“, kód sa spustí a hodnotu dostanete z metódy návratu. Existujú aj ďalšie metódy, ako napríklad „POST“a „DELETE“. Na testovanie týchto metód budete potrebovať program ako Postman.

Ďalšou importovanou knižnicou je SocketIO, ktorú som vysvetlil už v prednej časti.

Ďalším je GPIO.

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

Najdôležitejšie príkazy sú:

  • GPIO.setmode (GPIO. BCM) Vyberte konfiguráciu pinov.
  • GPIO.output (, GPIO. LOW alebo GPIO. HIGH) Napíšte špendlík LOW alebo HIGH.
  • GPIO.setup (,) Definujte PIN ako vstup alebo výstup, alebo sťahovanie alebo sťahovanie

Ďalej tu máme závitovanie.

Používame iba tieto príkazy:

  • Vlákno (cieľ =)
  • .start ()

Pomocou vlákien môžeme spustiť niekoľko inštancií kódu súčasne. Týmto spôsobom môžeme merať vzdialenosť a zároveň počúvať prichádzajúce správy socket io.

Prvý príkaz Thread (target =) vytvorí triedu Thread, ktorá po spustení pomocou 'start ()' spustí funkciu v kľúčovom slove 'target', ktoré bolo zadané pri vytváraní triedy.

Ďalej tu máme knižnicu senzora farieb, ktorá je celkom priamočiara. Túto knižnicu nebudem vysvetľovať, pretože metódy sú veľmi jasné a vysvetlené v kóde.

Ako posledné tu máme siete. To nám umožňuje získať adresu IP, ktorú používame na bezdrôtové a káblové pripojenie.

Naposledy som sám urobil niekoľko tried pre snímač vzdialenosti, LED a LCD.

Nebudem vysvetľovať, ako to funguje.

Krok 9: Krok 9: Vytvorenie puzdra

Krok 9: Vytvorenie puzdra
Krok 9: Vytvorenie puzdra
Krok 9: Vytvorenie puzdra
Krok 9: Vytvorenie puzdra
Krok 9: Vytvorenie puzdra
Krok 9: Vytvorenie puzdra

Pre tento projekt som vytvoril drevené puzdro.

Drevo je ľahké, tenké a nestojí veľa.

Ako rozmery som použil:

  • Výška: 5 cm
  • Šírka: 10,5 cm
  • Dĺžka: 12,5 cm

Pre snímače je potrebné pridať 2 otvory a umiestniť ich vedľa seba.

Po vytvorení puzdra nainštalujte senzory, LED a LCD.

Krok 10: Posledné kroky

Všetko je v zásade urobené.

Teraz sa musíme len uistiť, že sa náš kód spustí, v okamihu, keď zapojíme zdroj energie.

Existuje mnoho spôsobov, ako to urobiť.

> Príklady

Použijeme prvú metódu:

Spustite tento riadok: 'sudo nano /etc/rc.local'

Na spustenie kódu zadajte príkaz: 'sudo python3'

Uložte súbor pomocou Ctrl-X.

Ak máte problémy s úpravou. Vykonajte tento krok znova, ale najskôr spustite príkaz „sudo -i“.

Odporúča: