Sisukord:

ColorPicker: 10 sammu
ColorPicker: 10 sammu

Video: ColorPicker: 10 sammu

Video: ColorPicker: 10 sammu
Video: Лучшие ПРОГРАММЫ по ОФОРМЛЕНИЮ Windows 2024, November
Anonim
Värvivalija
Värvivalija

Selle projekti eesmärk on mõõta värve ja teisendada need teistesse värvisüsteemidesse. Kasutades ainult anduri antud RGB väärtusi, saate tõlkida HSL, CYMK, HEX ja lähima RAL -koodi (värvimisel kasutatav standard). See projekt nõuab põhiteadmisi Pythoni, MySQL, Linuxi ja Javascripti kohta.

Kui olete kursis ka Flaski raamistiku ja SocketIO -ga, peaks selle projekti kood olema teile hõlpsasti arusaadav.

Seda projekti saavad kasutada maalrid, sisekujundajad või lihtsalt kõik, kellel on vaja värve mõõta.

See projekt ei ole nii kallis ja maksab hinnanguliselt _ eurot, saatekulu ei sisalda.

Tarvikud

Selle jaotise saame jagada kaheks osaks:

  • Riistvara
  • Tarkvara

Riistvara

Kasutame järgmisi komponente

  • HC04: Kaugusandur, kui kaugel me objektist mõõdame
  • LCD ekraan 2x16
  • LCD I2C moodul (HW061)
  • TCS34725 värvianduri moodul (Adafruit)
  • Valge LED
  • Raspberry Pi 3 (mis tahes Raspberry Pi peaks töötama)
  • 5x 1k oomi takisti
  • 1x 220 või 330 oomi takisti
  • SD -kaart 16 GB (14,4 GB)

Tarkvara

  • Python IDE, nagu Visual Code või Pycharm (siin kasutatakse Pycharmi)
  • MySQL töölaud
  • Putty (allalaadimine Putty)
  • Rufus või mõni muu SD -kaardi kirjutaja (Lae alla Rufus)

Hinnakujundus

See projekt on üsna odav, kui teil on juba Rapsberry Pi.

  • HC04: alates umbes 2,5 eurost (Hiina) ja kuni 6 euroni kohalike kaupluste jaoks.
  • LCD: Umbes 6-8 eurot.
  • I2C moodul: odavalt alla 1 euro (Hiina), kuid kohalike poodide puhul kuni 4 eurot.
  • TCS34725: umbes 9-12 eurot. Kõige kallim osa (välja arvatud RPi)
  • Valge LED: ostetud hulgi, 20 LED -i hinnaga kuni 1 €
  • Vaarika Pi: Sõltuvalt sellest, milline versioon, umbes 40 eurot
  • Takistid: 0,10 € ühe takisti eest
  • SD -kaart: umbes 8 eurot

Raspberry Pi toiteadapter ei kuulu hinna sisse, kuna see adapter on üsna tavaline.

Üldine hinnavahemik: umbes 70 eurot, kui lisate projekti Raspberry Pi ja ümbrise.

Korpuse ehitamiseks kasutasin kerget õhukest puitu. Taaskasutasin selle puidu mööblist. Materjal juhtumi jaoks on teie otsustada.

1. samm: 1. samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine

Samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine
Samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine
Samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine
Samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine
Samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine
Samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine
Samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine
Samm: RPi OS -i installimine, SSH ja Interneti -ühenduse seadistamine

Samm 1.1: Pildi installimine

Laadige pilt alla Raspberry Pi ametlikult saidilt. See pole tegelikult oluline, millise pildi installite. Selle projekti jaoks pole GUI -d vaja, kuna ühendame ainult SSH -ga.

Kirjutage pilt (tühjale) SD -kaardile (kõik kaardil olevad failid kustutatakse).

Kõigi SD -kaardile kirjutamiseks kasutame tööriista nimega "Rufus". Pärast pildi allalaadimist avage Rufus ja valige pildifail. Valige sihtketas ja kirjutage pilt draivi. See võib võtta aega.

> Rufus

Samm 1.2: SSH installimine

Järgmine samm on ühenduse loomine SD -kaardiga. Selleks peame lubama SSH.

Selleks, ilma monitorita, avage oma failiuurija ja avage SD -kaardi alglaadimissektsioon. Looge tühi fail nimega "ssh", ilma faililaiendita.

Avage ka "cmdline.txt"

Lisage faili lõppu "169.254.10.1" ja salvestage see.

Lahutage SD -kaart ja sisestage see Raspberry Pi -sse.

Nüüd saame Raspberry Pi ühendada toiteallikaga ning käivitada ja ühendada SSH abil.

SSH abil ühenduse loomiseks kasutame programmi "Putty". Enne seda ühendage oma RPi ja arvuti ehternet -kaabli abil. Avage Putty ja minge vahekaardile SSH ning sisestage see IP: 169.254.10.1. Klõpsake nuppu "Ühenda" ja teid ühendatakse.

> Pahtel

Raspberry Pi vaikimisi kasutatav sisselogimisnimi on kasutajanimena „pi” ja parooli jaoks „vaarikas”.

Samm 1.3: traadita ühendus

Teie Raspberry Pi on nüüd sisse lülitatud.

Samuti tahame RPi -ga ühenduse luua Wifi abil, nii et me ei vaja enam Etherneti kaablit.

Täitke järgmine rida:

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

See avab laiendatud õigustega tekstiredaktori "nano".

Lisage faili järgmised read:

võrk = {

ssid = "SSID"

psk = "Parool"

}

Asendage "SSID" oma WiFi -võrgu SSID -ga

Asendage "Parool" oma parooliga.

Seejärel tehke Ctrl+X ja valige suvand „jah”. Fail salvestatakse nüüd.

Nüüd peame võrguteenuse taaskäivitama

Täitke järgmised käsud:

  • 'sudo -i'
  • "sudo systemctl taaskäivitage võrk"

Saate oma Interneti -ühendust testida, kasutades käsku wget.

Näide: 'wget google.com'

> Wget käsk

2. samm: 2. samm: tarkvara installimine RPi -le

Selle projekti jaoks peame installima mõned teegid.

  • Mariadb: MySQL andmebaas (sudo apt-get install mariadb-server)
  • Adafruit raamatukogu värvisensorile: värvide mõõtmine (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', valige apache veebiserver)

Installige ka järgmised pip -teegid:

  • flask_socketio
  • kolb
  • flask_cors
  • pardal
  • busio
  • netiface

3. samm: 3. samm: ühenduse loomine MySQL -i andmebaasiga, andmebaasi loomine

3. samm: MySQL -i andmebaasiga ühenduse loomine, andmebaasi loomine
3. samm: MySQL -i andmebaasiga ühenduse loomine, andmebaasi loomine
3. samm: MySQL -i andmebaasiga ühenduse loomine, andmebaasi loomine
3. samm: MySQL -i andmebaasiga ühenduse loomine, andmebaasi loomine
3. samm: MySQL -i andmebaasiga ühenduse loomine, andmebaasi loomine
3. samm: MySQL -i andmebaasiga ühenduse loomine, andmebaasi loomine

Järgmine samm on luua ühendus MySQL andmebaasiga MySQL töölaua abil.

> IP a

Täitke käsk "ip a", nagu on näidatud ülaltoodud pildil (klõpsake linki)

Enamikul juhtudel kuvatakse 3 kirjet. Vajame kirjet „wlan0”. Kopeerige IP aadressi „inet” või selles näites „192.168.1.44” kõrval

. >> Loo uus ühendus

Nagu ülaltoodud pildil näidatud, looge uus ühendus järgmiste parameetritega (allpool olev pilt parameetrite jaoks)

> Ühenduse parameetrid

Ühendamiseks topeltklõpsake äsja loodud ühendust.

Kui kuvatakse viip, klõpsake "Jah".

See on endiselt tühi andmebaas, seega lisame mõned tabelid.

Esmalt looge skeem, selleks tehke vasakpoolsel paremklõps ja valige „Loo skeem”.

Andke skeemile nimi ja kinnitage.

Nüüd peame lisama tabelid. Laiendage skeemi ja paremklõpsake tabeleid.

Looge järgmised skeemid:

> Tabel 1: RALvärvid

> Tabel 2: Andurite tüübid

> Tabel 3: Mõõtmised (pildil kasutatakse "metingen", mõõtmiseks hollandi keeles)

> Tabel 4: Veebisaidi_andmed || Tabel 4 all

MySQL on relatsiooniline andmebaasisüsteem, mis tähendab, et saame tabelite vahel suhteid luua.

Esimene seos, mille peame looma, on 'sensor_type' ja 'mõõtmised'.

Nagu pildil näidatud, ühendage kaks klahvi.

> Muutke tabelit ja linki

Ärge unustage muudatusi salvestada, klõpsates alumises nurgas nuppu Rakenda.

Muutke ka tabelit „website_data” ja linkige „MetingID”.

Nüüd oleme tabelite loomise ja seoste loomisega valmis.

Andmete lisamine:

Tabel RALcolors on fikseeritud tabel, kus väärtused ei muutu kunagi. Saame need väärtused lisada

väga lihtsalt.

> Laadige alla Exceli fail

Laadige alla ülaltoodud Exceli fail ja valige kõik andmed ning kopeerige. Tehke nagu pildil

> Näita tabelit

'paremklõpsake' tabelil ja valige 'Kleebi read'. Andmete lisamiseks klõpsake alumises nurgas nuppu „Rakenda”.

Nüüd salvestatakse kõik RALvärvid andmebaasi.

Meil on vaja andmebaasi lisada ainult sensor_type.

> Sensortüübi andmed

Märkus: Anduri kirjeldus on hollandi keeles

4. samm: 4. samm: Filezilla

Samm: Filezilla
Samm: Filezilla

Raspberry Pi -ga hõlpsaks ühendamiseks ja failide edastamiseks saame kasutada Filezilla.

> Laadige alla Filezilla

Sisestage ühenduse üksikasjad ja ühendage. Nüüd saate paremal küljel faile teisaldada, lohistades need sisse.

> Githubi allikas

Laadige failid alla ülaltoodud githubi allikast.

5. samm: 5. samm: veebisaidi loomine

Samm: veebisaidi loomine
Samm: veebisaidi loomine
Samm: veebisaidi loomine
Samm: veebisaidi loomine

Veebisaidi hostimiseks kasutame PHPmyAdmin ja Apache2.

Raspberry Pi veebiserver kasutab juurina kataloogi '/var/www/html'.

Kui paigutate oma failid sinna, hostitakse neid Raspberry Pi IP -l. (IP = vt 'ip')

Vajalikud failid saate alla laadida minu githubi repost (eelmine samm)

Kleepige kausta '/var/www/html/' kõik failid kaustast Frontend.

>/var/www/html/

6. samm: 6. samm: taustaprogrammi loomine (kolb)

Veebisaidi taustaprogramm põhineb Flaskil.

Kõik failid leiate githubi repost.

Kopeerige kõik failid Raspberry Pi mis tahes kataloogi.

Näiteks '/home/pi/colorpicker.

Kataloogi loomiseks liikuge 'cd' abil sihtkataloogi ja käivitage 'mkdir'.

Praeguseks kõik. Koodi selgitatakse järgmistes sammudes.

Samm 7: samm 7: riistvara

> Allalaadimisskeem

Looge skeem, nagu ülaltoodud dokumendis näidatud.

MÄRKUS. Lisage ka üks valge LED koos ühe takistiga (220 või 330 oomi).

Riistvara selgitamine

HC04

HC04 andur kiirgab laineid, mis peegelduvad ja andur võtab need uuesti vastu.

Väljastamise ja vastuvõtmise vahelise aja delta arvutamisel saame arvutada kauguse.

Kaugus = ((Timestamp_recieve - Timestamp_emit) / helikiirus) / 2

Jagame kahega, sest laine peegeldab, st läbib vahemaa kaks korda.

LCD

RGB ja HEX kuvamiseks kasutame LCD -ekraani, samuti programmi käivitamisel IP -d.

Selle LCD jaoks ostsin I2C mooduli. Nüüd vajame ainult 4 juhet. SDA, SCL, GND, VCC

Selle LCD kasutamiseks kirjutasin Pythoni klassi, et seda oleks lihtsam kasutada.

TCS34725

See andur võimaldab teil värve mõõta. RGB väärtuse mõõtmiseks kasutame raamatukogu.

8. samm: 8. samm: selgitatud kood

8. etapp: selgitatud kood
8. etapp: selgitatud kood
8. etapp: selgitatud kood
8. etapp: selgitatud kood
8. etapp: selgitatud kood
8. etapp: selgitatud kood
8. etapp: selgitatud kood
8. etapp: selgitatud kood

Esikülg

Kasutajaliides koosneb kolmest põhiosast.

Esiteks on html -failid, mis moodustavad meie veebisaidi struktuuri, kuid ei sisalda või on minimaalse paigutusega.

Teiseks on meil css -failid või stiilifailid, mis on meie veebisaidi stiili ja paigutuse järgi.

Neid kahte on üsna lihtne lugeda ja mõista, mistõttu ma ei hakka neid selgitama.

Viimati on meil Javascript kahe raamatukoguga.

Kaks kasutatavat raamatukogu on SocketIO ja URLSearchParams.

SocketIO võimaldab teil saata sõnumeid taustaprogrammist kasutajaliidesesse ja vastupidi.

Sõnumeid saab saata ühele kliendile, aga ka mitmele kliendile (ringhääling)

> Pistikupesa IO Javascript

> Pesa IO Python

Ülaltoodud piltidel näete ühte selles projektis tehtud pistikupesaühendustest.

Sõnumite saatmise käsk on 'emit', vastuvõtmine toimub 'on' abil.

URLSearchParms võimaldab teil päringustringilt hõlpsalt väärtusi saada.

Päringstringi näide: example.com/index.html?id=1

URLSearchParams annab teile tagasi: {'id' = '1'}

> URLSearchParams näide

Taustaprogramm

Taustprogramm on täielikult kirjutatud Pythonis, koos hulga raamatukogudega.

Esimene raamatukogu, mille impordime, on „kolb”. Seda teeki on vaja API loomiseks ja kõigi MySQL andmebaasi CRUD -toimingute tegemiseks. CRUD tähistab Create Read Update Delete.

> Kolb

Ülaltoodud pilt näitab mõnda kolvi "marsruuti". Marsruudil surfates teete automaatselt 'GET' meetodi, kood käivitub ja saate väärtuse tagastamismeetodilt. On ka teisi meetodeid, näiteks POST ja DELETE. Selliste meetodite testimiseks vajate sellist programmi nagu Postman.

Järgmine imporditeek on SocketIO, mida selgitasin juba esiosas.

Järgmine on GPIO.

See võimaldab teil juhtida Rapsberry Pi GPIO nööpnõelu.

Kõige olulisemad käsud on järgmised:

  • GPIO.setmode (GPIO. BCM) Valige tihvtide konfiguratsioon.
  • GPIO.väljund (, GPIO. LOW või GPIO. HIGH) Kirjutage tihvtile LOW või HIGH.
  • GPIO.setup (,) Määrake PIN -kood sisendiks või väljundiks või allalaadimiseks või allalaadimiseks

Järgmisena on meil lõime.

Ainsad käsud, mida kasutame, on järgmised:

  • Teema (sihtmärk =)
  • .start ()

Lõimede abil saame korraga käivitada mitu koodi eksemplari. Nii saame mõõta kaugust ja samal ajal kuulata sissetulevaid pistikupesa io sõnumeid.

Esimene käsk Thread (target =) loob lõimeklassi, mille käivitamisel 'start ()' käivitab funktsiooni märksõnas 'target', mis anti klassi loomisel.

Järgmisena on meil värvianduri raamatukogu, mis on üsna sirgjooneline. Ma ei seleta seda raamatukogu, sest meetodid on koodis väga selged ja selgitatud.

Viimati on meil võrguvõrgud. See võimaldab meil hankida traadita ja traadiga ühenduse jaoks kasutatava IP -aadressi.

Viimati tegin ise mõned klassid kaugusanduri, LED -i ja LCD -ekraani jaoks.

Ma ei selgita, kuidas need toimivad.

9. samm: 9. samm: juhtumi loomine

9. samm: kohtuasja loomine
9. samm: kohtuasja loomine
9. samm: kohtuasja loomine
9. samm: kohtuasja loomine
9. samm: kohtuasja loomine
9. samm: kohtuasja loomine

Selle projekti jaoks lõin puidust korpuse.

Puit on kerge, õhuke ja ei maksa palju.

Mõõtmetena kasutasin:

  • Kõrgus: 5 cm
  • Laius: 10,5 cm
  • Pikkus: 12,5 cm

Andurite jaoks peate lisama 2 auku ja asetama need üksteise kõrvale.

Pärast korpuse loomist paigaldage andurid, LED ja LCD.

10. samm: viimased sammud

Kõik on põhimõtteliselt tehtud.

Nüüd peame vaid veenduma, et meie kood käivitub hetkel, mil ühendame oma toiteallika.

Selleks on palju meetodeid.

> Näited

Kasutame esimest meetodit:

Käivitage see rida: 'sudo nano /etc/rc.local'

Koodi käivitamiseks lisage oma käsk: 'sudo python3'

Salvestage fail klahvikombinatsiooni Ctrl-X abil.

Kui teil on redigeerimisega probleeme. Tehke seda sammu uuesti, kuid käivitage kõigepealt sudo -i.

Soovitan: