Sommario:

ColorPicker: 10 passaggi
ColorPicker: 10 passaggi

Video: ColorPicker: 10 passaggi

Video: ColorPicker: 10 passaggi
Video: Pickr - An Awesome Color Picker for your next Project! 2024, Novembre
Anonim
Color Picker
Color Picker

L'obiettivo di questo progetto è misurare i colori e tradurli in altri sistemi di colore. Utilizzando solo i valori RGB forniti dal sensore, è possibile tradurre in HSL, CYMK, HEX e anche il codice RAL più vicino (standard utilizzato per la vernice). Questo progetto richiede una conoscenza di base di Python, MySQL, Linux e Javascript.

Se hai anche familiarità con il framework Flask e SocketIO, il codice per questo progetto dovrebbe essere facile da capire per te.

Questo progetto può essere utilizzato da pittori, interior designer o semplicemente da chiunque abbia bisogno di misurare i colori.

Questo progetto non è così costoso e costa circa _ euro, spedizione esclusa.

Forniture

Possiamo dividere questa sezione in due parti:

  • Hardware
  • Software

Hardware

Usiamo i seguenti componenti

  • HC04: Sensore di distanza, a che distanza misuriamo dall'oggetto?
  • Display LCD 2x16
  • Modulo LCD I2C (HW061)
  • TCS34725 Modulo sensore colore (Adafruit)
  • LED bianco
  • Raspberry Pi 3 (qualsiasi Raspberry Pi dovrebbe funzionare)
  • Resistenza 5x 1k Ohm
  • 1x resistenza da 220 o 330 Ohm
  • Scheda SD 16 GB (14,4 GB)

Software

  • IDE Python, come Visual Code o Pycharm (Pycharm usato qui)
  • MySQL Workbench
  • Putty (Scarica Putty)
  • Rufus o qualsiasi altro scrittore di schede SD (Scarica Rufus)

Prezzi

Questo progetto è abbastanza economico, se hai già un Rapsberry Pi.

  • HC04: a partire da circa 2,5 euro (Cina) e fino a 6 euro per più negozi locali.
  • LCD: Circa 6-8 euro.
  • Modulo I2C: economico sotto 1€ (Cina), ma fino a 4€ per più negozi locali.
  • TCS34725: Circa 9-12 euro. Parte più costosa (escluso RPi)
  • LED bianco: acquistato in blocco, 20 LED a partire da € 1
  • Raspberry Pi: a seconda della versione, circa 40 euro
  • Resistori: €0,10 per un resistore
  • Scheda SD: circa € 8

L'adattatore di alimentazione per il Raspberry Pi è escluso dal prezzo di costo, poiché questo adattatore è abbastanza comune.

Fascia di prezzo complessiva: circa 70€, se si include il Raspberry Pi e la custodia per il progetto.

Per costruire la custodia, ho usato legno sottile e leggero. Ho riciclato questo legno dai mobili. Il materiale per il caso dipende da te.

Passaggio 1: Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet

Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet
Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet
Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet
Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet
Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet
Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet
Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet
Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet

Passaggio 1.1: installazione dell'immagine

Scarica l'immagine dal sito ufficiale del Raspberry Pi. Non importa quale immagine installi. Per questo progetto non è necessaria una GUI, poiché ci collegheremo solo tramite SSH.

Scrivi l'immagine sulla scheda SD (vuota) (tutti i file sulla scheda verranno cancellati).

Per scrivere tutto sulla scheda SD, utilizzeremo uno strumento chiamato "Rufus". Dopo aver scaricato l'immagine, apri Rufus e seleziona il file immagine. Seleziona l'unità di destinazione e scrivi l'immagine sull'unità. Questo può richiedere del tempo.

> Rufus

Passaggio 1.2: installazione di SSH

Il prossimo passo è creare una connessione alla scheda SD. Per farlo, dobbiamo abilitare SSH.

Per farlo senza utilizzare un monitor, apri il tuo file explorer e apri la partizione di avvio della scheda SD. Crea un file vuoto chiamato "ssh", senza estensione del file.

Inoltre, apri "cmdline.txt"

Aggiungi "169.254.10.1" alla fine del file e salvalo.

Smonta la scheda SD e inseriscila nel Raspberry Pi.

Ora possiamo collegare il Raspberry Pi a una fonte di alimentazione e avviarlo e connetterlo tramite SSH.

Per connetterci tramite SSH, utilizziamo il programma "Putty". Collega il tuo RPi e il PC usando un cavo ehternet prima di farlo. Apri Putty e vai alla scheda SSH e inserisci questo IP: 169.254.10.1. Fai clic su "Connetti" e sarai connesso.

> mastice

L'accesso predefinito utilizzato dal Raspberry Pi è "pi" come nome utente e "raspberry" come password.

Passaggio 1.3: connessione wireless

Il tuo Raspberry Pi è ora acceso.

Vogliamo anche connetterci all'RPi tramite Wi-Fi, in questo modo non abbiamo più bisogno di un cavo ethernet.

Eseguire la seguente riga:

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

Questo aprirà l'editor di testo "nano" con diritti elevati.

Aggiungi le seguenti righe nel file:

rete={

ssid="SSID"

psk="Password"

}

Sostituisci "SSID" con l'SSID della tua rete Wifi

Sostituisci "Password" con la tua password.

Quindi premi Ctrl+X e seleziona l'opzione 'sì'. Il file verrà ora salvato.

Ora dobbiamo riavviare il servizio di rete

Eseguire i seguenti comandi:

  • 'sudo-i'
  • 'sudo systemctl riavvia la rete'

Puoi testare la tua connessione Internet usando il comando wget.

Esempio: "wget google.com"

> Comando Wget

Passaggio 2: Passaggio 2: installazione del software su RPi

