Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
- Trin 2: Trin 2: Installation af software på RPi
- Trin 3: Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database
- Trin 4: Trin 4: Filezilla
- Trin 5: Trin 5: Oprettelse af webstedet
- Trin 6: Trin 6: Oprettelse af backend (kolbe)
- Trin 7: Trin 7: Hardware
- Trin 8: Trin 8: Kode forklaret
- Trin 9: Trin 9: Oprettelse af en sag
- Trin 10: Sidste trin
Video: ColorPicker: 10 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Målet med dette projekt er at måle farver og oversætte dem til andre farvesystemer. Ved blot at bruge de RGB -værdier, sensoren giver, kan du oversætte til HSL, CYMK, HEX og også den nærmeste RAL -kode (standard, der bruges til maling). Dette projekt kræver en grundlæggende viden om Python, MySQL, Linux og Javascript.
Hvis du også er bekendt med Flask -rammen og SocketIO, skal koden til dette projekt være let at forstå for dig.
Dette projekt kan bruges af malere, mellemstore designere eller bare af alle, der har brug for at måle farver.
Dette projekt er ikke så dyrt og koster anslået _ euro, forsendelse er ikke inkluderet.
Forbrugsvarer
Vi kan dele dette afsnit i to dele:
- Hardware
- Software
Hardware
Vi bruger følgende komponenter
- HC04: Afstandssensor, hvor langt måler vi fra objektet
- LCD -display 2x16
- LCD I2C -modul (HW061)
- TCS34725 farvesensormodul (Adafruit)
- Hvid LED
- Raspberry Pi 3 (Enhver Raspberry Pi burde fungere)
- 5x 1k Ohm modstand
- 1x 220 eller 330 Ohm modstand
- SD -kort 16 GB (14,4 GB)
Software
- Python IDE, som Visual Code eller Pycharm (Pycharm bruges her)
- MySQL Workbench
- Putty (Download Putty)
- Rufus eller enhver anden SD -kortskriver (Download Rufus)
Prissætning
Dette projekt er ret billigt, hvis du allerede har en Rapsberry Pi.
- HC04: Fra omkring € 2,5 euro (Kina) og op til € 6 for flere lokale butikker.
- LCD: Omkring 6-8 euro.
- I2C -modul: Som billigt under € 1 (Kina), men op til € 4 for flere lokale butikker.
- TCS34725: Omkring € 9-12 euro. Den dyreste del (eksklusive RPi)
- Hvid LED: Købt i løs vægt, 20 lysdioder helt ned til € 1
- Raspberry Pi: Afhængigt af hvilken version, omkring € 40 euro
- Modstande: 0,10 € for en modstand
- SD -kort: omkring 8 €
Strømadapteren til Raspberry Pi er ikke inkluderet i prisen, da denne adapter er ret almindelig.
Overordnet prisklasse: omkring € 70, hvis du inkluderede Raspberry Pi og etuiet til projektet.
Til at bygge sagen brugte jeg let tyndt træ. Jeg genbrugte dette træ fra møbler. Materialet til sagen er op til dig.
Trin 1: Trin 1: Installation af RPi OS, konfiguration af SSH og internetadgang
Trin 1.1: Installation af billedet
Download billedet fra det officielle websted for Raspberry Pi. Det er ikke ligegyldigt, hvilket billede du installerer. Til dette projekt er der ikke brug for en GUI, da vi kun forbinder ved hjælp af SSH.
Skriv billedet til det (tomme) SD -kort (Alle filer på kortet slettes).
For at skrive alt til SD -kortet bruger vi et værktøj kaldet 'Rufus'. Efter download af billedet skal du åbne Rufus og vælge billedfilen. Vælg måldrevet, og skriv billedet til drevet. Dette kan tage et stykke tid.
> Rufus
Trin 1.2: Installation af SSH
Det næste trin er at oprette en forbindelse til SD -kortet. For at gøre det skal vi aktivere SSH.
For at gøre det uden at bruge en skærm skal du åbne din filforsker og åbne bootpartitionen på SD -kortet. Opret en tom fil kaldet "ssh" uden filtypenavn.
Åbn også "cmdline.txt"
Tilføj "169.254.10.1" i slutningen af filen, og gem den.
Afmonter SD -kortet, og indsæt det i Raspberry Pi.
Nu kan vi slutte Raspberry Pi til en strømkilde og starte op og oprette forbindelse med SSH.
For at oprette forbindelse ved hjælp af SSH bruger vi programmet "Putty". Tilslut din RPi og pc ved hjælp af et ehternet -kabel, før du gør det. Åbn Putty og gå til fanen SSH, og udfyld denne IP: 169.254.10.1. Klik på 'forbind', og du vil blive tilsluttet.
> Spartel
Standard -login, der bruges af Raspberry Pi, er 'pi' som brugernavn og 'hindbær' for adgangskoden.
Trin 1.3: Trådløs forbindelse
Din Raspberry Pi er nu tændt.
Vi vil også oprette forbindelse til RPi'en ved hjælp af Wifi, på den måde har vi ikke brug for et Ethernet -kabel mere.
Udfør følgende linje:
'sudo nano /etc/wpa_supplicant/wpa_supplicant.conf'
Dette åbner tekst -editoren 'nano' med forhøjede rettigheder.
Tilføj følgende linjer i filen:
netværk = {
ssid = "SSID"
psk = "Adgangskode"
}
Erstat "SSID" med SSID'et på dit Wifi -netværk
Udskift "Password" med din adgangskode.
Derefter gør du Ctrl+X og vælger 'ja'. Filen gemmes nu.
Nu skal vi genstarte netværkstjenesten
Udfør følgende kommandoer:
- 'sudo -i'
- 'sudo systemctl genstart netværk'
Du kan teste din internetforbindelse ved hjælp af wget -kommandoen.
Eksempel: 'wget google.com'
> Wget -kommando
Trin 2: Trin 2: Installation af software på RPi
Til dette projekt skal vi installere et par biblioteker.
- Mariadb: MySQL-database (sudo apt-get install mariadb-server)
- Adafruit bibliotek til farvesensoren: Måling af farver (pip3 installer adafruit-circuitpython-tcs34725)
- PHPmyAdmin: ('sudo apt install phpmyadmin', vælg apache webserver)
Installer også følgende pip -biblioteker:
- flask_socketio
- kolbe
- flask_cors
- bestyrelse
- busio
- netfaces
Trin 3: Trin 3: Oprettelse af forbindelse til MySQL -databasen, oprettelse af database
Det næste trin er at oprette forbindelse til MySQL -databasen ved hjælp af MySQL -arbejdsbordet.
> IP a
Udfør kommandoen 'ip a', som vist på billedet ovenfor (Klik på link)
I de fleste situationer vil der blive vist 3 poster. Vi har brug for posten 'wlan0'. Kopier IP ved siden af 'inet', eller i dette eksempel '192.168.1.44'
. >> Opret ny forbindelse
Som vist på billedet ovenfor skal du oprette en ny forbindelse med følgende parametre (billede nedenfor for params)
> Forbindelsesparametre
Dobbeltklik på den nyoprettede forbindelse for at oprette forbindelse.
Hvis der vises en prompt, skal du klikke på 'Ja'.
Dette er stadig en tom database, så lad os tilføje nogle tabeller.
Opret først et skema for at gøre det ved at højreklikke i venstre side og vælge 'opret skema'.
Giv skemaet et navn, og bekræft.
Nu skal vi tilføje tabeller. Udvid skemaet og 'højreklik', 'tabeller'.
Opret følgende skemaer:
> Tabel 1: RALfarver
> Tabel 2: Sensortyper
> Tabel 3: Målinger (På billedet bruges 'metingen', hollandsk til målinger)
> Tabel 4: Website_data || Tabel 4 nederst
MySQL er et relationsdatabasesystem, det betyder, at vi kan skabe relationer mellem tabellerne.
Den første relation, vi skal skabe, er mellem 'sensor_type' og 'målinger'.
Som vist på billedet skal du forbinde de to taster.
> Rediger en tabel og linknøgler
Glem ikke at gemme ændringerne ved at klikke på 'Anvend' i nederste hjørne.
Rediger også tabellen 'website_data' og link 'MetingID'.
Nu er vi færdige med at oprette tabellerne og skabe relationerne.
Tilføjelse af data:
RALcolors -tabellen er en fast tabel, hvor værdierne aldrig vil ændre sig. Vi kan tilføje disse værdier
meget let.
> Download Excel -fil
Download excel -filen ovenfor, og vælg alle data og 'kopier'. Gør som på billedet
> Vis bord
'højreklik' på tabellen og vælg 'Indsæt rækker'. 'klik' '' anvend '' i nederste hjørne for at tilføje dataene.
Nu gemmes alle RALfarver i databasen.
Vi behøver kun at tilføje sensor_type til databasen nu.
> Sensortype data
Bemærk: Beskrivelsen af sensoren er på 'hollandsk'
Trin 4: Trin 4: Filezilla
For let at oprette forbindelse til Raspberry Pi og overføre filer kan vi bruge Filezilla.
> Download Filezilla
Fil i forbindelsesdetaljerne, og opret forbindelse. I højre side kan du nu overføre filer ved at trække dem ind.
> Github -kilde
Download filerne fra github -kilden ovenfor.
Trin 5: Trin 5: Oprettelse af webstedet
Til hosting af webstedet bruger vi PHPmyAdmin og Apache2.
Webserveren på Raspberry Pi bruger mappen '/var/www/html' som root.
Hvis du placerer dine filer der, bliver de hostet på IP'en til Raspberry Pi. (IP = se 'ip a')
Du kan downloade de nødvendige filer fra min github -repo (forrige trin)
Indsæt alle filer i mappen 'Frontend' i '/var/www/html/'.
>/var/www/html/
Trin 6: Trin 6: Oprettelse af backend (kolbe)
Hjemmesidens backend er baseret på Flask.
Alle filer kan findes på github -repoen.
Kopier alle filer til et bibliotek på Raspberry Pi.
For eksempel '/home/pi/colorpicker.
For at oprette et bibliotek skal du navigere til destinationsmappen ved hjælp af 'cd' og derefter udføre 'mkdir'.
Det er alt for nu. Koden vil blive forklaret i de næste trin.
Trin 7: Trin 7: Hardware
> Download skema
Opret ordningen som vist i dokumentet ovenfor.
BEMÆRK: Tilføj også en hvid LED med en modstand (220 eller 330 Ohm).
Forklarer hardware
HC04
HC04 -sensoren udsender bølger, som reflekterer og modtages igen af sensoren.
Ved at beregne tids deltaet mellem udsendelse og modtagelse kan vi beregne afstanden.
Distance = ((Timestamp_recieve - Timestamp_emit) / lydhastighed) / 2
Vi deler med to, fordi bølgen reflekterer, hvilket betyder, at den tilbagelægger distancen to gange.
LCD
Vi bruger et LCD -display til at vise RGB og HEX, samt IP når programmet starter.
Til denne LCD købte jeg et I2C -modul. Vi mangler kun 4 ledninger nu. SDA, SCL, GND, VCC
For at bruge denne LCD skrev jeg en Python -klasse for at gøre den lettere at bruge.
TCS34725
Denne sensor giver dig mulighed for at måle farver. Vi bruger et bibliotek til at måle RGB -værdien.
Trin 8: Trin 8: Kode forklaret
Frontenden
Frontend består af tre hoveddele.
Først er html -filer, der bygger strukturen på vores websted, men ikke indeholder eller minimalt layout.
For det andet har vi css -filer, eller stilfiler, som stiler og layouter vores websted.
De to er ret lette at læse og forstå, og derfor vil jeg ikke forklare dem.
Sidst har vi Javascript med to biblioteker.
De to anvendte biblioteker er SocketIO og URLSearchParams.
SocketIO giver dig mulighed for at sende meddelelser fra backend til frontend og omvendt.
Beskederne kan sendes til en klient, men også til flere klienter (Broadcast)
> Socket IO Javascript
> Socket IO Python
På billederne ovenfor kan du se en af de Socket -forbindelser, der er foretaget i dette projekt.
Kommandoen til at sende meddelelser er 'emit', modtagelse sker med 'on'.
URLSearchParms giver dig mulighed for nemt at få værdier fra en forespørgselsstreng.
Eksempel på querystring: example.com/index.html?id=1
URLSearchParams giver dig tilbage: {'id' = '1'}
> URLSearchParams Eksempel
Bagenden
Backend er fuldt ud skrevet i Python, med en masse biblioteker.
Det første bibliotek, vi importerer, er 'Flask'. Dette bibliotek er nødvendigt for at oprette en API til at udføre alle CRUD -handlinger for MySQL -databasen. CRUD står for Create Read Update Delete.
> kolbe
Billedet ovenfor viser et par kolber 'ruter'. Ved at surfe til en rute udfører du automatisk en 'GET' -metode, koden udføres, og du modtager værdien fra returmetoden. Der er også andre metoder, f.eks. 'POST' og 'DELETE'. For at teste sådanne metoder skal du bruge et program som Postman.
Det næste importbibliotek er SocketIO, som jeg forklarede allerede i frontend -sektionen.
Næste er GPIO.
Dette giver dig mulighed for at styre GPIO -benene på Rapsberry Pi.
De vigtigste kommandoer er:
- GPIO.setmode (GPIO. BCM) Vælg konfigurationen af benene.
- GPIO.output (, GPIO. LOW eller GPIO. HIGH) Skriv en LOW eller HIGH til en pin.
- GPIO.setup (,) Definer en PIN -kode som input eller output, eller pulldown eller pullup
Dernæst har vi trådning.
De eneste kommandoer, vi bruger, er:
- Tråd (mål =)
- . Start()
Ved hjælp af tråde kan vi køre flere forekomster af kode på samme tid. På denne måde kan vi måle afstanden og samtidig lytte til indgående socket io -meddelelser.
Den første kommando Thread (target =) opretter en Thread -klasse, som ved start med 'start ()' kører funktionen i søgeordet 'target', som blev givet ved oprettelse af klassen.
Dernæst har vi biblioteket med farvesensoren, som er ret ligetil. Jeg vil ikke forklare dette bibliotek, fordi metoderne er meget klare og forklaret i koden.
Sidst har vi netifaces. Dette giver os mulighed for at hente den IP -adresse, vi bruger til den trådløse og kablede forbindelse.
Sidst lavede jeg selv nogle klasser for afstandssensoren, LED og LCD.
Jeg vil ikke forklare, hvordan de fungerer.
Trin 9: Trin 9: Oprettelse af en sag
Til dette projekt lavede jeg en trækasse.
Træet er let, tyndt og koster ikke meget.
Som dimensioner brugte jeg:
- Højde: 5 cm
- Bredde: 10,5 cm
- Længde: 12,5 cm
For sensorerne skal du tilføje 2 huller og placere dem ved siden af hinanden.
Efter oprettelse af sagen skal du installere sensorer, LED og LCD.
Trin 10: Sidste trin
Alt er grundlæggende gjort.
Nu skal vi kun sørge for, at vores kode starter, i det øjeblik vi tilslutter vores strømkilde.
Der er mange metoder til at gøre dette.
> Eksempler
Vi vil bruge den første metode:
Udfør denne linje: 'sudo nano /etc/rc.local'
Tilføj din kommando for at køre koden: 'sudo python3'
Gem filen med Ctrl-X.
Hvis du har problemer med at redigere. Gør dette trin igen, men udfør først 'sudo -i'.
Anbefalede:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)