Ma egy olyan projektet szeretnék bemutatni, amelyet két változatban valósítottam meg. A projekt 12 74HC595 váltóregisztert és 96 LED-et használ, egy Arduino Uno kártyát Wiznet W5100 Ethernet pajzssal. Minden váltóregiszterhez 8 LED csatlakozik. A 0-9 számokat LED-ek jelzik. Minden váltóregiszter 8 kimeneti terminállal van felszerelve.
A 4 műszakos 74HC595 regiszter mindegyike logikai egységet képez - egy kijelző egy négyjegyű szám felsorolásához. Összesen 3 logikai megjelenítés van a projektben, amely 12 műszakregiszterből áll.
A megvalósítások kompatibilisek az Arduino Nano, Mega, Uno táblákkal, valamint a Wiznet család Ethernet-pajzsjaival és moduljaival, különösen a W5100 és W5500 modellekkel (Ethernet2 könyvtár használatával).
Megvalósítások a projektben az Arduinóval:
- web szerver - A közvetlenül az Arduinón futó HTTP szerver lehetővé teszi a HTML kód értelmezését
- Webkliens - Kliens, amely képes HTTP-kérést küldeni egy távoli szerverre, adatok küldésére/visszakeresésére
Web szerver:
- HTML weboldalt biztosít egy űrlappal, amely lehetővé teszi 3 négyjegyű szám megadását.
- Az űrlap elküldése után az adatok feldolgozása és tárolása az EEPROM memóriában történik, a felhasználót külön aloldal tájékoztatja az adatkezelésről.
- Az adatok mentése után a felhasználót visszairányítják az űrlapra. Az EEPROM memória energiafüggetlen, az adatok az energiaellátás helyreállítása után is elérhetők, de a kártya újraindítása is megtörténik.
- Az összes számot ezután három, a 74HC595 eltolásregiszterből álló kijelzőn ábrázolják.
Webkliens:
- A kommunikáció a webszerverrel 5 másodpercenként történik HTTP protokollon keresztül.
- A webkiszolgáló egy PHP webalkalmazást futtat, amely lehetővé teszi 3 négyjegyű szám megadását egy űrlapon keresztül.
- Az űrlap adatait egy MySQL adatbázis tárolja.
- Az Arduino a szervernek küldött kérés alapján kér adatokat az adatbázisból.
- Az Arduino elemzi a feldolgozott adatokat, majd a 74HC595 shift regiszterek segítségével ábrázolja.
- Az adatokat az Arduino EEPROM memóriájában is tároljuk, felhasználjuk arra az esetre, ha a webkiszolgálóval való kapcsolat meghiúsulna/az Arduino kártya újraindításakor az adatok kezdeti renderelésére szolgálnak a shift regiszterekben.
- Az adatok csak akkor íródnak felül az EEPROM-ban, amikor az adatok megváltoznak, az EEPROM-cellákat mentik a felesleges felülírásoktól.
Kaszkád kapcsolat a 74HC595 műszakregiszterekhez (x-kel bővíthető) - Exportálás a TinkerCAD-ból:
Pillanatkép az Arduino mint webszerver tervezéséről - adatok küldése, feldolgozás, átirányítás:
A diagramból egyértelműen kiderül, hogy csak 3 adatvezetéket használnak a váltási regiszterek vezérléséhez:
- Adatkimenet - (SER-től 74HC595-ig)
- Óra kimenet - (SRCLK a 74HC595 készüléken)
- Retesz kimenet - (RCLK - 74HC595)
A váltási regiszterek kombinálhatók egy kaszkádban, míg más perifériákat is lehet vezérelni a váltóregiszterekkel - például relék a tápelemek kapcsolására. 500 külön relét lehet vezérelni egy adatkimenettel (elegendő számú váltóregiszterrel és tápegységgel).
A regiszterek kimeneteinek vezérlésénél lehetőség van a bájtsorrend módosítására is a legjelentősebb bitre - MSB FIRST, vagy az LSB-re - a legkevésbé jelentős bitre. Ennek eredményeként megfordítja a kimeneteket. Az egyik esetben például 7 dióda világít, a másik esetben 1 dióda a bemenet és a bájt sorrendjétől függően.
Mindkét megvalósítás EEPROM memóriát használ, amely áramkimaradás vagy a kártya újraindítása után is képes adatokat tárolni. Ennek a memóriának a második felhasználása az utolsó ismert adatok ábrázolásának lehetősége is, ha nem lehet kommunikálni a webszerverrel (csatlakozási hiba, szerver).
A memória 10 000 - 100 000 átiratra korlátozódik. A megvalósításokat a lehető legkevesebb memóriaterhelésre tervezték. Az adatok nem kerülnek felülírásra, amikor megváltoztatják őket. Ha ugyanazokat az adatokat beolvassa a webszerverről/kliensről, akkor azokat nem írja felül az EEPROM memória.