Obsah:
- Zásoby
- Krok 1: Krok 1: Instalace operačního systému RPi, konfigurace SSH a přístupu k internetu
- Krok 2: Krok 2: Instalace softwaru na RPi
- Krok 3: Krok 3: Připojení k databázi MySQL, vytvoření databáze
- Krok 4: Krok 4: Filezilla
- Krok 5: Krok 5: Vytvoření webové stránky
- Krok 6: Krok 6: Vytvoření backendu (baňky)
- Krok 7: Krok 7: Hardware
- Krok 8: Krok 8: Vysvětlen kód
- Krok 9: Krok 9: Vytvoření případu
- Krok 10: Poslední kroky
Video: ColorPicker: 10 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
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.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
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
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
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
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
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:
Počitadlo kroků - mikro: bit: 12 kroků (s obrázky)
Počitadlo kroků - Micro: Bit: Tento projekt bude počítadlem kroků. K měření našich kroků použijeme snímač akcelerometru, který je zabudovaný v Micro: Bit. Pokaždé, když se Micro: Bit zatřese, přidáme 2 k počtu a zobrazíme ho na obrazovce
Akustická levitace s Arduino Uno krok za krokem (8 kroků): 8 kroků
Akustická levitace s Arduino Uno krok za krokem (8 kroků): Ultrazvukové měniče zvuku L298N Dc samice napájecí zdroj s mužským DC pinem Arduino UNOBreadboard Jak to funguje: Nejprve nahrajete kód do Arduino Uno (je to mikrokontrolér vybavený digitálním a analogové porty pro převod kódu (C ++)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): 6 kroků (s obrázky)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): Indukční nabíjení (známé také jako bezdrátové nabíjení nebo bezdrátové nabíjení) je druh bezdrátového přenosu energie. Využívá elektromagnetickou indukci k poskytování elektřiny přenosným zařízením. Nejběžnější aplikací je bezdrátové nabíjení Qi
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: 13 kroků (s obrázky)
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: Toto je návod, jak rozebrat počítač. Většina základních komponent je modulární a lze je snadno odstranit. Je však důležité, abyste o tom byli organizovaní. To vám pomůže zabránit ztrátě součástí a také při opětovné montáži
Banka přepínaného zatěžovacího odporu s menší velikostí kroku: 5 kroků
Banka přepínaného zatěžovacího odporu s menší velikostí kroku: Banky zatěžovacích odporů jsou vyžadovány pro testování energetických produktů, pro charakterizaci solárních panelů, v testovacích laboratořích a v průmyslových odvětvích. Reostaty zajišťují nepřetržité kolísání odporu zátěže. Jak se však hodnota odporu snižuje, výkon