Arduino Live Wifi Web Scoreboard: 9 trin (med billeder)

Arduino Live Wifi Web Scoreboard: 9 trin (med billeder)

Indholdsfortegnelse:

Anonim

I denne vejledning skal jeg forklare, hvordan jeg skabte en digital resultattavle med LED'er, en stor dotmatrixdisplay og numeriske 8-cifrede totals. Enheden anvender en WiFi-chip til at oprette forbindelse til internettet for at få statusværdier som totals og live-tæller plus statuser som f.eks. Tænd / sluk for LED'erne. Enheden drives af en generisk USB-strømadapter. Under emhætten bruger den et Arduino Mega kompatibelt bord, som er let tilgængeligt, økonomisk og kommunikerer godt med ESP8266 chips.

Resultattavlen er lavet af en trækasse, med hængsler og et klip for at give adgang til internerne, når det er nødvendigt. Strømforbrug er minimal, kører enheden 24/7 i et år med WiFi-forbindelser hvert minut koster mindre end 1 euro.

forsyninger:

Trin 1: Hvad du skal bruge

1 x træ kasse (€ 4,50 fra en lokal butik)

1 x Arduino Mega klon - Jeg bruger Elegoo boards personligt (€ 11,50 fra Amazon)

1 x serie med 4 dot matrix displays (€ 15 fra internettet - selvom jeg nu har set for € 5)

1 x Sugru-pakke (€ 1,65 1 ud af 8 til € 13 fra Amazon)

2 x 7-segmentet 8-cifrede LED-skærme (€ 4 til 2 - eller € 12 næste dag levering)

1 x Indsamling af 220 ohm modstande (€ 0,25 - del af pakke koster € 5).

3 x RGB LED'er (€ 0,18 - del af pakke med 50 koster € 3)

1 x ESP8266 chip (€ 5)

1 x 5v <> 3,5v niveau switcher (€ 1,50)

1 x Matt sort spray maling (€ 2 kan fra en lokal butik).

1 x lille brødbræt

'DuPont' kabler og stifter - (€ 3 - normalt en del af en starterpakke)

Adgang til en boremaskine, box cutter, USB kabel

Omkostningerne er derfor omkring € 50 - selv om eksisterende dele kan genbruges, og bestilling via Aliexpress vil for eksempel bringe det ned til nærmere € 30.

Projektet tager 4 - 8 timer at gennemføre, herunder at vente på, at kassen tørrer.

Trin 2: Forberedelse af RGB-LED'erne

Forberedelse af RGB-LED'erne (rød-grøn-blå lysemitterende-dioder) er ret tidskrævende, men tilfredsstillende, når den er afsluttet. Jeg bruger RGB-lysdioder, så jeg kan vise forskellige farver ved hjælp af den samme LED. I virkeligheden indeholder disse RGB LED'er 3 LED'er inde, og ved at styre hvert lys kan du få en blanding af farve.

Hver LED har brug for en modstand i kredsløb, jeg bruger 220 ohm modstande med mine lysdioder og har aldrig haft et problem. Andre tutorials kan foreslå forskellige værdier, brug hvad modstande du ønsker, men husk at medtage dem, ellers vil du brænde dine LED'er.

Jeg vil ikke gå ind for meget dybt om LED'er, da tutorials som denne har dækket emnet perfekt.

Hvad du skal gøre er loddemodstand en modstand til hver af de tre kortere ben på din RGB LED. Jeg kan godt lide at bruge en 'hjælpende hænder' enhed som denne. Først pakk wirerne sammen, lodd forbindelsen, vent 30 sekunder eller deromkring, og du bør finde ledningerne er stærkt fastgjort til hinanden. Til sidst vil du dække forbindelsen med isolerende tape eller varmekrympeslanger.

I det andet billede kan du se mine tre RGB-LED'er, efter at jeg har lodret tre modstande og derefter yderligere ledninger, der går til Arduino. Derudover har jeg lodret en ledning til den fælles pin, som vender tilbage til jorden.

På dette tidspunkt vil du gerne forbinde LED'erne til din Arduino og teste, at de fungerer. Jeg vil anbefale at følge nogen RGB LED-tutorial og cykle gennem farverne for at kontrollere, at dine LED'er fungerer som du ønsker.

I mit tilfælde bemærkede jeg, at den grønne LED var meget lysere end den røde LED. Dette ser ud til at være ret almindeligt. Hvis dette er et problem, kan du overveje en større værdi modstand for den grønne LED.

Når du har 3 RGB LED'er, som du kan styre, og som med succes viser rød, grøn og blå, fortsæt du til næste trin.

Trin 3: Forberedelse af LED Dot-matrix og 7-Segment Displays

Mens du viser grønne / røde lysdioder, er det nyttigt at vise boolsk information som true / false, on / off, ja / nej, for vores resultattavle er virkelig interessant, vi vil gerne vise nogle tal. Jeg skal bruge to forskellige komponenter til at vise information, de er relateret til en sådan grad, at vi faktisk kan binde dem i rækkefølge og bruge et meget minimalt antal ben på vores Arduino bord.

Det 8-cifrede display, der er vist på billedet, ligner dette - det er meget almindeligt i Arduino-starterpakker, og mens farverne varierer stort set bruger alle MAX7219-komponenten, som giver mulighed for at indstille alle 8 cifre ved kun 5 stifter. Uden MAX7219-komponenten ville vi have brug for et stort antal stifter og modstande til at indstille hvert 7-cifret ciffer, og det ville tage for evigt og bruge de fleste, hvis ikke alle vores Arduino-stifter. En anden fordel ved dette design med 8-cifret 8-cifret display er, at de kan være daisy chained, hvilket betyder at du kan have op til 8 af dem i rækkefølge igen styret med kun 5 stifter.

Dotmatrixdisplayet er et gitter af LED'er, der faktisk er en lavopløsningsdisplay, vi vælger hvilke punkter der er tændt og kan derfor tegne enkle figurer, bogstaver og tal. Her bruger jeg en speciel komponent, som er fire af disse dot-matrix displays forbundet sammen. Dette giver os en 32 x 8 skærm, hvor vi kan vise information. Dette tæller som 4 elementer i vores kæde på 8, så du kan bruge to af dem, eller i mit tilfælde blande en af ​​disse med nogle 7-segment displays. Til dette instrumentpanel bruger jeg to, hvilket bringer mit samlede antal kædet komponenter til 6. Alt drives fra 5 stifter på min Arduino bord, og det inkluderer en til 5v og en til jorden. Temmelig effektiv tror jeg!

Jeg vil dyve ind i den kode, der kræves for at køre disse komponenter, og vise nyttige oplysninger, i et senere trin. For øjeblikket skal du sikre dig, at komponenterne er tilsluttet til din Arduino-plade, og følg eventuelt en simpel vejledning (hvor mange er der) for at være sikker på, at dine komponenter fungerer.

Trin 4: Forberedelse af vores kabinet

For at se den del, vores enhed skal sidde komfortabelt i et kabinet, hvor det kan leve og ligne et stykke forbrugerelektronik, snarere end et videnskabsmæssigt projekt. De fleste moderne enheder, som fjernsyn, mobiltelefoner og Blu-ray-afspillere bruger plastiklukker på grund af dens lette natur og konsistente form. Vi skal bruge træ, som er tungere og mere sprød, men for vores behov virker det godt.

Jeg har søgt på internettet og endeløse DIY butikker til den perfekte projektboks. Til sidst fandt jeg den perfekte projektboks i en 'kinesisk basarbutik' her i Spanien. Disse drives universelt af kinesere (dermed navnet) og lager et stort udvalg af produkter, stort set alle importeret fra Kina. De er en guldmine for nyttige ting. Til sidst fandt jeg en, der lagde et så stort udvalg af kasser, at man var den perfekte pasform til min resultattavle. Prisen var også fremragende, kommer ind på kun € 4,50.

