Spisu treści:

Tablica wyników krykieta przy użyciu NodeMCU: 9 kroków (ze zdjęciami)
Tablica wyników krykieta przy użyciu NodeMCU: 9 kroków (ze zdjęciami)

Wideo: Tablica wyników krykieta przy użyciu NodeMCU: 9 kroków (ze zdjęciami)

Wideo: Tablica wyników krykieta przy użyciu NodeMCU: 9 kroków (ze zdjęciami)
Wideo: SCOREBOARD NA TWÓJ SERWER MINECRAFT (SternalBoard plugin) 2024, Listopad
Anonim
Image
Image
Plan
Plan

Cześć! Niedawno zostałem wprowadzony w świat IoT (Internet of Things), ponieważ natknąłem się na najpopularniejsze urządzenie w tej dziedzinie, ESP8266. Byłem zdumiony ostateczną ilością możliwości, jakie otworzyło to małe i tanie urządzenie. Ponieważ jestem teraz w tym nowy, postanowiłem zrobić projekt z jego wykorzystaniem i uczyć się po drodze. Zacząłem więc przeszukiwać internet w poszukiwaniu projektów i pomysłów.

Natknąłem się na niesamowity projekt o nazwie Arduino Cricket Score Ticker autorstwa W. A. Smitha. W tym projekcie Arduino wraz z Ethernet Shield i kartą SD służy do wyświetlania wyników krykieta na żywo z Cricbuzz. Ten projekt dał mi do myślenia.

Jestem z Indii i pierwszą rzeczą, jaka przychodzi mi do głowy po usłyszeniu o Indiach, jest Cricket. Tutaj krykiet jest religią. Czasami trudno jest usiąść przed telewizorem i śledzić cały mecz. Dlaczego więc nie stworzyć czegoś, co sprawi, że oglądanie partytury będzie łatwe, bezprzewodowe i przenośne. Dedykowane małe urządzenie, które pokazuje wystarczającą ilość informacji, abyś był na bieżąco z jednym rzutem oka.

Nie jesteś fanem krykieta? Nie ma problemu! Kod zawiera parser XML, który można wykorzystać do pobrania danych z dowolnego pliku XML. Po prostu użyj odpowiednich funkcji, aby uzyskać dane.

Krok 1: Plan

Plan
Plan

Plan zakłada użycie płytki rozwojowej NodeMCU (z modułem ESP-12E) w celu uzyskania dostępu do Internetu i zażądania kodu XML od Cricbuzz, który zawiera wszystkie informacje o trwających/nadchodzących meczach. Ten kod jest zapisywany na karcie SD jako plik.xml. Plik jest następnie odczytywany z karty SD w celu przeanalizowania wymaganych danych z kodu XML. Do analizy informacji użyję kodu W. A. Smitha. Dzięki jego staraniom. Sprawdź jego projekt, jeśli chcesz zrobić to samo za pomocą Arduino i Ethernet Shield.

Moim pomysłem jest jak najmniejsze, zbudowanie własnej płytki drukowanej i obudowy do niej. Na razie zróbmy prototyp. Ale najpierw zapoznajmy się z komponentami użytymi w tym projekcie.

Zacznijmy

Krok 2: Wyświetlacz OLED

Wyświetlacz OLED
Wyświetlacz OLED
Wyświetlacz OLED
Wyświetlacz OLED

Zdecydowałem się na wyświetlacz OLED ze względu na jego niewielkie rozmiary i są one dostępne tanio. Używam wyświetlacza o przekątnej 0,96 cala, który wystarczy do wyświetlania informacji o meczu. Możesz użyć dowolnego rozmiaru wyświetlacza.

Wyświetlacz, którego używam jest monochromatyczny ze sterownikiem SSD1306 i interfejsem I2C (2-przewodowym). Dostępne są również wersje SPI wyświetlacza. Prowadzenie ich to łatwe zadanie. Pobierz biblioteki SSD1306 i GFX potrzebne do uruchomienia wyświetlaczy. Podziękowania dla Adafruit za napisanie tych bibliotek.

Połączenia są bardzo proste.

  • GND do GND
  • VCC do 3,3 V
  • SCL do D1
  • SDA do D2.

Krok 3: Karta SD i adapter

Karta SD i adapter
Karta SD i adapter

Karta SD przechowuje plik XML z Cricbuzz, dopóki wszystkie informacje nie zostaną przeanalizowane. Po wyświetleniu niezbędnych informacji plik jest usuwany. Używanie karty SD do przechowywania pliku XML o wielkości 10-20 kB to trochę przesada, ale sprawia, że parsowanie jest znacznie łatwiejsze i łatwe do zrozumienia.

Można użyć dowolnej karty pamięci. Wybrałem kartę micro SD ze względu na jej niewielki rozmiar. Możesz bezpośrednio przylutować przewody do karty SD, ale użycie płytki zaciskowej ułatwia pracę. Należy zauważyć, że wszystkie karty SD są przeznaczone do zasilania 3,3V. Oznacza to, że nie tylko powinien być zasilany napięciem 3,3V, ale również komunikacja między mikrokontrolerem a kartą SD musi być na poziomie logicznym 3,3V. Napięcie powyżej 3,3V ZABIJA JE! Nie będziemy się tym przejmować, jeśli chodzi o NodeMCU, ponieważ samo NodeMCU działa na 3,3 V, co jest w porządku. Jeśli planujesz użyć dowolnego innego mikrokontrolera z poziomem logicznym 5V, upewnij się, że twoja tabliczka zaciskowa ma wbudowaną dźwignię poziomu (jak pokazano na rysunku). Zasadniczo konwertuje lub „przesuwa” 5 V z mikrokontrolera na przyjazny dla karty SD 3,3 V. Używanie przesuwnika poziomu wraz z 3.3V (tak jak ja) nie wpływa na jego działanie.

Karta SD wykorzystuje do komunikacji interfejs SPI. Pin CS lub Chip Select można podłączyć do dowolnego z pinów GPIO. Wybrałem GPIO15 (D8). Po prostu wprowadź niezbędne zmiany w kodzie, jeśli użyłeś pinu innego niż GPIO15

  • SCK do D5
  • MISO do D6
  • MOSI do D7
  • CS do D8
  • VCC do 3,3 V
  • GND do GND

Sformatuj kartę SD

Biblioteka, której będziemy używać, obsługuje systemy plików FAT16 lub FAT32. Upewnij się, że sformatowałeś kartę SD do prawidłowego formatu.

Krok 4: Tworzenie klawiatury

Tworzenie klawiatury
Tworzenie klawiatury
Tworzenie klawiatury
Tworzenie klawiatury
Tworzenie klawiatury
Tworzenie klawiatury

Chcę, aby projekt był jak najmniejszy. Postanowiłem więc zrobić osobną płytkę dla klawiatury i zamontować ją później nad płytą główną. Pozwoli to zaoszczędzić trochę miejsca.

Gotową matrycę klawiszy można kupić, ale miałem porozrzucane przyciski. Poza tym chciałem, aby był jak najmniejszy. Typowy układ łączenia rzędów i kolumn wymagałby łącznie 6 pinów GPIO dla matrycy 3x3. To dość dużo, biorąc pod uwagę, że wyświetlacz OLED i karta SD również będą podłączone.

W razie wątpliwości wygoogluj to! Tak właśnie zrobiłem i znalazłem sposób, który będzie wymagał tylko 1 pinu do sterowania całą matrycą. Jest to możliwe dzięki matrycy dzielnika napięcia. Rezystory są połączone między każdym rzędem i kolumną. Po naciśnięciu klawisza pewna kombinacja rezystorów zostaje połączona szeregowo, co tworzy dzielnik napięcia. Zapoznaj się ze schematem obwodu. Zmienne napięcie zostanie odczytane przez mikrokontroler. Każdy klawisz będzie wytwarzał inne napięcie, dzięki czemu można łatwo stwierdzić, który klawisz został naciśnięty, odczytując napięcie wyjściowe matrycy. Ponieważ chcemy odczytywać różne poziomy napięcia, a teraz tylko wysokie i niskie, będziemy potrzebować pinu analogowego. Na szczęście w NodeMCU jest jeden pin analogowy oznaczony jako A0. Problem rozwiązany!

Jeśli chcesz kupić matrycę sprawdź połączenia wewnętrzne pokazane na schemacie. Można zastosować macierz o dowolnych wymiarach. Upewnij się, że używasz rezystora 2,2kΩ między rzędami i rezystora 680Ω między kolumnami.

Podłączanie przycisków

Piny 1 i 2 są wewnętrznie połączone. To samo z pinami 3 i 4. Po naciśnięciu przycisku wszystkie piny są ze sobą połączone. Spójrz na zdjęcie, aby zorientować się, jak podłączyć przełączniki na płycie perforowanej.

