Elektroda.pl
Elektroda.pl
X

Search our partners

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

Dobierzmy się do Androida (ale bez przemocy)

mario_ka 11 Feb 2019 13:18 7278 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

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    mario_ka
    Level 12  
    Offline 
    mario_ka wrote 97 posts with rating 97, helped 0 times. Live in city Kr. Been with us since 2006 year.
  • #2
    khoam
    Level 41  
    mario_ka wrote:
    I co Wy na to? Ma sens?


    No pewnie, że ma. Dlatego też istnieją już takie rozwiązania jak Blynk czy Virtuino.
  • #4
    krisRaba
    Level 31  
    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
    Level 12  
    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
    Level 41  
    mario_ka wrote:
    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 wrote:
    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
    Level 31  
    mario_ka wrote:
    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
    Level 36  
    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
    Level 12  
    krisRaba wrote:
    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 wrote:

    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 wrote:

    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 wrote:
    mario_ka wrote:
    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 wrote:
    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 wrote:
    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
    Level 36  
    mario_ka wrote:
    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
    Level 12  
    TvWidget wrote:
    mario_ka wrote:
    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 wrote:
    mario_ka wrote:
    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
    Level 12  
    bsw wrote:

    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
  • #16
    mario_ka
    Level 12  
    bsw wrote:
    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__
    Level 20  
    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
    Level 12  
    __Maciek__ wrote:
    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__
    Level 20  
    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
    Level 36  
    mario_ka wrote:
    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
    Level 12  
    __Maciek__ wrote:
    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__ wrote:
    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 wrote:
    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
    Level 36  
    mario_ka wrote:
    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
    Level 12  
    TvWidget wrote:
    mario_ka wrote:
    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
    Level 36  
    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
    Level 12  
    TvWidget wrote:
    mario_ka wrote:
    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 wrote:
    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
    Level 18  
    mario_ka wrote:
    bsw wrote:
    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
    Level 12  
    bsw wrote:
    mario_ka wrote:
    bsw wrote:
    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__
    Level 20  
    Quote:
    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
    Level 36  
    mario_ka wrote:
    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.