Днес бих искал да представя проект, който съм реализирал в две версии. Проектът използва 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.