Raspberry komunikacja SPI, IoT

0

Zacząłem interesować się ostatnio tematyką IoT. Chciałbym podłączyć do internetu sterownik pieca własnej konstrukcji. Chcę wykorzystać RPi zero. komunikacja będzie się odbywała za pomocą SPI. Nie za bardzo znam się na Rpi i Web. RPi będzie podłączone do sieci domowej za pomocą Wi-fi. Nie wiem jak dane odebrane przez SPI wyświetlić na stronie WWW. Jak wysłać dane z textboxów i stany przycisków ze strony www przez SPI? Komunikację SPI znam, ale nie wiem jak powinna wyglądać warstwa pomiędzy niskim poziomem(driverem spi) a WWW. Jedyne co mi przychodzi do głowy to pliki tekstowe. Jeden zawierający dane odebrane, drugi dane do wysłania.

Thx.

0

Niech sterownik trzyma dane w pamięci (np. temperaturę czy co tam mierzy) i posiada jakiś interfejs do komunikacji (tzn. funkcje potrafiące ten stan zwrócić*).

Następny krok zależy od wykorzystanego języka - w przypadku PHP/Pythona/etc. należałoby napisać własny moduł potrafiący się z tym sterownikiem komunikować i odczytywać dane w nim zawarte oraz przekazywać je do skryptu.

* jeśli poprzez sterownik rozumiesz coś działające po stronie kernela; jeśli sterownik jest zwykłą aplikacją, należałoby zastosować techniki IPC.

0

Może napiszę jeszcze raz. Sterownik pieca to fizyczne urządzenie oparte o mikrokontroler. Rozbudowuję ten steroniwk i chcę dodać Rpi Zero. Sterownik i raspberry Pi będą podłączone przez SPI. Na Rpi będzie uruchomiony jakiś sewer www wyświetlający kilka textboxów(np. temperatura zadana, temperatura aktualna itp.) i buttonów(zwiększ temperaturę zadaną, zmniejsz temperaturę zadaną itp) sama komunikacja poprzez SPI nie stanowi dla mnie problemu. Jak odebrane dane przekazać na stronę WWW? Jak dane z WWW wysłać przez SPI. szukam jakiegoś pomostu.

0

No to Ci przecież napisałem: musiałbyś albo napisać jakiś moduł, który doda obsługę SPI do języka, w którym tę stronę piszesz (PHP, Python etc., chociaż na RPi pewnie i coś gotowego się znajdzie), albo - idąc po linii najmniejszego oporu - mógłbyś i z poziomu języka backendowego wywoływać jakąś aplikację do komunikacji poprzez SPI.

0

Oczywiscie to tylko pseudo-kod, zeby pokazac Ci ideę. Myślę, że jednak zrozumiesz o co mi chodzi.

const char * HTML_HEAD = "<html><head><title>My IoT system</title></head><body>";
const char * HTML_TAIL     = "</body></html>";

void main(void)
{
      // initialize SPI and TCP sockets should be here
      ...
      // Sending head
      fwrite(HTML_HEAD,  strlen(HTML_HEAD) + 1, socket);
      fprintf(socket, "Actual state: %d\n", SensorStateFromSPI);
      fwrite(HTML_TAIL, strlen(HTML_TAIL) + 1, socket);
      
      // close socket
}

Edit:
Żeby odczytać dane z sieci do SPI możesz wykorzystać metodę "GET". Tutaj masz piękny przykład prostego serwera na linuxie:
http://blog.abhijeetr.com/2010/04/very-simple-http-server-writen-in-c.html

0

@JohnAmadis
Dzięki, ciekawe rozwiązanie.
Gdyby ktoś miał jeszcze jakieś pomysły, przykłady projektów proszę o info.
Ciekawy jest jak to jest zrobione w komercyjnych projektach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1