• регистър

Днес бих искал да представя проект, който съм реализирал в две версии. Проектът използва 12 регистри за смяна 74HC595 и 96 светодиода, платка Arduino Uno с Wiznet W5100 Ethernet щит. Към всеки регистър за смяна са свързани 8 светодиода. Номерата 0-9 са представени от светодиоди. Всеки регистър за смяна е оборудван с 8 изходни клеми.

Всеки от 4-те регистри за смяна 74HC595 образува логическа единица - дисплей за изброяване на 4-цифрено число. Общо в проекта има 3 логически дисплея, състоящи се от 12 регистра на смяна.

Реализациите са съвместими за Arduino платки Nano, Mega, Uno и за Ethernet екрани и модули от семейството Wiznet, по-специално модели W5100 и W5500 (използвайки библиотека Ethernet2).
Реализирани реализации в проекта с Arduino:

  • уеб сървър - HTTP сървър, работещ директно на Arduino, позволява да се интерпретира HTML код
  • WebClient - Клиент, способен да направи HTTP заявка към отдалечен сървър, да изпраща/извлича данни

Уеб сървър:

  • Осигурява HTML уеб страница с формуляр, който ви позволява да въведете 3 четирицифрени числа.
  • След изпращане на формуляра данните се обработват и съхраняват в EEPROM паметта, потребителят се информира за обработката на данни от отделна подстраница.
  • След запазване на данните потребителят се пренасочва обратно към формуляра. EEPROM паметта е енергийно независима, данните са достъпни дори след възстановяване на захранването, но също така и рестартиране на платката.
  • След това всички числа са представени на три дисплея, състоящи се от 12 сменни регистри 74HC595.

WebClient:

  • Комуникацията с уеб сървъра се осъществява на всеки 5 секунди чрез HTTP протокол.
  • Уеб сървърът изпълнява PHP уеб приложение, което ви позволява да въведете 3 четирицифрени числа чрез формуляр.
  • Данните от формуляра се съхраняват в база данни MySQL.
  • Arduino иска данни от тази база данни чрез заявка към сървъра.
  • Обработените данни се анализират от Arduino, след което се начертават с помощта на регистри за смяна 74HC595.
  • Данните също се съхраняват в EEPROM паметта на Arduino, те се използват в случай, че връзката към уеб сървъра се провали/когато Arduino платката се рестартира, те се използват за първоначално изобразяване на данни в регистрите за смяна.
  • Данните се презаписват в EEPROM само когато данните се променят, EEPROM клетките се запазват от ненужно презаписване.

Каскадна връзка за регистри за смяна 74HC595 (може да бъде удължена с x повече) - Експорт от TinkerCAD:


Екранна снимка на дизайна на Arduino като уеб сървър - изпращане на данни, обработка, пренасочване:


От схемата става ясно, че само 3 проводника за данни се използват за управление на регистрите за смяна:

  • Изход за данни - (SER до 74HC595)
  • Часовник - (SRCLK на 74HC595)
  • Изход за заключване - (RCLK до 74HC595)

Регистрите за смяна могат да се комбинират в каскада, докато други периферни устройства също могат да се управляват от регистрите за смяна - например релета за превключващи силови елементи. Възможно е да се управляват 500 отделни релета с един изход за данни (с достатъчен брой регистри за смяна и захранване).

Когато се контролират изходите на регистрите, също е възможно да се модифицира редът на байтовете към най-значимия бит - MSB FIRST или към LSB - най-малко значимия бит. В резултат на това той обръща изходите. В единия случай например светят 7 диода, в другия случай 1 диод в зависимост от входния и байтовия ред.

И двете изпълнения използват EEPROM памет, която може да съхранява данни дори след прекъсване на захранването или след рестартиране на платката. Второто използване на тази памет е и възможността да се представят последните известни данни, в случай че не е възможно да се комуникира с уеб сървъра (грешка при свързване, сървър).

Паметта е ограничена до 10 000 до 100 000 преписа. Реализациите са проектирани за възможно най-малко натоварване на паметта. Данните няма да бъдат заменени, когато бъдат променени. Ако същите данни се четат от уеб сървъра/клиента, те не се заменят в паметта на EEPROM.