Mündəricat:

NodeMCU istifadə edərək Cricket Scoreboard: 9 Addım (Şəkillərlə)
NodeMCU istifadə edərək Cricket Scoreboard: 9 Addım (Şəkillərlə)

Video: NodeMCU istifadə edərək Cricket Scoreboard: 9 Addım (Şəkillərlə)

Video: NodeMCU istifadə edərək Cricket Scoreboard: 9 Addım (Şəkillərlə)
Video: NodeMCU ESP8266 WiFi İnkişaf lövhəsinə HTTP Müştəri nümunəsi ilə giriş 2024, Iyul
Anonim
Image
Image
Plan
Plan

Salam! Bu yaxınlarda IoT (Əşyaların İnterneti) dünyası ilə tanış oldum, çünki bu sahədə ən populyar cihaz ESP8266 ilə rastlaşdım. Bu kiçik və ucuz cihazın açdığı son imkanlar məni heyrətləndirdi. Hal -hazırda bu işdə yeni olduğum üçün ondan istifadə edərək bir layihə hazırlamağı və yol boyu öyrənməyi qərara aldım. Beləliklə, İnternetdə layihələr və fikirlər axtarmağa başladım.

W. A. Smithin Arduino Cricket Score Ticker adlı inanılmaz bir layihəsi ilə rastlaşdım. Bu layihədə Arduino, Ethernet Shield və SD kartı ilə birlikdə Cricbuzz -dan canlı kriket skorlarını göstərmək üçün istifadə olunur. Bu layihə məni düşündürdü.

Mən Hindistandanam və Hindistanı eşitdikdən sonra ağlıma gələn ilk şey Kriketdir. Burada kriket dindir. Bütün matçı izləmək üçün bəzən televizorun qarşısında oturmaq çətinləşir. Odur ki, niyə seyr etməyi asan, simsiz və portativ edən bir şey etməyək. Yalnız bir baxışla sizi yeniləmək üçün kifayət qədər məlumat göstərən xüsusi kiçik bir cihaz.

Kriket fanatı deyilsən? Problem deyil! Kod, hər hansı bir XML faylından məlumat almaq üçün istifadə edilə bilən XML ayrıştırıcısını ehtiva edir. Verilənləri əldə etmək üçün yalnız düzgün funksiyaları istifadə edin.

Addım 1: Plan

Plan
Plan

Plan, İnternetə daxil olmaq və davam edən/qarşıdakı matçlar haqqında bütün məlumatları ehtiva edən Cricbuzz-dan XML kodunu istəmək üçün NodeMCU İnkişaf İdarə Heyətindən (ESP-12E modulu ilə) istifadə etməkdir. Bu kod SD kartda.xml faylı olaraq saxlanılır. Fayl daha sonra XML kodundan lazımi məlumatları təhlil etmək üçün SD kartdan oxunur. Məlumatı təhlil etmək üçün W. A. Smithin kodundan istifadə edəcəyəm. Səyləri sayəsində. Arduino və Ethernet Shield istifadə edərək eyni şeyi etmək istəyirsinizsə, onun layihəsinə baxın.

Fikrim, mümkün olduğu qədər kiçik etmək, xüsusi bir PCB və bunun üçün korpus qurmaqdır. Hələlik bir prototip hazırlayaq. Ancaq əvvəlcə bu layihədə istifadə olunan komponentlərlə tanış olaq.

Gəlin başlayaq

Addım 2: OLED Ekran

OLED Ekran
OLED Ekran
OLED Ekran
OLED Ekran

Kiçik ölçüsünə görə OLED displeylə getməyə qərar verdim və onlar ucuz satılır. 0.96 düymlük ekran istifadə edirəm ki, bu da uyğunluq məlumatlarını göstərmək üçün kifayət edəcək. Ekranın istənilən ölçüsündən istifadə edə bilərsiniz.