Kassen er lavet af krydsfiner, hvilket betyder, at den er strukturelt stærk, men også let at skære ind i ved hjælp af en kassefræser. Jeg prøvede at bruge en stiksavsmaskine og en sav, men i sidste ende fandt man at skærevinduer i disse kasser er bedst udført ved hjælp af en simpel kassefræser. Min box cutter sæt koster kun € 2 fra samme butik.

For mit projekt besluttede jeg at have 3 RGB LED'er, jævnt fordelt på bunden af ​​resultattavlen. Jeg brugte simpelthen en linjal til at måle jævnt fordelte punkter og brugte derefter en kraftboremaskine til at skabe et hul. Jeg var nødt til at eksperimentere lidt for at få det rigtige bore stykke til LED'erne, du skal måske først oprette en og derefter skubbe en LED for at se, at den passer godt. Skub boret gennem hurtigt, mens du holder kassen nede med to klemmer. Hvis du ikke har adgang til en klemme, så kan en ven gøre! Selv om jeg stærkt anbefaler at investere i to klemmer som disse, vil de nemt betale for sig selv gennem årene.

Min drill blev købt til € 29,99 fra en typisk DIY butik, det er intet for specielt, du behøver virkelig ikke andet end en grundlæggende strømboremaskine til disse projekter. Jeg forestiller mig det vil vare mig 20 år, så igen, i det lange løb er det meget billigt.

Dox-matrix displayet og 7-segmentet 8-cifrede komponenter vil have brug for vinduer i din boks. Igen brugte jeg en grundlæggende linjal og blyant til at måle størrelserne og tegne, hvor vinduerne ville gå på boksen. Tænk omhyggeligt på dette trin, du vil sikre, at dine skærmbilleder er godt fordelt, og at der skabes to vinduer i din kasse tæt sammen kan få træet til at bryde. Jeg vil anbefale mindst 15 mm mellem vinduer, hvis ikke mere.

Afhængigt af antallet af tilgængelige stifter på din Arduino kan du tilføje flere vinduer eller flere flere huller til LED'er. De Arduino Mega kompatible boards har masser af stifter til rådighed, hvis du bruger et Arduino Uno-kompatibelt bord, så vil du være langt mere begrænset.

På dette tidspunkt vil du gerne bekræfte hvilket bord du bruger, som du skal bestemme, hvor du er inde i boksen. Årsagen til dette er, at du skal klippe et hul til USB-kablet og porten. Jeg anbefaler at bruge USB-porten til strømmen, da du vil kunne oprette forbindelse til en computer, når det er nødvendigt, for nemt at uploade ny firmware til din enhed. Brug af tønde-stikkontakten har minimale fordele, og du vil stadig have brug for en eller anden måde at få adgang til USB-porten eller den interne seriepind til at uploade ny firmware. Så alt i alt når du bruger et Uno eller Mega-kompatibelt kort anbefaler jeg stærkt at skære et hul til USB-porten og lade det gå væk.

Det næste trin er at male din kasse. Jeg brugte nogle billige spray maling, som jeg var i stand til at købe for kun € 2 per dåse. Dette vil vare dig flere projekter, og derfor er prisen pr. Projekt meget lavere. Placer din kasse inde i en større papkasse og tag den ud udenfor, sprøjt kassen forsigtigt, vent 30 minutter eller så, og drej den omhyggeligt om det synes at have tørret. Sprøjt resten af ​​kassen. Du kan måske vente et par timer for kassen til at tørre, før du giver det et andet lag maling. Venter på kassen at tørre er kedeligt og så måske arbejde på software side af projektet, mens det tørrer.

Til sidst vil du have en meget smart udseende kasse med vinduer med korrekt størrelse for dine komponenter og en lille udgang på siden til USB-porten på din Arduino-kompatible plade.

Trin 5: Montering af dine komponenter

