Mundarija:

NodeMCU yordamida kriket skorbordlari: 9 qadam (rasmlar bilan)
NodeMCU yordamida kriket skorbordlari: 9 qadam (rasmlar bilan)

Video: NodeMCU yordamida kriket skorbordlari: 9 qadam (rasmlar bilan)

Video: NodeMCU yordamida kriket skorbordlari: 9 qadam (rasmlar bilan)
Video: ESP 8266 NODEMSU WI-FI MODULI YORDAMIDA ROBOFUTBOL YASAYMIZ 2024, Noyabr
Anonim
Image
Image
Reja
Reja

Salom! Men yaqinda IoT (Internet of Things) dunyosi bilan tanishdim, chunki men bu sohadagi eng mashhur ESP8266 qurilmasini uchratdim. Bu kichkina va arzon qurilma orqali ochilgan imkoniyatlarning sonidan hayratga tushdim. Men hozir yangi bo'lganim uchun, men undan foydalanib loyiha tuzishga va yo'l davomida o'rganishga qaror qildim. Shunday qilib, men Internetda loyihalar va g'oyalarni qidira boshladim.

Men V. A. Smitning Arduino kriket ballari bo'yicha o'yinchi deb nomlangan ajoyib loyihani uchratdim. Ushbu loyihada Arduino Ethernet Shield va SD -karta bilan birga Cricbuzz -dan kriket ballarini jonli tarzda ko'rsatish uchun ishlatiladi. Bu loyiha meni o'ylashga majbur qildi.

Men Hindistonlikman va Hindistonni eshitganimdan keyin birinchi narsa - bu Kriket. Bu erda kriket - bu din. Butun o'yinni kuzatib borish uchun ba'zida televizor oldida o'tirish qiyin bo'ladi. Xo'sh, nima uchun tomosha qilish skorini oson, simsiz va ko'chma qiladigan narsa qilmasligingiz kerak. Sizni bir qarashda yangilab turish uchun etarli ma'lumotni ko'rsatadigan maxsus kichik qurilma.

Kriket muxlisi emasmi? Muammo yo'q! Kod har qanday XML faylidan ma'lumotlarni olish uchun ishlatilishi mumkin bo'lgan XML tahlilini o'z ichiga oladi. Ma'lumot olish uchun faqat to'g'ri funktsiyalardan foydalaning.

1 -qadam: Reja

Reja
Reja

Reja-Internetga kirish va Cricbuzz-dan davom etayotgan/bo'lajak o'yinlar haqidagi barcha ma'lumotlarni o'z ichiga olgan XML kodini so'rash uchun NodeMCU ishlab chiqish kengashidan (ESP-12E moduli bilan) foydalanish. Bu kod SD -kartada.xml fayli sifatida saqlanadi. XML kodidan kerakli ma'lumotlarni ajratish uchun fayl SD -kartadan o'qiladi. Ma'lumotni tahlil qilish uchun men V. A. Smit kodidan foydalanaman. Uning harakatlari tufayli. Agar siz Arduino va Ethernet Shield yordamida xuddi shunday qilishni xohlasangiz, uning loyihasini ko'rib chiqing.

Mening fikrim - uni iloji boricha kichraytirish, maxsus PCB va korpus yaratish. Hozircha prototip yasaymiz. Lekin, avvalo, ushbu loyihada ishlatiladigan komponentlar bilan tanishib chiqamiz.

Qani boshladik

2 -qadam: OLED displey

OLED displey
OLED displey
OLED displey
OLED displey

Men kichik o'lchamli OLED -displey bilan ishlashga qaror qildim va ular arzon narxda sotiladi. Men 0,96 dyuymli displeydan foydalanmoqdaman, bu o'yin ma'lumotlarini ko'rsatish uchun etarli bo'ladi. Siz ekranning istalgan o'lchamidan foydalanishingiz mumkin.

Men foydalanadigan displey SSD1306 drayveri va I2C (2 simli) interfeysi bo'lgan monoxromli displey. Displeyning SPI versiyalari ham mavjud. Ularni boshqarish oson ish. Displeylarni ishga tushirish uchun zarur bo'lgan SSD1306 va GFX kutubxonalarini yuklab oling. Bu kutubxonalarni yozgani uchun Adafruitga rahmat.

Ulanishlar juda oddiy.

  • GND dan GNDgacha
  • VCC 3.3V gacha
  • SCL - D1
  • SDA dan D2 gacha.

3 -qadam: SD -karta va adapter

SD -karta va adapter
SD -karta va adapter

SD -karta XML faylini Cricbuzz -dan barcha ma'lumotlar tahlil qilinmaguncha saqlaydi. Kerakli ma'lumotlar ko'rsatilgandan so'ng, fayl o'chiriladi. 10 - 20 kB XML faylini saqlash uchun SD -kartadan foydalanish biroz ortiqcha, lekin bu tahlilni ancha oson va tushunarli qiladi.

Har qanday xotira kartasidan foydalanish mumkin. Men kichik form faktor uchun micro SD kartani tanladim. Siz simlarni SD -kartaga to'g'ridan -to'g'ri lehimlashingiz mumkin, lekin kesish taxtasidan foydalanish ishni osonlashtiradi. Shuni ta'kidlash kerakki, barcha SD -kartalar 3.3V kuchlanish bilan ishlaydi. Bu shuni anglatadiki, u nafaqat 3.3V kuchlanish bilan, balki mikrokontroller va SD karta o'rtasidagi aloqa ham 3.3V mantiq darajasida bo'lishi kerak. 3.3V dan yuqori kuchlanish uni o'ldiradi! Biz bu haqda NodeMCU haqida tashvishlanmaymiz, chunki NodeMCU o'zi 3.3V da ishlaydi, bu yaxshi. Agar siz 5V mantiq darajasiga ega bo'lgan boshqa mikrokontrollerdan foydalanishni rejalashtirmoqchi bo'lsangiz, sizning taxtangizda daraja almashtirgich o'rnatilganligiga ishonch hosil qiling (rasmda ko'rsatilgandek). U asosan 5Vni mikrokontrolderdan SD kartaga mos 3.3V ga o'zgartiradi yoki o'zgartiradi. 3.3V (men qilgan kabi) bilan birga daraja almashtirgichidan foydalanish uning ishlashiga ta'sir qilmaydi.

SD -karta aloqa uchun SPI interfeysidan foydalanadi. CS yoki Chip Select pin har qanday GPIO piniga ulanishi mumkin. Men GPIO15 (D8) ni tanladim. Agar siz GPIO15 dan boshqa pin ishlatgan bo'lsangiz, kodga kerakli o'zgartirishlarni kirgizing

  • SC5 dan D5 gacha
  • MISO - D6
  • MOSI - D7
  • CS dan D8gacha
  • VCC 3.3V gacha
  • GND dan GNDgacha

SD -kartangizni formatlang

Biz foydalanadigan kutubxona FAT16 yoki FAT32 fayl tizimlarini qo'llab -quvvatlaydi. SD -kartani to'g'ri formatlashingizga ishonch hosil qiling.

4 -qadam: Klaviatura yaratish

Klaviatura yaratish
Klaviatura yaratish
Klaviatura yaratish
Klaviatura yaratish
Klaviatura yaratish
Klaviatura yaratish

Men loyihani iloji boricha kichikroq saqlashni xohlayman. Shunday qilib, men klaviatura uchun alohida taxta yasashga qaror qildim va keyin uni asosiy taxtaning ustiga o'rnatdim. Bu joyni tejaydi.

Tayyor kalit matritsani sotib olish mumkin, lekin menda tugmachalari bor edi. Bundan tashqari, men uni iloji boricha kichikroq qilishni xohlardim. Qator va ustunlarni ulashning odatiy tartibiga 3 x 3 matritsa uchun jami 6 ta GPIO pin kerak bo'ladi. OLED -displey va SD -karta ham ulanishini hisobga olsak, bu juda ko'p.

Agar shubhangiz bo'lsa, Google buni o'chirib tashlaydi! Men shunday qildim va butun matritsani boshqarish uchun faqat 1 pin kerak bo'ladigan yo'lni topdim. Bu kuchlanish bo'luvchi matritsasi yordamida mumkin. Rezistorlar har bir satr va ustun o'rtasida bog'langan. Tugma bosilganda, rezistorlarning ma'lum kombinatsiyasi ketma -ket ulanadi, bu esa kuchlanish bo'linishini hosil qiladi. O'chirish sxemasiga qarang. Har xil kuchlanish mikrokontroller tomonidan o'qiladi. Har bir tugma boshqa kuchlanishni ishlab chiqaradi va shuning uchun matritsaning chiqish kuchlanishini o'qish orqali qaysi tugma bosilganligini osongina aniqlash mumkin. Biz har xil kuchlanish darajasini o'qishni xohlaganimiz uchun va hozir juda past va pastda, bizga analog pin kerak bo'ladi. Yaxshiyamki, NodeMCU -da A0 deb belgilangan bitta analog pin mavjud. Muammo hal qilindi!

Agar siz matritsa sotib olmoqchi bo'lsangiz, diagrammada ko'rsatilgan ichki ulanishlarni tekshiring. Har qanday o'lchamdagi matritsadan foydalanish mumkin. Qatorlar orasidagi 2,2 kΩ qarshilik va ustunlar orasidagi 680Ω rezistorni ishlatganingizga ishonch hosil qiling.

Bosish tugmachalarini ulash

1 va 2 -pinlar ichki ulangan. 3 va 4 -pinlarda ham xuddi shunday. Tugma bosilganda, barcha pinlar bir -biriga ulanadi. Perfboardda kalitlarni ulash haqida tasavvurga ega bo'lish uchun rasmga qarang.

Men 3-pinli erkak sarlavhani uladim, shunda u keyinchalik asosiy kartaga ulanadi.

5 -qadam: Hammasini bir joyga to'plash

Hamma narsani bir joyga to'plash
Hamma narsani bir joyga to'plash
Hamma narsani bir joyga to'plash
Hamma narsani bir joyga to'plash
Hamma narsani bir joyga to'plash
Hamma narsani bir joyga to'plash

Siz komponentlarni xohlagan joyingizga joylashtirishni rejalashtirishingiz mumkin. Unga cheklovlar yo'q. Men sizga qanday qilib buni ixcham qilib yasashni ko'rsataman, chunki men hovuchga mos keladigan narsani xohlardim. Bu biroz chalkash bo'lishi mumkin, shuning uchun agar siz lehimlashda qulay bo'lsangiz, o'zimni sinab ko'ring. Men taxtaning har ikki tomonini ham ikki qatlamli tenglikni to'ldirishga qaror qildim. Bir tomonda NodeMCU va SD -kartalar, boshqa tomonda OLED va klaviatura.

SD -kartaning uzilishi NodeMCU uchun ikkita ayol sarlavhaga to'g'ri keladi. Men burilish taxtasi bilan birga kelgan burchakli erkak boshlarini olib tashladim, aylantirdim va yana lehimladim, shunda pinlar rasmda ko'rsatilgandek perpendikulyar pastga tushadi. SD -karta uyasiga kirish osonroq bo'ladi.

Men 4-pinli ayol sarlavhaning pimlarini to'g'ri burchak ostida egib oldim va rasmda ko'rsatilgandek, uni pervaz taxtasining mis tomoniga lehimladim.

Qisqa tutashuvlarning oldini olish uchun lehim bo'g'inlarini klaviatura ostiga yoping. Qo'shimcha himoya va qat'iylik uchun klaviatura va anakart orasiga ingichka qattiq ko'pik (qalinligi taxminan 5 mm) qo'shing. Va nihoyat, biz ilgari qilgan klaviaturani lehimlang. Uchli uchli lehimlantiruvchi dazmolga ega bo'lish, albatta, sizning ishingizni osonlashtiradi. Bu ishni iloji boricha ixcham qilib bajarish, lekin oxir -oqibat buni uddalashga muvaffaq bo'ldi.

Qurilmani quvvatlantirishdan oldin barcha ulanishlaringizni qisqa tutashuvlar borligini ikki marta tekshiring

6 -qadam: Klaviaturani sozlash

Klaviaturani sozlash
Klaviaturani sozlash

Barcha ulanishlarni tekshirgandan so'ng, siz qurilmangizni birinchi marta quvvatlantirishga tayyormiz. Barmoqlar kesib o'tdi! Sehrli tutun yo'qmi? Tabriklaymiz!

Endi biz klaviaturani o'rnatishga tayyormiz. Klaviatura ishini eslang. Har bir tugma bosilganda NodeMCU analog piniga berilgan har xil kuchlanish paydo bo'ladi. ESP-12E 10-bitli o'lchamli analog-raqamli konvertorga (ADC) ega. 2 kuchga ko'tarilgan 10 1024 beradi. Bu shuni anglatadiki, biz har bosilgan tugma uchun 0 dan 1024 gacha o'qiymiz. Keling, qanday o'qishlar olishimizni ko'rib chiqaylik. Lekin birinchi navbatda, biz bu qadriyatlarni olish uchun kichik dastur yozishimiz kerak. Arduino IDE -ni oching, quyidagi kodni nusxa ko'chiring va NodeMCU -ga yuklang.

int keypadPin = A0;

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

  • Serial monitorni oching. Baud tezligini 115200 ga o'rnating.
  • Endi har qanday tugmani bosing. Siz ketma -ket monitorda doimiy o'qishni olishingiz kerak. Kichik tebranishlar yaxshi. Ular asosiy kodda ko'rib chiqiladi. Har bir kalit uchun xuddi shunday qiling.
  • Har bir kalit boshqacha o'qishga ega bo'lishi kerak.
  • Barcha qiymatlarga e'tibor bering. Bizga keyinroq kerak bo'ladi.

7 -qadam: Keling, kod yozamiz

Keling, kodlash
Keling, kodlash
Keling, kodlash
Keling, kodlash
Keling, kodlash
Keling, kodlash

Kompyuteringizda quyida keltirilgan Scoreboard.ino faylini yuklab oling va Arduino IDE yordamida oching.

Yuklashdan oldin

1) Hisob jadvalining yangilanish vaqtini belgilang. Masalan, 15 sekund uchun 15L.