İstifadə etdiyim ekran SSD1306 sürücüsü və I2C (2 telli) interfeysi olan monoxromdur. Ekranın SPI versiyaları da mövcuddur. Onları idarə etmək asan bir işdir. Ekranları işə salmaq üçün lazım olan SSD1306 və GFX kitabxanalarını yükləyin. Bu kitabxanaları yazdığı üçün Adafruit -ə təşəkkür edirəm.

Bağlantılar çox sadədir.

  • GND - GND
  • VCC -dən 3.3V -ə qədər
  • SCL -dən D1 -ə qədər
  • SDA -dan D2 -ə qədər.

Addım 3: SD Kart və Adapter

SD Kart və Adapter
SD Kart və Adapter

SD kart, XML faylını Cricbuzz -dan bütün məlumatlar ayrılana qədər saxlayır. Lazımi məlumatlar göstərildikdən sonra fayl silinir. 10 - 20 kB XML faylını saxlamaq üçün bir SD kart istifadə etmək bir az çox işdir, ancaq təhlil etməyi daha asan və başa düşməyi asanlaşdırır.

İstənilən yaddaş kartı istifadə edilə bilər. Kiçik form faktoru üçün micro SD kartı seçdim. Telləri birbaşa SD karta lehimləyə bilərsiniz, ancaq bir kəsmə lövhəsi istifadə edərək işi asanlaşdırır. Qeyd etmək lazımdır ki, bütün SD kartlar 3.3V -də işləyəcək. Bu o deməkdir ki, təkcə 3.3V istifadə edilməməlidir, həm də mikro nəzarətçi ilə SD kart arasındakı əlaqə 3.3V məntiq səviyyəsində olmalıdır. 3.3V -dən yuxarı gərginlik onu öldürəcək! NodeMCU ilə əlaqədar olaraq narahat olmayacağıq, çünki NodeMCU özü 3.3V -də işləyir, bu yaxşıdır. 5V məntiq səviyyəsi olan başqa bir mikrokontrolördən istifadə etməyi planlaşdırırsınızsa, kəsmə lövhənizdə quraşdırılmış səviyyə dəyişdiricisinin olduğundan əmin olun (şəkildə göstərildiyi kimi). Əsasən 5V -ni mikro nəzarətçidən SD kart dostu 3.3V -ə çevirir və ya 'dəyişdirir'. Səviyyə dəyişdiricisini 3.3V ilə birlikdə istifadə etmək (etdiyim kimi) onun işinə təsir etmir.

SD kart ünsiyyət üçün SPI interfeysindən istifadə edir. CS və ya Chip Select pin hər hansı bir GPIO sancağına qoşula bilər. GPIO15 (D8) seçdim. GPIO15 -dən başqa bir pin istifadə etsəniz, kodda lazımi dəyişikliklər edin

  • SC5 -dən D5 -ə qədər
  • MISO - D6
  • MOSI -dən D7 -ə qədər
  • CS -dən D8 -ə qədər
  • VCC -dən 3.3V -ə qədər
  • GND - GND

SD kartınızı formatlayın

İstifadə edəcəyimiz kitabxana FAT16 və ya FAT32 fayl sistemlərini dəstəkləyir. SD kartı düzgün formatda formatladığınızdan əmin olun.

Addım 4: Klaviatura hazırlayın

Klaviatura düzəltmək
Klaviatura düzəltmək
Klaviatura düzəltmək
Klaviatura düzəltmək
Klaviatura düzəltmək
Klaviatura düzəltmək

Layihəni mümkün qədər kiçik etmək istəyirəm. Beləliklə, klaviatura üçün ayrıca bir lövhə düzəltmək və daha sonra ana lövhənin üstünə quraşdırmaq qərarına gəldim. Bu, bir az yer qənaət edəcək.

Hazır bir açar matrisi alına bilər, amma ətrafımda düymələr vardı. Həm də mümkün qədər kiçik etmək istədim. Satır və sütunları birləşdirən tipik bir tənzimləmə, 3 x 3 matris üçün cəmi 6 GPIO sancağına ehtiyac duyar. OLED ekran və SD kartın da bağlı olacağını nəzərə alsaq, bu çox şeydir.

Şübhə olduqda, Google -dan çıxarın! Etdiyim və bütün matrisi idarə etmək üçün yalnız 1 pin lazım olacaq bir yol tapdım. Bu, Voltaj Bölücü Matrisindən istifadə etməklə mümkündür. Rezistorlar hər satır və sütun arasında bağlanır. Bir düyməyə basıldıqda, müəyyən bir rezistor birləşməsi bir gərginlik bölücü yaradan ardıcıl olaraq bağlanır. Dövrə diaqramına baxın. Dəyişən gərginlik mikro nəzarətçi tərəfindən oxunacaq. Hər bir düymə fərqli bir gərginlik çıxaracaq və beləliklə matrisin çıxış gərginliyini oxuyaraq hansı düyməyə basıldığını asanlıqla tapmaq olar. Dəyişən gərginlik səviyyələrini oxumaq istədiyimiz üçün indi yalnız yüksək və aşağı bir Analog pininə ehtiyacımız olacaq. Xoşbəxtlikdən NodeMCU -da A0 olaraq etiketlənmiş bir analog pin var. Problem həll edildi!

Bir matris almaq istəyirsinizsə, diaqramda göstərilən daxili əlaqələri yoxlayın. İstənilən ölçüdə bir matris istifadə edilə bilər. Satırlar arasında 2.2kΩ və sütunlar arasında 680Ω rezistor istifadə etdiyinizə əmin olun.

Düymələri birləşdirmək

1 və 2 sancaqlar daxili olaraq bağlıdır. 3 və 4 sancaqlar ilə eyni. Düyməyə basıldıqda bütün sancaqlar bir -birinə bağlanır. Açarları bir taxtaya bağlamaq haqqında bir fikir əldə etmək üçün şəkilə baxın.

3 pinli bir kişi başlığı bağladım ki, daha sonra ana lövhəyə qoşula bilsin.

Addım 5: Hər şeyi bir yerə yığın

Hər şeyi bir yerə yığmaq
Hər şeyi bir yerə yığmaq
Hər şeyi bir yerə yığmaq
Hər şeyi bir yerə yığmaq
Hər şeyi bir yerə yığmaq
Hər şeyi bir yerə yığmaq

Komponentləri istədiyiniz yerə yerləşdirməyi planlaşdıra bilərsiniz. Bunun üçün heç bir məhdudiyyət yoxdur. Avuç içərisinə sığacaq bir şey istədiyim üçün kompakt etmək üçün bunu necə etdiyimi sizə göstərəcəyəm. Bir az qarışıq ola bilər, buna görə lehimləmə ilə rahatsınızsa mənim yolumu sınayın. İki qatlı bir PCB olduğu kimi lövhənin hər iki tərəfini doldurmağa qərar verdim. Bir tərəfdə NodeMCU və SD kart qırılma lövhəsi, digər tərəfdə OLED və klaviatura.

SD kartın qırılması, NodeMCU üçün olan iki qadın başlığı arasında uyğun gəlir. Qırılma lövhəsinin gəldiyi açılı kişi başlıqlarını sökdüm, döndərdim və yenidən lehim etdim ki, pinlər şəkildə göstərildiyi kimi dik olaraq aşağıya doğru getsin. SD kart yuvasına giriş asanlaşır.

Dörd pinli bir qadın başlığın sancaqlarını düzgün bir açı ilə bükdüm və şəkildəki kimi perfboardun mis tərəfinə lehimlədim.

Qısa dövrələrin qarşısını almaq üçün lehim birləşmələrini klaviatura altında örtün. Əlavə qorunma və sərtlik üçün klaviatura ilə anakartın arasına nazik bir sərt köpük parçası (təxminən 5 mm qalınlığında) əlavə edin. Nəhayət, əvvəllər etdiyimiz klaviaturanı lehimləyin. Sivri uclu bir lehimləmə dəmirinə sahib olmaq, şübhəsiz ki, işinizi asanlaşdıracaq. Mümkün qədər yığcam hala gətirmək çətin bir iş idi, amma nəhayət bunu bacardı.

Cihazı işə salmadan əvvəl bütün bağlantılarınızı hər hansı bir qısa dövrə yoxlayın

Addım 6: Klaviatura qurulması

Klaviatura qurmaq
Klaviatura qurmaq

Bütün əlaqələri yoxladıqdan sonra cihazınızı ilk dəfə işə salmağa hazırsınız. Barmaqlar keçdi! Sehrli tüstü yoxdur? Təbriklər!

İndi klaviatura qurmağa hazırıq. Klaviaturanın işini xatırlayın. Hər bir düymə NodeMCU -nun analoq pininə verilən fərqli bir gərginlik verəcəkdir. ESP-12E, 10 bitlik bir Analogdan Rəqəmsal Konvertora (ADC) malikdir. Gücə qaldırılan 2 1024 verəcək. Bu o deməkdir ki, hər basılan düymə üçün 0 ilə 1024 arasında bir oxu alacağıq. Görək hansı oxunuşları əldə edirik. Ancaq əvvəlcə bu dəyərləri əldə etmək üçün kiçik bir proqram yazmalıyıq. Arduino IDE -ni açın, aşağıdakı kodu kopyalayın və NodeMCU -ya yükləyin.

int keypadPin = A0;

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

  • Serial monitoru açın. Baud sürətini 115200 olaraq təyin edin.
  • İndi hər hansı bir düyməni basın. Serial monitorda daimi oxunuş almalısınız. Kiçik dalğalanmalar qaydasındadır. Bunlara əsas kodda baxılacaq. Hər düymə üçün eyni şeyi edin.
  • Hər açarın fərqli oxunması olmalıdır.
  • Bütün dəyərləri qeyd edin. Daha sonra onlara ehtiyacımız olacaq.

Addım 7: Kodlaşdıraq

Kodlaşdıraq
Kodlaşdıraq
Kodlaşdıraq
Kodlaşdıraq
Kodlaşdıraq
Kodlaşdıraq

Aşağıda göstərilən Scoreboard.ino faylını kompüterinizə yükləyin və Arduino IDE -dən istifadə edərək açın.

Yükləməzdən əvvəl

1) Hesab lövhəsi üçün yeniləmə vaxtını təyin edin. Məsələn, 15 saniyə üçün 15L.

2) Bağlanmaq istədiyiniz marşrutlaşdırıcının SSID və parolunu daxil edin.

3) SD kartın CS pinini GPIO15 -dən başqa bir pinə bağlamağı seçsəniz, lazımi dəyişiklikləri edin.

4) Bütün düymələr üçün qeyd etdiyimiz dəyərləri xatırlayırsınız? Hər bir dəyər üçün bir açar nömrəsi təyin etməliyik. Oxumaqdakı dalğalanmalardan da sizə xəbər vermişdim. Bunun səbəbi, keçid kontaktlarının mükəmməl olmamasıdır. Uzun müddətdə bu dəyər kontaktların yaşlanması səbəbindən cari dəyərdən kənara çıxa bilər və bu da dövrə əlavə müqavimət əlavə edir və bununla da gərginliyi dəyişir. Kodda bu problemi həll edə bilərik.

Dəyərin üst və alt həddini 5 marjası ilə əlavə edəcəyik. Məsələn, açar 1 üçün 617 oxudum.

  • Ondan 5 çıxarın. 617 - 5 = 612. Bu, aşağı həddir.
  • İndi 5 əlavə edin. 617 + 5 = 622. Bu yuxarı hədddir.
  • Kodun sonuna gedin. Şəkildə göstərildiyi kimi koddakı iki dəyər üçün verilən yeri doldurun.
  • Bunu hər 9 dəyər üçün edin.

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

Bu nə deməkdir?

Əgər oxu (r) 612 -dən böyük VƏ 622 -dən azdırsa, 1 düyməsinə basılır. 612 ilə 622 arasındakı hər hansı bir dəyər açar 1 olaraq qəbul ediləcək. Bu, dalğalanan oxu problemini həll edir.

Addım 8: Davanın qurulması

Davanın qurulması
Davanın qurulması
Davanın qurulması
Davanın qurulması
Davanın qurulması
Davanın qurulması
Davanın qurulması
Davanın qurulması

Bu tamamilə isteğe bağlıdır. Layihənin səliqəli və ətrafındakı bir vəziyyətlə tamamlanacağını düşündüm. Bu iş üçün uyğun vasitələr olmadığı üçün mənim üçün çox böyük bir iş olacaq. Kassa akril istifadə edərək hazırlanır.

Zımpara kağızı istifadə edərək kənarları hamarlaşdıraraq parçaları yapışdırmaq üçün hazırladı. Bütün parçaları birləşdirmək üçün Fevi Kwik (Super Glue) istifadə etdim. Super yapışqan müalicədən sonra ağ bir qalıq buraxır. Beləliklə, yalnız oynaqlar arasında tətbiq edin. Super yapışqan ilə işləyərkən tez və dəqiq olmalısınız, çünki tez quruyur. Akril sement bu iş üçün ən uyğun gəlir.

Bir fayl istifadə edərək USB portuna daxil olmaq üçün kiçik bir açılış etdi. USB kabelini daxil edəcək qədər böyük olmalıdır.

Düymələr üçün ön qapaqda 3x3 ızgara yaradıldı. Bu, düymələrə daxil olmağı çətinləşdirəcək. Bu problemi həll etmək üçün hər düymənin kvadrat hissələrini kəsdim ki, düymələri artıq səthə qədər uzadılsın.

Çox zımpara, kəsmə, düzəltmə və tənzimləmə işlərindən sonra nəhayət edildi!

Addım 9: Əylən

Əylənin!
Əylənin!

Nəhayət, bütün çətin işlər görülür. Mini hesab lövhənizi gücləndirin və oyunla yenilənin.

Gücləndirildikdən sonra əvvəlcə giriş nöqtəsinə qoşulur. SD kartı işə salır. SD kart işə salınmadıqda bir səhv göstərəcəkdir.

Bütün matçların siyahısı matç nömrəsi ilə birlikdə görünəcək.

Klaviatura istifadə edərək uyğunluq nömrəsini seçin.

Nəticələr göstəriləcək. Ekranda görmək istədiyiniz hər şeyi fərdiləşdirə bilərsiniz. Kodu izah etməkdə çox dərinə getməzdim. Ayrıştırmanın necə işlədiyinə dair ətraflı bir izahat tapa bilərsiniz.

Menyuya qayıtmaq üçün "Alınan Sayılar …" səhifəsi görünənə qədər BACK (8 düyməsini) düyməsini basıb saxlayın.

Gələcək Planlar

  • ESP8266 12-E modulu ilə xüsusi bir PCB hazırlayın.
  • Şarj edilə bilən bir batareya əlavə edin.
  • Kodu yeni xüsusiyyətlərlə təkmilləşdirin.

İnşallah zövq aldınız. Bunu özünüz edin və əylənin! Təkmilləşdirmək üçün hər zaman bir yer var və öyrənmək üçün çox şey var. Öz fikirlərinizlə gəlin. Tikinti ilə bağlı hər hansı bir təklif verməkdən çekinmeyin. Sona qədər izlədiyiniz üçün təşəkkür edirəm.

Tövsiyə: