Talaan ng mga Nilalaman:

Cricket Scoreboard Gamit ang NodeMCU: 9 Mga Hakbang (na may Mga Larawan)
Cricket Scoreboard Gamit ang NodeMCU: 9 Mga Hakbang (na may Mga Larawan)

Video: Cricket Scoreboard Gamit ang NodeMCU: 9 Mga Hakbang (na may Mga Larawan)

Video: Cricket Scoreboard Gamit ang NodeMCU: 9 Mga Hakbang (na may Mga Larawan)
Video: 5 pin relay wiring diagram 2024, Hulyo
Anonim
Image
Image
Ang plano
Ang plano

Kamusta! Kamakailan ay ipinakilala ako sa mundo ng IoT (Internet of Things) nang makita ko ang pinakatanyag na aparato sa larangang ito, ang ESP8266. Namangha ako sa pagtatapos ng bilang ng mga posibilidad na binuksan ng maliit at murang aparato na ito. Dahil sa kasalukuyan akong bago dito, nagpasya akong gumawa ng isang proyekto gamit ito at alamin. Kaya, nagsimula akong maghanap sa internet para sa mga proyekto at ideya.

Natagpuan ko ang isang kamangha-manghang proyekto na tinatawag na Arduino Cricket Score Ticker ni W. A. Smith. Sa proyektong ito, ang Arduino kasama ang Ethernet Shield at SD card ay ginagamit upang ipakita ang mga live na marka ng cricket mula sa Cricbuzz. Pinag-isipan ako ng proyektong ito.

Ako ay mula sa India at ang unang bagay na naisip ko matapos marinig ang India ay Cricket. Dito, ang cricket ay relihiyon. Minsan ay nagiging mahirap na umupo sa harap ng isang TV upang sundin ang buong tugma. Kaya, bakit hindi gumawa ng isang bagay na ginagawang madali, walang wireless at portable ang iskor sa panonood. Ang isang nakatuong maliit na aparato na nagpapakita ng sapat na impormasyon upang mapanatili kang nai-update sa isang sulyap lamang dito.

Hindi isang fan ng cricket? Walang problema! Naglalaman ang code ng XML parser na maaaring magamit upang makakuha ng data mula sa anumang file na XML. Gumamit lamang ng mga tamang pag-andar upang makuha ang data.

Hakbang 1: Ang Plano

Ang plano
Ang plano

Ang plano ay gamitin ang NodeMCU Development Board (na may module na ESP-12E) upang ma-access ang internet at hilingin ang XML code mula sa Cricbuzz na naglalaman ng lahat ng impormasyon tungkol sa nagpapatuloy / paparating na mga tugma. Ang code na ito ay nai-save sa SD card bilang isang.xml file. Basahin ang file pagkatapos mula sa SD card upang ma-parse ang kinakailangang data mula sa XML code. Gagamitin ko ang code ni W. A. Smith upang mai-parse ang impormasyon. Salamat sa kanyang pagsisikap. Suriin ang kanyang proyekto kung nais mong gumawa ng pareho gamit ang Arduino at Ethernet Shield.

Ang aking ideya ay gawin itong maliit hangga't maaari, bumuo ng isang pasadyang PCB at kaso para dito. Sa ngayon, gumawa tayo ng isang prototype. Ngunit una, pamilyar tayo sa mga sangkap na ginamit sa proyektong ito.

Magsimula na tayo

Hakbang 2: OLED Display

OLED Display
OLED Display
OLED Display
OLED Display

Nagpasya akong pumunta sa isang display na OLED dahil sa maliit nito at magagamit ang mga ito para sa murang. Gumagamit ako ng isang 0.96 display na kung saan ay sapat para sa pagpapakita ng impormasyon ng tugma. Maaari mong gamitin ang anumang laki ng display.

Ang display na ginagamit ko ay isang monochrome na may SSD1306 driver at I2C (2-wire) interface. Ang mga bersyon ng SPI ng display ay magagamit din. Ang pagpapatakbo sa kanila ay isang madaling gawain. I-download ang mga aklatan ng SSD1306 at GFX na kinakailangan upang mapatakbo ang mga ipinapakita. Salamat sa Adafruit para sa pagsusulat ng mga aklatan na ito.

Ang mga koneksyon ay napaka-simple.

  • GND sa GND
  • VCC hanggang 3.3V
  • SCL hanggang D1
  • SDA hanggang D2.

Hakbang 3: SD Card at Adapter

SD Card at Adapter
SD Card at Adapter

Iniimbak ng SD card ang XML file mula sa Cricbuzz hanggang sa ang lahat ng impormasyon ay na-parse. Kapag naipakita ang kinakailangang impormasyon, tatanggalin ang file. Ang paggamit ng isang SD card upang mag-imbak ng 10 - 20 kB XML file ay medyo labis na labis ngunit ginagawang mas madali at madaling maunawaan ang pag-parse.

Anumang memory card ay maaaring magamit. Pinili ko ang micro SD card para sa maliit na form factor. Maaari kang direktang maghinang ng mga wire sa SD card ngunit ang paggamit ng isang breakout board ay ginagawang madali ang trabaho. Dapat pansinin na ang lahat ng mga SD card ay sinadya upang tumakbo sa 3.3V. Nangangahulugan ito na hindi lamang ito dapat pinalakas gamit ang 3.3V ngunit pati na rin ang komunikasyon sa pagitan ng microcontroller at SD card ay dapat na 3.3V antas ng lohika. Ang Boltahe sa itaas ng 3.3V ay PAPATAYIN ITO! Hindi kami mag-aalala tungkol dito hanggang sa nababahala ang NodeMCU dahil ang NodeMCU mismo ay tumatakbo sa 3.3V na maayos. Kung nagpaplano kang gumamit ng anumang iba pang microcontroller na may antas ng 5V lohika, tiyaking ang iyong breakout board ay may built-in na antas ng shifter (Tulad ng ipinakita sa larawan). Karaniwan itong nagko-convert o 'binabago' ang 5V mula sa microcontroller sa SD card friendly 3.3V. Ang paggamit ng antas ng shifter kasama ang 3.3V (tulad ng ginawa ko) ay hindi nakakaapekto sa paggana nito.

Gumagamit ang SD card ng interface ng SPI para sa komunikasyon. Ang CS o Chip Select pin ay maaaring konektado sa alinman sa mga GPIO pin. Pinili ko ang GPIO15 (D8). Gumawa lamang ng mga kinakailangang pagbabago sa code kung gumamit ka ng isang pin bukod sa GPIO15

  • SCK hanggang D5
  • MISO hanggang D6
  • MOSI hanggang D7
  • CS hanggang D8
  • VCC hanggang 3.3V
  • GND sa GND

I-format ang iyong SD card

Ang library na gagamitin namin ay sumusuporta sa mga FAT16 o FAT32 file system. Tiyaking nai-format mo ang SD card sa tamang format.

Hakbang 4: Paggawa ng Keypad

Paggawa ng Keypad
Paggawa ng Keypad
Paggawa ng Keypad
Paggawa ng Keypad
Paggawa ng Keypad
Paggawa ng Keypad

Nais kong panatilihin ang proyekto hangga't maaari. Kaya, nagpasya akong gumawa ng isang hiwalay na board para sa keypad at i-mount ito sa itaas ng pangunahing board sa paglaon. Makakatipid ito ng ilang puwang.

Maaaring mabili ang isang handa na key matrix ngunit mayroon akong mga pindutan ng push na inilalagay sa paligid. Gayundin, nais kong gawin itong maliit hangga't maaari. Ang isang tipikal na pag-aayos ng pagkonekta ng mga hilera at haligi ay nangangailangan ng isang kabuuang 6 na mga GPIO pin para sa 3 x 3 matrix. Ito ay medyo isinasaalang-alang na ang OLED display at SD card ay makakonekta rin.

Kapag may pag-aalinlangan, Google ito! Iyon ang ginawa ko at nakahanap ng isang paraan na kakailanganin lamang ng 1 pin upang makontrol ang buong matrix. Ginagawa itong posible gamit ang Voltage Divider Matrix. Ang mga resistor ay konektado sa pagitan ng bawat hilera at haligi. Kapag ang isang susi ay pinindot, ang isang tiyak na kumbinasyon ng mga resistors ay makakakonekta sa serye na lumilikha ng isang divider ng boltahe. Sumangguni sa diagram ng circuit. Ang iba't ibang boltahe ay babasahin ng microcontroller. Ang bawat susi ay bubuo ng isang iba't ibang boltahe at sa gayon madali itong malaman kung aling mga key ang pinindot sa pamamagitan ng pagbabasa ng output boltahe ng matrix. Dahil nais naming basahin ang iba't ibang mga antas ng boltahe at ngayon mataas at mababa lamang, kakailanganin namin ng isang Analog pin. Sa kabutihang palad mayroong isang Analog pin na may label na A0 sa NodeMCU. Nalutas ang problema!

Kung nais mong bumili ng isang matrix suriin ang mga panloob na koneksyon na ipinakita sa diagram. Ang isang matrix ng anumang mga sukat ay maaaring magamit. Tiyaking gumamit ng isang 2.2kΩ risistor sa pagitan ng mga hilera at 680Ω risistor sa pagitan ng mga haligi.

Pagkonekta ng Mga Push Button

Ang mga pine 1 & 2 ay konektado sa loob. Parehas sa mga pin 3 at 4. Kapag ang pindutan ay pinindot, ang lahat ng mga pin ay konektado magkasama. Sumangguni sa larawan upang makakuha ng isang ideya ng pagkonekta sa mga switch sa isang perfboard.

Nakakonekta ako sa isang 3-pin male header upang maaari itong maiugnay sa pangunahing board sa paglaon.

Hakbang 5: Pagsasama-sama sa Lahat

Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat

Maaari mong planuhin ang paglalagay ng mga bahagi saan man gusto mo. Walang mga paghihigpit dito. Ipapakita ko sa iyo kung paano ko ito nagawa upang gawin itong siksik ayon sa gusto ko ng isang bagay na magkakasya sa palad. Maaari itong makakuha ng isang maliit na magulo kaya subukan ang aking paraan kung ikaw ay komportable sa paghihinang. Napagpasyahan kong punan ang magkabilang panig ng board bilang isang dalawang-layer na PCB. NodeMCU at SD card breakout board sa isang gilid at OLED at keypad sa kabilang panig.

Ang breakout ng SD card ay nangyayari na magkasya sa pagitan ng dalawang mga babaeng header na para sa NodeMCU. Nawasak ko ang mga angled male header na kasama ng breakout board, pinaikot ito at muling hinihinang upang ang mga pin ay patayo sa pagbaba tulad ng ipinakita sa larawan. Nagiging madali ang pag-access sa slot ng SD card.

Baluktot ko ang mga pin ng isang 4-pin na babaeng header sa isang tamang anggulo at hinihinang ito sa tanso na bahagi ng perfboard tulad ng ipinakita sa larawan.

Takpan ang mga solder joint sa ilalim ng keypad upang maiwasan ang mga maikling circuit. Magdagdag ng isang manipis na piraso ng matapang na foam (sa paligid ng 5mm makapal) sa pagitan ng keypad at mainboard para sa karagdagang proteksyon at tigas. Panghuli, solder ang keypad na ginawa namin nang mas maaga. Ang pagkakaroon ng isang soldering iron na may isang tulis na tip ay tiyak na gagawing madali ang iyong trabaho. Ito ay isang magulo na trabaho na ginagawa itong masalimuot hangga't maaari ngunit sa wakas ay nagawa ko ito.

I-double check ang lahat ng iyong mga koneksyon para sa anumang mga maikling circuit bago paandar ang aparato

Hakbang 6: Pag-set up ng Keypad

Pag-set up ng Keypad
Pag-set up ng Keypad

Kapag nasuri mo na ang lahat ng mga koneksyon, handa ka nang i-power ang iyong aparato sa unang pagkakataon. Tumawid ang mga daliri! Walang magic usok? Congrats!

Handa na kaming i-set up ang keypad. Alalahanin ang pagtatrabaho ng keypad. Ang bawat key press ay maglalabas ng iba't ibang boltahe na kung saan ay pinakain sa analog pin ng NodeMCU. Ang ESP-12E ay mayroong isang Analog sa Digital Converter (ADC) na may 10-bit na resolusyon. Ang 2 na itataas sa lakas na 10 ay magbibigay ng 1024. Nangangahulugan ito na makakakuha kami ng pagbabasa sa pagitan ng 0 at 1024 para sa bawat key na pinindot. Tingnan natin kung ano ang nakukuha natin sa mga pagbabasa. Ngunit una, kailangan naming magsulat ng isang maliit na programa upang makuha ang mga halagang iyon. Buksan ang Arduino IDE, kopyahin ang i-paste ang sumusunod na code at i-upload ito sa NodeMCU.

int keypadPin = A0;

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

  • Buksan ang Serial monitor. Itakda ang baud rate sa 115200.
  • Pindutin ngayon ang anumang pindutan. Dapat kang makakuha ng isang pare-pareho na pagbabasa sa Serial monitor. Maliit na pagbabago-bago ay okay. Ang mga iyon ay aalagaan sa pangunahing code. Gawin ang pareho para sa bawat key.
  • Ang bawat susi ay dapat magkaroon ng iba't ibang pagbabasa.
  • Tandaan ang lahat ng mga halaga. Kakailanganin natin sila sa paglaon.

Hakbang 7: Code tayo

Code natin
Code natin
Code natin
Code natin
Code natin
Code natin

Mag-download ng Scoreboard.ino file na ibinigay sa ibaba sa iyong computer at buksan ito gamit ang Arduino IDE.

Bago ka mag-upload

1) Itakda ang oras ng pag-refresh para sa scoreboard. Halimbawa, 15L para sa 15secs.

2) Ipasok ang SSID at password ng router upang nais na kumonekta.

3) Gumawa ng mga kinakailangang pagbabago kung pinili mong ikonekta ang CS pin ng SD card sa isang pin maliban sa GPIO15.

4) Naaalala ang mga halagang nabanggit namin para sa lahat ng mga susi? Kailangan naming magtalaga ng isang pangunahing numero para sa bawat halaga. Sinabi ko rin sa iyo ang tungkol sa mga pagbabagu-bago sa pagbabasa. Ito ay dahil sa hindi perpekto ang mga contact sa switch. Sa pangmatagalan, ang halagang ito ay maaaring lumihis mula sa kasalukuyang halaga dahil sa pag-iipon ng mga contact na nagdaragdag ng labis na pagtutol sa circuit kaya't binabago ang boltahe. Maaari naming pangalagaan ang problemang ito sa code.

Magdaragdag kami ng isang itaas na limitasyon at isang mas mababang limitasyon ng halaga na may isang margin na 5. Halimbawa, nakakuha ako ng pagbabasa ng 617 para sa key 1.

  • Ibawas ang 5 dito. 617 - 5 = 612. Ito ang mas mababang limitasyon.
  • Magdagdag ngayon ng 5 dito. 617 + 5 = 622. Ito ang mas mataas na limitasyon.
  • Mag-scroll sa dulo ng code. Punan ang ibinigay na puwang para sa dalawang halaga sa code tulad ng ipinakita sa larawan.
  • Gawin ito para sa bawat 9 na halaga.

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

Ano ang ibig sabihin nito?

KUNG ang pagbasa (r) ay mas malaki sa 612 AT mas mababa sa 622, pagkatapos ang key 1 ay pinindot. Anumang halaga sa pagitan ng 612 at 622 ay ituturing na susi 1. Nalulutas nito ang problema ng pabagu-bago ng pagbabasa.

Hakbang 8: Pagbubuo ng Kaso

Pagbuo ng Kaso
Pagbuo ng Kaso
Pagbuo ng Kaso
Pagbuo ng Kaso
Pagbuo ng Kaso
Pagbuo ng Kaso
Pagbuo ng Kaso
Pagbuo ng Kaso

Ito ay ganap na opsyonal. Akala ko ang proyekto ay magiging maayos at kumpleto sa isang kaso sa paligid nito. Nang walang wastong tool para sa trabahong ito, ito ay magiging isang malaking gawain para sa akin. Ang kaso ay binuo gamit ang acrylic.

Inihanda ang mga piraso para sa pagdikit sa pamamagitan ng pag-aayos ng mga gilid gamit ang liha. Ginamit ko ang Fevi Kwik (Super Glue) upang pagsamahin ang lahat ng mga piraso. Ang super pandikit ay nag-iiwan ng puting nalalabi matapos itong gumaling. Kaya, ilapat lamang ito sa pagitan ng mga kasukasuan. Kailangan mong maging mabilis at tumpak kapag nagtatrabaho sa sobrang pandikit dahil mabilis itong nagtatakda. Ang Acrylic Cement ay pinakaangkop para sa trabahong ito.

Gumawa ng isang maliit na pagbubukas upang ma-access ang USB port gamit ang isang file. Dapat itong sapat na malaki upang ipasok ang USB cord.

Nilikha ang isang 3x3 grid sa harap na takip para sa mga pindutan ng itulak. Gagawin nitong mahirap i-access ang mga pindutan ng push. Upang malutas ang problemang ito, pinutol ko ang mga parisukat na piraso para sa bawat key upang ang kanilang mga pindutan ay pinalawig hanggang sa ibabaw.

Matapos ang napakaraming sanding, paggupit, pag-aayos at pag-aayos, sa wakas ay tapos na ito!

Hakbang 9: Magsaya

Magpakasaya!
Magpakasaya!

Sa wakas, lahat ng pagsusumikap ay tapos na. Palakasin ang iyong mini scoreboard at manatiling na-update sa laro.

Pagkatapos ng pag-power up, kumokonekta muna ito sa access point. Pinasimulan ang SD card. Ipapakita nito ang isang error kung ang SD card ay hindi naisauna.

Ang isang listahan ng lahat ng mga tugma ay ipapakita kasama ang numero ng tugma.

Piliin ang numero ng tugma gamit ang keypad.

Ipapakita ang mga marka. Maaari mong ipasadya kung ano ang lahat ng mga bagay na nais mong makita sa display. Hindi ako magiging malalim sa pagpapaliwanag ng code. Maaari kang makahanap ng isang detalyadong paliwanag dito sa kung paano gumagana ang pag-parse.

Upang makabalik sa menu, pindutin nang matagal ang BACK (Key 8) na pindutan hanggang sa maipakita ang pahina ng "Mga Pag-iskor ng…".

Mga Plano sa Hinaharap

  • Magdisenyo ng isang pasadyang PCB gamit ang module na ESP8266 12-E.
  • Magdagdag ng isang rechargeable na baterya.
  • Pagbutihin ang code sa mga bagong tampok.

Sana nasiyahan ka sa pagbuo. Gawin ito sa iyong sarili at magsaya! Palaging may ilang puwang para sa pagpapabuti at maraming matututunan. Bumuo ng iyong sariling mga ideya. Huwag mag-atubiling magbigay ng puna sa anumang mga mungkahi tungkol sa pagbuo. Salamat sa pagdikit hanggang sa katapusan.

Inirerekumendang: