Co je Ethersex a kde ho vzít? Stručně řečeno, Ethersex je komplexní a škálovatelný firmware pro procesory Atmel AVR s podporou IP komunikace přes Ethernet, bezdrát i RS485, který má kromě toho ještě ohromnou spoustu dalších funkcí, a příjemně se konfiguruje. Chápu, že to je dost obecně řečeno, takže si pojďme říct něco víc detailů.



Ethersex vznikl jako spin-off síťového firmware pro AVR nazvaného etherrape (neptejte se mně, kam chodí Němci na ty názvy - asi německá mentalita, nicméně to -sex podle všeho znamenalo tehdy podporu IPv6). Etherrape je už delší dobu mrtvý projekt, ale Ethersex se neustále vyvíjí a když čas od času stáhnu novou verzi, vidím vždycky pár novinek. Popsat Ethersex je asi jako pokoušet se popsat sex - těžko vysvětlit, nejlépe si to zkusit na vlastní smysly. Pokud vás čtení už unudilo, a vládnete teutonštinou, můžete rovnou skočit ke zdroji.

Pro nás ostatní - co to vlastně umí?

  • jako síťový hardware lze použít ethernet (enc28j60), RFM12 (v Německu populární bezdrátové transceivery na 433 nebo 866Mhz v ceně asi 5EUR za kus), seriový port nebo USB (softwarově emulované)
  • IP síťové protokoly IPv4 i IPv6, TCP, UDP, ICMP, HTTP, BOOTP, TFTP, SYSLOG, SNMP, SMTP, NTP (Client und Server), DNS a další (ano, i Twitter)
  • další komunikace přes ZBUS, DMX, ModBus, ArtNet, I2C, RC5 (dálkové ovládání), ModBus, 1-Wire, YPort, SMS (to co ťukáte palcem na mobilu)
  • ovládání nebo získávání údajů přes HTTP server, IRC, Jabber a další, k dispozici je jednoduchý ovládací jazyk ECMD
  • spousta hardware, které můžete přímo ovládat nebo použít, namátkou LCD displeje (HD47780, ST7626, S1D15G10), kamery (Philips dc3840, pracuje se údajně na MCA25), PS/2 klávesnice, serva, PWM, AD a DA převodníky, seriové flash paměti, MMC/SD karty, FS20 (bezdratově ovládané zásuvky), MCUF/Blinkelights (blikající světýlka - zkuste googlovat), BulbDial (sluneční hodiny z LED) a věci, o kterých netuším nic, jako třeba StellaLights, NMEA, VS1053...
  • a další, na co jsem ještě nepřisel


Vytvoření aplikace, která měří teplotu venku a uvitř místnosti pomocí dvou 1-wire čidel, a zobrazí je jako HTML stránku přístupnou přes Internet je s Ethersexem hračka, a nemusel jsem nic programovat. Stačilo nakonfigurovat IP adresy, povolit podporu 1-wire, přeložit a napálit do AVR. Udělat hodiny, které se synchronizují přes NTP protokol s nějakým časovým serverem na internetu a čas zobrazí na LCD displeji vyžaduje napsat asi 20 řádků kódu - a je jedno, jestli ten systém má přímo ethernetový čip a je připojený na vaší domácí síť, nebo má bzdrátový modul a komunikuje s jiným Ethersexem, který se stará o směrování komunikace vašich bezdrátových modulů na internet. Pokud nechcete bezdrát, připojte hodiny k routeru pomocí RS485, ale nad tím vším pořád běží IP protokol, takže vaše hodiny mají svojí IP adresu a mohou použít NTP pro synchronizaci času, i když do nich vedou jen dva dráty k sériovému portu. Pokud nemáte nic s Ethernetem, nevadí, postavte si USB dongle, píchněte ho do svého PC a vyveďte z něj RS485 ke všem modulům, co máte. Jeden může měřit teploty a ovládat topení, druhý funguje jako vždy správně jdoucí budík (a může vás budit třeba přehráváním MP3 z SD karty), třetí stahuje rolety, čtvrtý venčí psa... Pokud máte nějaký modul mimo dosah drátů, nebo si drátem nechcete hyzdit byt, použijte bezdrátové RFM12 moduly.

Na čem to běží?

Na lecčems, stručně řečeno. Původní verze běžela na hardware postavený pro Etherrrape, ale teď už je k dispozici asi deset dostupných nebo doma vyrobitelných systémů, na kterých můžete Ethersex hned otestovat, anebo si postavíte vlastní, a Ethersex pro něj upravíte. Nebojte se, neměl by to být problém, jen řeknete, co máte za AVR a jak a kam je co připojené. Momentálně podporované jsou:



Z procesorů potřebujete alespoň ATMega8, ale pro větší akce doporučuju alespoň ATMega32, kam se tak tak vejde Ethernet s web serverem, podporou ZBUS, NTP a 1-Wire. S ATMega64 byste neměli mít problém i s větším projektem. V Německu je asi nejlevnější cestou koupit Pollin AVR-NET-IO, což je Mega32 s ENC28j60 a další bižuterií okolo, za 20EUR jako kit nebo 28EUR hotovka. Malý přehled hardware je třeba tady. Pochopitelně si můžete poměrně jednoduše portovat Ethersex na cokoliv, co si sami vyrobíte. Výše uvedené hodiny jsem zadrátoval na kontaktním poli asi za půl hodiny a za další hodinu už fungovaly (nejvíc času mi zabralo přijít na způsob, jak překonfigurovat můj internetový router, aby věděl, že je na mé interní síti další podsíť a jak se k ní má dostat).

Kde získat zdrojáky Ethersex?

Pokud máte Ubuntu, stačí ve svém oblíbeném instalačním programu nainstalovat kromě gcc pro avr i další balíčky, které Ethersex potřebuje. Celá kompilace Ethersexu totiž zahrnuje i zpracovávání několika skriptů v m4 a perlu atd, takže budete potřebovat víc, než jen kompilátor. Budete potřebovat následující:
  • AVR GCC-Compiler (4.1 nebo novější)
  • AVR LIBC (min. 1.6)
  • GNU-Tools (kvůli Bash, Make, m4 a awk)
  • programovací software (např. avrdude)


Podle toho, jakou distribuci používáte, zkuste následující:
Ubuntu 9.04:
apt-get install libncurses5-dev m4 gawk gcc-avr avrdude avr-libc dialog

Ubuntu 9.10:
aptitude install gcc-avr avr-libc  binutils-avr m4 gawk libncurses5-dev make dialog git-core avrdude screen


Pokud máte Windows, nejsnazší bude použít cygwin (předpokládám, že WinAVR už máte). Cygwin je sada unixových programů pro Windows včetně shellu. Získat se dá na stránce projektu Cygwin - stáhněte si instalační program a dál už uvidíte sami. Budete oproti standardní instalaci navíc potřebovat gcc-core, make, m4, git, libncurses-devel.

Ať už jste na Ubuntu, nebo Windows (uživatelé exotických systémů prosím konzultujte http://www.ethersex.de/index.php/Voraussetzungen), měli byste mít teď spuštěný shell (příkazovou řádku). Nejdřív si stáhněte nejnovější zdrojáky Ethersexu:
git clone <a href="git://github.com/ethersex/ethersex.git"  rel="external">odkaz</a>

(autoři používají systém git pro správu verzí projektu)
a potom už jen přejděte do podadresáře se zdrojáky "cd ethersex" a můžete začít příkazem "make". Za malou chvílí uvidíte před sebou konfigurační menu Ethersexu, a teď můžete zkoumat a bádat, co všechno máte v rukou.



Pro začátek doporučuji vybrat si jednu z nabízených konfigurací v menu "Load a Default Configuration", třeba můj oblíbený "Pollin AVR Net-IO", ukončit menu, uložit konfiguraci, chvíli počkat, a potom přeložit pomocí příkazu "make". Konfigurační memu znovu vyvoláte příkazem "make menuconfig", update na nejnovější verzi Ethersexu docílíte přes "git pull origin", a funguje i "make clean".

Jednoduší způsob neexistuje?

Další možností pro rychlé otestování je Firmware builder, pokud máte jednu z podporovaných konfigurací. Stačí si vybrat, jaký hardware máte, zadat parametry sítě a za chviličku vm server pošle zkompilovaný firmware na míru. Bohužel podporovaný hardware asi bude v Česku obtížně dostupný.

Zdrojáky lze stáhnout i jako zakomprimovaný archiv (tarball).

Co dál?

Pokud vás Ethersex zaujal, napište svoje otázky, postřehy nebo nápady do diskuze pod článek a jestli bude zájem, můžu napsat pokračování na přání
[Vložil kubik1]