2) Ulanmoqchi bo'lgan yo'riqnoma SSID va parolini kiriting.

3) Agar siz SD -kartaning CS -pinini GPIO15 -dan boshqasiga ulashni tanlagan bo'lsangiz, kerakli o'zgartirishlarni kiriting.

4) Barcha kalitlar uchun biz belgilagan qiymatlarni eslaysizmi? Biz har bir qiymat uchun kalit raqamini berishimiz kerak. Men sizga o'qishdagi tebranishlar haqida ham aytgandim. Buning sababi, kontaktlarning zanglashiga olib kelmasligi. Uzoq muddatda bu qiymat kontaktlarning qarishi tufayli joriy qiymatdan chetga chiqishi mumkin, bu esa kontaktlarning zanglashiga qo'shimcha qarshilik qo'shib, kuchlanishni o'zgartiradi. Biz bu muammoni kodda hal qila olamiz.

Biz 5 chegarasi bilan qiymatning yuqori chegarasini va pastki chegarasini qo'shamiz. Masalan, men 1 -kalit uchun 617 ko'rsatkichini oldim.

  • Undan 5 ni olib tashlang. 617 - 5 = 612. Bu pastki chegaradir.
  • Endi unga 5 qo'shing. 617 + 5 = 622. Bu yuqori chegaradir.
  • Kodning oxirigacha o'ting. Rasmda ko'rsatilgandek, koddagi ikkita qiymat uchun ajratilgan joyni to'ldiring.
  • Buni har 9 qiymat uchun bajaring.

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

Nima degani bu?

Agar o'qish (r) 612 dan katta VA 622 dan kichik bo'lsa, 1 tugma bosiladi. 612 va 622 oralig'idagi har qanday qiymat 1 -kalit sifatida ko'rib chiqiladi. Bu o'zgaruvchan o'qish muammosini hal qiladi.

8 -qadam: Kosonni yaratish

Kosonni qurish
Kosonni qurish
Kosonni qurish
Kosonni qurish
Kosonni qurish
Kosonni qurish
Kosonni qurish
Kosonni qurish

Bu mutlaqo ixtiyoriy. Men o'ylaymanki, loyiha atrofidagi ish bilan toza va to'liq ko'rinadi. Bu ish uchun tegishli vositalar bo'lmasa, bu men uchun katta vazifa bo'lardi. Koson akril yordamida qurilgan.

Zımpara qog'ozi yordamida qirralarni tekislab, bo'laklarni yopishtirish uchun tayyorladi. Men barcha qismlarni birlashtirish uchun Fevi Kvik (Super elim) dan foydalandim. Super yopishtiruvchi quriganidan keyin oq qoldiq qoldiradi. Shunday qilib, uni faqat bo'g'inlar orasiga qo'llang. Super elim bilan ishlashda siz tez va aniq bo'lishingiz kerak, chunki u tez quriydi. Akril tsement bu ish uchun eng mos keladi.

Fayl yordamida USB portiga kirish uchun kichik teshik ochildi. U USB kabelini ulash uchun etarlicha katta bo'lishi kerak.

Old panelning tugmachalari uchun 3x3 o'lchamdagi panjara yaratildi. Bu tugmachalarga kirishni qiyinlashtiradi. Ushbu muammoni hal qilish uchun men har bir tugma uchun kvadrat bo'laklarni kesib tashladim, shuning uchun ularning tugmalari endi sirtgacha cho'zilgan.

Shuncha silliqlash, kesish, tuzatish va sozlashdan so'ng, nihoyat bajarildi!

9 -qadam: Xursand bo'ling

Maza qiling!
Maza qiling!

Nihoyat, barcha mashaqqatli ishlar bajariladi. O'zingizning mini -jadvalingizni yoqing va o'yin bilan yangilanib turing.

Quvvatlantirilgandan so'ng, u birinchi navbatda kirish nuqtasiga ulanadi. SD -kartani ishga tushiradi. Agar SD -karta ishga tushirilmagan bo'lsa, xato ko'rsatiladi.

Barcha o'yinlar ro'yxati o'yin raqami bilan birga ko'rsatiladi.

Klaviatura yordamida o'yin raqamini tanlang.

Ballar ko'rsatiladi. Siz displeyda ko'rishni xohlagan hamma narsani sozlashingiz mumkin. Kodni tushuntirishga juda chuqur kirmagan bo'lardim. Bu erda tahlilning qanday ishlashini batafsil tushuntirishni topishingiz mumkin.

Menyuga qaytish uchun "Ballarni olish …" sahifasi paydo bo'lguncha BACK (8 -tugma) tugmachasini bosib turing.

Kelajak rejalari

  • ESP8266 12-E moduli yordamida maxsus tenglikni yaratish.
  • Qayta zaryadlanuvchi batareyani qo'shing.
  • Kodni yangi xususiyatlar bilan yaxshilang.

Umid qilamanki, sizga qurilish yoqdi. Buni o'zingiz qiling va dam oling! Yaxshilash uchun har doim bo'sh joy va ko'p narsalarni o'rganish kerak. O'zingizning g'oyalaringiz bilan keling. Qurilish bilan bog'liq har qanday taklifni sharhlarda qoldiring. Oxirigacha bo'lganingiz uchun tashakkur.

Tavsiya: