Ads_700x200

tme

wtorek, 24 lutego 2015

AVR WEB - WIFI HTTP Server !

Witam,

Hmmm wyszedł dość skomplikowany tytuł ale chyba każdy z was wie o co chodzi. Dzisiaj rozpoczyna się krótki cykl poradnika na temat jak uruchomić serwer HTTP (web server) na małym procku AVR. Uwaga! tym razem nie będziemy bawić się w implementację stosu TCP w procku. Tym razem zaprzęgniemy do roboty w tym zakresie moduł ATNEL-WIFI232-T, który posiada już wbudowany stos TCP. Przy okazji niejako uzyskamy taki serwer z możliwością pracy bezprzewodowej, czyli radiowo! po WiFi!. Przygotujcie się na dawkę szaleństwa ;) ... przy czym mówiąc to mam na myśli nie tylko fakt - super łatwej implementacji tego rozwiązania ale także (a może niestety) nader rozbudowanej dawki mojego poczucia humoru. Jeśli kogoś moje poczucie irytuje i nie odpowiada to proszę sobie od razu przewinąć filmik do czasu 19:10. ;) 


Uwaga, zanim powstanie ostatnia część tego cyklu, oddaję już do waszej dyspozycji dostęp bezpośredni do serwera HTTP, który będziemy budowali razem w tym poradniku. Już możecie testować, sprawdzać co się dzieje, jak to pracuje itp ;) Wystarczy kliknąć w poniższy link:


Serwer uruchomiony jest  w oparciu o zestaw ATB, procesor ATmega32A i moduł ATNEL-WIFI.

Po obejrzeniu ostatniej części, każdy z was będzie sam we własnym zakresie tworzył takie serwerki.

zapraszam na pierwszą część:

część 01



część 02



część 03

część 04

część 05


część 06


część 07




;)

