• керований

Сьогодні я хотів би представити проект, який я реалізував у двох варіантах. Проект використовує 12 регістрів зсуву 74HC595 та 96 світлодіодів, плату Arduino Uno з екранованим екраном Wiznet W5100. 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.