blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
PHP, Arduino programátor
deadawp



Kaskáda posuvných registrov 74HC595 ovládaná cez Arduino
pridal deadawp 22.4. 2020 o 3:12



Dnes by som rád predstavil projekt, ktorý som realizoval v dvoch prevedeniach. Projekt využíva 12 posuvných registrov 74HC595 a 96 LED diód, dosku Arduino Uno s Ethernet shieldom Wiznet W5100. Ku každému posuvnému registru je pripojených 8 LED diód. Prestredníctvom LED diód sú reprezentované čísla 0-9. Každý posuvný register je vybavený 8 výstupnými vývodmi.

Každé 4 posuvné registre 74HC595 tvoria logický celok - displej pre výpis 4-ciferného čísla. Celkovo sú teda v projekte 3 logické displeje tvorené 12-timi posuvnými registrami. 

Implementácie sú kompatibilné pre Arduino dosky Nano, Mega, Uno a pre Ethernet shieldy a moduly z rodiny Wiznet, konkrétne modely W5100 a W5500 (s využitím Ethernet2 knižnice).
Realizované implementácie v projekte s Arduinom:

  • Webserver - HTTP server bežiaci priamo na Arduine, umožňuje interpretovať HTML kód
  • WebClient - Klient schopný vykonať HTTP požiadavku na vzdialený server, odoslať / prevziať dáta

Webserver:

  • Poskytuje HTML webovú stránku s formulárom, prostredníctvom ktorého je možné zadať 3 štvormiestne čísla.
  • Dáta sa po odoslaní formulára spracujú a uložia sa do EEPROM pamäte, používateľ je informovaný o spracovaní dát samostatnou podstránkou.
  • Po uložení dát je používateľ presmerovaný späť na formulár. EEPROM pamäť je energeticky nezávislá, dáta sú prístupné aj po obnovení napájania, ale aj reštarte dosky.
  • Všetky čísla sú následne reprezentované na troch displejoch tvorených 12-timi posuvnými registrami 74HC595.

WebClient:

  • Komunikácia s webserverom prebieha každých 5 sekúnd po HTTP protokole.
  • Na webserveri beží PHP webaplikácia, ktorá umožňuje prostredníctvom formulára zadať 3 štvormiestne čísla.
  • Dáta z formulára sú uložené v MySQL databáze.
  • Arduino požiadavkou načítava dáta z tejto databázy prostredníctvom dopytu na server.
  • Spracované dáta Arduino rozparsuje, následne vykreslí prostredníctvom posuvných registrov 74HC595.
  • Dáta sú uložené aj do EEPROM pamäte Arduina, využívajú sa v prípade, že vypadne spojenie s webserverom / pri reštarte Arduino dosky sú použité pre prvotné vykreslenie dát na posuvné registre.
  • Dáta sa v EEPROM prepisujú až pri zmene dát, šetria sa EEPROM bunky pred zbytočnými prepismi.

Kaskádové zapojenie pre posuvné registre 74HC595 (možno rozšíriť o x ďalších) - Export z TinkerCAD-u:


Screenshot z prevedenia Arduina ako Webservera - odoslanie dát, spracovanie, presmerovanie: 


Zo schémy je zrejmé, že na ovládanie posuvný registrov sa využívajú iba 3 dátové vodiče:

  • Dátový vývod - (SER na 74HC595)
  • Hodinový vývod - (SRCLK na 74HC595)
  • Latch (klopný) vývod - (RCLK na 74HC595)

Posuvné registre je možné kombinovať do kaskády, pričom je možné ovládať posuvnými registrami aj iné periférie - napríklad relé pre spínanie výkonových prvkov. Jedným dátovým vývodom je možné ovládať aj 500 samostatných relé (s dostatočným počtom shift registrov a napájaním). 


Pri ovládaní výstupov registrov je možné modifikovať aj byte order na najvýznamenší bit - MSB FIRST, alebo na LSB - najmenej významený bit. Vo výsledku to invertuje výstupy. V jednom prípade je rozsvietených napríklad 7 diód, v druhom prípade 1 dióda v závisloti od vstupu a byte order.

Obe implementácie využívajú EEPROM pamäť, ktorá dokáže uchovať dáta aj po výpadku napájania, alebo po reštarte dosky. Druhým využitím tejto pamäte je aj možnosť reprezentovať posledné známe dáta v prípade, že nie je možná komunikácia s webserverom (chyba konektivity, servera).

Pamäť je limitovaná na 10-tisíc až 100-tisíc prepisov. Implementácie sú navrhnuté pre čo najmenšiu záťaž pre pamät. Dáta sa prepíšu až pri ich zmene. V prípade načítania rovnakých dát z webservera / klienta sa neprepisujú v EEPROM pamäti.

Programovú implementáciu pre WebClient-a je možné vyskúšať zdarma na adrese: https://arduino.php5.sk/register-74hc595.php

Arduino komunikuje s webovým rozhraním v ktorom je možné modifikovať 3 štvorciferné čísla: https://arduino.php5.sk/led/



Prístupov 2652
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Ovládanie Arduina cez UART z počítača
[ 19.11.2020] (príspevkov 0)
ArduinoJson - knižnica pre parsovanie JS...
[ 15.11.2020] (príspevkov 0)
Overenie kradnutých vozidiel - Arduino +...
[ 11.11.2020] (príspevkov 0)
Hladinomer + Zrážkomer - Arduino / ESP82...
[ 2.11.2020] (príspevkov 0)
RFID vrátnik - update Október 2020
[ 29.10.2020] (príspevkov 0)
Digitálny potenciometer, prerušenie, deb...
[ 28.10.2020] (príspevkov 0)
Integrácia zrážkomera RG-11 do projektu ...
[ 22.10.2020] (príspevkov 0)
WiFi Termostat - ESP8266 - WiFiManager -...
[ 28.9.2020] (príspevkov 0)
Izbový termostat - Portovanie programu -...
[ 22.9.2020] (príspevkov 0)
RFID vrátnik - Ukončenie projektu
[ 9.9.2020] (príspevkov 0)