logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Uniwersalny kontroler na ESP8266 - Koncepcja pośrednika sieciowego z RS dla ATMEGA

krzbor 04 Cze 2016 15:25 2940 1
REKLAMA
  • #1 15720333
    krzbor
    Poziom 29  
    Posty: 1780
    Pomógł: 42
    Ocena: 1069
    Układów z ESP8266 jest wiele, jednak najpopularniejszy ESP-01 dysponuje tylko dwoma wejściami GPIO. Inne mają ich więcej, lecz czasem i to za mało. Myślałem o stworzeniu uniwersalnego programu dla ESP, który będzie pośredniczył pomiędzy siecią komputerową a innymi układami posiadającymi RS (zwłaszcza ATMEGA). Proszę Was o pinie, uwagi co do koncepcji. Krytyka koncepcji też mile widziana :)
    Opis koncepcji:
    ESP po pierwszym załączeniu oraz po naciśnięciu przycisku Config (przycisk podłączany do GPIO0) wchodzi w tryb AP i uruchamia się jako serwer działający na TCP/IP, załącza także DHCP. AP ma stałą nazwę i stałe hasło - w danym momencie można konfigurować tylko jedno urządzenie. Po zalogowaniu się do tego AP (np. przy użyciu smartphona) i połączeniu przez jego przeglądarkę na adres IP serwera ESP (stały adres) pojawia się prosta strona z możliwością wpisania identyfikatora naszej sieci WiFi, hasła i adresu IP modułu (dalej będzie działał jako serwer – stąd stałe IP). Po zapisaniu konfiguracji ESP się restartuje, łączy z naszą siecią i zaczyna działać jako swoisty „tunel” – czyli uniwersalny przekaźnik danych. Nasz sterownik przyjmuje zapytania w postaci GET w dwóch formach – pytanie o dane lub przesłanie danych. Wszystkie przesyłane dane są kodowane w HEX.
    Po odebraniu danych przesyła je poprzez Tx/Rx do naszego właściwego modułu sterującego. Założeniem było maksymalne uproszczenie transmisji, tak aby oprogramowując następnie procesor ATMEGA (lub inny) nie trzeba było się zbytnio kłopotać np. czasami oczekiwania itd. Komunikacja odbywa się ze stałą prędkością 9600 w następującym formacie (każdy wpis to jeden bajt):
    1. długość danych wysyłanych
    2. wysyłane dane (tyle bajtów ile w pkt 1)
    3. CRC transmisji (XOR z wcześniej wysłanych bajtów).
    Mikrokontroler po podczas odbierania danych oblicza także CRC i po odczycie wszystkich bajtów wysyła obliczone CRC zwrotnie:
    4. wysłanie obliczonego CRC, jeśli się różni od otrzymanego to koniec transmisji,
    5. wysłanie liczby bajtów odpowiedzi (długości danych),
    6. wysyłanie danych (tyle bajtów ile w pkt 5),
    7. wysyłanie CRC (analogicznie jak poprzednio),
    8. koniec transmisji.

    Działanie ESP:
    Po odebraniu CRC (pkt 4) różnego od wysłanego wysyła do klienta odpowiedź:
    CRC1=xx
    (gdzie xx to HEX CRC przesłanego w pkt. 4) – ogólnie oznacza błąd, wartość CRC może służyć jako debug.
    Po odebraniu CRC (pkt 7) różnego od wyliczonego wysyła do klienta odpowiedź:
    CRC2=xx
    (gdzie xx to HEX CRC przesłanego w pkt. 7) – ogólnie oznacza błąd, wartość CRC może służyć jako debug.
    W przypadku zgodności CRC, ESP wysyła:
    DATA=xxxxxx...
    czyli odebrane dane kodowane w HEX.

    Jak widać tak zaprogramowany ESP jest uniwersalnym modułem komunikacyjnym umożliwiającym wysłanie za jednym razem do 255 bajtów do mikrokontrolera i odczyt do 255 bajtów, przy czym liczba bajtów wysłanych i odebranych może być zerowa (np. wyłącznie odczyt stanu urządzeń). Mikrokontroler powinien przyjmować i wysyłać dane z pełną prędkością 9600, dlatego podczas wysyłania stanu urządzeń, na które trzeba długo czekać powinien je odpytywać w pętli, a wysyłać ostatnią zapamiętaną daną ze swojego cache. Oczywiście odczyt stanów wejść czy przetwornika AC może się odbywać na bieżąco.

    Interpretacją znaczenia bajtów zajmuje się program wysyłający żądania np. skrypt PHP lub bezpośrednio przeglądarka (poprzez niewidoczny IFRAME), a z drugiej strony program w mikrokontrolerze.

    Układ został pomyślany do zastosowań domowych tzn. przy założeniu, że w naszej sieci WiFi są tylko zaufane komputery. Inaczej trzeba by było pomyśleć o jakiejś autoryzacji lub podpisywaniu żądań. Najprostsze rozwiązanie to dodanie w konfiguracji (opisanej na początku) jakiegoś hasła. Komputer wysyłający zapytanie do ESP zawsze wysyła także to hasło

    Proszę o opinię – może ktoś coś takiego stworzył?
  • REKLAMA
  • #2 16012085
    krzbor
    Poziom 29  
    Posty: 1780
    Pomógł: 42
    Ocena: 1069
    Znalazłem gotowe rozwiązanie: https://github.com/tzapu/WiFiManager. Obecnie, gdy trochę poznałem ESP, a zwłaszcza ESP-12 stwierdziłem, że dodatkowy kontroler jest zbędny, gdyż wszystko można zrobić przy użyciu tego układu. Temat zamykam.
REKLAMA