Përmbajtje:

Zgjedhës ngjyrash: 10 hapa
Zgjedhës ngjyrash: 10 hapa

Video: Zgjedhës ngjyrash: 10 hapa

Video: Zgjedhës ngjyrash: 10 hapa
Video: HAPA DOLLAPA - Kukulla per femije, by Studio "Çamarroket" 2024, Nëntor
Anonim
Zgjedhës ngjyrash
Zgjedhës ngjyrash

Qëllimi i këtij projekti është matja e ngjyrave dhe përkthimi i tyre në sisteme të tjera ngjyrash. Duke përdorur vetëm vlerat RGB të dhëna nga sensori, mund të përktheni në HSL, CYMK, HEX dhe gjithashtu kodin më të afërt RAL (standardi i përdorur për bojë). Ky projekt kërkon një njohuri bazë të Python, MySQL, Linux dhe Javascript.

Nëse jeni të njohur edhe me kuadrin Flask dhe SocketIO, atëherë kodi për këtë projekt duhet të jetë i lehtë për tu kuptuar për ju.

Ky projekt mund të përdoret nga piktorë, stilistë të brendshëm ose thjesht nga kushdo që ka nevojë të masë ngjyrat.

Ky projekt nuk është aq i shtrenjtë dhe kushton rreth _ euro, transporti nuk përfshihet.

Furnizimet

Ne mund ta ndajmë këtë pjesë në dy pjesë:

  • Hardware
  • Softuer

Hardware

Ne përdorim përbërësit e mëposhtëm

  • HC04: Sensori i distancës, sa larg jemi duke matur nga objekti
  • Ekran LCD 2x16
  • Moduli LCD I2C (HW061)
  • Moduli i sensorit të ngjyrave TCS34725 (Adafruit)
  • LED i bardhë
  • Raspberry Pi 3 (Çdo Raspberry Pi duhet të funksionojë)
  • Rezistencë 5x 1k Ohm
  • Rezistencë 1x 220 ose 330 Ohm
  • Kartë SD 16 GB (14.4 GB)

Softuer

  • Python IDE, si Visual Code ose Pycharm (Pycharm përdoret këtu)
  • MySQL Workbench
  • Stuko (Shkarko Stuko)
  • Rufus ose ndonjë shkrimtar tjetër i kartave SD (Shkarkoni Rufus)

Çmimi

Ky projekt është mjaft i lirë, nëse tashmë keni një Rapsberry Pi.

  • HC04: Duke filluar rreth 2.5 euro (Kinë) dhe deri në 6 euro për më shumë dyqane lokale.
  • LCD: Rreth 6-8 euro.
  • Moduli I2C: Si i lirë nën 1 € (Kinë), por deri në 4 € për më shumë dyqane lokale.
  • TCS34725: Rreth 9-12 euro. Pjesa më e shtrenjtë (pa përfshirë RPi)
  • E bardhë e bardhë: Blerë me shumicë, 20 LEDS aq të ulëta sa 1 €
  • Raspberry Pi: Varësisht nga cili version, rreth 40 euro
  • Rezistentët: 0.10 € për një rezistencë
  • Kartë SD: rreth 8 €

Përshtatësi i energjisë për Raspberry Pi përjashtohet në koston e çmimit, pasi ky përshtatës është mjaft i zakonshëm.

Gama e përgjithshme e çmimeve: rreth 70 €, nëse përfshini Raspberry Pi dhe kutinë për projektin.

Për të ndërtuar kasën, kam përdorur dru të hollë të lehtë. Unë e riciklova këtë dru nga mobiljet. Materiali për rastin varet nga ju.

Hapi 1: Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet

Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet
Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet
Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet
Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet
Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet
Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet
Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet
Hapi 1: Instalimi i RPi OS, Konfigurimi i SSH dhe Qasja në Internet

Hapi 1.1: Instalimi i figurës

Shkarkoni imazhin nga faqja zyrtare e Raspberry Pi. Nuk ka shumë rëndësi se çfarë imazhi instaloni. Për këtë projekt, një GUI nuk është i nevojshëm, pasi ne do të lidhemi vetëm duke përdorur SSH.

Shkruani imazhin në kartën SD (të zbrazët) (Të gjithë skedarët në kartë do të fshihen).

Për të shkruar gjithçka në kartën SD, ne do të përdorim një mjet të quajtur 'Rufus'. Pas shkarkimit të figurës, hapni Rufus dhe zgjidhni skedarin e figurës. Zgjidhni diskun e synuar dhe shkruani imazhin në disk. Kjo mund të zgjasë pak.

> Rufus

Hapi 1.2: Instalimi i SSH

Hapi tjetër është krijimi i një lidhjeje me kartën SD. Për ta bërë këtë, ne duhet të aktivizojmë SSH.

Për ta bërë këtë pa përdorur një monitor, hapni eksploruesin e skedarëve tuaj dhe hapni ndarjen e nisjes së kartës SD. Krijoni një skedar bosh të quajtur "ssh", pa zgjerim skedari.

Gjithashtu, hapni "cmdline.txt"

Shtoni "169.254.10.1" në fund të skedarit dhe ruani atë.

Çmontoni kartën SD dhe futeni në Raspberry Pi.

Tani mund ta lidhim Raspberry Pi me një burim energjie dhe të fillojmë dhe lidhemi duke përdorur SSH.

Për t'u lidhur duke përdorur SSH, ne përdorim programin "Putty". Lidhni RPi dhe PC tuaj duke përdorur një kabllo ehternet para se ta bëni këtë. Hapni Stuko dhe shkoni te skeda SSH dhe plotësoni këtë IP: 169.254.10.1. Klikoni 'lidh' dhe do të lidheni.

> Stuko

Hyrja e paracaktuar e përdorur nga Raspberry Pi është 'pi' si emër përdoruesi dhe 'mjedër' për fjalëkalimin.

Hapi 1.3: Lidhje pa tel

Raspberry Pi juaj tani është aktivizuar.

Ne gjithashtu duam të lidhemi me RPi duke përdorur Wifi, në atë mënyrë nuk kemi më nevojë për një kabllo ethernet.

Ekzekutoni rreshtin e mëposhtëm:

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

Kjo do të hapë redaktuesin e tekstit 'nano' me të drejta të larta.

Shtoni rreshtat e mëposhtëm në skedar:

rrjet = {

ssid = "SSID"

psk = "Fjalëkalimi"

}

Zëvendësoni "SSID" me SSID të rrjetit tuaj Wifi

Zëvendësoni "Fjalëkalimin" me fjalëkalimin tuaj.

Pastaj bëni Ctrl+X dhe zgjidhni opsionin 'po'. Tani skedari do të ruhet.

Tani duhet të rinisim shërbimin e rrjetit

Ekzekutoni komandat e mëposhtme:

  • 'sudo -i'
  • 'sudo systemctl rinis rrjetin'

Ju mund të provoni lidhjen tuaj në internet duke përdorur komandën wget.

Shembull: 'wget google.com'

> Komanda Wget

Hapi 2: Hapi 2: Instalimi i Softuerit në RPi

Për këtë projekt ne duhet të instalojmë disa biblioteka.

  • Mariadb: Baza e të dhënave MySQL (sudo apt-get install mariadb-server)
  • Biblioteka Adafruit për sensorin e ngjyrave: Matja e ngjyrave (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', zgjidhni apache webserver)

Gjithashtu instaloni bibliotekat e mëposhtme pip:

  • balona_socketio
  • balonë
  • balona_cors
  • bordi
  • autobus
  • netifaces

Hapi 3: Hapi 3: Lidhja me bazën e të dhënave MySQL, Krijimi i bazës së të dhënave

Hapi 3: Lidhja me bazën e të dhënave MySQL, krijimi i bazës së të dhënave
Hapi 3: Lidhja me bazën e të dhënave MySQL, krijimi i bazës së të dhënave
Hapi 3: Lidhja me bazën e të dhënave MySQL, krijimi i bazës së të dhënave
Hapi 3: Lidhja me bazën e të dhënave MySQL, krijimi i bazës së të dhënave
Hapi 3: Lidhja me bazën e të dhënave MySQL, krijimi i bazës së të dhënave
Hapi 3: Lidhja me bazën e të dhënave MySQL, krijimi i bazës së të dhënave

Hapi tjetër, është lidhja me bazën e të dhënave MySQL duke përdorur tryezën e punës MySQL.

> IP a

Ekzekutoni komandën 'ip a', siç tregohet në imazhin e mësipërm (Klikoni lidhjen)

Në shumicën e situatave, do të shfaqen 3 hyrje. Ne kemi nevojë për hyrjen 'wlan0'. Kopjoni IP -në pranë 'inet', ose në këtë shembull '192.168.1.44'

. >> Krijo lidhje të re

Siç tregohet në imazhin e mësipërm, krijoni një lidhje të re me parametrat e mëposhtëm (Imazhi më poshtë për parametrat)

> Parametrat e lidhjes

Klikoni dy herë lidhësin e krijuar rishtazi për t'u lidhur.

Nëse shfaqet një kërkesë, klikoni 'Po'.

Kjo është ende një bazë e të dhënave boshe, kështu që le të shtojmë disa tabela.

Së pari krijoni një skemë, për ta bërë këtë, në anën e majtë 'klikoni me të djathtën' dhe zgjidhni 'krijoni skemë'.

Jepni skemës një emër dhe konfirmoni.

Tani duhet të shtojmë tabela. Zgjero skemën dhe "kliko me të djathtën", "tabelat".

Krijoni skemat e mëposhtme:

> Tabela 1: Ngjyrat RAL

> Tabela 2: Llojet e sensorëve

> Tabela 3: Matjet (Në figurë përdoret 'metingen', holandisht për matjet)

> Tabela 4: Të dhënat e faqes në internet || Tabela 4 në fund

MySQL është një sistem i bazës së të dhënave relacionale, që do të thotë se ne mund të krijojmë marrëdhënie midis tabelave.

Marrëdhënia e parë që duhet të krijojmë është midis 'tipit të sensorit' dhe 'matjeve'.

Siç tregohet në figurë, lidhni dy çelësat.

> Redakto një tabelë dhe çelësat e lidhjes

Mos harroni të ruani ndryshimet duke klikuar "Apliko" në këndin e poshtëm.

Ndryshoni gjithashtu tabelën 'website_data' dhe lidhjen 'MetingID'.

Tani kemi mbaruar me krijimin e tabelave dhe krijimin e marrëdhënieve.

Shtimi i të dhënave:

Tabela RALcolors është një tabelë fikse, ku vlerat nuk do të ndryshojnë kurrë. Ne mund t'i shtojmë këto vlera

shumë lehtë.

> Shkarkoni skedarin Excel

Shkarkoni skedarin excel më lart dhe zgjidhni të gjitha të dhënat dhe 'kopjoni'. Bëni si në imazh

> Trego tabelën

'kliko me të djathtën' në tabelë dhe zgjidh 'Ngjit rreshtat'. 'kliko' 'apliko' në këndin e poshtëm për të shtuar të dhënat.

Tani të gjitha RALcolors ruhen në bazën e të dhënave.

Ne vetëm duhet të shtojmë llojin sensor_ në bazën e të dhënave tani.

> Të dhënat e sensorit

Shënim: Përshkrimi i sensorit është në 'holandisht'

Hapi 4: Hapi 4: Filezilla

Hapi 4: Filezilla
Hapi 4: Filezilla

Për t'u lidhur lehtë me Raspberry Pi dhe transferuar skedarë, mund të përdorim Filezilla.

> Shkarko Filezilla

Shkruani në detajet e lidhjes dhe lidheni. Në anën e djathtë tani mund të transferoni skedarë duke i tërhequr ato brenda.

> Burimi Github

Shkarkoni skedarët nga burimi i github më lart.

Hapi 5: Hapi 5: Krijimi i Uebfaqes

Hapi 5: Krijimi i Uebfaqes
Hapi 5: Krijimi i Uebfaqes
Hapi 5: Krijimi i Uebfaqes
Hapi 5: Krijimi i Uebfaqes

Për pritjen e faqes në internet, ne përdorim PHPmyAdmin dhe Apache2.

Serveri i uebit në Raspberry Pi përdor drejtorinë '/var/www/html' si rrënjë.

Nëse vendosni skedarët tuaj atje, ato do të strehohen në IP -në e Raspberry Pi. (IP = shiko 'ip a')

Ju mund të shkarkoni skedarët e kërkuar nga repoja ime e github (hapi i mëparshëm)

Në '/var/www/html/', ngjitni të gjithë skedarët nga dosja 'Frontend'.

>/var/www/html/

Hapi 6: Hapi 6: Krijimi i Backend (Flask)

Seksioni i faqes në internet bazohet në Flask.

Të gjithë skedarët mund të gjenden në repo github.

Kopjoni të gjithë skedarët në çdo drejtori në Raspberry Pi.

Për shembull '/home/pi/colorpicker.

Për të krijuar një drejtori, lundroni te drejtoria e destinacionit duke përdorur 'cd' dhe më pas ekzekutoni 'mkdir'.

Kjo është e gjitha për tani. Kodi do të shpjegohet në hapat e ardhshëm.

Hapi 7: Hapi 7: Hardware

> Skema e shkarkimit

Krijoni skemën siç tregohet në dokumentin e mësipërm.

SH NOTNIM: Shtoni gjithashtu një LED të bardhë, me një rezistencë (220 ose 330 Ohms).

Shpjegimi i harduerit

HC04

Sensori HC04 lëshon valë, të cilat reflektojnë dhe merren përsëri nga sensori.

Duke llogaritur deltën e kohës midis emetimit dhe marrjes, ne mund të llogarisim distancën.

Distanca = ((Timestamp_recieve - Timestamp_emit) / shpejtësia e zërit) / 2

Ne e ndajmë me dy sepse vala reflekton, që do të thotë se udhëton distancën dy herë.

LCD

Ne përdorim një ekran LCD për të treguar RGB dhe HEX, si IP kur programi fillon.

Për këtë LCD, bleva një modul I2C. Na duhen vetëm 4 tela tani. SDA, SCL, GND, VCC

Për të përdorur këtë LCD, kam shkruar një klasë Python, për ta bërë më të lehtë përdorimin.

TCS34725

Ky sensor ju lejon të matni ngjyrat. Ne përdorim një bibliotekë për të matur vlerën e RGB.

Hapi 8: Hapi 8: Kodi i Shpjeguar

Hapi 8: Kodi i Shpjeguar
Hapi 8: Kodi i Shpjeguar
Hapi 8: Kodi i Shpjeguar
Hapi 8: Kodi i Shpjeguar
Hapi 8: Kodi i Shpjeguar
Hapi 8: Kodi i Shpjeguar
Hapi 8: Kodi i Shpjeguar
Hapi 8: Kodi i Shpjeguar

Pjesa e përparme

Pjesa e përparme ekziston nga tre pjesë kryesore.

Së pari janë skedarët html, të cilët ndërtojnë strukturën e faqes sonë të internetit, por nuk përmbajnë ose paraqitje minimale.

Së dyti kemi skedarët css, ose skedarët e stilit, të cilët stilojnë dhe paraqesin faqen tonë të internetit.

Të dyja janë mjaft të lehta për t'u lexuar dhe kuptuar, kjo është arsyeja pse unë nuk do t'i shpjegoj ato.

Së fundmi kemi Javascript, me dy biblioteka.

Dy bibliotekat e përdorura janë SocketIO dhe URLSearchParams.

SocketIO ju lejon të dërgoni mesazhe nga pjesa e pasme në pjesën e përparme, dhe anasjelltas.

Mesazhet mund t'i dërgohen një klienti, por edhe klientëve të shumtë (Transmetim)

> Socket IO Javascript

> Socket IO Python

Në imazhet e mësipërme, mund të shihni një nga lidhjet Socket të bëra në këtë projekt.

Komanda për të dërguar mesazhe është 'emit', marrja bëhet me 'on'.

URLSearchParms ju lejojnë të merrni me lehtësi vlerat nga një querystring.

Shembull querystring: example.com/index.html?id=1

URLSearchParams do t'ju kthejë: {'id' = '1'}

> URLSearchParams Shembull

Sfondi

Pjesa e pasme është shkruar plotësisht në Python, me një mori bibliotekash.

Biblioteka e parë që importojmë është 'Flask'. Kjo bibliotekë është e nevojshme për të krijuar një API, për të bërë të gjitha veprimet CRUD për bazën e të dhënave MySQL. CRUD qëndron për Krijo Përditësimin Lexo Fshirjen.

> Shishe

Imazhi i mësipërm tregon disa 'rrugë' të Flaskës. Duke lundruar në një rrugë, ju automatikisht do të bëni një metodë 'GET', kodi do të ekzekutohet dhe ju do të merrni vlerën nga metoda e kthimit. Ka edhe metoda të tjera, si 'POST' dhe 'DELETE'. Për të testuar metoda të tilla, do t'ju duhet një program si Postieri.

Biblioteka tjetër e importit është SocketIO, të cilën e shpjegova tashmë në pjesën e përparme.

Tjetra është GPIO.

Kjo ju lejon të kontrolloni kunjat GPIO të Rapsberry Pi.

Komandat më të rëndësishme janë:

  • GPIO.setmode (GPIO. BCM) Zgjidhni konfigurimin e kunjave.
  • GPIO.output (, GPIO. LOW ose GPIO. HIGH) Shkruani një LOW ose HIGH në një kunj.
  • GPIO.setup (,) Përcaktoni një PIN si hyrje ose dalje, ose tërheqje ose tërheqje

Tjetra kemi filetim.

Komandat e vetme që përdorim janë:

  • Fije (target =)
  • .fillo ()

Duke përdorur fijet, ne mund të ekzekutojmë raste të shumta të kodit në të njëjtën kohë. Në këtë mënyrë ne mund të matim distancën dhe në të njëjtën kohë, të dëgjojmë mesazhet hyrëse të prizës io.

Komanda e parë Thread (target =) do të krijojë një klasë Thread, e cila me fillimin e përdorimit të 'start ()', do të ekzekutojë funksionin në fjalën kyçe 'target', e cila u dha në krijimin e klasës.

Tjetra kemi bibliotekën e sensorit të ngjyrave, e cila është mjaft e drejtë përpara. Unë nuk do ta shpjegoj këtë bibliotekë, sepse metodat janë shumë të qarta dhe të shpjeguara në kod.

Së fundmi kemi netifaces. Kjo na lejon të marrim adresën IP që përdorim për lidhjen Wireless dhe Wired.

Së fundmi kam bërë disa klasa vetë për sensorin e distancës, LED dhe LCD.

Unë nuk do të shpjegoj se si funksionojnë ato.

Hapi 9: Hapi 9: Krijimi i një rasti

Hapi 9: Krijimi i një rasti
Hapi 9: Krijimi i një rasti
Hapi 9: Krijimi i një rasti
Hapi 9: Krijimi i një rasti
Hapi 9: Krijimi i një rasti
Hapi 9: Krijimi i një rasti

Për këtë projekt, krijova një kasë druri.

Druri është i lehtë, i hollë dhe nuk kushton shumë.

Si dimensione që kam përdorur:

  • Lartësia: 5 cm
  • Gjerësia: 10.5 cm
  • Gjatësia: 12.5 cm

Për sensorët, duhet të shtoni 2 vrima dhe t'i vendosni pranë njëri -tjetrit.

Pas krijimit të kasës, instaloni sensorët, LED dhe LCD.

Hapi 10: Hapat e fundit

Gjithçka është bërë në mënyrë themelore.

Tani ne vetëm duhet të sigurohemi që kodi ynë të fillojë, në momentin që lidhim burimin tonë të energjisë.

Ka shumë metoda për ta bërë këtë.

> Shembuj

Ne do të përdorim metodën e parë:

Ekzekutoni këtë linjë: 'sudo nano /etc/rc.local'

Shtoni komandën tuaj për të ekzekutuar kodin: 'sudo python3'

Ruani skedarin duke përdorur Ctrl-X.

Nëse keni probleme me redaktimin. Përsëriteni këtë hap, por së pari ekzekutoni 'sudo -i'.

Recommended: