Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Dobierzmy się do Androida (ale bez przemocy)

mario_ka 11 Lut 2019 13:18 6618 41
  • Dobierzmy się do Androida (ale bez przemocy)

    Witajcie,
    W niemal każdej elektronicznej konstrukcji pojawia się wciąż jeden i ten sam problem: w jaki sposób zorganizować interfejs użytkownika. Wykorzystywane są: diody LED, wyświetlacze LCD, ostanio graficzne OLED. Wprowadzanie danych zapeniają głównie: mikrostyki i klawiatury matrycowe lub enkodery obrotowe. Zastosowanie klawiatury USB czy dużego wyświetlacza graficznego z ekranem dotykowym przenosi nas na inny poziom złożoności urządzenia. Wymaga dziesiątek godzin czasu i mnóstwa wysiłku programistycznego. Ostatecznie rozbijamy sie jeszcze o problem estetycznej obudowy: wykonanie takiej z wyświetlaczem i klawiaturą nie jest ani proste ani tanie

    I tu pojawia się rozwiązanie:
    A co gdyby tak istniał moduł z interfejsem UART, który stanowiłby most pomiędzy uniwersalną aplikacją na smartfonie a naszą konstrukcją elektroniczna? Wtedy zrobienie atrakcyjnego, współczesnego interfejsu użytkownika byłoby wręcz banalne.

    Wyobraź sobie, że wysyłasz przez UART mikrokontrolera, który właśnie programujesz komendę typu:
    Code:
    text, MOJA APLIKACJA

    a na samej górze ekranu smartfona pojawia się taki właśnie napis.
    Nstępnie wysyłasz kolejne komendy typu:
    Code:
    text, PWM: 27%
    
    text, TEMPERATURA: 122*C

    a na ekranie wyskakują kolejne dwa komunikaty.
    Na sam koniec wysyłasz:
    Code:
    button,1,ON
    
    button,2,OFF

    i gotowe. Ekran aplikacji współpracującej z Twoim urządzeniem wygląda teraz np. tak:
    Dobierzmy się do Androida (ale bez przemocy)


    Za każdym razem kiedy przycisk z napisam ON zostanie kliknięty do Twojego mikrokontrolera przez UART nadejdzie informacja:
    button,1,tap
    Gdy kliknięty zostanie przycisk z napiem OFF informacja będzie miała postać:
    button,2,tap

    Oczywiście to uproszczony opis możliwości pokazujący jedynie ideę w jaki sposób w ciągu kilku minut możemy sprawić aby nasza konstrukcja miała atrakcyjny interfejs użytkownika z możliwością zdalnego sterowania.
    Nie musimy już teraz podłączać ani wyświetlacza ani klawiatury do naszego układu. Możemy też zamknąć go w łatwo dostępnej uniwersalnej obudowie.

    I co Wy na to? Ma sens?

    Pozdrawiam
    Mariusz

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    mario_ka
    Poziom 11  
    Offline 
    mario_ka napisał 84 postów o ocenie 93, pomógł 0 razy. Mieszka w mieście Kr. Jest z nami od 2006 roku.
  • #3
    Simon79
    Poziom 18  
    A take Bluetooth Electronics. Musiałoby to być coś co nie będzie kolejnym powieleniem istniejących aplikacji, ale mieć "to coś".
  • #4
    krisRaba
    Poziom 29  
    Znalazłem nawet jakąś aplikację komunikującą się po BT/UART, gdzie z dostępnych komponentów można ułożyć sobie interfejs i do każdego komponentu typu przycisk, suwak, wykres, textbox itp. przypisuje się komendy jakie wysyła/odbiera. Tylko tam akurat zabrakło mi możliwości CR+LF ;), bo domyślnie wysyłał chyba tylko LF i nie dało się tego zmienić w opcjach.

    Wizualnie nie było poezji, ale idea dość fajna. Muszę poszukać kiedyś jakiegoś ładniejszego i bardziej konfigurowalnego odpowiednika.

    PS. Założyłeś temat, bo chcesz taką apkę napisać? Bo z treści nie do końca wynika jak "dobrać" się do tego androida, tylko rzucona jest sama idea...
  • #5
    mario_ka
    Poziom 11  
    Witajcie,

    khoam,
    Dzięki za podrzucenie nowych informacji.
    Ten pomysł od wskazanych przez Ciebie różni się tym, że:
    - zastosowanie go nie wymaga używania internetu, zatem przesyłane dane pozostają prywatne,
    - użycie jest niesamowicie proste, bo cała konfiguracja i sterowanie wyglądem aplikacji robione jest poprzez interfejs UART,

    Simon79
    "To coś" to maksymalna prostota instalacji i zastosowania. W stosunku do modułów Bluetooth Electronics to następna generacja choćby pod względem bardzo niskiego poboru energii.

    Pozdrawiam
    Mariusz
  • #6
    khoam
    Specjalista - ESP32, ESP8266
    mario_ka napisał:
    zastosowanie go nie wymaga używania internetu, zatem przesyłane dane pozostają prywatne,

    Virtuino jest rozwiązaniem serverless i nie wymaga dostępu do Internetu. W wypadku Blynk'a jest dostępna opcja instalacja lokalnego serwera.

    mario_ka napisał:
    użycie jest niesamowicie proste, bo cała konfiguracja i sterowanie wyglądem aplikacji robione jest poprzez interfejs UART,

    Dokładnie tak może być robione w Blynk i Virtuino - poprzez komendy AT do UART, a dalej przez WiFi lub BT.
  • #7
    krisRaba
    Poziom 29  
    mario_ka napisał:
    Ten pomysł od wskazanych przez Ciebie różni się tym, że:
    - zastosowanie go nie wymaga używania internetu, zatem przesyłane dane pozostają prywatne,

    Dla mnie na przykład to istotne. Są oczywiście informacje, w których mnie to ryba, że leci to w świat, ale sterowanie czymś konkretnym w domu już u mnie natrafia na opory ;)
  • #8
    TvWidget
    Poziom 34  
    Do tego nie jest nawet potrzebna specjalizowania aplikacja. Wystarczy zwykła strona WWW wczytana do przeglądarki. Z jej poziomu jest bezpośredni dostęp do interfejsu Bluetooth jak i USB. Co więcej tą samą stronę można również wczytać do przeglądarek w systemach Windows i Linux.
  • #9
    mario_ka
    Poziom 11  
    krisRaba napisał:
    Znalazłem nawet jakąś aplikację komunikującą się po BT/UART, gdzie z dostępnych komponentów można ułożyć sobie interfejs i do każdego komponentu typu przycisk, suwak, wykres, textbox itp. przypisuje się komendy jakie wysyła/odbiera. Tylko tam akurat zabrakło mi możliwości CR+LF ;), bo domyślnie wysyłał chyba tylko LF i nie dało się tego zmienić w opcjach.

    Czy mógłbyś podesłać nazwę tej apki?
    krisRaba napisał:

    PS. Założyłeś temat, bo chcesz taką apkę napisać? Bo z treści nie do końca wynika jak "dobrać" się do tego androida, tylko rzucona jest sama idea...

    Aby to zadziałało to musiałby powstać moduł Bluetooth Low Energy i Aplikacja Android.
    krisRaba napisał:

    Dla mnie na przykład to istotne. Są oczywiście informacje, w których mnie to ryba, że leci to w świat, ale sterowanie czymś konkretnym w domu już u mnie natrafia na opory ;)

    Osobiście myślę, że w rozwoju IoT coraz większy nacisk będzie kładziony na tą kwestię. :-)

    Pozdrawiam
    Mariusz

    Dodano po 1 [minuty]:

    khoam napisał:
    mario_ka napisał:
    zastosowanie go nie wymaga używania internetu, zatem przesyłane dane pozostają prywatne,

    Virtuino jest rozwiązaniem serverless i nie wymaga dostępu do Internetu. W wypadku Blynk'a jest dostępna opcja instalacja lokalnego serwera.

    mario_ka napisał:
    użycie jest niesamowicie proste, bo cała konfiguracja i sterowanie wyglądem aplikacji robione jest poprzez interfejs UART,

    Dokładnie tak może być robione w Blynk i Virtuino - poprzez komendy AT do UART, a dalej przez WiFi lub BT.

    Dzięki za info. Na pierwszy rzut oka ze strony www to nie wynika :-)

    Dodano po 2 [minuty]:

    TvWidget napisał:
    Do tego nie jest nawet potrzebna specjalizowania aplikacja. Wystarczy zwykła strona WWW wczytana do przeglądarki. Z jej poziomu jest bezpośredni dostęp do interfejsu Bluetooth jak i USB. Co więcej tą samą stronę można również wczytać do przeglądarek w systemach Windows i Linux.

    Ale informacje idą przez sieć publiczną, tak?
    No i w takim przypadku byłoby trudno np. sterować robotem mobilnym, prawda?
  • #11
    TvWidget
    Poziom 34  
    mario_ka napisał:
    Ale informacje idą przez sieć publiczną, tak?
    No i w takim przypadku byłoby trudno np. sterować robotem mobilnym, prawda?

    Nie rozumiem o co chodzi z tą siecią publiczną. Jakie dane masz na myśli ?
  • #12
    mario_ka
    Poziom 11  
    TvWidget napisał:
    mario_ka napisał:
    Ale informacje idą przez sieć publiczną, tak?
    No i w takim przypadku byłoby trudno np. sterować robotem mobilnym, prawda?

    Nie rozumiem o co chodzi z tą siecią publiczną. Jakie dane masz na myśli ?


    Chodzi mi o model komunikacji czy jest to:
    urządzeni <-> aplikacja na telefonie

    czy może:
    urządzenie <-> serwer <-> aplikacja na telefonie

    W tym drugim przypadku możesz skorzystać z gotowych rozwiązań i wtedy informacje idą przez sieć publiczną lub możesz postawić swój serwer co rodzi pewne komplikacje.

    Pozdrawiam
    Mariusz

    Dodano po 1 [minuty]:

    krisRaba napisał:
    mario_ka napisał:
    Czy mógłbyś podesłać nazwę tej apki?

    Bluetooth Electronics z tego co udało mi się odkopać.
    https://www.youtube.com/watch?v=ZMC8PzpJifo


    Dzięki.

    Pozdrawiam
    Mariusz
  • #14
    mario_ka
    Poziom 11  
    bsw napisał:

    Dzięki za linki. To bardzo dobry pomysł w przypadku gdy przewodowe połączenie z tabletem/telefonem nie stanowi problemu.
    Miło byłoby też mieć możliwość skonfigurowania wyglądu aplikacji dla potrzeb konkretnego projektu.

    Pozdrawiam
    Mariusz
  • #15
    bsw
    Poziom 15  
    A to już trzeba sobie własną apkę machnąć w Android Studio - będzie dokładnie tak jak chcemy !
  • #16
    mario_ka
    Poziom 11  
    bsw napisał:
    A to już trzeba sobie własną apkę machnąć w Android Studio - będzie dokładnie tak jak chcemy !

    I właśnie na tym "drobnym" uproszczeniu życia bazuje ten projekt: mieć apkę na androida bez znajomości programowania androida i poświęcania czasu na pisanie aplikacji i projektowanie grafiki :-)
    Zastanawiam się jakie byłyby najczęściej wykorzystywane elementy aplikacji: pola tekstowe, pola do wprowadzania danych, przyciski, suwaki czy może wykresy?
    Jak sądzisz/cie?

    Pozdrawiam
    Mariusz
  • #17
    __Maciek__
    Poziom 19  
    Można jeszcze użyć appinventor lub thuncable ( classic ) ... albo jakiegoś innego klona tej technologii - prosta aplikacja w parę minut. Minusem jest ograniczona funkcjonalność.
  • #18
    mario_ka
    Poziom 11  
    __Maciek__ napisał:
    Można jeszcze użyć appinventor lub thuncable ( classic ) ... albo jakiegoś innego klona tej technologii - prosta aplikacja w parę minut. Minusem jest ograniczona funkcjonalność.

    Witaj __Maciek__,
    A orientujesz się może jak w tych przypadkach jest z obsługą Bluetooth czy Wi-Fi?

    Pozdrawiam
    Mariusz
  • #19
    __Maciek__
    Poziom 19  
    Google Twoim przyjacielem ..... serio jest sporo przykładów ... do bluetooth .. również do BLE ( Niestety protokół bitowy jest utrudniony przez brak modułów do konwersji HEX <-> ASCII itp. .. ale jeśli wystarczy komunikacja ASCII to raczej problemu nie będzie. ) Ogólnie co do zasady to ma ograniczone możliwości, ale do jakiś prostych rzeczy powinno wystarczyć.
    Sporo rozszerzeń podstawowych funkcjonalności znajdziesz np. tu: https://puravidaapps.com/extensions.php .. niestety niektóre płatne.
    Nie mam pojęcie co masz na myśli pisząc Wi-Fi ... obsługę TCP / UDP ? czy coś innego ?
  • #20
    TvWidget
    Poziom 34  
    mario_ka napisał:
    Chodzi mi o model komunikacji czy jest to:
    urządzeni <-> aplikacja na telefonie
    czy może:
    urządzenie <-> serwer <-> aplikacja na telefonie

    Oczywiście chodzi o ten pierwszy model.
    Zobacz np. https://support.inode.pl/apps/new/iNodeMcuSetup/
    Jest to aplikacja do konfiguracji przez BT malutkiego urządzenia z ESP32.
    Wczytaj tą stronę do przeglądarki Chrome. Po kliknięciu na "2" rozpocznie się wyszukiwanie urządzeń Bluetooth. Zwróć uwagę, że nie trzeba nic instalować. Całość powinna identycznie działać w Android (od wer. 6), Windows (od wersji 8.1) i Linux.
  • #22
    mario_ka
    Poziom 11  
    __Maciek__ napisał:
    Google Twoim przyjacielem ..... serio jest sporo przykładów ... do bluetooth .. również do BLE ( Niestety protokół bitowy jest utrudniony przez brak modułów do konwersji HEX <-> ASCII itp. .. ale jeśli wystarczy komunikacja ASCII to raczej problemu nie będzie. ) Ogólnie co do zasady to ma ograniczone możliwości, ale do jakiś prostych rzeczy powinno wystarczyć.
    Sporo rozszerzeń podstawowych funkcjonalności znajdziesz np. tu: https://puravidaapps.com/extensions.php .. niestety niektóre płatne.

    Dzięki bardzo za info.
    __Maciek__ napisał:
    Nie mam pojęcie co masz na myśli pisząc Wi-Fi ... obsługę TCP / UDP ? czy coś innego ?

    Generalnie w tym ogólnym pytaniu chodziło o jakieś proste i pewne rozwiązanie w przypadku:
    1. Mam urządzenie (arduino, avr, mcp.. cokolwiek)
    2. Chciałbym móc nim sterować ze smartfona.
    3. Chciałbym wyświetlać wyniki na ekranie smartfona.
    Czy mogę nie znając dogłębnie zaawansowanych technologii zrobić to łatwo i szybko?

    Pozdrawiam
    Mariusz

    Dodano po 23 [minuty]:

    bsw napisał:
    Popełniłem kiedyś takie cóś (do sterowania przez BT użyłem gotowca):

    https://www.elektroda.pl/rtvforum/topic3297462.html

    Bardzo ciekawe urządzeni.
    Gdyby moduł HC-06 zastąpić takim o jakim piszemy byłaby też piękna aplikacja sterująca. :-)

    Pozdrawiam
    Mariusz
  • #23
    TvWidget
    Poziom 34  
    mario_ka napisał:
    Czy mogę nie znając dogłębnie zaawansowanych technologii zrobić to łatwo i szybko?

    Nie można jednoznacznie odpowiedzieć na tak ogólnie sformułowanie pytanie
    Jakąś wiedzę zawsze trzeba mieć.
    Możliwości stworzenia interfejsu użytkownika jest bardzo. Każdy może sobie wybrać to co mu najbardziej odpowiada.
  • #24
    mario_ka
    Poziom 11  
    TvWidget napisał:
    mario_ka napisał:
    Chodzi mi o model komunikacji czy jest to:
    urządzeni <-> aplikacja na telefonie
    czy może:
    urządzenie <-> serwer <-> aplikacja na telefonie

    Oczywiście chodzi o ten pierwszy model.
    Zobacz np. https://support.inode.pl/apps/new/iNodeMcuSetup/
    Jest to aplikacja do konfiguracji przez BT malutkiego urządzenia z ESP32.
    Wczytaj tą stronę do przeglądarki Chrome. Po kliknięciu na "2" rozpocznie się wyszukiwanie urządzeń Bluetooth. Zwróć uwagę, że nie trzeba nic instalować. Całość powinna identycznie działać w Android (od wer. 6), Windows (od wersji 8.1) i Linux.

    Dzięki za link.
    Kurczę, mam Firefoxa, a tu komunikat wyskakuje, że trzeba chrome mieć :-(
    Nie da rady jakoś tego obejść?

    Pozdrawiam
    Mariusz
  • #25
    TvWidget
    Poziom 34  
    Na dzień dzisiejszy tylko Chrome dopuszcza bezpośredni dostęp do interfejsu Bluetooth. Ta przeglądarka ma obecnie dominujący udział w rynku.
  • #26
    mario_ka
    Poziom 11  
    TvWidget napisał:
    mario_ka napisał:
    Czy mogę nie znając dogłębnie zaawansowanych technologii zrobić to łatwo i szybko?

    Nie można jednoznacznie odpowiedzieć na tak ogólnie sformułowanie pytanie
    Jakąś wiedzę zawsze trzeba mieć.
    Możliwości stworzenia interfejsu użytkownika jest bardzo. Każdy może sobie wybrać to co mu najbardziej odpowiada.

    Oczywiście rozumiem.
    Wobec ogromu różnych technologii i ich kombinacji nie sposób powiedzieć w jednym zdaniu jak optymalnie osiągnąć cel. :-)

    Pozdrawiam
    Mariusz

    Dodano po 2 [minuty]:

    TvWidget napisał:
    Na dzień dzisiejszy tylko Chrome dopuszcza bezpośredni dostęp do interfejsu Bluetooth. Ta przeglądarka ma obecnie dominujący udział w rynku.

    Aaa... jasne rozumiem. Chrome z tej samej stajni co android :-)

    Pozdrawiam
    Mariusz
  • #27
    bsw
    Poziom 15  
    mario_ka napisał:
    bsw napisał:
    Popełniłem kiedyś takie cóś (do sterowania przez BT użyłem gotowca):

    Bardzo ciekawe urządzeni.
    Gdyby moduł HC-06 zastąpić takim o jakim piszemy byłaby też piękna aplikacja sterująca.

    Moduł jest bez znaczenia chodzi o apkę.
    Takich gotowych aplikacji sterujących przez BT jest od groma:
    https://play.google.com/store/search?q=bluetooth%20controller&c=apps
  • #28
    mario_ka
    Poziom 11  
    bsw napisał:
    mario_ka napisał:
    bsw napisał:
    Popełniłem kiedyś takie cóś (do sterowania przez BT użyłem gotowca):

    Bardzo ciekawe urządzeni.
    Gdyby moduł HC-06 zastąpić takim o jakim piszemy byłaby też piękna aplikacja sterująca.

    Moduł jest bez znaczenia chodzi o apkę.
    Takich gotowych aplikacji sterujących przez BT jest od groma:
    https://play.google.com/store/search?q=bluetooth%20controller&c=apps

    Dzięki za informacje.
    Na moim rysunku chodzi bardziej o kontrolę aplikacji poprzez moduł niż o kontrolę urządzenia za pomocą aplikacji poprzez dowolny moduł BT.
    Moduł ma znaczenie o tyle, że stosując moduł BLE możemy skorzystać z dodatkowych względem BT classic możliwości tej technologii.

    Pozdrawiam
    Mariusz
  • #29
    __Maciek__
    Poziom 19  
    Cytat:
    Generalnie w tym ogólnym pytaniu chodziło o jakieś proste i pewne rozwiązanie w przypadku:
    1. Mam urządzenie (arduino, avr, mcp.. cokolwiek)
    2. Chciałbym móc nim sterować ze smartfona.
    3. Chciałbym wyświetlać wyniki na ekranie smartfona.
    Czy mogę nie znając dogłębnie zaawansowanych technologii zrobić to łatwo i szybko?


    Właśnie ... IMHO jeśli chodzi o coś prostego i szybkiego - to jak najbardziej polecam Thuncable / appinventor ... łączyłem się za pomocą tego i dodatku BLE z modułem JDY-10 ( klon nie do końca odpowiadający modułom HM-10 / 11 ) ale serial over BLE posiada i funkcjonuje bardzo dobrze.
    Do tego troszkę wprawy .. aplikacja będzie posiadała wady - oprócz wspomnianych wyżej np. brak możliwości pracy w tle( lub praca bardzo nieprzewidywalna .. raz na jakiś czas bez określenia jak często , ale na pewno proste aplikacje do reprezentacji i sterowania da się w tym zbudować. Polecam spróbować.
    Ps. próbowałem przesiąść się na Android Studio - ale to wymaga duużo czasu jakoś mi to nie idzie - pomimo iż na pewno możliwości są duuużo większe.
  • #30
    TvWidget
    Poziom 34  
    mario_ka napisał:
    Na moim rysunku chodzi bardziej o kontrolę aplikacji poprzez moduł ...

    Z tego powodu wspomniałem o aplikacji przeglądarkowej. Urządzenie po nawiązaniu połączenia przez BLE może przesłać do przeglądarki wygląd interfejsu użytkownika w formie kodu JS. Inaczej mówiąc może mieć pełną kontrolę nad wyglądem graficznym strony i sposobu jej interakcji z użytkownikiem.