Efter mange eksperimenter med skruer og monteringsstik, tape og lim, opdagede jeg Sugru. Jeg anbefaler stærkt, at du sparer dig selv mange timers messing med boredele og standoffs og negle osv., Og invester dig bare i nogle Sugru. For dem, der endnu ikke har opdaget det, er det dybest set en "blu-tac" stilk, som du kan støbe i dine hænder, idet forskellen er, at den går hårdt efter et par minutter og stikker til et stort antal overflader, herunder træ og Arduino boards og komponenter. Du placerer en lille ærter størrelse på bagsiden af ​​din vare og skubbe det hårdt på træet. I 24 timer vil forbindelsen være solid og overraskende hård.

Sugru er ikke billigt, langt fra det, men når du tager højde for pengene gemt på potter med skruer og standoffs, repræsenterer det faktisk ret god værdi for pengene.

Tag din Arduino-kompatible plade og en pakke Sugru, spred kittet omkring en smule og læg dråber på undersiden af ​​dit bræt, og skub så brættet fast på plads, så din USB-port passer korrekt med hullet på siden af din boks.

Nu vil jeg ikke anbefale at fastsætte dine komponenter på plads, før du er sikker på, at de vil fungere. Da denne tutorial er opdelt i forskellige sektioner, går jeg ud fra, at du er vendt tilbage til denne del efter at vide, at din resultattavle fungerer korrekt.

De 8-cifrede skærme kan monteres ved hjælp af nogle Sugru på plastikdelen af ​​forbindelsesledningen, og muligvis nogle Sugru gennem huller mellem komponenten og dit vindue. Sørg for at du har monteret dem korrekt op! Det er sikkert at håndtere dem, mens din enhed er tændt, jeg vil foreslå, at du gør dette for at sikre, at du placerer komponenterne korrekt. Du kan læse skærmen, mens du monterer den for at være 100% sikker på, at det er den rigtige vej op.

Senere i denne tutorial vil du se, hvorfor vi bruger et brødbræt og to andre chips. Jeg monterede brødbrættet ved hjælp af sin klæbrige bagstik, som stikker ekstremt godt til træ og et stykke tape for at holde WiFi-chipset for at stoppe det for meget.

Du kan ønske at bruge varm lim til at fastgøre ledningerne til dit brødbræt, jeg gjorde det ikke, men har hørt, at det virker ret godt. Dette kan være nødvendigt, hvis dine ledninger ikke sidder meget tæt i dit brødbræt.

Trin 6: Brug af ESP8266 Chip

Vores resultattavle skal forbinde til internettet for at få data til at vise på vores LED-komponenter. Arduino Mega- eller Uno-kompatible boards indeholder ikke trådløs WiFi, og derfor skal vi bruge en yderligere komponent til at forbinde vores projekt til internettet.

ESP8266-chip er fantastisk, omkring $ 6 i USA, eller 2 for 10 euro her i Europa er det ekstremt god værdi. Det er faktisk en komplet SOC (system-on-a-chip), så på mange måder er det effektivt 'en anden Arduino' stil komponent, du kan uploade koden til enheden og bruge den på egen hånd. I dette projekt ønsker vi dog at bruge det sammen med vores Arduino-kompatible bord, med information, der sendes fra ESP8266-chip til vores centralstyring.

Denne opgave er mere kompliceret, end det ellers kunne skyldes, at ESP8266 kører på 3.3v ikke 5v ligesom vores Arduino Mega board. Det betyder, at signaler sendt fra ESP8266 ikke blot kan sluttes til digitale stifter på vores Arduino, og vi kan ikke strømforsyne ESP8266 fra 5V-stiften på vores Arduino.

Heldigvis har vi en 3.3v pin på vores Arduino, som er egnet til at drive ESP8266. Men vi er stadig tilbage med problemet med datapindene. For at løse dette problem skal vi bruge en level-converter. Denne lille chip tager i kraft, jord og flere kommunikationsledninger og udsender de samme signaler, der er faldet ned til 3.3v. Det betyder, at signaler fra vores Arduino bord bliver konverteret til en spænding, som ESP8266 bord kan bruge, og omvendt på retur.

Da denne opsætning involverer flere ledninger og flere forbindelser til stifter, har jeg brugt et brødbræt. Dette gør det muligt for os at montere konverterchipset over dividen i brødbrættet, og den øverste halvdel er vores '5v' zone, og den nederste halvdel af vores '3.3v' zone. Strømskinnerne på hver side bærer 5v eller 3.3v, og jordskinnerne er forbundet med hinanden og også vores Arduino.

For at interface med ESP8266-chip bruger jeg et bibliotek skrevet af Wu Pengfei - det er to filer, ESP8266.cpp og ESP8266.h. Det gør forbindelse til chippen og gøre en anmodning relativt enkel.

Hovedparten af ​​forklaringen af ​​min kode kommer ved siden af ​​selve koden, så jeg går ikke i detaljer i løbet af denne vejledning. Men i virkeligheden hvad vi gør for at interface med chip er at oprette en komplet HTTP-anmodning i en enkelt streng, oprette forbindelse til webserveren ved hjælp af TCP, og send derefter vores anmodning. Vi afventer derefter svaret, som vi placerer i en streng, og trækker derefter data fra strengen i et format, som vi allerede forstår.

Mit dashboard beskæftiger sig med en onlinetjeneste, som jeg oprettede, og dit dashboard vil medbringe data fra en anden kilde. Dette kan være en lokal webserver, der kører på dit hjemmenetværk, eller et websted ud på internettet, processen er den samme. Hvis du kigger på omtrent lige linje 490 og fremover, kan du se, hvordan jeg gør det. Min metode er baseret på eksempler jeg fandt på internettet.

Trin 7: Tilslutning af enheden

Det tilstødende diagram viser, hvordan jeg slår op min resultattavle. Bemærk: Jeg har ikke forsøgt at oprette en perfekt reproducerbar dialog, dette giver dig et groft overblik over, hvad jeg laver.

Du vil se, at ledningerne til ESP8266-chipset går via niveauomformeren, der er fastgjort til brødbrættet.

Flere ledninger er nødvendige for hver LED, da de er RGB LED'er, hvilket betyder at vi har brug for en ledning til R (rød), G (grøn) og B (blå). Derudover har vi en ledning tilbage til jordskinnen.

Heldigvis kan vi sætte dotmatrixdisplayerne og 7-segmentets nummerkomponenter i serie, hvilket betyder, at kun ét sæt ledninger er nødvendigt.

Derudover vil du se, at 5v og 3.3v strømkabler går både til brødbrættet og via konverteren.

Jeg havde overvejet at flytte fra et brødbræt til en mere permanent løsning som et protoboard, men til sidst virker disse løsninger fint for dette projekt. Hvis du har en god kvalitet brødbræt og (endnu vigtigere) god kvalitet 'Dupont' jumperkabler, så kan du gå langt.

Jeg har læst, at nogle mennesker kan lide at dække brødbrættet og ledningerne i varmt lim, hvilket vil holde det fast. Tørret hot lim er ikke en god dirigent, så kredsløbet bør være upåvirket. Jeg har ikke prøvet dette endnu, men det er bestemt noget at overveje, og mere Sugru kunne bruges til at holde jumperkabler på plads.

Trin 8: Software

Kritisk til scoreboardets arbejde er selvfølgelig softwaren, der kører på mikroprocessorchipen. Dette skal kontrollere ESP8266-chip og anmode om opdaterede data fra internettet, så fortolke disse data og vis det visuelt på vores LED-skærme.

Jeg har medtaget fuld kildekode til min resultattavle, du skal indtaste dine egne WiFi-legitimationsoplysninger (naturligvis!) Og pege på en anden webside. Jeg vil ikke gå ind for meget detaljeret om webserver siden af ​​ting, da dette er ekstremt fleksibelt, og du skal oprette den relevante løsning til dit problem.

Min side returnerer en meget enkel streng i formularen: | $ | 1 | 1 | 0 | 51 | 36 | 2 | 2 | 1 |

Jeg kigger først efter '| $ |' mønster, hvis jeg ser det så kan jeg antage, at jeg har den rigtige begyndelse af min streng. Efterfølgende flytter jeg gennem snoren og placerer det, jeg finder i nye strenge, som derefter bliver forvandlet til heltalstal. Når jeg finder en '|' tegn, jeg ved, at jeg er på den næste. Du kan se præcis, hvordan jeg gør dette i koden.

Dernæst skal vi opdatere lokale variabler, der holdes i vores dashboard. Du skal bruge en variabel for hver enkelt information, du ønsker at vise. I mit tilfælde er det 'server 1 okay', 'server 2 okay', 'cron task done', 'nuværende brugere', 'nuværende systemer', 'daglige brugere', 'daglige systemer'.

Efter at have hentet siden hver 60 sekunder og konverterer strengen, der blev returneret fra webserveren til en række tal, opdaterer jeg derefter mit dashboard med de nye tal.

For serverstatus og cron-status er det simpelthen et tilfælde at indstille farven på en af ​​LED'erne. For mig betyder grøn, succes, rød betyder fejl, og blå betyder, at der var et problem med forbindelsen.

De to 7-dels 8-cifrede skærme er delt op i 4-cifrede segmenter, så udsender jeg mine 4 stykker data på dem. Dette er lidt mere kompliceret end det ser ud, da jeg har brug for at konvertere et heltal, til det faktiske ciffer for kolonnen 100s, 10s søjle og siffer på displayet. Når du indstiller hvert ciffer separat, er det nødvendigt. Du kan se i koden, hvordan jeg nærmede mig dette problem.

Den centrale dot-matrix display viser oplysninger, der ændres hvert andet sekund. Jeg har en funktion kaldet displayMatrix, som angiver en af ​​de 4 skærme for at vise et 'billede', som jeg har gemt i IMAGES -opsætningen. Dette array er interessant, da det blev genereret af en webside i stedet for mig selv.

Jeg anbefaler stærkt at bruge LED Matrix Editor, denne side gør det meget nemt at oprette 'billeder' i 8x8 formatet, der vises korrekt på dine punktmatrixkomponenter. Brug af siden er ekstremt ligetil, hvis du klikker på linket, får du redaktøren med billederne fra mit dashboard, der allerede er indlæst. Som du kan se er det simpelthen et tilfælde at klikke på prikkerne for at ændre, om de er tændt eller slukket. Du kan nemt tilføje flere billeder, eller flytte ordren ved at trække og slippe. Når du har foretaget dine ændringer, skal du bogmærke siden for at kunne returnere til dem.

I øverste hjørne af editoren vil du se definitionen i kode for dine billeder. Kopier og indsæt dette i din Arduino 'skitse'. Se koden til displayMatrix-funktionen for at se, hvordan det løber gennem værdierne for at indstille den relevante LED i komponenten.

Dette er stort set opsummeret koden for mit dashboard, yderligere forklaring er tilgængelig i selve kildekoden. Hvis du har spørgsmål overhovedet, så spørg dem i kommentarerne.

Trin 9: Yderligere ideer og projektoversigt

Jeg håber du har nydt godt af at læse gennem denne tutorial, og at du er i stand til at opbygge din egen Arduino WiFi resultattavle. Jeg synes, hvad der er godt med dette særlige projekt, at det kunne tilpasses på mange måder. Jeg havde brug for at rapportere live brugerdata fra en webservice, dine behov vil sandsynligvis være meget forskellige.

Nogle ideer til resultattavler, som jeg har haft, omfatter:

En sportsresultattavle med aktuelle scoringer, måske nyttige til en skolesportturnering.

En live Bitcoin-prisovervågning, herunder også traditionelle valutaomregningskurser, og måske aktiemarkedsværdier.

En live vejr resultattavle, der viser temperaturer i forskellige byer, måske cykling gennem snesevis af byer viser en per sekund.

En live YouTube-abonnenttælling

Reelle sportsresultater trukket fra en live sportsplads som Livescores.com eller noget som ESPN.

Mulighederne er uendelige. Jeg ønsker dig held og lykke med dine projekter. Venligst forlad eventuelle kommentarer nedenfor.