Tartalomjegyzék:

ColorPicker: 10 lépés
ColorPicker: 10 lépés

Videó: ColorPicker: 10 lépés

Videó: ColorPicker: 10 lépés
Videó: Крученая ромашка 10 лепестков / Twisted daisy of balloons (Subtitles) 2024, November
Anonim
Színválasztó
Színválasztó

A projekt célja a színek mérése és más színrendszerekbe való átültetése. Csak az érzékelő által megadott RGB értékek használatával le lehet fordítani HSL, CYMK, HEX és a legközelebbi RAL kódra (festéshez használt szabvány). Ez a projekt alapvető ismereteket igényel a Python, a MySQL, a Linux és a Javascript használatához.

Ha Ön is ismeri a Flask keretrendszert és a SocketIO -t, akkor a projekt kódjának könnyen érthetőnek kell lennie.

Ezt a projektet festők, belsőépítészek vagy bárki használhatja, akinek mérnie kell a színeket.

Ez a projekt nem olyan drága, és becsült _ euróba kerül, a szállítást nem tartalmazza.

Kellékek

Ezt a részt két részre oszthatjuk:

  • Hardver
  • Szoftver

Hardver

A következő összetevőket használjuk

  • HC04: Távolságérzékelő, milyen távolságra mérjük a tárgyat
  • LCD kijelző 2x16
  • LCD I2C modul (HW061)
  • TCS34725 Színérzékelő modul (Adafruit)
  • Fehér LED
  • Raspberry Pi 3 (bármilyen Raspberry Pi -nek működnie kell)
  • 5x 1k ohmos ellenállás
  • 1x 220 vagy 330 Ohm ellenállás
  • SD -kártya 16 GB (14,4 GB)

Szoftver

  • Python IDE, például a Visual Code vagy a Pycharm (itt használt Pycharm)
  • MySQL munkaasztal
  • Putty (Letöltés Putty)
  • Rufus vagy bármely más SD -kártya író (Rufus letöltése)

Árazás

Ez a projekt meglehetősen olcsó, ha már rendelkezik Rapsberry Pi -vel.

  • HC04: Körülbelül 2,5 euró (Kína), és legfeljebb 6 euró a helyi boltokban.
  • LCD: 6-8 euró körül.
  • I2C modul: Olcsó 1 euró alatti áron (Kína), de akár 4 euróért több helyi üzletben.
  • TCS34725: 9-12 euró körül. A legdrágább alkatrész (az RPi kivételével)
  • Fehér led: ömlesztve vásárolva, 20 LED akár 1 euró áron
  • Raspberry Pi: Attól függően, hogy melyik verzió, körülbelül 40 euró
  • Ellenállások: 0,10 € egy ellenállásért
  • SD kártya: körülbelül 8 euró

A Raspberry Pi hálózati adapterét az ár nem tartalmazza, mivel ez az adapter meglehetősen gyakori.

Átlagos árkategória: körülbelül 70 €, ha a Raspberry Pi -t és a projekt tokját is tartalmazza.

A tok építéséhez könnyű, vékony fát használtam. Ezt a fát újrahasznosítottam a bútorokból. Az ügy anyaga rajtad múlik.

1. lépés: 1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása

1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása
1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása
1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása
1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása
1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása
1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása
1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása
1. lépés: Az RPi OS telepítése, az SSH és az Internet -hozzáférés konfigurálása

1.1. Lépés: A kép telepítése

Töltse le a képet a Raspberry Pi hivatalos webhelyéről. Teljesen mindegy, hogy milyen képet telepít. Ehhez a projekthez nincs szükség grafikus felhasználói felületre, mivel csak SSH használatával fogunk csatlakozni.

Írja be a képet az (üres) SD -kártyára (a kártyán lévő összes fájl törlődik).

Ahhoz, hogy mindent az SD -kártyára írjunk, a „Rufus” nevű eszközt fogjuk használni. A kép letöltése után nyissa meg a Rufust, és válassza ki a képfájlt. Válassza ki a célmeghajtót, és írja be a képet a meghajtóba. Ez eltarthat egy ideig.

> Rufus

1.2. Lépés: Az SSH telepítése

A következő lépés a kapcsolat létrehozása az SD -kártyával. Ehhez engedélyeznünk kell az SSH -t.

Ehhez monitor használata nélkül nyissa meg a fájlkezelőt, és nyissa meg az SD -kártya rendszerindító partícióját. Hozzon létre egy üres fájlt "ssh" néven, fájlkiterjesztés nélkül.

Nyissa meg a "cmdline.txt" fájlt is

Adja hozzá a "169.254.10.1" fájlt a fájl végéhez, és mentse el.

Válassza le az SD -kártyát, és helyezze be a Raspberry Pi -be.

Most csatlakoztathatjuk a Raspberry Pi -t egy áramforráshoz, és SSH használatával indíthatjuk és csatlakoztathatjuk.

Az SSH használatával történő csatlakozáshoz a "Putty" programot használjuk. Ezt megelőzően csatlakoztassa az RPi -t és a számítógépet ehternet -kábellel. Nyissa meg a Putty alkalmazást, lépjen az SSH fülre, és töltse ki ezt az IP -címet: 169.254.10.1. Kattintson a "Csatlakozás" gombra, és csatlakozni fog.

> Putty

A Raspberry Pi által használt alapértelmezett bejelentkezési név a pi, mint felhasználónév, a málna pedig a jelszó.

1.3. Lépés: Vezeték nélküli kapcsolat

A Raspberry Pi most be van kapcsolva.

Szeretnénk Wifi -n keresztül is csatlakozni az RPi -hez, így már nincs szükség Ethernet -kábelre.

Végezze el a következő sort:

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

Ezzel megnyílik a "nano" szövegszerkesztő, megemelt jogokkal.

Adja hozzá a következő sorokat a fájlban:

hálózat = {

ssid = "SSID"

psk = "Jelszó"

}

Cserélje le az „SSID” kódot a Wifi hálózat SSID azonosítójával

Cserélje ki a "Jelszó" jelszót.

Ezután nyomja meg a Ctrl+X billentyűt, és válassza az „igen” lehetőséget. A fájl most mentésre kerül.

Most újra kell indítanunk a hálózati szolgáltatást

Végezze el a következő parancsokat:

  • 'sudo -i'
  • "sudo systemctl indítsa újra a hálózatot"

Az internetkapcsolatot a wget paranccsal tesztelheti.

Példa: 'wget google.com'

> Wget parancs

2. lépés: 2. lépés: Szoftver telepítése az RPi -re

Ehhez a projekthez néhány könyvtárat kell telepítenünk.

  • Mariadb: MySQL adatbázis (sudo apt-get install mariadb-server)
  • Adafruit könyvtár a színérzékelőhöz: Színek mérése (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', válassza az apache webszervert)

Telepítse a következő pip könyvtárakat is:

  • flask_socketio
  • lombik
  • flask_cors
  • tábla
  • busio
  • netifacusok

3. lépés: 3. lépés: Csatlakozás a MySQL adatbázishoz, adatbázis létrehozása

3. lépés: Csatlakozás a MySQL adatbázishoz, adatbázis létrehozása
3. lépés: Csatlakozás a MySQL adatbázishoz, adatbázis létrehozása
3. lépés: Csatlakozás a MySQL adatbázishoz, adatbázis létrehozása
3. lépés: Csatlakozás a MySQL adatbázishoz, adatbázis létrehozása
3. lépés: Csatlakozás a MySQL adatbázishoz, adatbázis létrehozása
3. lépés: Csatlakozás a MySQL adatbázishoz, adatbázis létrehozása

A következő lépés a MySQL adatbázis segítségével a MySQL munkaasztal használatával való csatlakozás.

> IP a

Végezze el az 'ip a' parancsot, a fenti képen látható módon (kattintson a linkre)

A legtöbb esetben 3 bejegyzés jelenik meg. Szükségünk van a „wlan0” bejegyzésre. Másolja az IP -t az „inet” vagy ebben a példában a „192.168.1.44” mellé

> Új kapcsolat létrehozása

A fenti képen látható módon hozzon létre új kapcsolatot a következő paraméterekkel (az alábbi kép a paraméterekhez)

> Csatlakozási paraméterek

A csatlakozáshoz kattintson duplán az újonnan létrehozott kapcsolatra.

Ha megjelenik egy felszólítás, kattintson az „Igen” gombra.

Ez még mindig üres adatbázis, ezért adjunk hozzá néhány táblázatot.

Először hozzon létre egy sémát, ehhez kattintson a bal oldali jobb gombbal, és válassza a „séma létrehozása” lehetőséget.

Adjon nevet a sémának és erősítse meg.

Most táblázatokat kell hozzáadnunk. Bontsa ki a sémát, és kattintson a jobb egérgombbal, a táblázatokkal.

Hozza létre a következő sémákat:

> 1. táblázat: RALszínek

> 2. táblázat: Érzékelőtípusok

> 3. táblázat: Mérések (A képen a "metingen" -t használják, hollandul a méréshez)

> 4. táblázat: Webhely_adatok || 4. táblázat alul

A MySQL egy relációs adatbázis -rendszer, ami azt jelenti, hogy kapcsolatokat hozhatunk létre a táblák között.

Az első kapcsolat, amelyet létre kell hoznunk, az „érzékelő_típus” és a „mérések” között van.

A képen látható módon kapcsolja össze a két kulcsot.

> Táblázat és linkkulcsok szerkesztése

Ne felejtse el menteni a módosításokat az alsó sarokban található „Alkalmaz” gombra kattintva.

Szerkessze a „website_data” táblázatot is, és kapcsolja össze a „MetingID” hivatkozást.

Most befejeztük a táblázatok létrehozását és a kapcsolatok létrehozását.

Adatok hozzáadása:

A RALcolors táblázat egy rögzített táblázat, ahol az értékek soha nem változnak. Ezeket az értékeket hozzáadhatjuk

nagyon könnyen.

> Excel fájl letöltése

Töltse le a fenti Excel fájlt, és válassza ki az összes adatot és a "másolatot". Tedd, mint a képen

> Táblázat megjelenítése

kattintson a jobb gombbal a táblázatra, és válassza a „Sorok beillesztése” lehetőséget. az adatok hozzáadásához kattintson az alsó sarokban található „Alkalmaz” gombra.

Most minden RALcolor mentésre kerül az adatbázisban.

Már csak a sensor_type -t kell hozzáadnunk az adatbázishoz.

> Sensortype adatok

Megjegyzés: Az érzékelő leírása "holland"

4. lépés: 4. lépés: Filezilla

4. lépés: Filezilla
4. lépés: Filezilla

A Filezilla segítségével könnyedén csatlakozhatunk a Raspberry Pi -hez és fájlokat továbbíthatunk.

> Letöltés Filezilla

Fájlozza be a kapcsolat részleteit, és csatlakozzon. A jobb oldalon most húzhatja át a fájlokat.

> Github forrás

Töltse le a fájlokat a fenti github forrásból.

5. lépés: 5. lépés: A webhely létrehozása

5. lépés: A webhely létrehozása
5. lépés: A webhely létrehozása
5. lépés: A webhely létrehozása
5. lépés: A webhely létrehozása

A weboldal üzemeltetéséhez PHPmyAdmin és Apache2 programokat használunk.

A Raspberry Pi webszervere a '/var/www/html' könyvtárat használja gyökérként.

Ha a fájljait oda helyezi, akkor a Raspberry Pi IP -jén lesz tárolva. (IP = lásd 'ip a')

A szükséges fájlokat letöltheti a github repóból (előző lépés)

A '/var/www/html/' mappába illessze be az összes fájlt a 'Frontend' mappából.

>/var/www/html/

6. lépés: 6. lépés: Háttér létrehozása (lombik)

A weboldal háttérrendszere a lombikra épül.

Minden fájl megtalálható a github repóban.

Másolja az összes fájlt a Raspberry Pi bármelyik könyvtárába.

Például '/home/pi/colorpicker.

Könyvtár létrehozásához navigáljon a célkönyvtárhoz a 'cd' használatával, majd hajtsa végre az 'mkdir' parancsot.

Ez minden most. A kódot a következő lépésekben ismertetjük.

7. lépés: 7. lépés: Hardver

> Letöltési séma

Hozza létre a sémát a fenti dokumentumban látható módon.

MEGJEGYZÉS: Adjon hozzá egy fehér LED -et, egy ellenállással (220 vagy 330 ohm).

A hardver magyarázata

HC04

A HC04 érzékelő hullámokat bocsát ki, amelyek tükröződnek, és az érzékelő újra befogadja őket.

A kibocsátás és a fogadás közötti delta kiszámításával kiszámíthatjuk a távolságot.

Távolság = (((Timestamp_recieve - Timestamp_emit) / hangsebesség) / 2

Kettővel osztunk, mert a hullám visszaverődik, vagyis kétszer meghaladja a távolságot.

LCD

LCD kijelzőt használunk az RGB és a HEX megjelenítésére, valamint a program indításakor az IP címet.

Ehhez az LCD -hez vettem egy I2C modult. Már csak 4 vezetékre van szükségünk. SDA, SCL, GND, VCC

Ennek az LCD -nek a használatához írtam egy Python osztályt, hogy könnyebb legyen használni.

TCS34725

Ez az érzékelő lehetővé teszi a színek mérését. Az RGB érték méréséhez könyvtárat használunk.

8. lépés: 8. lépés: A kód magyarázata

8. lépés: A kód magyarázata
8. lépés: A kód magyarázata
8. lépés: A kód magyarázata
8. lépés: A kód magyarázata
8. lépés: A kód magyarázata
8. lépés: A kód magyarázata
8. lépés: A kód magyarázata
8. lépés: A kód magyarázata

A kezelőfelület

A kezelőfelület három fő részből áll.

Először a html fájlok képezik webhelyünk szerkezetét, de nem tartalmaznak minimális elrendezést.

Másodszor megvannak a css fájlok, vagy stílusfájlok, amelyek stílusa és elrendezése weboldalunk.

A kettő meglehetősen könnyen olvasható és érthető, ezért nem fogom megmagyarázni őket.

Végül van Javascript, két könyvtárral.

A két használt könyvtár a SocketIO és az URLSearchParams.

A SocketIO lehetővé teszi üzenetek küldését a háttérrendszerről a kezelőfelületre, és fordítva.

Az üzeneteket el lehet küldeni egy ügyfélnek, de több ügyfélnek is (Broadcast)

> Socket IO Javascript

> Socket IO Python

A fenti képeken láthatja a projektben létrehozott egyik Socket csatlakozást.

Az üzenetek küldésére vonatkozó parancs az 'emit', a fogadást az 'on' végzi.

Az URLSearchParms segítségével egyszerűen lekérheti az értékeket egy lekérdezési karakterláncból.

Példa lekérdezési karakterláncra: example.com/index.html?id=1

Az URLSearchParams visszaadja: {'id' = '1'}

> URLSearchParams példa

A háttér

A háttér teljes egészében Pythonban van írva, egy csomó könyvtárral.

Az első importált könyvtár a "Flask". Ez a könyvtár szükséges egy API létrehozásához, a MySQL adatbázis összes CRUD műveletének elvégzéséhez. A CRUD a Read Read Update Delete létrehozása.

> Lombik

A fenti kép néhány lombik „útvonalat” mutat. Ha egy útvonalon szörfözik, akkor automatikusan egy "GET" módszert hajt végre, a kód végrehajtódik, és az értéket megkapja a visszatérési módszerből. Vannak más módszerek is, például a 'POST' és a 'DELETE'. Az ilyen módszerek teszteléséhez szüksége lesz egy olyan programra, mint a Postman.

A következő import könyvtár a SocketIO, amelyet már az elülső részben ismertettem.

A következő a GPIO.

Ez lehetővé teszi a Rapsberry Pi GPIO csapjainak vezérlését.

A legfontosabb parancsok a következők:

  • GPIO.setmode (GPIO. BCM) Válassza ki a csapok konfigurációját.
  • GPIO.output (, GPIO. LOW vagy GPIO. HIGH) Írjon LOW vagy HIGH értéket egy tűre.
  • GPIO.setup (,) Adja meg a PIN -kódot bemenetként vagy kimenetként, vagy legördülő menüben vagy lehívásként

Következik a menetvágás.

Csak az alábbi parancsokat használjuk:

  • Téma (cél =)
  • . Rajt()

A szálak használatával egyszerre több példányos kódot is futtathatunk. Így meg tudjuk mérni a távolságot, és ugyanakkor meghallgathatjuk a bejövő socket io üzeneteket.

Az első Thread (target =) parancs létrehoz egy Thread osztályt, amely a 'start ()' használatával kezdte el futtatni az osztály létrehozásakor megadott 'target' kulcsszó függvényét.

Ezután a színérzékelő könyvtára áll rendelkezésünkre, amely teljesen egyenes. Nem fogom elmagyarázni ezt a könyvtárat, mert a módszerek nagyon világosak és meg vannak magyarázva a kódban.

Utoljára vannak netifacseink. Ez lehetővé teszi számunkra, hogy lekérjük a vezeték nélküli és vezetékes kapcsolathoz használt IP -címet.

Végül magam készítettem néhány osztályt a távolságérzékelő, a LED és az LCD számára.

Nem fogom elmagyarázni, hogyan működnek ezek.

9. lépés: 9. lépés: Ügy létrehozása

9. lépés: Ügy létrehozása
9. lépés: Ügy létrehozása
9. lépés: Ügy létrehozása
9. lépés: Ügy létrehozása
9. lépés: Ügy létrehozása
9. lépés: Ügy létrehozása

Ehhez a projekthez egy fa tokot készítettem.

A fa könnyű, vékony és nem kerül sokba.

Méretekként használtam:

  • Magasság: 5 cm
  • Szélessége: 10,5 cm
  • Hossz: 12,5 cm

Az érzékelőkhöz 2 lyukat kell hozzáadni, és egymás mellé kell helyezni.

A tok létrehozása után telepítse az érzékelőket, a LED -et és az LCD -t.

10. lépés: Utolsó lépések

Minden alapvetően megtörtént.

Most már csak arról kell gondoskodnunk, hogy a kód elinduljon, abban a pillanatban, amikor csatlakoztatjuk az áramforrást.

Erre sok módszer létezik.

> Példák

Az első módszert fogjuk használni:

Futtassa ezt a sort: 'sudo nano /etc/rc.local'

Adja hozzá a parancsot a kód futtatásához: 'sudo python3'

Mentse a fájlt a Ctrl-X billentyűkombinációval.

Ha problémái vannak a szerkesztéssel. Ismételje meg ezt a lépést, de először hajtsa végre a „sudo -i” parancsot.

Ajánlott: