• arduino

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.