Innehållsförteckning:
- Steg 1: Planen
- Steg 2: OLED -skärm
- Steg 3: SD -kort och adapter
- Steg 4: Gör knappsatsen
- Steg 5: Att sätta ihop allt
- Steg 6: Konfigurera knappsatsen
- Steg 7: Låt oss koda
- Steg 8: Bygga fallet
- Steg 9: Ha kul
Video: Resultattavla för cricket med NodeMCU: 9 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Hej! Jag introducerades nyligen för världen av IoT (Internet of Things) när jag stötte på den mest populära enheten inom detta område, ESP8266. Jag blev förvånad över det slutliga antalet möjligheter som öppnades av denna lilla och billiga enhet. Eftersom jag för närvarande är ny på detta bestämde jag mig för att göra ett projekt med hjälp av det och lära mig under vägen. Så jag började söka på internet efter projekt och idéer.
Jag stötte på ett fantastiskt projekt som heter Arduino Cricket Score Ticker av W. A. Smith. I detta projekt används Arduino tillsammans med Ethernet Shield och SD -kort för att visa live cricket -poäng från Cricbuzz. Det här projektet fick mig att tänka.
Jag är från Indien och det första jag tänker på efter att ha hört Indien är Cricket. Här är cricket religion. Det blir ibland svårt att sitta framför en tv för att följa hela matchen. Så varför inte göra något som gör det enkelt att titta på poäng, trådlöst och bärbart. En dedikerad liten enhet som visar tillräckligt med information för att hålla dig uppdaterad med bara en blick på den.
Inte ett cricket -fan? Inga problem! Koden innehåller XML -parsern som kan användas för att hämta data från valfri XML -fil. Använd bara rätt funktioner för att få data.
Steg 1: Planen
Planen är att använda NodeMCU Development Board (med ESP-12E-modul) för att komma åt internet och begära XML-koden från Cricbuzz som innehåller all information om de pågående/kommande matcherna. Denna kod sparas på SD -kortet som en.xml -fil. Filen läses sedan från SD -kortet för att analysera nödvändig data från XML -koden. Jag kommer att använda W. A. Smiths kod för att analysera informationen. Tack vare hans ansträngningar. Kolla in hans projekt om du vill göra samma sak med Arduino och Ethernet Shield.
Min idé är att göra den så liten som möjligt, bygga ett anpassat kretskort och fodral för det. För nu, låt oss göra en prototyp. Men låt oss först bekanta oss med komponenterna som används i detta projekt.
Låt oss börja
Steg 2: OLED -skärm
Jag bestämde mig för att gå med en OLED -skärm på grund av dess lilla storlek och de är tillgängliga för billiga. Jag använder en 0,96 skärm som är tillräcklig för att visa matchningsinformationen. Du kan använda valfri storlek på displayen.
Displayen jag använder är en svartvit med SSD1306-drivrutinen och I2C (2-tråds) gränssnitt. SPI -versioner av displayen är också tillgängliga. Att köra dem är en enkel uppgift. Ladda ner SSD1306- och GFX -biblioteken som behövs för att köra bildskärmarna. Tack till Adafruit för att du skrev dessa bibliotek.
Anslutningar är mycket enkla.
- GND till GND
- VCC till 3,3V
- SCL till D1
- SDA till D2.
Steg 3: SD -kort och adapter
SD -kort lagrar XML -filen från Cricbuzz tills all information har analyserats. När nödvändig information har visats raderas filen. Att använda ett SD -kort för att lagra en 10 - 20 kB XML -fil är lite överkill men det gör analysen mycket lättare och lättare att förstå.
Vilket minneskort som helst kan användas. Jag valde micro SD -kort för sin lilla formfaktor. Du kan lödkablar direkt till SD -kortet, men att använda ett utbrottskort gör jobbet enkelt. Det bör noteras att alla SD -kort är avsedda att köras på 3.3V. Detta betyder att den inte bara ska drivas med 3,3V utan även kommunikationen mellan mikrokontroller och SD -kort måste vara 3,3V logiknivå. Spänning över 3,3V dödar det! Vi kommer inte att bry oss om det när det gäller NodeMCU eftersom NodeMCU själv körs på 3.3V vilket är bra. Om du planerar att använda någon annan mikrokontroller med 5V logiknivå, se till att din utbrottskort har en inbyggd nivåväxel (som visas på bilden). Det konverterar eller "flyttar" i princip 5V från mikrokontrollern till SD -kortvänlig 3.3V. Att använda nivåreglage tillsammans med 3.3V (som jag gjorde) påverkar inte dess funktion.
SD -kort använder SPI -gränssnitt för kommunikation. CS- eller Chip Select -stift kan anslutas till någon av GPIO -stiften. Jag valde GPIO15 (D8). Gör bara nödvändiga ändringar i koden om du använde en annan pin än GPIO15
- SCK till D5
- MISO till D6
- MOSI till D7
- CS till D8
- VCC till 3,3V
- GND till GND
Formatera ditt SD -kort
Biblioteket vi kommer att använda stöder FAT16- eller FAT32 -filsystem. Se till att du formaterar SD -kortet till rätt format.
Steg 4: Gör knappsatsen
Jag vill hålla projektet så litet som möjligt. Så jag bestämde mig för att göra ett separat kort för knappsatsen och montera den ovanför huvudkortet senare. Detta kommer att spara lite utrymme.
En färdig nyckelmatris kan köpas men jag hade tryckknappar som låg runt. Jag ville också göra den så liten som möjligt. Ett typiskt arrangemang för att ansluta rader och kolumner skulle behöva totalt 6 GPIO -stift för 3 x 3 matris. Detta är ganska mycket med tanke på att OLED -skärm och SD -kort också kommer att anslutas.
Om du är osäker, Google det! Det var vad jag gjorde och hittade ett sätt som bara kommer att behöva 1 stift för att styra hela matrisen. Detta möjliggörs med hjälp av Voltage Divider Matrix. Motstånd är anslutna mellan varje rad och kolumn. När du trycker på en tangent ansluts en viss kombination av motstånd i serie vilket skapar en spänningsdelare. Se kretsschemat. Den varierande spänningen kommer att läsas av mikrokontrollern. Varje tangent kommer att producera en annan spänning och därmed kan man enkelt ta reda på vilken tangent som trycktes genom att läsa matrisens utspänning. Eftersom vi vill läsa varierande spänningsnivåer och nu bara högt och lågt, behöver vi en analog stift. Lyckligtvis finns det en analog stift märkt som A0 på NodeMCU. Problemet löst!
Om du vill köpa en matris, kolla in de interna anslutningarna som visas i diagrammet. En matris av alla dimensioner kan användas. Se till att använda ett 2,2 kΩ motstånd mellan raderna och 680Ω motstånd mellan kolumnerna.
Ansluta tryckknappar
Stift 1 och 2 är internt anslutna. Samma med stift 3 & 4. När du trycker på knappen kopplas alla stiften samman. Se bilden för att få en uppfattning om hur man kopplar omkopplarna på en perfboard.
Jag har anslutit en 3-stifts hanrubrik så att den kan anslutas till huvudkortet senare.
Steg 5: Att sätta ihop allt
Du kan planera att placera komponenterna var du vill. Inga begränsningar för det. Jag ska visa dig hur jag gjorde det för att göra det kompakt eftersom jag ville ha något som passar i handflatan. Det kan bli lite rörigt så prova mig fram om du är bekväm med lödning. Jag bestämde mig för att fylla på båda sidorna av brädet som ett tvåskikts-kretskort. NodeMCU och SD -kort breakout board på ena sidan och OLED och knappsats på andra sidan.
SD -kortutbrottet råkar bara passa mellan de två kvinnliga rubrikerna som är för NodeMCU. Jag avlödde de vinklade hanrubrikerna som brytskivan följde med, roterade den och lodde igen så att tapparna går vinkelrätt nedåt som visas på bilden. Det blir lättare att komma åt SD -kortplatsen.
Jag böjde stiften på ett 4-stifts honahuvud i rät vinkel och lödde det på kopparsidan av perfboardet som visas på bilden.
Täck över lödfogarna under knappsatsen för att förhindra kortslutning. Lägg till en tunn bit hårdskum (cirka 5 mm tjock) mellan knappsatsen och moderkortet för extra skydd och styvhet. Slutligen löd knappsatsen som vi gjorde tidigare. Att ha ett lödkolv med spetsig spets kommer säkert att göra ditt jobb enkelt. Det var ett rörigt jobb som gjorde det så kompakt som möjligt men lyckades slutligen göra det.
Dubbelkolla alla dina anslutningar för eventuella kortslutningar innan du sätter på enheten
Steg 6: Konfigurera knappsatsen
När du har kontrollerat alla anslutningar är du redo att driva enheten för första gången. Håller tummarna! Ingen magisk rök? grattis!
Nu är vi redo att ställa in knappsatsen. Kom ihåg hur knappsatsen fungerar. Varje knapptryckning kommer att mata ut en annan spänning som matas till den analoga stiftet på NodeMCU. ESP-12E har en analog till digital omvandlare (ADC) med 10-bitars upplösning. 2 höjs till effekten 10 ger 1024. Det betyder att vi kommer att få en avläsning mellan 0 och 1024 för varje tangent som trycks. Låt oss se vilka avläsningar vi får. Men först måste vi skriva ett litet program för att få dessa värden. Öppna Arduino IDE, kopiera och klistra in följande kod och ladda upp den till NodeMCU.
int knappsatsPin = A0;
void setup () {Serial.begin (115200); } void loop () {int r = analogRead (knappsatsPin); Serial.println (r); }
- Öppna seriell bildskärm. Ställ in överföringshastigheten till 115200.
- Tryck nu på valfri knapp. Du bör få en konstant avläsning på den seriella bildskärmen. Små fluktuationer är okej. Dessa kommer att tas om hand i huvudkoden. Gör samma sak för varje tangent.
- Varje nyckel bör ha en annan läsning.
- Anteckna alla värden. Vi kommer att behöva dem senare.
Steg 7: Låt oss koda
Ladda ner Scoreboard.ino -filen nedan på din dator och öppna den med Arduino IDE.
Innan du laddar upp
1) Ställ in uppdateringstiden för resultattavlan. Till exempel 15L i 15sek.
2) Ange SSID och lösenord för routern för att ansluta.
3) Gör nödvändiga ändringar om du väljer att ansluta SD -kortets CS -pin till en annan pin än GPIO15.
4) Kommer du ihåg värdena som vi noterade för alla nycklar? Vi måste tilldela ett nyckelnummer för varje värde. Jag hade också berättat om svängningarna i läsningen. Detta beror på att switchkontakterna inte är perfekta. På lång sikt kan detta värde avvika från det aktuella värdet på grund av åldrande av kontakter vilket ger extra motstånd i kretsen och ändrar spänningen. Vi kan ta hand om detta problem i koden.
Vi lägger till en övre gräns och en nedre gräns för värdet med en marginal på 5. Till exempel fick jag en avläsning på 617 för nyckel 1.
- Subtrahera 5 från den. 617 - 5 = 612. Detta är den nedre gränsen.
- Lägg nu till 5 till den. 617 + 5 = 622. Detta är den övre gränsen.
- Bläddra till slutet av koden. Fyll i utrymmet för de två värdena i koden enligt bilden.
- Gör detta för varje nio värden.
if (r> 612 && r <622) {keyNumber = 1; }
Vad betyder det här?
OM avläsningen (r) är större än 612 OCH mindre än 622, trycks knappen 1. Alla värden mellan 612 och 622 kommer att behandlas som nyckel 1. Detta löser problemet med fluktuerande läsning.
Steg 8: Bygga fallet
Detta är helt valfritt. Jag trodde att projektet skulle se snyggt och komplett ut med ett fall runt det. Utan lämpliga verktyg för det här jobbet skulle det bli en enorm uppgift för mig. Fodralet är byggt med akryl.
Förberedde bitarna för limning genom att släta ut kanterna med sandpapper. Jag använde Fevi Kwik (Super Glue) för att foga ihop alla bitar. Superlim lämnar en vit rest efter att det har härdat. Så applicera det bara mellan lederna. Du måste vara snabb och noggrann när du arbetar med superlim eftersom det fastnar snabbt. Akrylcement är bäst lämpad för detta jobb.
Gjorde en liten öppning för att komma åt USB -porten med en fil. Den ska vara tillräckligt stor för att sätta i USB -kabeln.
Skapade ett 3x3 rutnät på framsidan för tryckknapparna. Detta kommer att göra tryckknapparna svåra att komma åt. För att lösa detta problem skär jag fyrkantiga bitar för varje nyckel så att deras knappar nu är utsträckta upp till ytan.
Efter så mycket slipning, klippning, fixering och justering var det äntligen klart!
Steg 9: Ha kul
Slutligen är allt hårt arbete gjort. Starta din minitavla och håll dig uppdaterad med spelet.
Efter uppstart ansluter den först till åtkomstpunkten. Initierar SD -kortet. Det visas ett fel om SD -kortet inte initieras.
En lista över alla matcher kommer att visas tillsammans med matchnummer.
Välj matchningsnummer med knappsatsen.
Poängen kommer att visas. Du kan anpassa vad du vill se på skärmen. Jag skulle inte gå för djupt in i att förklara koden. Du kan hitta en detaljerad förklaring här om hur analysen fungerar.
För att komma tillbaka till menyn, håll ned BACK (knapp 8) tills sidan "Hämtar poäng …" visas.
Framtida planer
- Designa ett anpassat kretskort med ESP8266 12-E-modulen.
- Lägg till ett laddningsbart batteri.
- Förbättra koden med nya funktioner.
Hoppas du tyckte om bygget. Gör det själv och ha kul! Det finns alltid utrymme för förbättringar och mycket att lära. Kom med dina egna idéer. Kommentera gärna förslag på bygget. Tack för att du håller dig kvar till slutet.
Rekommenderad:
Raspberry Pi resultattavla: 4 steg
Raspberry Pi resultattavla: Idag ska jag förklara hur jag gjorde den här resultattavlan som styrs av en hallon pi och drivs av en 5V strömförsörjning. Den använder en kombination av ws2811 och ws2812b lysdioder för belysningen och strukturen är gjord av plywood och röd ek. För en beskrivning
Arduino resultattavla: 3 steg
Arduino resultattavla lampor: Detta är ett projekt som jag gjorde för en del av en staket resultattavla. Jag ville ha något som piper och lyser. Jag insåg snart att man tekniskt sett kan använda detta för många olika sporter och inte bara fäktning. Vad projektet faktiskt gör, jag
Li-ion batteri Bluetooth resultattavla: 4 steg (med bilder)
Li-ion batteri Bluetooth resultattavla: IntroduktionProjektet bygger på mina instruktioner från förra året: Bluetooth bordtennis resultattavla resultattavlan är avsedd för amatörsportfans och bordtennisspelare Men den är inte tillämplig bara för bordtennis. Kan användas för andra
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Resultattavla för bordtennis: 16 steg (med bilder)
Bordtennis resultattavla: För lat för att hålla reda på ditt bordtennis / pingis -poäng? Eller kanske du bara är trött på att alltid glömma det? Om så är fallet kanske du är intresserad av att bygga den här digitala bordtennisbordet. , spel, server och p