Cel dzisiejszych eksperymentów to skomunikowanie iTAGa i ESP32 oraz zarejestrowanie przez program w ESP32 faktu naciśnięcia przycisku na iTAGu.
Nie ma biblioteki ESP32 BLE dla Arduino na oficjalnym repozytorium ESPRESSIF. Link odsyła nas do zasobów Niela Kolbana. Aktualna wersja biblioteki jest dostępna tu>>>>. Należy ją umieścić w odpowiednim katalogu /librares dla ESP32.
Uruchamiamy Arduino IDE i szukamy przykladów dla biblioteki BLE
Jest ich kilka. Najbardziej zachęcająco wygląda BLE_scan a więc do dzieła
Kompilacja przebiega bez zakłóceń ale jakoś bardzo długo. Rzut oka na komunikat z kompilacji i stało się jasne dlaczego to tyle trwa.....
Z nieznanych przyczyn szkic zajmuje aż 93% pamięci programu. No niezła długość jak na program przykładowy. Lektura kilku wpisów wyjaśnia wszystko - ta biblioteka BLE tak ma i nic nie można na to poradzić. Nie ma też prostego sposobu by dostępną pamięć programu w ESP32 poszerzyć. Trzeba mocno pogrzebać w konfiguracji Arduino IDE
>>>>>>>>>>>>>>>>>>>>>
Na dobrą sprawę mógłbym tu zakończyć dzisiejszy wpis bo to praktycznie kończy sens dalszych prób z BLE na ESP32. Jak tu do pozostałych 7% pamięci wtłoczyć kolejne biblioteki BLYNKa i jeszcze swój własny program?
>>>>>>>>>>>>>>>>>>>>>>
Dokończę jednak testowania biblioteki BLE i połączenia z iTAGami. Program przecież działa i trzy moje iTAGi bezbłędnie wykrywa
UWAGA
iTAG trzeba wcześniej włączyć - długie naciśnięcie powinno spowodować podwójny sygnał. Wyłączenie to dłuższe naciśnięcie i pojedynczy sygnał.
Jeśli bateria jest słaba to przy naciskaniu przycisku wydawany jest krócitki cichy pik
A to odczytane dane:
iTAG zielony
Advertised Device: Name: iTAG ,
Address: ff:ff:c2:0e:e0:e5,
appearance: 961,
serviceUUID: 0000ffe0-0000-1000-8000-00805f9b34fb,
txPower: 0
iTAG czarny
Advertised Device: Name: ITAG,
Address: fc:58:fa:05:a4:62,
serviceUUID: 00001803-0000-1000-8000-00805f9b34fb,
txPower: 0
iTAG różowy
Advertised Device: Name: ITAG,
Address: fc:58:fa:04:cb:03,
serviceUUID: 00001803-0000-1000-8000-00805f9b34fb,
txPower: 0
Widać iż iTAG zielony jest inaczej skonfigurowany (zaprogramowany ?) niż dwa pozostałe.
Jak się czyta opis standardu BLE to widać że jest on nieźle pokomplikowany i ciężko się w nim rozeznać.
Trochę podstawowych informacji, tak na szybko i po polsku można przeczytać tu>>>>>
Niewiele mi to pomogło do dalszych eksperymentów. Ale najważniejsze są dwie informacje:
urządzenia BLE mogą pracować w dwu modach pracy
- rozgłaszania - taki odpowiednik UDP
- komunikacji klient-serwer - coś na kształt TCP/IP
oraz, że konfiguracja urządzenia (profil) urządzenia skalda się z kilku usług (service) realizowanych przez to urządzenia a każda usługa zawiera jakieś tam dane (chracteristic).
iTAG komunikuje się w modzie klient-serwer (GATT). Serwerem jest iTAG a klientem telefon.
Jeśli tak to można sprawdzić jakie usługi zdefiniowane w GATT realizują moje iTAGi.
UUID = 00001803 oznacza w nomenklaturze standardu BLE Link Loss tzn i TAG skonfigurowany jest w pierwszym rzędzie do sygnalizacji utraty połączenia.
UUID = 0000ffe0 nie jest zdefiniowane w standardzie BLE a to znaczy, że usługa jest zdefiniowana przez producenta sprzętu. Z lektury tego wpisu wynika, iż dla iTAGa jest to usługa obsługi przycisku.
A na tym mi właśnie zależy więc iTAG zielony idzie do dalszej obróbki
Jeśli tak to można sprawdzić jakie usługi zdefiniowane w GATT realizują moje iTAGi.
UUID = 00001803 oznacza w nomenklaturze standardu BLE Link Loss tzn i TAG skonfigurowany jest w pierwszym rzędzie do sygnalizacji utraty połączenia.
UUID = 0000ffe0 nie jest zdefiniowane w standardzie BLE a to znaczy, że usługa jest zdefiniowana przez producenta sprzętu. Z lektury tego wpisu wynika, iż dla iTAGa jest to usługa obsługi przycisku.
A na tym mi właśnie zależy więc iTAG zielony idzie do dalszej obróbki
Znalazłem w sieci jeden przykład programu na połączenie iTAG z ESP32
Nie zmieniałem w nim wiele. Najważniejsze to wstawić właściwy adres iTAGa - u mnie to adres zielonego przycisku
Nie zmieniałem w nim wiele. Najważniejsze to wstawić właściwy adres iTAGa - u mnie to adres zielonego przycisku
A efekt działania programu jest więcej niż zadowalający
Zaznaczona linia pojawia się każdorazowo po naciśnięciu przycisku iTAGa.
Niestety dwa pozostałe iTAGi nie dały się pozytywnie skomunikować z ESP32 i powodowały cykliczne resetowanie się mikrokontrolera.
Cel został osiągnięty choć do odtrąbienia sukcesu jeszcze baaardzo daleko.
Dobra wiadomość jest taka, że jakaś tam komunikacja pomiędzy iTAGiem a ESP32 jest i nawet coś z tym można zrobić.
Zła że jest to wszystko mocno nieuporządkowane i przypadkowe - ale mam nadzieję że to skutek początkowego etapu zabawy z BLE i ESP32
Ale najważniejszy problem - brak wystarczającej pamięci programu w ESP32 po załadowaniu bibliotek BLE - wciąż czeka na rozwiązanie by dalsze zabawy z ESP32 i BLYNKiem miały sens.
Ale najważniejszy problem - brak wystarczającej pamięci programu w ESP32 po załadowaniu bibliotek BLE - wciąż czeka na rozwiązanie by dalsze zabawy z ESP32 i BLYNKiem miały sens.
Mimo połowicznego sukcesu podoba mi się ten BLE i ESP32.
Jest więc spora szansa na ciąg dalszy
przydatne linki
https://ru-clip.com/video/iCKIIMrphtg/esp32-ble-client-heart-rate-monitor-with-oled-and-mqtt.html
https://thejeshgn.com/2017/06/20/reverse-engineering-itag-bluetooth-low-energy-button/
https://github.com/aknik/ESP32/blob/master/iTag32/iTag32_Client.ino
https://github.com/sylvek/itracing2/issues/6
https://github.com/CuriousTimo/ESP32/blob/master/ESP32_OLED_HRM/ESP32_OLED_HRM.ino
https://hackaday.io/project/33755-itag-esp32
https://www.youtube.com/watch?v=R3QMKk45eJE
https://www.youtube.com/watch?v=nn6xG9lSWVM
https://www.esp32.com/viewtopic.php?t=1887
https://www.youtube.com/watch?v=KNoFdKgvskU
https://github.com/SensorsIot/Bluetooth-BLE-on-Arduino-IDE/blob/master/BLE_Proximity_Sensor/BLE_Proximity_Sensor.ino
https://ru-clip.com/video/KNoFdKgvskU/176-ble-human-presence-detector-using-an-esp32-tutorial-arduino-ide.html
https://www.esp32.com/viewtopic.php?f=13&t=5612
134
Witam! Czy przez ostatni rok poprawiono ilość dostępnej pamięci na program użytkownika? Z jakiej odległości esp32 wykrywa sygnał iTAG-a?
OdpowiedzUsuńnie wiem na razie temat wisi do czasu pojawienia się porządnej biblioteki bluetooth
OdpowiedzUsuństandardowo do 10 m