. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Síťové aplikace s mikrokontroléry Atmel
22. září 2010 - 9:30 | Pandatron | Síťové aplikace s mikrokontroléry Atmel | Komentářů: 4  

Síťové aplikace s mikrokontroléry Atmel

Cílem projektu je podat přehled o možnostech realizace nízko a středně výkonných síťových aplikací s využitím mikrokontrolérů Atmel AVR ATmega.

Ethernetové řadiče
Při realizaci síťových aplikací je zařízení připojeno do sítě pomocí Ethernetu a komunikuje přes něj s jinou částí systému. Z toho vyplývá, že se zařízení musí skládat z řídícího obvodu (v našem případě MCU AVR ATmega) a ethernetového řadiče.

Výkonnější mikrokontroléry jako například některé MCU z řady AVR32 mají integrovaný Ethernetový řadič. Zpravidla se jedná pouze o MAC vrstvu, tedy vrstvu pro řízení přístupu k médiu. Pro komunikaci je potřeba navíc PHY rozhraní. PHY rozhraní v tomto případě tvoří poslední, fyzickou, vrstvu. MAC a PHY spolu komunikují standardizovaným rozhraní MII nebo RMII a nezáleží tedy na typu použitého média (TP/koaxiál/optika).

V případě použití mikrokontrolérů ATmega je potřeba zvolit vhodný ethernetový řadič, pomocí kterého bude probíhat komunikace. Řadič může být k MCU připojen pomocí rozhraní UART, SPI nebo paralelně. Na trhu lze v současné době nalézt následující řadiče:

  • Realtek RTL8019 – paralelní, 10Base-T
  • Crystal LAN CS8900A – paralelní (ISA), 10Base-T
  • SMCS LAN91C111 – paralelní, 10Base-T/100Base-TX
  • Microchip ENC28J60 – SPI, 10Base-T
  • Connect One Nano SocketLAN – UART/SPI/USB, 10Base-T/100Base-TX

Zmíněné paralelní řadiče jsou sice poměrně hodně používané, ale vzhledem k jejich ceně a složitosti zapojení (velké množství vývodů) nejsou příliš vhodné pro méně náročné nebo amatérské aplikace, nicméně jsou součástí některých projektů jako Ethernut 1 (ATmega128+RTL8019), Ethernut 2 (ATmega128+ LAN91C111) nebo „Ethernut kompatibilní“ moduly Charon 2 (ATmega128+ RTL8019).

Nano SocketLAN
Zajímavou možností je využití řadiče Nano SocketLAN, který je postaven na mikrokontroléru s výkonným jádrem ARM7. Řadič je v podstatě samostatná jednotka, která přímo podporuje protokoly ARP, ICMP, IP, UDP, TCP, DHCP, DNS, NTP, SMTP, POP3, MIME, HTTP, FTP, TELNET a běžné šifrovací protokoly. Řadič obsahuje 256kB uživatelskou paměť, kam je možné nahrát serverovou aplikaci. Pomocí integrovaného HTTP serveru pak může být realizováno například vzdálené řízení nebo dohled nad nějakým zařízením. Do řadiče nelze nahrát libovolnou aplikaci, takže je tedy nutné řadič připojit na mikrokontrolér, který bude jádrem systému. Vzhledem k tomu, že veškeré náročné úkony spojené s komunikací v síti provádí sám, není většinou potřeba příliš výkonné řídící MCU.


Obr. 1: Schéma aplikace s Nano SocketLAN

Komunikace s řadičem může probíhat skrz rozhraní UART, SPI nebo USB (s emulací sériové linky). Výměna informací probíhá pomocí AT příkazů, konkrétně pomocí výrobcem rozšířené sady příkazů AT+i. Samotné řízení spojení je pak velice jednoduché, protože s řadičem komunikujeme stylem „SESTAV TCP SPOJENI S 192.168.1.1“ s reakcí „CISLO SPOJENI JE 1“. Všechny zbylé úkoly, které je nutné při vytváření spojení obstará řadič sám. K řadiči je dostupná také konfigurační utilita pro os Windows. Jednoduchost použití řadiče na jedné straně je vyvážena jeho poměrně vysokou cenou (cca 1000 Kč).

Řadič Nano SocketLAN je také součástí kompletního miniaturního modulu PWLAN nabízeného společností Pandatron. Tento modul je postaven na zmíněném řadiči a mikrokontroléru ATmega48. S cenou okolo 1500 Kč se jedná o zajímavou možnost realizace síťové aplikace. Výrobce poskytuje na svém webu i podklady pro výrobu, nastavení a uvedení modulu do provozu.

Microchip ENC28J60
Dalším oblíbeným řadičem je ENC28J60 firmy Microchip. Jedná se o jednočipový modul s 8kB vstupním a 8kB výstupní bufferem, komunikující pomocí rozhraní SPI (max 20MHz) a cenou okolo 100 Kč. Řadič na rozdíl od NanoSocketLAN poskytuje pouze Tx/Rx, MAC a PHY vrstvu a veškeré úkony spojené s vyššími vrstvami musí být realizovány na úrovni řídicí aplikace v mikrokontroléru. Pro náročnější aplikace je pak potřeba vyššího výkonu MCU. Řadič ke svému běhu vyžaduje 25 MHz krystalový oscilátor a obvody pro galvanické oddělení řadiče od ethernetové linky. Galvanické oddělení se provádí oddělovacími transformátory pro Ethernet, nebo může být využitý tzv. MagJack, což je konektor RJ45 s integrovaným oddělovacím transformátorem a stavovými ledkami.


Obr. 2: Schéma aplikace s ENC28J60 MagJack

Levné MagJacky (resp. jejich čínské kopie) Taimag RJLBC u nás nabízí například firma Kramara. Cena okolo 70 Kč pak může být rozhodujícím faktorem proč nepoužít kvalitnější MagJacky Bell Stewart (od cca 120 Kč).

Jedna z možností realizace síťové aplikace s ENC28J60 a ATmega88 je popsána v článku An AVR microcontroller based Ethernet device na serveru tuxgraphics.org. V jiném článku HTTP/TCP with an atmega88 microcontroller (AVR web server) je pak popsán příklad realizace HTTP serveru, podobně jako v článku Malý webový server. Dalšími projekty zabývající se touto „architekturou“ je například Etherape (ATmega32), který je však dokumentován pouze v němčině.

Možný problém při použití řadiče ENC28J60 je to, že řadič pracuje s napájením, vstupy a výstupy na 3,3V (5V tolerantní). Mikrokontroléry ATmega pak pracují na maximální výkon s 5V. Jedním řešením problému je provozovat mikrokontrolér na 3,3V. V takovém případě pak nelze dosáhnout maximálního pracovního kmitočtu MCU. V některých případech to vadit nemusí, ale v případě potřeby vyššího výkonu je potřeba hledat jiné řešení. Tím je převodník úrovně 5-3,3V (například 74AHCT541). Převodník úrovně je použit také v kompletním modulu Asix Spinet, který obsahuje dále řadič ENC28J60, MagJack a podpůrné obvody.

Pro náročnější aplikace lze využít výkonnější řadiče Microchip ENC424J600 nebo ENC624J600.

Softwarová architektura
Software aplikace je tvořen hlavní, řídící aplikací a knihovnou umožňující komunikaci v síti. Knihovna tak poskytuje prostředky řídící aplikaci. V případě využití modulu Nano SocketLAN je situace velice jednoduchá, protože knihovna nemusí být použita. Při komunikaci s tímto modulem se pouze posílají a přijímají data z UARTu. V ostatních případech je vhodné použít nějaký existující TCP/IP stack. TCP/IP stack je v podstatě knihovna, pracující na několika vrstvách modelu TCP/IP. Aby mohl stack využívat nějakého ethernetového driveru, musí být opatřen příslušným ovladačem. Aby stack mohl správně fungovat, je nutné jej provozovat pod nějakým RTOS.

TCP/IP stack
Z volně dostupných stacků pro mikrokontroléry stojí za zmínku oblíbené stacky Adama Dunkelse lwIP a uIP. Oba stacky jsou portovány pro AVR a obsahují i drivery pro ethernetový řadič ENC28J60. lwIP je výkonnější a také paměťově náročnější stack. Autor udává, že zabírá cca 40 kB programové paměti a vyžaduje cca 10 kB operační paměti. Lze jej tedy využít ve výkonnějších mikrokontrolérech ATmega. Stack podporuje protokoly IP, ICMP, UDP, TCP, DHCP, PPP, ARP. Jeho jednodušší bratr je stack uIP. Jedná se o co nejvíce odlehčený stack pro méně náročné aplikace - jeho výkon není příliš velký, ale pro některé aplikace dostačující. K provozu vyžaduje cca 5 kB programové a cca 2 kB operační paměti. Lze jej tedy provozovat na téměř všech mikrokontrolérech řady ATmega. TODO Podobně jako oba zmíněné stacky lze využít například knihovnu Procyon AVRlib, obsahující mimo jiné TCP/IP stack.


Obr. 3: TCP/IP stack

OS/firmware
Trochu jinou cestou může být použití nějakého předpřipraného OS nebo firmware. Tyto systémy se vyznačují tím, že jsou slušně vybavené potřebnými prostředky pro síťové aplikace. Systémy také zpravidla obsahují spoustu příkladů, ukázek, popřípadě mají připravený webový server pro vzdálený přístup přes internetový prohlížeč.

Jedná se o například o projekt Ethernut se systémem Nut/OS. Nut/OS vyžaduje hardware kompatibilní s koncepcí Ethernut 1, Ethernut 2 nebo Ethernut 3. To znamená, že nelze použít s ethernetovým driverem ENC28J60. Jedná se však o kompletní systém, jehož distribuce je vybavená šikovným konfigurátorem. Pomocí něj lze nakonfigurovat systém pro konkrétní podporovanou konfiguraci apod.


Obr. 4: Nut/OS konfigurátor

Nut/OS obsahuje vlastní RTOS, TCP/IP stack s podporou protokolů TCP/IP, UDP/IP, DHCP, DNS, HTTP, ARP, ICMP a ovladače kompatibilních ethernetových driverů. Jedná se tak o solidní základ aplikace. Základní popis projektu Ethernut je uveden v článku Co to je Ethernut.

Alternativou k Ethernutu je například firmware Ethersex. Jedná se o méně náročný systém pro MCU AVR. Podobně jako Ethernut je tato distribuce vybavena konfigurátorem (pouze pro OS Linux), ve kterém lze nastavit jak HW parametry, tak SW parametry systému.


Obr. 5: Ethersex

Ethersex je vybaven ovladačem pro ENC28J60 - lze jej tak provozovat na méně výkonném hardware než Ethernut. Ethersex podporuje protokoly Pv4 i IPv6, TCP, UDP, ICMP, HTTP, BOOTP, TFTP, SYSLOG, SNMP, SMTP, NTP, DNS. Popis práce s Ethersexem je uveden v článku Ethersex.

Závěr
V práci byl uveden stručný přehled o možnostech realizace méně náročných síťových aplikacích s využitím mikrokontrolérů Atmel AVR ATmega. V odkazech v textu a v literatuře lze získat spoustu podkladů pro výrobu zařízení a také ukázky zdrojových kódů, nebo kompletní aplikace.

Literatura:
[1] 10/100 BaseT PHY a MAC od Microchipu [online]. Vysoké Mýto, [cit. 24. 5. 2010].
[2] An AVR microcontroller based Ethernet device [online]. USA, [cit. 24. 5. 2010].
[3] HTTP/TCP with an atmega88 microcontroller (AVR web server) [online]. USA, [cit. 24. 5. 2010].
[4] ENC28J60 Data Sheet - Stand-Alone Ethernet Controller with SPI Interface , Chandler: Microchip, 2008. 95s., [cit. 24. 5. 2010].
[5] SPINET - Modul rozhraní Ethernet SPI - Uživatelská příručka , Praha: Asix, 2007. 8s., [cit. 24. 5. 2010].
[6] PWLAN - hardware [online]. Vysoké Mýto, [cit. 24. 5. 2010].
[7] Ethernut Project [online]. Německo, [cit. 24. 5. 2010].
[8] Co to je Ethernut [online]. Praha: HW server s.r.o.,, [cit. 24. 5. 2010].
[9] Ethersex [online]. Kutná Hora, [cit. 24. 5. 2010].
[10] Ethernut 1.3 Hardware [online]. Německo, [cit. 24. 5. 2010].
[11] Ethernut 2 [online]. Německo, [cit. 24. 5. 2010].
[12] Charon 2 - Ethernut - modul vestavného Ethernetu [online]. Praha: HW group s.r.o., [cit. 24. 5. 2010].
[13] Nano SocketLAN [online]. San Jose: Connect One Semiconductors, Inc., [cit. 24. 5. 2010].
[14] Malý webový server [online]. Vysoké Mýto, [cit. 24. 5. 2010].
[15] uIP [online] . Švédsko, [cit. 24. 5. 2010].
[16] Procyon AVRlib - C-Language Function Library for Atmel AVR Processors [online]. Gainesville: Pascal Stang, [cit. 24. 5. 2010].

Autoři: Bc. Petr Janů, Bc. Petr Kašpar - Fakulta elektrotechniky a komunikačních technologií VUT v Brně







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (4):

Zobrazit starší 30 dnů (4)...

host
4. Dne 01. 12. 2011 v 10:25 zaslal host
ENC28J60
Je zajímavé, jak se ty ENC28J60 stále drží. Přitom jsou na trhu už spoustu let a pokud se nepletu, jde o první verzi podobného obvodu.


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
Nabíječka Li-ion/Li-pol akumulátorů - PUCHRG
Moduly PUCHRG – nabíječky Li-ion a Li-pol článků představují snadné řešení pro bezpečné a rychlé nabíjení Lithium-iontových a Lithium-polymerových akumulátorů.
Skladem od 180 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007