Skocz do zawartości
ethanak

Niestabilny touchRead w LOLIN32 na baterii

Pomocna odpowiedź

Cześć.

Problem prosty:

Urządzenie składa się z płytki LOLIN32 Lite i czterech sensorów dotykowych (pozwólcie że nie będę rysować schematu, podłączone do 2, 4, 13 i 15, tam naprawdę nic więcej nie ma, reszta idzie przez BT/WiFi).

Przy zasilaniu z USB wszystko jest fajnie: sensor w powietrzu zwraca wartość między 75 a 85, dotknięty poniżej 25. Działa bez problemu.

Przy zasilaniu z akumulatora dotknięty sensor zwraca coś między 50 a 70, przy czym chwilowe odczyty mogą przekłamywać w obie strony.

Oczywiście mogę sobie poczytać pin np. 100 razy, wziąć średnią i wszystko będzie działać - tyle że czas reakcji na dotknięcie/puszczenie musi być dużo krótszy (wprowadzane tekstu morsem w tempie przynajmniej 50, mile widziane  jakieś 60-70).

I tu pytania dwa:

1) Czy ktoś ma jakiś pomysł, jak to można programowo zrobić? Wiem że wielu z Was zna się na jakichś przedziwnych filtrach których ja nawet nazw nie słyszałem...

2) Czy zmiana sensora z prostego łebka śrubki M2 na coś innego mogłaby pomóc? Jeśli tak, to na co to zmienić? Coś co można tanio kupić albo zrobić w domowym warsztaciku... wolałbym nie, bo te śrubki nawet ciekawie w urządzeniu wyglądają 🙂

Kod programu na dzisiaj sprowadza się do:

void loop()
{
	int a = touchRead(4);
	int b = touchRead(2);
	int c = touchRead(15);
	int d = touchRead(13);
	udprintf("%d %d %d %d\n", a, b, c, d);
	delay(XXX); // tym się na razie bawię 
}

gdzie udprintf to funkcja analogiczna do printf wyrzucająca wynik przez UDP na mojego kompa.

 

 

Udostępnij ten post


Link to post
Share on other sites

Najpierw muszę zrozumieć co to jest "sensor dotykowy", bo tu jest sedno problemu. Czy masz tam jakiś scalak, jaki i dlaczego oddaje wartości analogowe zamiast 0-1? A może korzystasz z jakiejś biblioteki i wbudowanych w procesor (jaki?)  interfejsów układów do touch-keys?

Generalnie działanie tych czujników - jeśli są jednoelektrodowe - opiera się albo na pomiarze pojemności względem reszty urządzenia albo na pomiarze przydźwięku 50Hz doprowadzonego palcem. W obu tych przypadkach podłączenie urządzenia do jakiejś dużej "masy odniesienia" (np. kompa przez USB) powoduje istotną zmianę warunków pracy i tym samym zmianę mierzonych wartości. To sam czujnik/scalak powinien - gdyby był zero-jedynkowy - analizować ten stan i reagować wyłącznie na skokowe i stosunkowo szybkie zmiany a nie na przejście jakiegoś z góry ustalonego ustalonego progu. Jeśli masz sygnał analogowy, będziesz musiał samodzielnie się tym zająć. Filtry (nawet te których nazw nie znasz) oczywiście mogą pomóc, ale jestem pewien że intuicyjnie i tak wiesz o co chodzi. A one zrobią to samo, tylko w świetle chwały zaprzęgniętej tam matematyki. Może na początek spróbuj pokazać ciąg próbek z takiego czujnika np., zdejmowanych 20 razy/s w czasie stukania palcem w jednym i drugim setupie. Działanie (przy zasilaniu z aku, czyli gdy mamy małą masę elektryczną wiszącą w powietrzu bez punktów odniesienia) może poprawić przewodząca obudowa podłączona do masy lub nawet jakieś blacha pod całością na GND. No trzeba eksperymentować, ale przede wszystkim napisz co to za czujniki.

BTW: Morsem nadaje się nie palcem tylko nadgarstkiem i swobodnie wiszącym przedramieniem opartym na kluczu. Palce nie mają tu nic do roboty oprócz trzech lekko trzymających główkę klucza. Ja wiem, że to nie ten przypadek bo robisz tajne (w sensie ukryte) sterowanie czymśtam, ale próbowałem przed chwilą nadawać jednym palcem o stół i to jakbym próbował mówić.. hm, przeciwną stroną przewodu pokarmowego..

Udostępnij ten post


Link to post
Share on other sites

@marek1707 nie chcę tu kopiować datasheetu esp32, ale sensor dotykowy w liczbie sztuk ośmiu jest w toto wbudowany, nie wiem dokładnie jak go Chińczycy zrealizowali, ale polega na rozładowaniu kondensatora - stąd rezultat analogowy. Tak jak pisałem nie ma tam żadnych dodatkowych elementów, śrubki (jako elementy które macam palcami) są podłączone bezpośrednio do wejść esp.

Kluczem się potrafię posługiwać, próbowałem takiego "machania palcem" i wychodzi całkiem nieźle, chociaż wolniej (stąd maksymalna prędkość 70 a nie 120). Może to lata grania na różnego rodzaju fortepianach i innych ustrojstwach z klawiszami?

Jest jeszcze alfabet więzienny - tam się nadaje bez klucza, mogę w ostateczności zastosować jakiś piezo zamiast głównego sensora, ale pozostałe klawisze (shift, altgr, macro) muszą reagować na wciśnij/puść a nie na stuknięcie. Poza tym więzienny jest wolniejszy, a nie chcę mieć żadnych mechanicznych przełączników.

I nie jest to żadne tajne urządzenie, to ma być klawiatura BT do telefonu z przeznaczeniem "pisanie postów na forbocie bez okularów i macania po ekranie androida" 🙂

Próbowałem reakcji na zmiany - jest to jakaś droga, ale na razie wyniki są średnio zachęcające.

Metalowej obudowy nie zrobię - chyba że zmuszę moją Anetkę do drukowania ze stali...

 

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

OK, nigdzie nie napisałeś, że to ESP32. Niestety obawiam się, że jeśli nie ma jakiejś innej biblioteki do obsługi bloku touch (która robiłaby analizę oddającą wynik on-off) to jesteś skazany na samodzielne poszukiwania. Może pierwsze wyniki nie powalają, ale innej drogi nie ma. Napisz co już zrobiłeś. Jak wygląda szybkość zmian wartości i amplituda przy typowym ułożeniu palca? Bo dużo łatwiej będzie gdy próbek masz dużo, niż gdy w czasie "kropki" dostaniesz wszystkiego dwa odczyty ledwo powyżej jakiegoś nadążnego progu. Pokaż trochę liczb i je opisz, musimy widzieć z czym mamy do czynienia. Ciekaw jestem jakie jest pasmo tego układu. tj. czy zwiększając częstotliwość odczytów zwiększasz ilość informacji, czy jednak pasmo ograniczone jest "analogowo" i próbkując coraz szybciej nie dostajesz więcej danych o sygnale. Możesz to oszacować przez np. pomiary bardzo szybko przykładanego palca? Chodzi o zbocze: czy jego stromość (w czasie) rośnie wraz ze zwiększaniem prędkości próbkowania/odczytywania wejścia touch, czy od pewnego progu częstotliwości (kiedy?) już nie, bo sygnał wejściowy jest ograniczoną prędkość narastania. Jeżeli ona już tam jest słaba, to wykrywanie szybkich/krótkich naciśnięć może być niemożliwe - to podstawowy wynik jaki musisz mieć aby zacząć myśleć o analizie.

Właśnie "pisanie postów na forbocie bez okularów i macania po ekranie androida" miałem na myśli pisząc o ukrytym działaniu 🙂

Edytowano przez marek1707

Udostępnij ten post


Link to post
Share on other sites

Marku, przepraszam, ale chyba obaj się starzejemy...

Tag do wątku to ESP32, a w pierwszym zdaniu napisałem jaką mam płytkę.

Dzisiaj mam już dość, ale jutro postaram się napisać coś więcej, łącznie z działającymi (nie tak jakbym chciał)  kodami.

Udostępnij ten post


Link to post
Share on other sites
Anonim
1 godzinę temu, marek1707 napisał:

Ja wiem, że to nie ten przypadek bo robisz tajne (w sensie ukryte) sterowanie czymśtam, ale próbowałem przed chwilą nadawać jednym palcem o stół i to jakbym próbował mówić.. hm, przeciwną stroną przewodu pokarmowego..

🤣

Napisz więcej o tym sensorze, może się go da poprawić za pomocą jakichś pojemności. Swoją drogą klawiatura ze śrubek M2 to całkiem fajny pomysł 🙂

IMHO nadawanie morsem za pomocą stukania wymaga specyficznej reprezentacji kreski i pilnowania czasu pomiędzy składowymi znaków 😉

Udostępnij ten post


Link to post
Share on other sites

@ethanak I co, masz te spróbkowane odczyty puknięcia palcem w śrubkę lub szybkiego przyłożenia na dłużej? Po pierwsze z kablem USB, pod drugie w pracy autonomicznej z aku. Zobacz też, czy coś się zmieni gdy np. weźmiesz urządzenie w dłoń - nawet bez kontaktu galwanicznego ze ścieżkami/masą np. przez tekturowe (czy po jogurcie) pudełko czy coś. Chętnie bym zobaczył skomentowany plik z danymi, może w arkuszu excela lub choćby tylko kilka wierszy liczb z opisem?

 

Udostępnij ten post


Link to post
Share on other sites

Oj, mam, mam... (a raczej miałem, bo pokasowałem) i niewiele z tego można wywnioskować. Robiłem próbki po kilkanaście sekund (pomiary są mniej więcej co 2 milisekundy, czyli trochę tego jest) i wszystko wyglądało pięknie. Kiedy wróciłem do właściwego programu i (jak mi się wydawało) wszystko poustawiałem, okazało się, że co jakiś czas pojawia się jakaś kropka... czyli fluktuacja której w nagranych próbkach nie było. A nie bardzo mogę nagrywać przy uruchomionym pełnym programie, bo z jakiegoś dziwnego powodu pracujący BT i zasuwające 500 pakietów na sekundę WiFi po paru sekundach powodują reset (sprawdzałem, jest zgłoszenie na githubie ale na razie nie ma rozwiązania).

Jedno mogę powiedzieć: urządzenie siedzi w docelowej obudowie (no, prawie... ale w sumie reszta to dodrukowane pudełeczko), żadne zmiany położenia ani branie do ręki nie powodują widocznych różnic w odczycie. Niestety - płytka jest tak nieszczęśliwie skonstruowana, że gniazdo USB musi być schowane wewnątrz obudowy i dostępne dopiero po jej otwarciu... nie wiem kto wpadł na pomysł żeby gniazdo od akumulatora umieścić zaraz obok gniazda USB 😞

Będę musiał spróbować jeszcze jednego - zmienić te nieszczęsne śrubki na coś innego (nie wiem jeszcze na co, ale spróbuję). Po prostu jeśli lekko dotykam czujnika, różnica jest zbyt mała, muszę trochę docisnąć palec. Podejrzewam, że przy większej powierzchni czujnika efekt będzie słabszy - ale na razie szukam czegoś, z czego mogę go choćby prowizorycznie zrobić. Na razie czasem gubi mi kropki lub kreskę uznaje za kropkę, to jeszcze mogę poprawić kosztem prędkości, ale z samoczynnie pojawiającymi się impulsami mogę mieć problem...

No cóż, będę próbować dalej, jestem ciekaw co mi wyjdzie 🙂

 

 

 

 

Udostępnij ten post


Link to post
Share on other sites

No i na próbę zmieniłem jeden czujnik (jakiś blachowkręt z płaskim łbem) - sytuacja się wyraźnie poprawiła, nie mam błędnych odczytów. Czyli kwestia czujnika...

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

krotki test

pisane z tej klawiatury. nie dziala jeszcze prawidlowo shift i alt ale juz widze ze ustrojstwo ma sens. 

a wiec do dziela. 

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...