46 komentarzy:

  1. Czy stos w ATNEL-WIFI232-T obsługuje wiele ramek, czy tylko jedną jak w przypadku przykładów ze strony tuxgraphics.org na ENC28J60?

    OdpowiedzUsuń
    Odpowiedzi
    1. A co to znaczy "obsługuje wiele ramek" ? nie umiem odpowiedzieć na tak zadane pytanie bo nie wiem co masz na myśli :( ... Ze swojej strony mogę tylko powiedzieć że ten moduł potrafi w JEDNYM momencie obsłużyć max 5 połączeń TCP. Biorąc zaś pod uwagę że ustalamy jak tu np 2 sekundy sesji dla TCP/HTTP to można powiedzieć że w każdych 2 sekundach, pięć nowych osób może wyświetlić sobie stronkę ;) .... być może o to ci chodziło?

      Usuń
    2. Ojj... przepraszam, ale napisałem, nie ramka, tylko pakiet... tak to jest jak się robi coś na szybko.
      Używam trybu WWW Serwer, a ich (tuxgraphics.org) obsługa stosu zapewnia tylko przesłanie strony o wielkości do 1500 bajtów (czyli jeden pakiet IP), a w pewnym momencie jest to dla mnie ograniczeniem.
      Czy moduł ATNEL-WIFI232-T daje możliwość przesłania w takim trybie strony o wielkości przekraczającej 1500 bajtów (czyli w postaci wielu pakietów IP)?

      Usuń
    3. Tak na prawdę to i tuxgraphics może przesyłać więcej w jednym pakiecie ;) bo tu mówimy o TCP a nie o UDP. To sztuczne ograniczenie w Tuxgraphics spowodowane jest raczej niedostatkiem pamięci RAM z jakim zwykle spotykają się użytkownicy procków 8-bitowych. Generalnie można sobie w tym stosie to poszerzyć no ale to już trzeba sobie pogrzebać nieźle w ich bibliotekach i uważać na setki zależności.

      Reasumując - skoro mamy TCP więc mamy przesyłanie danych strumieniowe a nie datagramy jak w UDP, to oznacza - że w module ATNEL-WIFI nie ma absolutnie żadnego ograniczenia ;) pod tym względem. Proszę zrozumieć - że procek widzi ten moduł przez RS232 i może pchać pan do tej RURY ile wlezie ;) .... ile wlezie

      Usuń
  2. Bardzo podoba mi się Twoje rozwiązanie z użyciem modułu ATNEL-WIFI, ponieważ jeśli dobrze zrozumiałem z poradnika - możliwe jest postawienie dzięki temu modułowi schludnie wyglądającą stronę, za pośrednictwem której można sterować urządzeniami przez Internet z dowolnego miejsca.. i to wszystko w oparciu o skromny 8-bitowy procesor AVR. WI-FI to jednak komunikacja radiowa, która jest mniej pewna (bardziej zawodna) od transmisji przewodowej (po kablu sieciowym). Do rozwiązań domowych (amatorskich) ATNEL-WIFI jest jak znalazł, natomiast czy instalacja takiego systemu w zakładzie produkcyjnym nie byłaby ryzykowna? Naprawdę dobrze działa ten moduł u Ciebie i pytam, bo zastanawiam się nad wdrożeniem Twojego rozwiązania u siebie w firmie, ale nie mam doświadczenia w modułach sieciowych, stąd moje obawy. Chciałbym mieć możliwość zdalnego sterowania niewielkich linii produkcyjnych przez Internet.
    Przychodzi mi na myśl rozwiązanie nieco inne niż to w Bluebook'u - tzn. komunikacja AVR ze stroną postawioną na serwerze hostingowym. Czy to jest najpewniejszy sposób, aby 8-bitowy AVR mógł komunikować się ze stroną zawierającą liczną grafikę?

    Pozdrawiam, Slawek_G

    OdpowiedzUsuń
    Odpowiedzi
    1. No tak ale tu w tej wypowiedzi sobie kolega troszkę sam zaprzecza. Bo po pierwsze obawiasz się komunikacji radiowej a z drugiej strony marzy ci się przepasiona grafiką strona w 8 bitowym procku (nawet jeśli miałby procek targać to z hostingu) .... Ja ... wolałbym WIFI i skromną stronę niż kabel i wypasioną grafikę. To tak tytułem wstępu i troszkę z przymrużeniem oka.

      Na poważnie to chyba kolega nic do tej pory nie robił z takimi modułami wifi i dlatego na razie boi się nowego i tego co nieznane. Rozumiem to - ale warto wziąć, dotknąć i spróbować a szczególnie w swoich przemysłowych warunkach bo jedne drugim nie równe, zamiast pytać się kogoś (nawet mnie) czy akurat u ciebie to zadziała? .... Powiem tak znam ludzi, którzy stosują to u siebie w rozwiązaniach przemysłowych i dzisiaj się cieszą bo są "do przodu" pod wieloma względami dzięki takim rozwiązaniom. Na prawdę polecam sprawdź ;) na naszym forum nawet jeden kolega opisywał że u siebie na hali ma 30 urządzeń pracujących z modułami wifi. Akurat nie moduły od nas bo wcześniej robił gdy my jeszcze ich nie mieliśmy - ale sam jest zaskoczony jak to ślicznie śmiga

      a ja ze swojej strony polecałbym jeśli idzie o profesjonalne rozwiązanie napisać aplikację na PC czy na Androida czy na inny jeszcze system do komunikacji i sterowania po wifi ale za pomocą UDP. A nie tam bawić się w strony internetowe do sterowania maszynami przemysłowymi. Strony to mogą być dobre do jakiejś tam np konfiguracji urządzenia, którą się przeprowadza raz na jakiś czas .... Ale to tylko moje przemyślenia i oczywiście nie muszę mieć racji

      Usuń
    2. komunikacja TCP zapewnia weryfikację poprawności przesłanych danych więc w środowisku produkcyjnym jak najbardziej się nadaje. Co do grafiki, a kto powiedział, że grafika musi być "podawana" z AVR-a? Wystarczy tylko wskazać skąd przeglądarka ma sobie pobrać grafikę a nawet skrypt CSS i mieć piękną stronę przesyłając z AVR-a tylko treść i opisy co gdzie jest. Sprawdzone i działa. Pozdrawiam.

      Usuń
    3. No właśnie na naszej stronce

      http://www.wifi232.atnel.pl:8888

      są właśnie grafiki ciągnięte nie z procka AVR ;) a z hostingu atnela. Tylko ja jeszcze nie umiem bawić się CSS'em ;) dlatego ta stronka tak biednie wygląda

      Usuń
  3. wiecie może co używa pan mirek za programu do dzielenia aplikacji na pulpicie ??

    OdpowiedzUsuń
    Odpowiedzi
    1. Ja wiem :) ... gościu używa programu co się nazywa "Fences" :D

      Usuń
    2. dziękuje :) Panie mirku

      Usuń
  4. Witam, dopiero wieczorem będę mógł na spokojnie obejrzeć poradnik. Na szybko chciałbym się tylko dowiedzieć czy jest możliwość obsługi skryptów php czy tylko czysty html?

    OdpowiedzUsuń
    Odpowiedzi
    1. Proponowałbym nieco precyzyjniej zadawać pytania ;) Bo co to znaczy czy jest możliwość obsługi PHP ? Masz na myśli to czy w procku jest możliwość odpalania skryptów PHP ??? ;) to może najpierw jednak obejrzyj poradnik i zobacz o co chodzi ;) .... bo nie wiem jak sobie wyobrażasz odpalenie serwera PHP ? w procku ? .....

      ale jeśli pytasz czy można wysyłać z procka AVR zapytania PHP do serwerów na hostingu ? czy można analizować odpowiedzi ze skryptów PHP z hostingów - to odpowiedź brzmi TAK. Tyle że to akurat nie jest tematem tego poradnika - będzie w jednym z następnych ;)

      Usuń
  5. Tak na marginesie to skąd Mirku tak spokojnego konika wziąłeś??? ;-P

    --
    Grzegorz...

    OdpowiedzUsuń
    Odpowiedzi
    1. Chyba go w którymś poradniku pokażę ;) bo sporo osób pyta

      Usuń
  6. Jak zwykle super poradnik, już nie mogę się doczekać następnej części.

    Może jeszcze prosty przykład jak zapalić i zgasić diodę w AVR za pomocą tej strony, i jak odczytać stany wejść procesora , czy temperatury po magistrali 1 wire.

    OdpowiedzUsuń
    Odpowiedzi
    1. No ale przecież już po TRZECIEJ części widać jak zgasić / zapalić diodę LED w AVR ... no panie kolego ;) a po co pokazuję i omawiam ten formularz ? ... wprawdzie pokazuję jak wpisać własne imię i żeby ono się wyświetliło na LCD i na stronie - no ale teraz rusz WYOBRAŹNIĘ proszę

      toż możesz wysłać sobie zamiast imienia np komendę LED_ON albo LED_OFF i w procku rozpoznaj te komendy i w zależności od nich albo zgaś albo zapal diodę ... no na prawdę ... tu ciężko już dalej coś pokazywać - przecież masz.

      Tak samo "jak wyświetlić temperaturę" ???? ... toż w Bluebooku masz opis jak wyświetlać temperaturę na LCD, a teraz spójrz sobie w tym poradniku na zmienną o nazwie "licz1" czyli licznik odwiedzin .... co nie jest wyświetlany na stronie ? .... toż w IDENTYCZNY sposób możesz wyświetlić temperaturę - w czym widzisz problem ? no to DOKŁADNIE TO SAMO ;)

      Usuń
  7. Niestety problem jest z tym serwerem na AVR.
    Wpisałem swoje imię -> "send" i wywala błąd 404.
    Cofam i robię to samo i OK.
    Cofam do strony początkowej i błąd.
    Odświeżam i tekst strony widoczny w przeglądarce.
    Itp.
    Raz dobrze, a raz źle.

    OdpowiedzUsuń
    Odpowiedzi
    1. Może tobie uda się napisać lepszy serwer http, tego ci życzę ;) A tymczasem nie bierzesz w ogóle pod uwagę panie kochany że setki ludzi próbują wejść jednocześnie i stąd problemy przejściowe ;) ... sprawdź sobie o innej porze a najlepiej to sam sobie postaw taki serwer w sieci LAN i wtedy sprawdź ... Zamiast pisać że z serwerem jest coś nie tak ... To nie jest hosting na którym leży np portal www.onet.pl .... panie, to jest 8-bitowy AVR

      Usuń
    2. Ja to wiem, ale chciałem zwrócić tylko uwagę aby inne osoby przypadkiem robiąc takie serwer nie wyobrażały sobie bóg wie czego ;)

      Usuń
    3. No ja jakoś nie mogę sobie nawet wyobrazić, żeby ktoś wpadł na pomysł postawienia portalu internetowego na takim AVR'ku ;) - to by trzeba było mieć ułańską fantazję

      Usuń
  8. Pnie Mirku, czy jest możliwość zamieszczenia w formie załącznika (pod tym poradnikiem) z zawartością kodu jaki został użyty w poradniku, w celu lepszej analizy kodu, na filmie jest to dość szybko pokazane, i dla zupełnie początkujących (takich jak ja) jest to trudne do ogarnięcia .

    OdpowiedzUsuń
  9. Przyłączam się do prośby wyżej, czy jest szansa na plik main.c z poradnika. Wczoraj próbowałem wykonać ćwiczenie z poradnika i niestety po kilku linijkach dałem sobie na luz, ciężko się przepisuje kod z filmu i dużo błędów powstaje.

    OdpowiedzUsuń
  10. Ja również proszę o kody z poradnika.

    OdpowiedzUsuń
  11. No MIrku, już wiem co odpowiesz. Że dajesz nam wędkę a my - ryby powinniśmy już sami łowić, ale wydaję mi się , że takich próśb o kod z tego poradnika jest więcej i doczekamy się od naszego mistrza tego kodu. Coś mi się wydaje , że w tym poradniku koń ( z bonanzy) się spłoszył i popędził szybko jak dziki, i nie wszystko udało się zanotować.

    OdpowiedzUsuń
  12. Mistrzuniu nasz odezwij się i wysłuchaj prośby swoich uczniów, również przyłączam się do swoich poprzedników o prośbę o kod z tego poradnika.

    OdpowiedzUsuń
  13. Mirek , no popatrz jak uzależniłeś swoich słuchaczy (uczniów od siebie) ( czyżby jakaś hibnoza atnelowska?), wystarczy kilka dni bez kontaktu z Tobą, a tu już panika się wkrada, czy nasz mistrz odpowie na nasze prośby????

    OdpowiedzUsuń
  14. Panowie, panowie ... jaka hipnoza, jaki mistrz ? .... zwykły kowalski jestem ...

    a co do kodu to dajcie mi chwilkę czasu .... poważnie w zeszłym tygodniu nawet niedzieli wolnej nie miałem .... dzisiaj, poza egzystencją sporadyczną na forum czy YT ... jestem oderwany od kompa

    OdpowiedzUsuń
  15. Coś nasz Mistrzuniu całkiem zapomniał o swoich uczniach, tydzień mija od naszej prośby o kod , a tu cisza.

    OdpowiedzUsuń
  16. Mirku co z kodem? Ja wiem, że masz wiele pracy, ale bardzo by nam (początkującym) to pomogło.

    OdpowiedzUsuń
    Odpowiedzi
    1. No jeszcze będzie trzeba troszkę poczekać :(

      Usuń
  17. Bardzo dziękuję Panu Mirkowi za ten mega poradnik za pomocą , którego wiele klapek się w mojej głowie pootwierało i wiele nowych wizji powstało. Mega dzięki i szacunek. W wyborach prezydenckich Pan Mirek ma mój głos :)

    Pozdrawiam
    Wojciech Kukawski

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie ma to jak dobre "wizje" ;) życzę dużo powodzenia i cieszę się, że mogłem choć troszkę pomóc ...

      Usuń
  18. Kto by pomyślał, że można znaleźć tak dokładny poradnik :). Widzę, że nie tylko mi przypadł do gustu. Bardzo pomocny, pomaga zrozumieć wiele kwestii :)

    OdpowiedzUsuń
    Odpowiedzi
    1. Liczę na to, że kolejne które się ukażą będą równie treściwe ;) zapraszam wkrótce

      Usuń
  19. Interesujący i bardzo rzeczowy wpis. Brawo! Dobrym pomysłem było zamieszczenie filmików z Youtube. Zawsze to fajny sposób dotarcia do potencjalnego odbiorcy. No i przede wszystkim obrazowy. A w dzisiejszym świecie obraz i dźwięk to bodźce, na które reagujemy najcześciej. Mamy też pamięć obrazkową. Świat się zmienia, przemy do przodu. Warto iść za tym postępem.

    OdpowiedzUsuń
  20. Dzień dobry. Czy planuje Pan w najbliższym czasie poruszyć temat WEB Client (php)? Pozdrawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Cały czas pracuję nad tym poradnikiem

      Usuń
  21. Dobry wieczór bardzo ciekawi mnie jak rozwiązał Pan wyświetlanie temperatury na stronie , jeśli przez nieuwagę przeoczyłem to przepraszam i proszę wskazać to nadrobię :)
    Mati
    PS
    z niecierpliwością czekam na przesyłkę z modułem :)))))))

    OdpowiedzUsuń
  22. Już wiem Panie Mirku :))) przepraszam za kłopot wystarczyło chwilę się zagłębić
    Mati

    OdpowiedzUsuń
  23. Witam, co się stało z poradnikami?

    OdpowiedzUsuń
    Odpowiedzi
    1. Po świętach postaram się to naprawić, teraz nie mam jak :(

      Usuń
  24. Witam. Czy ATB WiFi Config będzie udostępniony w wersji z jakiej korzystasz w poradniku "część 6" czy ta wersja jest dostępna odpłatnie wraz z zakupem modułu WiFi. Wersja która jest obecnie dostępna na stronie nie generuje adresów położenia zmiennych w tablicy html[].

    Marek

    OdpowiedzUsuń
    Odpowiedzi
    1. Ok. Już doszedłem jak działa ta nowsza wersja. Ciąg znaków #@...@# jest zamieniany na 0x01 i zliczana jest ilość wystąpień tego ciągu. 0x01 powoduje wywołanie callbacka z parametrem jakim jest numer wystąpienia ciągu #@...@#.

      Marek

      Usuń
    2. No coś w ten deseń, ja sam już zapomniałem ;)

      Usuń