Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ESP32 WROOM jednoczesna obsługa WiFi , BLE oraz client http json

MAJSTER XXL 13 Nov 2021 19:59 387 6
  • #1
    MAJSTER XXL
    Level 29  
    Witam,
    nie znam zbytnio ESP32, ale udało mi się ogarnąć ArduinoIDE do kompilowania i ładowania wsadu to tej płytki WROOM.
    Projekt jest dość szczytny, bo zawiera już działający kod z obsługą BLE, który odczytuje system ciągłego monitoringu glikemii.
    Ja natomiast chciałem spróbować swoich sił, aby te odczytane dane były dodatkowo ładowane jako pomiary glikemii przez sieć wifi z ESP32
    np. do mojej testowej strony z innego projektu:
    https://testowycgm.herokuapp.com/
    na razie dużym zaskoczeniem dla mnie było to, że samo dodanie kilku includów powoduje wygenerowanie wsadu, który się nie mieści w pamięci ESP32, proszę o jakieś porady, co z tym zrobić, pewnie błędnie podchodzę do tematu, ale projekt jest dość ważny dla wielu użytkowników tego systemu CGM. Czy ta jednoczesna obsługa BLE i wifi jest tak zasobożerna dla ESP32?
    ESP32 WROOM jednoczesna obsługa WiFi , BLE oraz client http json
    Doczytałem, że ESP32 musi się podzielić radiem dla obsługi obu transmisji, więc dobrze by było, gdyby BLE odebrało swój pakiet i poszło spać na kolejne 4 minuty, a powiedzmy zaraz po uśpieniu BLE wifi posłałoby pakiet na stronę i też mogłoby spać do następnej sekwencji.
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • #2
    khoam
    Level 41  
    Wybierz w Arduino IDE schemat partycji, gdzie jest przeznaczona większa partycja dla kodu aplikacji np. Huge APP albo Minimal SPIFFS zamiast domyślnego schematu.

    ESP32 WROOM jednoczesna obsługa WiFi , BLE oraz client http json

    MAJSTER XXL wrote:
    Czy ta jednoczesna obsługa BLE i wifi jest tak zasobożerna dla ESP32?

    W przypadku korzystania z Arduino Core, to tak.

    Dodano po 2 [minuty]:

    MAJSTER XXL wrote:
    więc dobrze by było, gdyby BLE odebrało swój pakiet i poszło spać na kolejne 4 minuty, a powiedzmy zaraz po uśpieniu BLE wifi posłałoby pakiet na stronę i też mogłoby spać do następnej sekwencji.

    A to już od Ciebie zależy ;)
  • #3
    MAJSTER XXL
    Level 29  
    Super, dzięki za podpowiedź, to rozwiązuje zaledwie początek dalszego etapu wdrażania się w przygotowanie projektu. Czy kolega podpowie, którą z bibliotek do obsługi wysyłania pomiarów na stronę http należałoby wybrać z bogatego zestawu bibliotek?
    https://github.com/espressif/arduino-esp32/tree/master/libraries
    Dane będą wysyłane w postaci json do bazy danych. W teorii miałby to działać w taki sposób:
    - po starcie programu uruchamia się skanowanie BLE i czekamy na uchwycenie właściwego nadajnika systemu monitoringu glikemii,
    - nadajnik BLE od systemu monitoringu glikemii rozgłasza tylko na krótki czas dokładnie co 5 minut,
    - odczytujemy złapany pomiar i kończymy połączenie BLE i powiedzmy usypiamy jego obsługę na 4m30s
    - po zakończeniu połączenia BLE należy uruchomić połączenie wifi (pytanie w jakim trybie, access point / client?)
    - połączenie wifi wysyła json na właściwy serwer i można zakończyć wtedy to połączenie?
    - wifi i BLE pozostają w uśpieniu do około 30s przed spodziewanym następnym połączeniem z nadajnikiem glikemii,
    - moduł BLE zaczyna skanowanie i tak w pętli.
    Czy taki powyższy scenariusz wygląda sensownie?
    ESP32 WROOM jednoczesna obsługa WiFi , BLE oraz client http json
  • Helpful post
    #4
    khoam
    Level 41  
    MAJSTER XXL wrote:
    Dane będą wysyłane w postaci json do bazy danych.

    Tutorial: Link

    Na stronie głównej (Link) są również wymienione tutoriale dla BLE.
  • #5
    MAJSTER XXL
    Level 29  
    Aktualnie próbuję wytworzyć właściwego json-a, który będzie ładowany do strony testowej, ale pomimo wysyłania jakiejś postaci json z danymi, tych danych nie widać na stronie.
    Połączenie wifi w ESP pracuje, metodą POST chciałbym umieścić kilka danych, ale nie wiem gdzie szukać błędu. Może ta biblioteka nie działa prawidłowo? Co z tym zrobić, aby zadziałało wysyłanie tego json? Na testowej stronie
    https://httpbin.org/anything
    przy json mam tylko zapis null

    ESP32 WROOM jednoczesna obsługa WiFi , BLE oraz client http json

    ESP32 WROOM jednoczesna obsługa WiFi , BLE oraz client http json

    poniżej zrzut szkicu:
    Code: c
    Log in, to see the code
  • #6
    khoam
    Level 41  
    Skoro chcesz się łączyć poprzez HTTPS, to klient musi być skonfigurowany do obsługi bezpiecznego protokołu i weryfikować certyfikat serwera, do którego się łączy.
    Przykład: Link

    Albo wyłączyć taką weryfikację. Przykład: Link
  • #7
    MAJSTER XXL
    Level 29  
    Dzięki za dotychczasową pomoc. Odnośnie mojego tematu, udało mi się ogarnąć program, który jako autonomiczny po wgraniu do ESP32 pozwala prawidłowo lokować JSON do bazy na serwer i mam to przetestowane. Działa to w taki sposób:
    - po podaniu zasilania moduł łączy się do sieci wifi,
    - pobiera czas epoki z serwera czasu
    - ładuje json-a do serwera
    - na podstawie tego json-a strona generuje mi prawidłowo w pętli testowej co 1 minutę na razie stały wynik pomiaru cukru.
    Natomiast kiedy dorzucę obsługę tego ładowania json-a do kodu z działającym odczytem przez BT i chcę tą wartość pomiaru (też na razie stałą) załadować na serwer to niestety odrzuca mi połączenie do mojej strony testowej. proszę o jakieś dalsze wskazówki. Podejrzewam, że nie mam obsługi wyłączenia BT, bo miesza się to z WiFi, co chyba można poznać po logach z seriala:
    Code: text
    Log in, to see the code


    Poniżej screen z terminala podczas ładowania json ze sprawdzonego kodu
    ESP32 WROOM jednoczesna obsługa WiFi , BLE oraz client http json [/syntax]


    edit. chyba udało mi się ogarnąć,
    w odpowiednim miejscu dałem zatrzymanie BT funkcją:
    btStop();