Podłączyłem 3-pinowe złącze męskie, aby można je było później podłączyć do płyty głównej.

Krok 5: Składanie wszystkiego razem

Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem

Możesz zaplanować umieszczenie komponentów w dowolnym miejscu. Brak ograniczeń. Pokażę wam jak to zrobiłem żeby było zwarte bo chciałem coś co zmieści się w dłoni. Może być trochę bałaganu, więc spróbuj mojej drogi, jeśli nie masz nic przeciwko lutowaniu. Postanowiłem wypełnić obie strony płytki tak, jak byłaby to dwuwarstwowa płytka drukowana. Płytka stykowa NodeMCU i karta SD z jednej strony oraz OLED i klawiatura z drugiej strony.

Wybicie karty SD po prostu pasuje między dwoma żeńskimi nagłówkami, które są przeznaczone dla NodeMCU. Odlutowałem zagięte męskie nagłówki, z którymi była dołączona płytka zaciskowa, obróciłem i ponownie przylutowałem tak, aby szpilki szły prostopadle w dół, jak pokazano na zdjęciu. Dostęp do gniazda kart SD staje się łatwiejszy.

Wygiąłem szpilki 4-pinowej żeńskiej głowicy pod kątem prostym i przylutowałem ją po miedzianej stronie płyty perforowanej, jak pokazano na zdjęciu.

Zakryj złącza lutowane pod klawiaturą, aby zapobiec zwarciom. Dodaj cienki kawałek twardej pianki (o grubości około 5 mm) między klawiaturą a płytą główną, aby zapewnić dodatkową ochronę i sztywność. Na koniec przylutuj klawiaturę, którą wykonaliśmy wcześniej. Posiadanie lutownicy ze spiczastą końcówką z pewnością ułatwi Ci pracę. To była brudna robota, aby był tak kompaktowy, jak to tylko możliwe, ale w końcu udało się to zrobić.

Dokładnie sprawdź wszystkie połączenia pod kątem zwarć przed włączeniem urządzenia

Krok 6: Konfiguracja klawiatury

Konfigurowanie klawiatury
Konfigurowanie klawiatury

Po sprawdzeniu wszystkich połączeń możesz przystąpić do pierwszego zasilania urządzenia. Skrzyżowane palce! Żadnego magicznego dymu? Gratulacje!

Teraz jesteśmy gotowi do skonfigurowania klawiatury. Przypomnij sobie działanie klawiatury. Każde naciśnięcie klawisza wyprowadza inne napięcie, które jest podawane na pin analogowy NodeMCU. ESP-12E posiada przetwornik analogowo-cyfrowy (ADC) o rozdzielczości 10 bitów. 2 podniesione do potęgi 10 da 1024. Oznacza to, że otrzymamy odczyt od 0 do 1024 dla każdego naciśniętego klawisza. Zobaczmy, jakie otrzymujemy odczyty. Ale najpierw musimy napisać mały program, aby uzyskać te wartości. Otwórz Arduino IDE, skopiuj wklej następujący kod i prześlij go do NodeMCU.

int pin klawiatury = A0;

void setup(){ Serial.begin(115200); } void loop(){ int r = analogRead(keypadPin); Serial.println(r); }

  • Otwórz monitor szeregowy. Ustaw szybkość transmisji na 115200.
  • Teraz naciśnij dowolny przycisk. Powinieneś otrzymywać stały odczyt na monitorze szeregowym. Małe wahania są w porządku. Tym zajmiemy się w głównym kodzie. Zrób to samo dla każdego klucza.
  • Każdy klucz powinien mieć inny odczyt.
  • Zanotuj wszystkie wartości. Będziemy ich potrzebować później.

Krok 7: Kodujmy

Miejmy kod
Miejmy kod
Miejmy kod
Miejmy kod
Miejmy kod
Miejmy kod

Pobierz plik Scoreboard.ino podany poniżej na swój komputer i otwórz go za pomocą Arduino IDE.

Zanim prześlesz

1) Ustaw czas odświeżania tablicy wyników. Na przykład 15L na 15sek.

2) Wprowadź SSID i hasło routera, z którym chcesz się połączyć.

3) Wprowadź niezbędne zmiany, jeśli zdecydujesz się podłączyć pin CS karty SD do pinu innego niż GPIO15.

4) Pamiętasz wartości, które zapisaliśmy dla wszystkich kluczy? Do każdej wartości musimy przypisać numer klucza. Mówiłem ci również o wahaniach w czytaniu. Dzieje się tak, ponieważ styki przełącznika nie są idealne. Na dłuższą metę wartość ta może odbiegać od wartości prądu ze względu na starzenie się styków, co zwiększa rezystancję w obwodzie, zmieniając w ten sposób napięcie. Możemy zająć się tym problemem w kodzie.

Dodamy górną granicę i dolną granicę wartości z marginesem 5. Na przykład otrzymałem odczyt 617 dla klucza 1.

  • Odejmij od tego 5. 617 - 5 = 612. To jest dolna granica.
  • Teraz dodaj do tego 5. 617 + 5 = 622. To jest górna granica.
  • Przewiń do końca kodu. Wypełnij przestrzeń przewidzianą na dwie wartości w kodzie, jak pokazano na rysunku.
  • Zrób to dla każdych 9 wartości.

if(r > 612 && r < 622){ keyNumber = 1; }

Co to znaczy?

JEŚLI odczyt (r) jest większy niż 612 ORAZ mniejszy niż 622, wtedy klawisz 1 jest wciśnięty. Każda wartość pomiędzy 612 a 622 będzie traktowana jako klucz 1. To rozwiązuje problem wahań odczytu.

Krok 8: Budowanie sprawy

Budowanie sprawy
Budowanie sprawy
Budowanie sprawy
Budowanie sprawy
Budowanie sprawy
Budowanie sprawy
Budowanie sprawy
Budowanie sprawy

Jest to całkowicie opcjonalne. Myślałem, że projekt będzie wyglądał schludnie i kompletny z etui wokół niego. Bez odpowiednich narzędzi do tej pracy będzie to dla mnie ogromne zadanie. Obudowa zbudowana jest z akrylu.

Przygotowałem kawałki do klejenia, wygładzając krawędzie papierem ściernym. Do połączenia wszystkich elementów użyłem Fevi Kwik (Super Glue). Super klej po utwardzeniu pozostawia biały osad. Tak więc nakładaj go tylko między stawami. Musisz być szybki i dokładny podczas pracy z super klejem, ponieważ szybko twardnieje. Cement akrylowy najlepiej nadaje się do tej pracy.

Zrobiłem mały otwór, aby uzyskać dostęp do portu USB za pomocą pliku. Powinien być wystarczająco duży, aby włożyć przewód USB.

Utworzono siatkę 3x3 na przedniej okładce przycisków. Utrudni to dostęp do przycisków. Aby rozwiązać ten problem, wyciąłem kwadratowe kawałki dla każdego klawisza, aby ich przyciski były teraz rozciągnięte na powierzchnię.

Po tylu szlifowaniu, cięciu, mocowaniu i regulacji w końcu udało się!

Krok 9: Baw się dobrze

Baw się dobrze!
Baw się dobrze!

Wreszcie cała ciężka praca została wykonana. Wzmocnij swoją mini tablicę wyników i bądź na bieżąco z grą.

Po włączeniu najpierw łączy się z punktem dostępowym. Inicjuje kartę SD. Wyświetli błąd, jeśli karta SD nie zostanie zainicjowana.

Wyświetlona zostanie lista wszystkich meczów wraz z numerem meczu.

Wybierz numer dopasowania za pomocą klawiatury.

Wyniki zostaną wyświetlone. Możesz dostosować wszystko, co chcesz zobaczyć na wyświetlaczu. Nie zagłębiałbym się zbytnio w wyjaśnianie kodu. Tutaj znajdziesz szczegółowe wyjaśnienie, jak działa parsowanie.

Aby wrócić do menu, przytrzymaj przycisk BACK (klawisz 8) do momentu wyświetlenia strony „Pobieranie wyników…”.

Przyszłe plany

  • Zaprojektuj niestandardową płytkę drukowaną z modułem ESP8266 12-E.
  • Dodaj akumulator.
  • Ulepsz kod dzięki nowym funkcjom.

Mam nadzieję, że podobała Ci się ta kompilacja. Zrób to sam i baw się dobrze! Zawsze jest miejsce na poprawę i wiele do nauczenia się. Wymyśl własne pomysły. Zapraszam do komentowania wszelkich sugestii dotyczących budowy. Dziękuję za wytrwanie do końca.

Zalecana: