Мазмуну:

NodeMCU колдонуу менен крикет таблицасы: 9 кадам (сүрөттөр менен)
NodeMCU колдонуу менен крикет таблицасы: 9 кадам (сүрөттөр менен)

Video: NodeMCU колдонуу менен крикет таблицасы: 9 кадам (сүрөттөр менен)

Video: NodeMCU колдонуу менен крикет таблицасы: 9 кадам (сүрөттөр менен)
Video: NodeMCU ESP8266 WiFi өнүктүрүү тактасына HTTP Client үлгүсү менен таанышуу 2024, Ноябрь
Anonim
Image
Image
План
План

Салам! Жакында IoT дүйнөсү менен тааныштырылдым (Интернет нерселери), мен бул тармактагы эң популярдуу ESP8266 түзмөгүнө туш келдим. Бул кичинекей жана арзан түзмөк аркылуу ачылган көптөгөн мүмкүнчүлүктөр мени таң калтырды. Мен бул үчүн жаңы болгондуктан, мен аны колдонуп долбоор түзүүнү жана жолдо үйрөнүүнү чечтим. Ошентип, мен интернеттен долбоорлорду жана идеяларды издей баштадым.

Мен W. A. Smith тарабынан Arduino Cricket Score Ticker аттуу укмуштуудай долбоорго туш болдум. Бул долбоордо Arduino Ethernet Shield жана SD карта менен бирге Cricbuzz түз крикет упайларын көрсөтүү үчүн колдонулат. Бул долбоор мени ойлондурду.

Мен Индияданмын жана Индияны уккандан кийин эсиме биринчи келген нерсе - Крикет. Бул жерде крикет - бул дин. Бүтүндөй беттешти көрүү үчүн кээде сыналгынын алдында отуруу кыйын болуп калат. Демек, эмнеге көрүү упайын оңой, зымсыз жана портативдүү кыла турган нерсени жасабаш керек. Атайын кичинекей түзмөк, сизди бир кароо менен жаңыртып туруу үчүн жетиштүү маалыматты көрсөтөт.

Крикеттин күйөрманы эмеспи? Маселе эмес! Коддо XML талдоочу бар, аны каалаган XML файлынан маалыматтарды алуу үчүн колдонсо болот. Жөн гана маалыматтарды алуу үчүн туура функцияларды колдонуңуз.

1 -кадам: План

План
План

План NodeMCU өнүктүрүү кеңешин колдонуу (ESP-12E модулу менен) интернетке кирүү жана Cricbuzzдан XML кодун сурап алуу, анда болуп жаткан/келе жаткан матчтар жөнүндө бардык маалыматты камтыйт. Бул код SD картада.xml файлы катары сакталат. Андан кийин файл XML кодунан керектүү маалыматтарды талдоо үчүн SD картадан окулат. Мен маалыматты талдоо үчүн В. А. Смиттин кодун колдоном. Анын аракетинин аркасында. Эгерде сиз Arduino жана Ethernet Shield аркылуу ушундай кылгыңыз келсе, анын долбоорун карап көрүңүз.

Менин идеям - аны мүмкүн болушунча кичине кылуу, ага ылайыкташтырылган ПХБ жана корпус куруу. Азырынча прототипти жасайбыз. Бирок, адегенде, бул долбоордо колдонулган компоненттер менен таанышып көрөлү.

Кел, баштайлы

2 -кадам: OLED дисплей

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

Мен кичинекей болгондуктан OLED дисплей менен барууну чечтим жана алар арзан. Мен матч маалыматын көрсөтүү үчүн жетиштүү болгон 0.96 дюймду колдонуп жатам. Сиз дисплейдин каалаган өлчөмүн колдоно аласыз.

Мен колдонгон дисплей SSD1306 драйвери жана I2C (2 зымдуу) интерфейси бар монохромдуу. Дисплейдин SPI версиялары да бар. Аларды иштетүү оңой иш. Дисплейлерди иштетүү үчүн керектүү SSD1306 жана GFX китепканаларын жүктөп алыңыз. Бул китепканаларды жазган Адафрутка рахмат.

Байланыштар абдан жөнөкөй.

  • GNDден GNDге
  • VCC 3.3V чейин
  • SCLден D1ге чейин
  • SDAдан D2ге чейин.

3 -кадам: SD карта жана адаптер

SD карта жана адаптер
SD карта жана адаптер

SD карта XML файлын Cricbuzzдан бардык маалымат талданмайынча сактайт. Керектүү маалымат көрсөтүлгөндөн кийин, файл жок кылынат. 10 - 20 кБ XML файлын сактоо үчүн SD картаны колдонуу бир аз ашыкча, бирок ал талдоону бир топ жеңил жана түшүнүктүү кылат.

Ар кандай эстутум картасын колдонсо болот. Мен кичинекей форма фактору үчүн микро SD картаны тандадым. Сиз зымдарды SD картага түз туташтырсаңыз болот, бирок үзүлүү тактасын колдонуу жумушту жеңилдетет. Белгилей кетсек, бардык SD карталар 3.3V менен иштөөгө арналган. Бул 3.3V менен гана иштелбестен, микроконтроллер менен SD картанын ортосундагы байланыш 3.3V логикалык деңгээлде болушу керек дегенди билдирет. 3.3Vдан жогору чыңалуу аны өлтүрөт! Биз NodeMCU жөнүндө тынчсызданбайбыз, анткени NodeMCU өзү 3.3Vде иштейт, бул жакшы. Эгерде сиз 5V логикалык деңгээлдеги башка микроконтроллерди колдонууну пландап жатсаңыз, сиздин сынык тактаңызда орнотулган деңгээлди алмаштыргычка ээ экениңизди текшериңиз (сүрөттө көрсөтүлгөндөй). Негизинен 5V микроконтроллерден SD картага ылайыктуу 3.3Vга которот же "жылдырат". 3.3V менен бирге деңгээл которуштургучту колдонуу (мен кылган сыяктуу) анын иштешине таасирин тийгизбейт.

SD карта байланыш үчүн SPI интерфейсин колдонот. CS же Chip Select пин GPIO казыктарынын бирине туташтырылышы мүмкүн. Мен GPIO15 (D8) тандадым. Жөн гана GPIO15тен башка пин колдонсоңуз, кодго керектүү өзгөртүүлөрдү киргизиңиз

  • SC5 D5ке чейин
  • MISOдон D6га чейин
  • MOSIден D7ге чейин
  • CSден D8ге чейин
  • VCC 3.3V чейин
  • GNDден GNDге

SD картаңызды форматтаңыз

Биз колдоно турган китепкана FAT16 же FAT32 файл тутумдарын колдойт. Сиз SD картаны туура форматта форматтаңыз.

4 -кадам: Баскычтопту жасоо

Баскычтопту жасоо
Баскычтопту жасоо
Баскычтопту жасоо
Баскычтопту жасоо
Баскычтопту жасоо
Баскычтопту жасоо

Мен долбоорду мүмкүн болушунча кичине калтыргым келет. Ошентип, мен баскычтоп үчүн өзүнчө такта жасап, аны кийинчерээк башкы тактанын үстүнө орнотууну чечтим. Бул мейкиндикти үнөмдөйт.

Даяр ачкыч матрицаны сатып алса болот, бирок менде баскычтар бар болчу. Ошондой эле, мен аны мүмкүн болушунча кичине кылгым келди. Саптарды жана мамычаларды туташтыруучу типтүү түзүлүш 3 x 3 матрицасы үчүн жалпысынан 6 GPIO казыгына муктаж болот. Бул OLED дисплей менен SD карта да туташтырыларын эске алганда абдан көп.

Күмөн санаганда, Google аны өчүрүп салыңыз! Мен эмне кылдым жана бүт матрицаны көзөмөлдөө үчүн болгону 1 пин керек болгон жолду таптым. Бул Voltage Divider Matrix жардамы менен мүмкүн болду. Резисторлор ар бир сап менен мамычанын ортосунда туташкан. Баскыч басылганда, резисторлордун белгилүү бир айкалышы чыңалуу бөлүштүргүчтү түзгөн серияга туташат. Райондук схемага кайрылыңыз. Ар кандай чыңалуу микроконтроллер тарабынан окулат. Ар бир ачкыч башка чыңалууну жаратат, ошондуктан матрицанын чыгыш чыңалуусун окуу менен кайсы баскыч басылганын оңой эле табууга болот. Биз ар кандай чыңалуу деңгээлин окугубуз келгендиктен, азыр жогорку жана төмөн болгондуктан, бизге аналогдук пин керек болот. Бактыга жараша, NodeMCUде A0 деп белгиленген бир аналогдук пин бар. Маселе чечилди!

Эгерде сиз матрицаны сатып алгыңыз келсе, диаграммада көрсөтүлгөн ички байланыштарды текшериңиз. Каалаган өлчөмдөгү матрицаны колдонсо болот. Катарлар арасында 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) Таблицанын жаңыртуу убактысын коюңуз. Мисалы, 15 сек 15 сек.

2) Туташкыңыз келген маршрутизатордун SSID жана паролун киргизиңиз.

3) Эгерде сиз SD картанын CS пинин GPIO15тен башка пинге туташтырууну тандасаңыз, керектүү өзгөртүүлөрдү киргизиңиз.

4) Биз бардык ачкычтар үчүн белгилеген баалуулуктарды эстейсизби? Биз ар бир баалуулук үчүн ачкыч номерин беришибиз керек. Мен сизге окуудагы өзгөрүүлөр жөнүндө да айткан элем. Бул которуштуруучу байланыштар кемчиликсиз болгондуктан. Узак мөөнөттүү перспективада, бул маани контакттардын эскиришинен улам учурдагы нарктан четтеп кетиши мүмкүн, бул чынжырга кошумча каршылыкты кошот, ошондуктан чыңалууну өзгөртөт. Биз бул көйгөйдү коддон чече алабыз.

Биз 5 чеги менен маанинин жогорку чегин жана төмөнкү чегин кошобуз. Мисалы, мен 1 ачкыч үчүн 617 деген көрсөткүчкө ээ болдум.

  • Андан 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 (Super Glue) колдондум. Супер желим айыккандан кийин ак калдыктарды калтырат. Андыктан, аны муундар арасында гана сүйкөңүз. Супер клей менен иштөөдө тез жана так болушуңуз керек, анткени ал тез батат. Акрил цемент бул жумушка эң ылайыктуу.

Файлды колдонуп USB портуна кирүү үчүн кичине ачылды. Бул USB кабелин салуу үчүн жетишерлик чоң болушу керек.

Баскычтар үчүн алдыңкы капкакта 3x3 сеткасы түзүлдү. Бул баскычтарды кирүүнү кыйындатат. Бул көйгөйдү чечүү үчүн, мен ар бир ачкыч үчүн төрт бурчтуу кесимдерди кесип алдым, андыктан алардын баскычтары эми бетине чейин узартылды.

Ушунча кумдан, кесүүдөн, бекитүүдөн жана тууралоодон кийин, акыры жасалды!

9 -кадам: Көңүл ачыңыз

Көңүл ачуу!
Көңүл ачуу!

Акыры, бардык оор жумуштар аткарылат. Мини таблицаңызды күйгүзүңүз жана оюн менен жаңыртылып туруңуз.

Күйгүзгөндөн кийин, адегенде кирүү чекитине туташат. SD картаны баштайт. Эгерде SD карта инициализацияланбаса, ал ката көрсөтөт.

Бардык матчтардын тизмеси матчтын номери менен бирге көрсөтүлөт.

Пернетакта аркылуу дал келген номерди тандаңыз.

Упайлар көрсөтүлөт. Сиз дисплейде эмнени көргүңүз келсе, ошонун бардыгын ыңгайлаштырсаңыз болот. Мен кодду түшүндүрүүгө өтө терең кирбейт болчумун. Бул жерде талдоонун кантип иштээри жөнүндө кеңири түшүндүрмө таба аласыз.

Менюга кайтуу үчүн, "Упайларды алуу…" барагы көрүнмөйүнчө АРТКА (8 -баскыч) баскычын басып туруңуз.

Келечектеги пландар

  • ESP8266 12-E модулу менен ыңгайлаштырылган ПХБны иштеп чыгуу.
  • Заряддалуучу батареяны кошуңуз.
  • Жаңы мүмкүнчүлүктөр менен кодду жакшыртыңыз.

Курулуш сизге жакты деп үмүттөнөбүз. Аны өзүңүз жасап, көңүл ачыңыз! Дайыма жакшыртууга жана үйрөнүүгө көп нерсеге орун бар. Өзүңүздүн идеяңыз менен келиңиз. Курулушка байланыштуу ар кандай сунуштарды айтуудан тартынбаңыз. Аягына чейин турганыңыз үчүн рахмат.

Сунушталууда: