Sommario:
- Forniture
- Passaggio 1: Passaggio 1: installazione del sistema operativo RPi, configurazione di SSH e accesso a Internet
- Passaggio 2: Passaggio 2: installazione del software su RPi
- Passaggio 3: Passaggio 3: connessione al database MySQL, creazione del database
- Passaggio 4: Passaggio 4: Filezilla
- Passaggio 5: Passaggio 5: Creazione del sito Web
- Passaggio 6: Passaggio 6: creazione del backend (flask)
- Passaggio 7: Passaggio 7: Hardware
- Passaggio 8: Passaggio 8: spiegazione del codice
- Passaggio 9: Passaggio 9: Creazione di un caso
- Passaggio 10: passaggi finali
Video: ColorPicker: 10 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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.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
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
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
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
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
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:
Come realizzare un'antenna doppia biQuade 4G LTE Semplici passaggi: 3 passaggi
Come realizzare un'antenna doppia biQuade 4G LTE Semplici passaggi: La maggior parte delle volte che ho affrontato, non ho una buona potenza del segnale per i miei lavori quotidiani. Così. Cerco e provo diversi tipi di antenna ma non funziona. Dopo aver perso tempo ho trovato un'antenna che spero di realizzare e testare, perché è principio costruttivo non
Rilevamento del volto su Raspberry Pi 4B in 3 passaggi: 3 passaggi
Rilevamento del volto su Raspberry Pi 4B in 3 passaggi: In questo Instructable eseguiremo il rilevamento del volto su Raspberry Pi 4 con Shunya O/S utilizzando la libreria Shunyaface. Shunyaface è una libreria di riconoscimento/rilevamento facciale. Il progetto mira a raggiungere la massima velocità di rilevamento e riconoscimento con
Specchio per il trucco fai-da-te in semplici passaggi (usando le strisce luminose a LED): 4 passaggi
Specchio per il trucco fai-da-te in semplici passaggi (usando le strisce luminose a LED): in questo post, ho realizzato uno specchio per il trucco fai-da-te con l'aiuto delle strisce LED. Sono davvero fantastici e devi provarli anche tu
Gioca a Doom sul tuo iPod in 5 semplici passaggi!: 5 passaggi
Gioca a Doom sul tuo iPod in 5 semplici passaggi!: una guida passo passo su come eseguire il dual-boot di Rockbox sul tuo iPod per giocare a Doom e a dozzine di altri giochi. È qualcosa di veramente facile da fare, ma molte persone rimangono stupite quando mi vedono giocare a doom sul mio iPod e si confondono con le istruzioni
Come installare plugin in WordPress in 3 passaggi: 3 passaggi
Come installare plugin in WordPress in 3 passaggi: In questo tutorial ti mostrerò i passaggi essenziali per installare il plugin wordpress sul tuo sito web. Fondamentalmente puoi installare i plugin in due modi diversi. Il primo metodo è tramite ftp o tramite cpanel. Ma non lo elencherò perché è davvero completo