Съдържание:

Табло за крикет с помощта на NodeMCU: 9 стъпки (със снимки)
Табло за крикет с помощта на NodeMCU: 9 стъпки (със снимки)

Видео: Табло за крикет с помощта на NodeMCU: 9 стъпки (със снимки)

Видео: Табло за крикет с помощта на NodeMCU: 9 стъпки (със снимки)
Видео: ESP32 Modbus Communication | FLProg SCADA 2024, Юли
Anonim
Image
Image
Планът
Планът

Здравейте! Наскоро бях представен в света на IoT (Интернет на нещата), когато попаднах на най -популярното устройство в тази област, ESP8266. Бях изумен от крайния брой възможности, които се отвориха от това малко и евтино устройство. Тъй като в момента съм нов в това, реших да направя проект, използвайки го и да уча по пътя. И така, започнах да търся в интернет проекти и идеи.

Попаднах на невероятен проект, наречен Arduino Cricket Score Ticker на W. A. Smith. В този проект Arduino заедно с Ethernet Shield и SD картата се използват за показване на резултати от крикет на живо от Cricbuzz. Този проект ме накара да се замисля.

Аз съм от Индия и първото нещо, което ми идва наум, след като чуя Индия, е крикетът. Тук крикетът е религия. Понякога става трудно да седнеш пред телевизор, за да следиш целия мач. Така че, защо не направите нещо, което прави гледането на резултата лесно, безжично и преносимо. Специално миниатюрно устройство, което показва достатъчно информация, за да ви държи в течение само с един поглед към него.

Не сте фен на крикет? Няма проблем! Кодът съдържа XML анализатора, който може да се използва за получаване на данни от всеки XML файл. Просто използвайте правилните функции, за да получите данните.

Стъпка 1: Планът

Планът
Планът

Планът е да използвате борда за развитие на NodeMCU (с модул ESP-12E) за достъп до интернет и да поискате XML кода от Cricbuzz, който съдържа цялата информация за текущите/предстоящите мачове. Този код се записва на SD картата като.xml файл. След това файлът се чете от SD картата, за да анализира необходимите данни от XML кода. Ще използвам кода на W. A. Smith, за да анализирам информацията. Благодарение на неговите усилия. Вижте неговия проект, ако искате да направите същото с помощта на Arduino и Ethernet Shield.

Идеята ми е да го направя възможно най -малък, да създам персонализирана печатна платка и кутия за нея. Засега нека направим прототип. Но първо, нека се запознаем с компонентите, използвани в този проект.

Да започваме

Стъпка 2: OLED дисплей

OLED дисплей
OLED дисплей
OLED дисплей
OLED дисплей

Реших да отида с OLED дисплей поради малкия му размер и те се предлагат евтино. Използвам 0,96 -инчов дисплей, който ще бъде достатъчен за показване на информацията за съвпадението. Можете да използвате произволен размер на дисплея.

Дисплеят, който използвам, е монохромен с драйвер SSD1306 и I2C (2-жичен) интерфейс. Предлагат се и SPI версии на дисплея. Управлението им е лесна задача. Изтеглете библиотеките SSD1306 и GFX, необходими за стартиране на дисплеите. Благодаря на Adafruit за написването на тези библиотеки.

Връзките са много прости.

  • GND към GND
  • VCC до 3.3V
  • SCL към D1
  • SDA към D2.

Стъпка 3: SD карта и адаптер

SD карта и адаптер
SD карта и адаптер

SD картата съхранява XML файла от Cricbuzz, докато цялата информация не бъде анализирана. След като се покаже необходимата информация, файлът се изтрива. Използването на SD карта за съхранение на 10 - 20 kB XML файл е малко пресилено, но прави анализирането много по -лесно и лесно за разбиране.

Може да се използва всяка карта с памет. Избрах micro SD карта за малкия й форм -фактор. Можете директно да запоявате проводници към SD картата, но използването на пробивна платка улеснява работата. Трябва да се отбележи, че всички SD карти са предназначени да работят на 3.3V. Това означава, че не само той трябва да се захранва с 3.3V, но и комуникацията между микроконтролера и SD картата трябва да бъде 3.3V логическо ниво. Напрежението над 3.3V ще го УБИЕ! Няма да се притесняваме за това, що се отнася до NodeMCU, защото самият NodeMCU работи на 3.3V, което е добре. Ако планирате да използвате друг микроконтролер с 5V логическо ниво, уверете се, че вашата пробивна платка има вграден превключвател за ниво (Както е показано на снимката). Той основно преобразува или „премества“5V от микроконтролера в 3.3V, удобен за SD карта. Използването на превключвател на нива заедно с 3.3V (както направих аз) не влияе на работата му.

SD картата използва SPI интерфейс за комуникация. CS или Chip Select пин може да бъде свързан към всеки от GPIO пиновете. Избрах GPIO15 (D8). Просто направете необходимите промени в кода, ако сте използвали пин, различен от GPIO15

  • SCK към D5
  • MISO към D6
  • MOSI към D7
  • CS до D8
  • VCC до 3.3V
  • GND към GND

Форматирайте вашата SD карта

Библиотеката, която ще използваме, поддържа файлови системи FAT16 или FAT32. Уверете се, че сте форматирали SD картата в правилния формат.

Стъпка 4: Направете клавиатурата

Изработка на клавиатурата
Изработка на клавиатурата
Изработка на клавиатурата
Изработка на клавиатурата
Изработка на клавиатурата
Изработка на клавиатурата

Искам да запазя проекта възможно най -малък. Затова реших да направя отделна платка за клавиатурата и да я монтирам над основната платка по -късно. Това ще спести малко място.

Готова матрица за ключове може да бъде закупена, но имах бутони, които лежаха наоколо. Също така исках да го направя възможно най -малък. Типично подреждане на свързващи редове и колони ще се нуждае от общо 6 GPIO пина за 3 x 3 матрица. Това е доста, като се има предвид, че OLED дисплеят и SD картата също ще бъдат свързани.

Когато се съмнявате, изпробвайте го! Това направих и намерих начин, който ще се нуждае само от 1 пин за управление на цялата матрица. Това става възможно с помощта на матрица на делителя на напрежение. Резисторите са свързани между всеки ред и колона. Когато се натисне клавиш, определена комбинация от резистори се свързва последователно, което създава делител на напрежение. Вижте електрическата схема. Променливото напрежение ще бъде отчетено от микроконтролера. Всеки ключ ще произвежда различно напрежение и по този начин може лесно да се установи кой клавиш е натиснат, като се прочете изходното напрежение на матрицата. Тъй като искаме да четем различни нива на напрежение и сега само високи и ниски, ще ни трябва аналогов щифт. За щастие има един аналогов щифт, означен като A0 на NodeMCU. Проблема решен!

Ако искате да закупите матрица, проверете вътрешните връзки, показани на диаграмата. Може да се използва матрица с всякакви размери. Уверете се, че използвате резистор 2.2kΩ между редовете и 680Ω резистор между колоните.

Свързване на бутони

Изводи 1 и 2 са вътрешно свързани. Същото е с щифтове 3 и 4. Когато бутонът е натиснат, всички щифтове са свързани заедно. Вижте снимката, за да добиете представа за свързването на превключвателите на перфорирана дъска.

Свързах 3-пинов мъжки хедър, за да може по-късно да се свърже с основната платка.

Стъпка 5: Съберете всичко заедно

Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно

Можете да планирате да поставите компонентите където пожелаете. Няма ограничения за него. Ще ви покажа как го направих, за да го направя компактен, тъй като исках нещо, което да се побере в дланта. Може да стане малко объркано, така че опитайте по моя начин, ако сте доволни от запояването. Реших да запълня двете страни на дъската, както би било двуслойна печатна платка. NodeMCU и SD карта за разбиване от едната страна и OLED и клавиатурата от другата страна.

Пробивът на SD картата просто се вписва между двете женски заглавки, които са за NodeMCU. Разпаявах ъгловите мъжки заглавки, с които се предлагаше пробивната дъска, завъртях я и отново запоявам така, че щифтовете да вървят перпендикулярно надолу, както е показано на снимката. Достъпът до слота за SD карта става по -лесен.

Огънах щифтовете на 4-пинов женски хедър под прав ъгъл и го запоявах от медната страна на перфорираната дъска, както е показано на снимката.

Покрийте спойките под клавиатурата, за да предотвратите късо съединение. Добавете тънко парче твърда пяна (с дебелина около 5 мм) между клавиатурата и дънната платка за допълнителна защита и твърдост. И накрая, запоявайте клавиатурата, която направихме по -рано. Наличието на поялник със заострен връх със сигурност ще улесни работата ви. Беше объркана работа, която го направи възможно най -компактен, но накрая успя да го свърши.

Проверете отново всичките си връзки за къси съединения, преди да включите устройството

Стъпка 6: Настройване на клавиатурата

Настройване на клавиатурата
Настройване на клавиатурата

След като проверите всички връзки, сте готови да включите устройството си за първи път. Стискам палци! Няма вълшебен дим? Поздравления!

Сега сме готови да настроим клавиатурата. Припомнете работата на клавиатурата. Всяко натискане на клавиш ще извежда различно напрежение, което се подава към аналоговия щифт на NodeMCU. ESP-12E има аналогово-цифров преобразувател (ADC) с 10-битова резолюция. 2, повишен на степен 10, ще даде 1024. Това означава, че ще получаваме показания между 0 и 1024 за всеки натиснат клавиш. Нека видим какви показания получаваме. Но първо трябва да напишем малка програма, за да получим тези стойности. Отворете Arduino IDE, копирайте поставете следния код и го качете в NodeMCU.

int keypadPin = A0;

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

  • Отворете серийния монитор. Задайте скорост на предаване на 115200.
  • Сега натиснете произволен бутон. Трябва да получавате постоянно четене на серийния монитор. Малките колебания са добре. Те ще бъдат разгледани в основния код. Направете същото за всеки ключ.
  • Всеки ключ трябва да има различно четене.
  • Запишете всички стойности. Ще ни трябват по -късно.

Стъпка 7: Нека кодираме

Да кодираме
Да кодираме
Да кодираме
Да кодираме
Да кодираме
Да кодираме

Изтеглете файла Scoreboard.ino, предоставен по -долу, на вашия компютър и го отворете с помощта на Arduino IDE.

Преди да качите

1) Задайте времето за опресняване на таблото. Например 15L за 15 секунди.

2) Въведете SSID и паролата на рутера, за да желаете да се свържете.

3) Направете необходимите промени, ако сте избрали да свържете CS щифт на SD карта към пин, различен от GPIO15.

4) Спомнете си стойностите, които записахме за всички клавиши? Трябва да зададем номер на ключ за всяка стойност. Бях ви разказал и за колебанията в четенето. Това се дължи на това, че контактите на превключвателя не са перфектни. В дългосрочен план тази стойност може да се отклони от текущата стойност поради стареенето на контактите, което добавя допълнително съпротивление във веригата, като по този начин променя напрежението. Можем да се погрижим за този проблем в кода.

Ще добавим горна граница и долна граница на стойността с марж 5. Например получих показание 617 за ключ 1.

  • Извадете 5 от него. 617 - 5 = 612. Това е долната граница.
  • Сега добавете 5 към него. 617 + 5 = 622. Това е горната граница.
  • Превъртете до края на кода. Попълнете предвиденото място за двете стойности в кода, както е показано на снимката.
  • Направете това за всеки 9 стойности.

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

Какво означава това?

АКО показанията (r) са по -големи от 612 И по -малки от 622, тогава се натиска клавиш 1. Всяка стойност между 612 и 622 ще се третира като ключ 1. Това решава проблема с променливото отчитане.

Стъпка 8: Изграждане на случая

Изграждане на случая
Изграждане на случая
Изграждане на случая
Изграждане на случая
Изграждане на случая
Изграждане на случая
Изграждане на случая
Изграждане на случая

Това е напълно незадължително. Мислех, че проектът ще изглежда чист и завършен с калъф около него. Без подходящи инструменти за тази работа, това щеше да бъде огромна задача за мен. Корпусът е изработен от акрил.

Подгответе парчетата за залепване чрез изглаждане на ръбовете с помощта на шкурка. Използвах Fevi Kwik (Супер лепило), за да съединя всички парчета заедно. Супер лепилото оставя бял остатък след втвърдяване. Така че, прилагайте го само между ставите. Трябва да сте бързи и точни, когато работите със супер лепило, тъй като то бързо се втвърдява. Акрилният цимент е най -подходящ за тази работа.

Направих малък отвор за достъп до USB порта с помощта на файл. Тя трябва да бъде достатъчно голяма, за да поставите USB кабела.

Създадена е 3x3 решетка на предния капак за бутоните. Това ще затрудни достъпа на бутоните. За да разреша този проблем, изрязах квадратни парчета за всеки клавиш, така че техните бутони сега са разширени до повърхността.

След толкова много шлайфане, рязане, фиксиране и регулиране най -накрая беше направено!

Стъпка 9: Забавлявайте се

Забавлявай се!
Забавлявай се!

Накрая цялата упорита работа е свършена. Включете мини таблото и бъдете в течение с играта.

След включване първо се свързва с точката за достъп. Инициализира SD картата. Той ще покаже грешка, ако SD картата не е инициализирана.

Ще се покаже списък с всички съвпадения заедно с номера на мача.

Изберете номера на съвпадението с клавиатурата.

Резултатите ще бъдат показани. Можете да персонализирате какво искате да виждате на дисплея. Не бих се задълбочил в обясняването на кода. Тук можете да намерите подробно обяснение как работи синтактичният анализ.

За да се върнете в менюто, задръжте бутона НАЗАД (клавиш 8), докато се покаже страницата "Извличане на резултати …".

Бъдещи планове

  • Проектирайте персонализирана печатна платка с модула ESP8266 12-E.
  • Добавете акумулаторна батерия.
  • Подобрете кода с нови функции.

Надявам се изграждането да ви е харесало. Направете го сами и се забавлявайте! Винаги има място за подобрения и много за научаване. Измислете свои собствени идеи. Чувствайте се свободни да коментирате всякакви предложения относно изграждането. Благодаря ви, че останахте до края.

Препоръчано: