• registru

Astăzi aș dori să prezint un proiect pe care l-am implementat în două versiuni. Proiectul folosește 12 registre de schimbare 74HC595 și 96 de LED-uri, o placă Arduino Uno cu un ecran Wiznet W5100 Ethernet. La fiecare registru de schimbare sunt conectate 8 LED-uri. Numerele 0-9 sunt reprezentate de LED-uri. Fiecare registru de schimbare este echipat cu 8 terminale de ieșire.

Fiecare dintre cele 4 registre de schimbare 74HC595 formează o unitate logică - un afișaj pentru listarea unui număr din 4 cifre. În total, există 3 afișări logice în proiect, constând din 12 registre de schimbare.

Implementările sunt compatibile pentru plăcile Arduino Nano, Mega, Uno și pentru ecranele și modulele Ethernet din familia Wiznet, în special modelele W5100 și W5500 (folosind biblioteca Ethernet2).
Implementări implementate în proiect cu Arduino:

  • Server web - Server HTTP care rulează direct pe Arduino, permite interpretarea codului HTML
  • WebClient - Un client capabil să execute o cerere HTTP către un server la distanță, să trimită/să recupereze date

Server web:

  • Oferă o pagină web HTML cu un formular care vă permite să introduceți 3 numere din patru cifre.
  • După trimiterea formularului, datele sunt procesate și stocate în memoria EEPROM, utilizatorul este informat despre prelucrarea datelor printr-o subpagină separată.
  • După salvarea datelor, utilizatorul este redirecționat înapoi la formular. Memoria EEPROM este independentă de energie, datele sunt accesibile chiar și după recuperarea energiei, dar și repornirea plăcii.
  • Toate numerele sunt apoi reprezentate pe trei afișaje formate din 12 registre de schimbare 74HC595.

WebClient:

  • Comunicarea cu serverul web are loc la fiecare 5 secunde prin protocol HTTP.
  • Serverul web rulează o aplicație web PHP care vă permite să introduceți 3 numere din patru cifre printr-un formular.
  • Datele din formular sunt stocate într-o bază de date MySQL.
  • Arduino solicită date din această bază de date printr-o cerere către server.
  • Datele procesate sunt analizate de Arduino, apoi reprezentate grafic folosind registrele de schimbare 74HC595.
  • Datele sunt stocate și în memoria EEPROM a Arduino, sunt utilizate în cazul în care conexiunea la serverul web eșuează/la repornire plăcile Arduino sunt utilizate pentru redarea inițială a datelor pe registrele de schimb.
  • Datele sunt suprascrise în EEPROM numai atunci când datele se schimbă, celulele EEPROM sunt salvate de la suprascrierea inutilă.

Conexiune în cascadă pentru registre de schimbare 74HC595 (poate fi extinsă cu x mai multe) - Export din TinkerCAD:


Captură de ecran a proiectării Arduino ca server web - trimiterea de date, procesare, redirecționare:


Din diagramă reiese clar că doar 3 fire de date sunt utilizate pentru a controla registrele de schimbare:

  • Ieșire date - (SER la 74HC595)
  • Ieșire ceas - (SRCLK pe 74HC595)
  • Latch Outlet - (RCLK la 74HC595)

Registrele de schimbare pot fi combinate în cascadă, în timp ce alte periferice pot fi controlate și de registrele de schimbare - de exemplu, relee pentru comutarea elementelor de putere. Este posibil să controlați 500 de relee separate cu o singură ieșire de date (cu un număr suficient de registre de schimbare și alimentare).

Când controlați ieșirile registrelor, este, de asemenea, posibil să modificați ordinea de octeți la cel mai semnificativ bit - MSB FIRST, sau la LSB - cel mai puțin semnificativ bit. Ca urmare, inversează ieșirile. Într-un caz, de exemplu, sunt aprinse 7 diode, în celălalt caz 1 diodă în funcție de ordinea de intrare și de octeți.

Ambele implementări folosesc memoria EEPROM, care poate stoca date chiar și după o pană de curent sau după o repornire a plăcii. A doua utilizare a acestei memorii este, de asemenea, posibilitatea de a reprezenta ultimele date cunoscute în cazul în care nu este posibil să comunicați cu serverul web (eroare de conectivitate, server).

Memoria este limitată la 10.000 până la 100.000 de transcrieri. Implementările sunt proiectate pentru o încărcare cât mai mică a memoriei. Datele nu vor fi suprascrise atunci când vor fi modificate. Dacă aceleași date sunt citite de pe serverul web/client, acestea nu sunt suprascrise în memoria EEPROM.