Per questo progetto abbiamo bisogno di installare alcune librerie.

  • Mariadb: database MySQL (sudo apt-get install mariadb-server)
  • Libreria Adafruit per il sensore di colore: misurazione dei colori (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', scegli il server web apache)

Installa anche le seguenti librerie pip:

  • flask_socketio
  • borraccia
  • flask_cors
  • tavola
  • affari
  • netifaces

Passaggio 3: Passaggio 3: connessione al database MySQL, creazione del database

Passaggio 3: connessione al database MySQL, creazione del database
Passaggio 3: connessione al database MySQL, creazione del database
Passaggio 3: connessione al database MySQL, creazione del database
Passaggio 3: connessione al database MySQL, creazione del database
Passaggio 3: connessione al database MySQL, creazione del database
Passaggio 3: connessione al database MySQL, creazione del database

Il passaggio successivo consiste nel connettersi al database MySQL utilizzando il workbench MySQL.

> IP a

Eseguire il comando 'ip a', come mostrato nell'immagine sopra (fare clic sul collegamento)

Nella maggior parte dei casi, verranno mostrate 3 voci. Abbiamo bisogno della voce 'wlan0'. Copia l'IP accanto a 'inet', o in questo esempio '192.168.1.44'

.>> Crea nuova connessione

Come mostrato nell'immagine sopra, crea una nuova connessione con i seguenti parametri (immagine sotto per i parametri)

> Parametri di connessione

Fare doppio clic sulla connessione appena creata per connettersi.

Se viene visualizzato un messaggio, fare clic su "Sì".

Questo è ancora un database vuoto, quindi aggiungiamo alcune tabelle.

Per prima cosa crea uno schema, per farlo, sul lato sinistro 'clic destro' e scegli 'crea schema'.

Assegna un nome allo schema e conferma.

Ora dobbiamo aggiungere le tabelle. Espandi lo schema e fai clic con il pulsante destro del mouse su "tabelle".

Crea i seguenti schemi:

> Tabella 1: Colori RAL

> Tabella 2: Tipi di sensori

> Tabella 3: misurazioni (nella foto si usa 'metingen', olandese per le misurazioni)

> Tabella 4: Dati_sito web || Tabella 4 in basso

MySQL è un sistema di database relazionale, ciò significa che possiamo creare relazioni tra le tabelle.

La prima relazione che dobbiamo creare è tra 'sensor_type' e 'measurements'.

Come mostrato nell'immagine, collegare i due tasti.

> Modifica una tabella e collega le chiavi

Non dimenticare di salvare le modifiche facendo clic su "Applica" nell'angolo in basso.

Modifica anche la tabella 'website_data' e collega 'MetingID'.

Ora abbiamo finito con la creazione delle tabelle e la creazione delle relazioni.

Aggiunta di dati:

La tabella RALcolors è una tabella fissa, dove i valori non cambieranno mai. Possiamo aggiungere questi valori

molto facilmente.

> Scarica il file Excel

Scarica il file excel qui sopra e seleziona tutti i dati e "copia". Metti mi piace nell'immagine

> Mostra tabella

'fare clic con il pulsante destro del mouse' sulla tabella e scegliere 'Incolla righe'. 'clicca' 'applica' nell'angolo in basso per aggiungere i dati.

Ora tutti i colori RAL sono salvati nel database.

Abbiamo solo bisogno di aggiungere il sensor_type al database ora.

> Dati sul tipo di sensore

Nota: la descrizione del sensore è in "Olandese"

Passaggio 4: Passaggio 4: Filezilla

Passaggio 4: Filezilla
Passaggio 4: Filezilla

Per connetterci facilmente al Raspberry Pi e trasferire file, possiamo usare Filezilla.

> Scarica Filezilla

Inserisci i dettagli della connessione e connettiti. Sul lato destro ora puoi trasferire i file trascinandoli dentro.

> Fonte Github

Scarica i file dalla fonte github sopra.

Passaggio 5: Passaggio 5: Creazione del sito Web

Passaggio 5: creazione del sito Web
Passaggio 5: creazione del sito Web
Passaggio 5: creazione del sito Web
Passaggio 5: creazione del sito Web

Per l'hosting del sito utilizziamo PHPmyAdmin e Apache2.

Il server web sul Raspberry Pi utilizza la directory '/var/www/html' come root.

Se inserisci i tuoi file lì, saranno ospitati sull'IP del Raspberry Pi. (IP = vedi 'ip a')

Puoi scaricare i file richiesti dal mio repository github (passaggio precedente)

In '/var/www/html/', incolla tutti i file dalla cartella 'Frontend'.

> /var/www/html/

Passaggio 6: Passaggio 6: creazione del backend (flask)

Il backend del sito è basato su Flask.

Tutti i file possono essere trovati nel repository github.

Copia tutti i file in qualsiasi directory sul Raspberry Pi.

Ad esempio '/home/pi/colorpicker.

Per creare una directory, vai alla directory di destinazione usando "cd", quindi esegui "mkdir".

È tutto per ora. Il codice verrà spiegato nei passaggi successivi.

Passaggio 7: Passaggio 7: Hardware

> Scarica lo schema

Crea lo schema come mostrato nel documento sopra.

NOTA: Aggiungere anche un LED bianco, con una resistenza (220 o 330 Ohm).

Spiegazione dell'hardware

HC04

Il sensore HC04 emette onde, che riflettono e vengono nuovamente ricevute dal sensore.

Calcolando il delta di tempo tra l'emissione e la ricezione, possiamo calcolare la distanza.

Distanza = ((Timestamp_recieve - Timestamp_emit) / velocità del suono) /2

Dividiamo per due perché l'onda riflette, il che significa che percorre la distanza due volte.

LCD

Usiamo un display LCD per mostrare RGB e HEX, così come l'IP all'avvio del programma.

Per questo LCD ho acquistato un modulo I2C. Abbiamo solo bisogno di 4 fili ora. SDA, SCL, GND, VCC

Per usare questo LCD, ho scritto una classe Python, per renderlo più facile da usare.

TCS34725

Questo sensore consente di misurare i colori. Usiamo una libreria per misurare il valore RGB.

Passaggio 8: Passaggio 8: spiegazione del codice

Passaggio 8: spiegazione del codice
Passaggio 8: spiegazione del codice
Passaggio 8: spiegazione del codice
Passaggio 8: spiegazione del codice
Passaggio 8: spiegazione del codice
Passaggio 8: spiegazione del codice
Passaggio 8: spiegazione del codice
Passaggio 8: spiegazione del codice

Il frontend

Il frontend esiste in tre parti principali.

I primi sono i file html, che costruiscono la struttura del nostro sito web, ma non contengono né layout minimali.

In secondo luogo abbiamo i file css, o file di stile, che modellano e impaginano il nostro sito web.

I due sono abbastanza facili da leggere e capire, motivo per cui non li spiegherò.

Infine abbiamo Javascript, con due librerie.

Le due librerie utilizzate sono SocketIO e URLSearchParams.

SocketIO ti consente di inviare messaggi dal backend al frontend e viceversa.

I messaggi possono essere inviati a un client, ma anche a più client (Broadcast)

> Socket IO Javascript

> Socket IO Python

Nelle immagini sopra, puoi vedere una delle connessioni Socket realizzate in questo progetto.

Il comando per inviare messaggi è 'emit', la ricezione viene eseguita da 'on'.

URLSearchParms ti consente di ottenere facilmente valori da una stringa di query.

Stringa di query di esempio: example.com/index.html?id=1

URLSearchParams ti restituirà: {'id'='1'}

> Esempio di URLSearchParams

Il backend

Il backend è completamente scritto in Python, con un mucchio di librerie.

La prima libreria che importiamo è 'Flask'. Questa libreria è necessaria per creare un'API, per eseguire tutte le azioni CRUD per il database MySQL. CRUD sta per Crea Leggi Aggiorna Elimina.

> Fiaschetta

L'immagine sopra mostra alcuni "percorsi" di Flask. Navigando su una rotta, eseguirai automaticamente un metodo 'GET', il codice verrà eseguito e riceverai il valore dal metodo di ritorno. Esistono anche altri metodi, come 'POST' e 'DELETE'. Per testare tali metodi, avrai bisogno di un programma come Postman.

La prossima libreria di importazione è SocketIO, che ho già spiegato nella sezione del front-end.

Il prossimo è GPIO.

Ciò consente di controllare i pin GPIO del Rapsberry Pi.

I comandi più importanti sono:

  • GPIO.setmode(GPIO. BCM) Scegli la configurazione dei pin.
  • GPIO.output(, GPIO. LOW o GPIO. HIGH) Scrive LOW o HIGH su un pin.
  • GPIO.setup(,) Definisce un PIN come input o output, o pulldown o pullup

Successivamente abbiamo il threading.

Gli unici comandi che usiamo sono:

  • Discussione(destinazione=)
  • .cominciare()

Utilizzando i thread, possiamo eseguire più istanze di codice contemporaneamente. In questo modo possiamo misurare la distanza e allo stesso tempo ascoltare i messaggi socket io in arrivo.

Il primo comando Thread(target=) creerà una classe Thread, che avviata usando 'start()', eseguirà la funzione nella parola chiave 'target', che è stata data alla creazione della classe.

Poi abbiamo la libreria del sensore di colore, che è abbastanza semplice. Non spiegherò questa libreria, perché i metodi sono molto chiari e spiegati nel codice.

Ultimo abbiamo netifaces. Questo ci consente di recuperare l'indirizzo IP che utilizziamo per la connessione wireless e cablata.

Ultimamente ho fatto alcune lezioni io stesso per il sensore di distanza, il LED e l'LCD.

Non spiegherò come funzionano.

Passaggio 9: Passaggio 9: Creazione di un caso

Passaggio 9: creazione di un caso
Passaggio 9: creazione di un caso
Passaggio 9: creazione di un caso
Passaggio 9: creazione di un caso
Passaggio 9: creazione di un caso
Passaggio 9: creazione di un caso

Per questo progetto ho creato una custodia in legno.

Il legno è leggero, sottile e non costa molto.

Come dimensioni ho usato:

  • Altezza: 5 cm
  • Larghezza: 10,5 cm
  • Lunghezza: 12,5 cm

Per i sensori, è necessario aggiungere 2 fori e posizionarli uno accanto all'altro.

Dopo aver creato la custodia, installare i sensori, LED e LCD.

Passaggio 10: passaggi finali

Tutto è sostanzialmente fatto.

Ora dobbiamo solo assicurarci che il nostro codice si avvii, nel momento in cui colleghiamo la nostra fonte di alimentazione.

Ci sono molti metodi per farlo.

> Esempi

Useremo il primo metodo:

Esegui questa riga: 'sudo nano /etc/rc.local'

Aggiungi il tuo comando per eseguire il codice: 'sudo python3 '

Salva il file usando Ctrl-X.

Se hai problemi con la modifica. Ripeti questo passaggio, ma prima esegui 'sudo -i'.

Consigliato: