Sadržaj:

ColorPicker: 10 koraka
ColorPicker: 10 koraka

Video: ColorPicker: 10 koraka

Video: ColorPicker: 10 koraka
Video: Реалити-сериал «Солдатки» | 9 и 10 серия 2024, Studeni
Anonim
Birač boja
Birač boja

Cilj ovog projekta je mjerenje boja i njihovo prevođenje u druge sustave boja. Koristeći samo RGB vrijednosti koje daje senzor, možete prevesti u HSL, CYMK, HEX i također najbliži RAL kod (standard koji se koristi za boje). Ovaj projekt zahtijeva osnovno znanje o Pythonu, MySQL -u, Linuxu i Javascriptu.

Ako ste također upoznati s okvirom Flask i SocketIO, kôd za ovaj projekt trebao bi vam biti lako razumljiv.

Ovaj projekt mogu koristiti slikari, dizajneri interijera ili samo svi koji trebaju mjeriti boje.

Ovaj projekt nije tako skup i košta otprilike _ eura, bez dostave.

Pribor

Ovaj odjeljak možemo podijeliti na dva dijela:

  • Hardver
  • Softver

Hardver

Koristimo sljedeće komponente

  • HC04: Senzor udaljenosti, koliko mjerimo od objekta
  • LCD zaslon 2x16
  • LCD I2C modul (HW061)
  • TCS34725 Modul senzora boje (Adafruit)
  • Bijela LED
  • Raspberry Pi 3 (Svaki Raspberry Pi bi trebao raditi)
  • 5x 1k Ohm otpornik
  • 1x 220 ili 330 Ohm otpornik
  • SD kartica 16 GB (14,4 GB)

Softver

  • Python IDE, poput vizualnog koda ili Pycharma (ovdje se koristi Pycharm)
  • MySQL radni stol
  • Putty (Preuzmi Putty)
  • Rufus ili bilo koji drugi pisac SD kartica (preuzmite Rufus)

Cijene

Ovaj projekt je prilično jeftin, ako već imate Rapsberry Pi.

  • HC04: Počevši od 2,5 eura (Kina) i do 6 eura za više lokalnih trgovina.
  • LCD: Oko 6-8 eura.
  • I2C modul: jeftino ispod 1 € (Kina), ali do 4 € za više lokalnih trgovina.
  • TCS34725: Oko 9-12 eura. Najskuplji dio (isključujući RPi)
  • Bijela LED dioda: Kupljeno na veliko, 20 LED dioda već za 1 €
  • Raspberry Pi: Ovisno o verziji, oko 40 eura
  • Otpornici: 0,10 € za jedan otpornik
  • SD kartica: oko 8 €

Adapter za napajanje za Raspberry Pi isključen je u cijenu, budući da je ovaj adapter uobičajen.

Opći raspon cijena: oko 70 €, ako ste uključili Raspberry Pi i kućište za projekt.

Za izradu kućišta koristio sam lagano tanko drvo. Reciklirao sam ovo drvo iz namještaja. Materijal za kućište je na vama.

Korak 1: Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu

Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu
Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu
Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu
Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu
Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu
Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu
Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu
Korak 1: Instaliranje RPi OS -a, konfiguriranje SSH -a i pristupa internetu

Korak 1.1: Instaliranje slike

Preuzmite sliku sa službene stranice Raspberry Pi. Nije važno koju sliku instalirate. Za ovaj projekt GUI nije potreban jer ćemo se povezivati samo putem SSH -a.

Zapišite sliku na (praznu) SD karticu (Sve datoteke na kartici bit će izbrisane).

Za zapis svega na SD karticu upotrijebit ćemo alat pod nazivom 'Rufus'. Nakon preuzimanja slike otvorite Rufus i odaberite datoteku slike. Odaberite ciljni pogon i upišite sliku u pogon. To može potrajati.

> Rufus

Korak 1.2: Instaliranje SSH -a

Sljedeći korak je stvaranje veze sa SD karticom. Da bismo to učinili, moramo omogućiti SSH.

Da biste to učinili bez upotrebe monitora, otvorite istraživač datoteka i otvorite boot particiju SD kartice. Napravite praznu datoteku pod nazivom "ssh", bez nastavka datoteke.

Otvorite i "cmdline.txt"

Dodajte "169.254.10.1" na kraj datoteke i spremite je.

Demontirajte SD karticu i umetnite je u Raspberry Pi.

Sada možemo spojiti Raspberry Pi na izvor napajanja i pokrenuti se i povezati pomoću SSH -a.

Za povezivanje pomoću SSH -a koristimo program "Putty". Prije toga povežite svoj RPi i računalo pomoću ehternet kabela. Otvorite Putty i idite na karticu SSH, te ispunite ovaj IP: 169.254.10.1. Pritisnite "poveži" i bit ćete povezani.

> Git

Zadana prijava koju koristi Raspberry Pi je 'pi' kao korisničko ime i 'malina' za lozinku.

Korak 1.3: Bežična veza

Vaš Raspberry Pi sada je uključen.

Također se želimo spojiti na RPi putem Wi -Fi -ja, pa nam na taj način više ne treba Ethernet kabel.

Izvršite sljedeći redak:

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

Ovo će otvoriti "nano" uređivač teksta s povišenim pravima.

Dodajte sljedeće retke u datoteku:

mreža = {

ssid = "SSID"

psk = "Lozinka"

}

Zamijenite "SSID" sa SSID -om svoje Wifi mreže

Zamijenite "Lozinku" svojom lozinkom.

Zatim učinite Ctrl+X i odaberite opciju 'da'. Datoteka će sada biti spremljena.

Sada moramo ponovno pokrenuti mrežnu uslugu

Izvršite sljedeće naredbe:

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

Svoju internetsku vezu možete testirati pomoću naredbe wget.

Primjer: 'wget google.com'

> Wget naredba

Korak 2: Korak 2: Instaliranje softvera na RPi

Za ovaj projekt moramo instalirati nekoliko knjižnica.

  • Mariadb: MySQL baza podataka (sudo apt-get install mariadb-server)
  • Knjižnica Adafruit za senzor boje: Mjerenje boja (pip3 instalirajte adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', odaberite apache web poslužitelj)

Također instalirajte sljedeće pip knjižnice:

  • flask_socketio
  • tikvica
  • flask_cors
  • odbor
  • busio
  • netifaces

Korak 3: Korak 3: Povezivanje s MySQL bazom podataka, stvaranje baze podataka

Korak 3: Povezivanje s MySQL bazom podataka, stvaranje baze podataka
Korak 3: Povezivanje s MySQL bazom podataka, stvaranje baze podataka
Korak 3: Povezivanje s MySQL bazom podataka, stvaranje baze podataka
Korak 3: Povezivanje s MySQL bazom podataka, stvaranje baze podataka
Korak 3: Povezivanje s MySQL bazom podataka, stvaranje baze podataka
Korak 3: Povezivanje s MySQL bazom podataka, stvaranje baze podataka

Sljedeći korak je povezivanje s MySQL bazom podataka pomoću MySQL radnog stola.

> IP a

Izvršite naredbu 'ip a', kao što je prikazano na gornjoj slici (kliknite vezu)

U većini situacija bit će prikazana 3 unosa. Trebamo unos 'wlan0'. Kopirajte IP pored "inet" ili u ovom primjeru "192.168.1.44"

. >> Stvorite novu vezu

Kao što je prikazano na gornjoj slici, stvorite novu vezu sa sljedećim parametrima (Slika ispod za parametre)

> Parametri veze

Dvaput kliknite na novostvorenu vezu za povezivanje.

Ako se pojavi upit, kliknite 'Da'.

Ovo je još uvijek prazna baza podataka, pa dodajmo neke tablice.

Najprije stvorite shemu, da biste to učinili, s lijeve strane 'desni klik' i odaberite 'kreiraj shemu'.

Dajte imenu sheme i potvrdite.

Sada moramo dodati tablice. Proširite shemu i 'desni klik', 'tablice'.

Izradite sljedeće sheme:

> Tablica 1: RALboje

> Tablica 2: Vrste senzora

> Tablica 3: Mjerenja (Na slici se koristi 'metingen', nizozemski za mjerenja)

> Tablica 4: Podaci_ web stranice || Tablica 4 na dnu

MySQL je relacijski sustav baze podataka, što znači da možemo stvoriti odnose između tablica.

Prva relacija koju moramo stvoriti je između 'sensor_type' i 'mjerenja'.

Kao što je prikazano na slici, povežite dvije tipke.

> Uredite tablicu i ključeve veza

Ne zaboravite spremiti promjene klikom na 'Primijeni' u donjem kutu.

Također uredite tablicu 'website_data' i povežite 'MetingID'.

Sada smo završili sa stvaranjem tablica i stvaranjem odnosa.

Dodavanje podataka:

Tablica RALcolors je fiksna tablica u kojoj se vrijednosti nikada neće promijeniti. Ove vrijednosti možemo dodati

vrlo lako.

> Preuzmite Excel datoteku

Preuzmite Excel datoteku iznad i odaberite sve podatke i "kopirajte". Učinite kao na slici

> Prikaži tablicu

'desnom tipkom miša' na tablici i odaberite 'Zalijepi retke'. 'kliknite' 'primijeni' 'u donjem kutu za dodavanje podataka.

Sada su sve RAL boje spremljene u bazu podataka.

Sada samo moramo dodati sensor_type u bazu podataka.

> Podaci senzornog tipa

Napomena: Opis senzora je na "nizozemskom"

Korak 4: Korak 4: Filezilla

Korak 4: Filezilla
Korak 4: Filezilla

Za jednostavno povezivanje s Raspberry Pi i prijenos datoteka možemo koristiti Filezilla.

> Preuzmite Filezilla

Umetnite podatke o povezivanju i povežite se. S desne strane sada možete prenijeti datoteke povlačenjem.

> Github izvor

Preuzmite datoteke iz gornjeg izvora github -a.

Korak 5: Korak 5: Izrada web stranice

Korak 5: Izrada web stranice
Korak 5: Izrada web stranice
Korak 5: Izrada web stranice
Korak 5: Izrada web stranice

Za hosting web stranice koristimo PHPmyAdmin i Apache2.

Web poslužitelj na Raspberry Pi -u koristi direktorij '/var/www/html' kao root.

Ako svoje datoteke smjestite tamo, bit će hostirane na IP -u Raspberry Pi. (IP = vidi 'ip a')

Možete preuzeti potrebne datoteke iz mog github repoa (prethodni korak)

U '/var/www/html/' zalijepite sve datoteke iz mape 'Frontend'.

>/var/www/html/

Korak 6: Korak 6: Stvaranje pozadine (bočica)

Pozadina web stranice temelji se na Flasku.

Sve datoteke možete pronaći na github repo -u.

Kopirajte sve datoteke u bilo koji direktorij na Raspberry Pi.

Na primjer '/home/pi/colorpicker.

Da biste stvorili direktorij, dođite do odredišnog direktorija pomoću 'cd', a zatim izvedite 'mkdir'.

To je sve za sada. Kôd će biti objašnjen u sljedećim koracima.

Korak 7: Korak 7: Hardver

> Preuzmi shemu

Izradite shemu kao što je prikazano u gornjem dokumentu.

NAPOMENA: Dodajte i jednu bijelu LED sa jednim otpornikom (220 ili 330 Ohma).

Objašnjenje hardvera

HC04

HC04 osjetnik emitira valove koji se reflektiraju i senzor ih ponovno prima.

Izračunavanjem vremenske delte između emitiranja i primanja možemo izračunati udaljenost.

Udaljenost = ((Timestamp_recieve - Timestamp_emit) / brzina zvuka) / 2

Dijelimo s dva jer se val reflektira, što znači da dva puta putuje udaljenost.

LCD

Koristimo LCD zaslon za prikaz RGB -a i HEX -a, kao i IP -a pri pokretanju programa.

Za ovaj LCD, kupio sam I2C modul. Sada nam trebaju samo 4 žice. SDA, SCL, GND, VCC

Da bih koristio ovaj LCD, napisao sam Python klasu, kako bih ga olakšao u korištenju.

TCS34725

Ovaj senzor omogućuje mjerenje boja. Za mjerenje RGB vrijednosti koristimo biblioteku.

Korak 8: Korak 8: Objašnjenje koda

Korak 8: Objašnjenje koda
Korak 8: Objašnjenje koda
Korak 8: Objašnjenje koda
Korak 8: Objašnjenje koda
Korak 8: Objašnjenje koda
Korak 8: Objašnjenje koda
Korak 8: Objašnjenje koda
Korak 8: Objašnjenje koda

Frontend

Frontend se sastoji od tri glavna dijela.

Prvo su html datoteke koje grade strukturu naše web stranice, ali ne sadrže ili imaju minimalni izgled.

Drugo, imamo css datoteke ili datoteke stila koje stiliziraju i postavljaju našu web stranicu.

Njih je dvoje prilično lako čitati i razumjeti, pa ih zato neću objašnjavati.

Zadnji imamo Javascript s dvije knjižnice.

Dvije korištene biblioteke su SocketIO i URLSearchParams.

SocketIO vam omogućuje slanje poruka s pozadine na sučelje i obrnuto.

Poruke se mogu slati jednom klijentu, ali i više klijenata (emitiranje)

> Socket IO Javascript

> Socket IO Python

Na gornjim slikama možete vidjeti jednu od veza utičnice napravljenu u ovom projektu.

Naredba za slanje poruka je 'emitovanje', primanje se vrši pomoću 'uključeno'.

URLSearchParms vam omogućuje jednostavno dobivanje vrijednosti iz niza upita.

Primjer niza upita: example.com/index.html?id=1

URLSearchParams će vam vratiti: {'id' = '1'}

> Primjer URLSearchParams

Pozadina

Pozadina je u potpunosti napisana na Pythonu, s hrpom knjižnica.

Prva biblioteka koju uvozimo je 'Flask'. Ova je knjižnica potrebna za stvaranje API -ja, za izvršavanje svih CRUD radnji za MySQL bazu podataka. CRUD kratica za Create Read Update Update Delete.

> Tikvica

Gornja slika prikazuje nekoliko Flask 'ruta'. Surfanjem do rute, automatski ćete napraviti 'GET' metodu, kôd će se izvršiti i dobit ćete vrijednost iz metode povratka. Postoje i druge metode, poput 'POST' i 'DELETE'. Za testiranje takvih metoda trebat će vam program poput Poštara.

Sljedeća knjižnica za uvoz je SocketIO, koju sam već objasnio u odjeljku prednjeg kraja.

Sljedeći je GPIO.

To vam omogućuje kontrolu GPIO pinova Rapsberry Pi.

Najvažnije naredbe su:

  • GPIO.setmode (GPIO. BCM) Odaberite konfiguraciju pinova.
  • GPIO.output (, GPIO. LOW ili GPIO. HIGH) Zapišite nisko ili visoko na pin.
  • GPIO.setup (,) Definirajte PIN kao ulazni ili izlazni, ili padajući ili povučeni

Dalje imamo threading.

Jedine naredbe koje koristimo su:

  • Nit (cilj =)
  • .početak()

Pomoću niti možemo istodobno pokrenuti više instanci koda. Na taj način možemo mjeriti udaljenost i istovremeno slušati pristigle poruke na utičnici.

Prva naredba Thread (target =) stvorit će klasu Thread, koja će nakon početka korištenja 'start ()' pokrenuti funkciju u ključnoj riječi 'target', koja je dana pri stvaranju klase.

Zatim imamo biblioteku senzora boje, koja je sasvim ravna. Neću objašnjavati ovu knjižnicu, jer su metode vrlo jasne i objašnjene u kodu.

Na kraju imamo mrežne poveznice. To nam omogućuje dohvaćanje IP adrese koju koristimo za bežičnu i žičanu vezu.

Posljednji put sam i sam napravio tečajeve za senzor udaljenosti, LED i LCD.

Neću objašnjavati kako to funkcionira.

Korak 9: Korak 9: Stvaranje slučaja

Korak 9: Stvaranje kućišta
Korak 9: Stvaranje kućišta
Korak 9: Stvaranje kućišta
Korak 9: Stvaranje kućišta
Korak 9: Stvaranje kućišta
Korak 9: Stvaranje kućišta

Za ovaj projekt stvorio sam drvenu kutiju.

Drvo je lagano, tanko i ne košta puno.

Kao dimenzije koje sam koristio:

  • Visina: 5 cm
  • Širina: 10,5 cm
  • Duljina: 12,5 cm

Za senzore morate dodati 2 rupe i postaviti ih jednu pored druge.

Nakon izrade kućišta, instalirajte senzore, LED i LCD.

Korak 10: Završni koraci

Sve je u osnovi napravljeno.

Sada se samo moramo pobrinuti da se naš kôd pokrene, onog trenutka kada uključimo izvor napajanja.

Postoji mnogo metoda za to.

> Primjeri

Koristit ćemo prvu metodu:

Izvršite ovaj redak: 'sudo nano /etc/rc.local'

Dodajte svoju naredbu za pokretanje koda: 'sudo python3'

Spremite datoteku pomoću Ctrl-X.

Ako imate problema s uređivanjem. Ponovite ovaj korak, ali prvo izvedite 'sudo -i'.

Preporučeni: