wtorek, 27 listopada 2012

Ewolucja modułu AE

Początkowo do Arduino miał być dołączony moduł ethernet. Do takiego zestawu z jednej strony miały być podłączone autorskie moduły z rozszerzeniami na nasze potrzeby, a z drugiej strony wychodziła skrętka do switcha.

Komunikacja z Arduino miała się odbywać przez UDP. Z czasem, jak zaczęły powstawać pierwsze wersje kodu to rozbiłem się o dwie rzeczy. Po pierwsze 32kB pamięci flash to trochę mało, a 2kB SRAM to stanowczo za mało. Plan miałem i mam taki, aby kod wgrywany do Arduino był jeden, niezależnie jakie urządzenia będą podłączone i pod które piny. Natomiast dostosowanie konkretnego Arduino odbywało się dynamicznie poprzez konfigurację zdalnie przez sieć. Nie chce mieć tylu wersji kodu co fizycznych Arduino. Problem z pamięcią rozwiązuje Arduino Mega 2560 i przy okazji przybywa trochę więcej wejść/wyjść.
Na drugi problem nadziałem się przy pierwszych testach obciążeniowych podstawowych funkcji komunikacji Arduino z PC. W bliżej nieokreślonych momentach Arduino odmawiało współpracy - zawieszało się. Zupełnie niedeterministyczne zachowanie. Podejrzewając jednak błąd w swoim kodzie, przeprowadziłem test z przykładem UDPSendReceive.pde dołączanym do IDE Arduino. Sytuacja ta sama. Po datagramie piątym, trzysetnym, siedemnastym, różnie, Arduino wieszało się. W sieci nic sensownego nie znalazłem na ten temat... ale za to natknąłem się na RaspberryPi i problem przestał istnieć :)

Z koncepcji modułu AE zniknął moduł Ethernet, a pojawił się RaspberryPi. AE ewoluowało do AR :). Wad nie widzę, a idą za tym zalety, bo odciążam Arduino i mogę znacznie więcej funkcjonalności zamknąć w RaspberryPi, przez co zwiększam autonomię modułu. Aktualnie Arduino z RaspberryPi spięte są przez USB. Dla RaspberryPi powstał serwer, który z jednej strony obsługuje połączenia TCP, a z drugiej komunikację szeregową z Arduino. Dla każdego nowego przychodzącego połączenia TCP tworzony jest wątek, natomiast komunikacja z Arduino jest sekwecyjna przez zastosowanie mutexów
...i działa :)

Prototyp AR:

Forma układu przystosowana do pracy na budowie. Stylowa rączka, płyta na wysoki połysk, która wcześniej stanowiła fragment biurka z czasów studenckich :) Aśka nie przestaje się śmiać z "walizki".