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

Bluetooth HC-05 + ATtiny13 - Programowanie modułu HC-05 poprzez połączenie BT

dobo_28 09 Mar 2016 22:08 2643 30
  • #1 09 Mar 2016 22:08
    dobo_28
    Poziom 11  

    Witam,
    Potrzebuje wykonać projekt z modułem BT HC-05, który będzie programowany przez samego siebie poprzez połączenie go z ATtiny13.

    Tak wygląda schemat projektu
    Bluetooth HC-05 + ATtiny13 - Programowanie modułu HC-05 poprzez połączenie BT

    W prawym górnym rogu narysowałem moduł HC-05 i z jakich wyprowadzeń będę korzystał. Natomiast do schematu podpiąłem terminal by móc testować działanie programu.

    Opis działania:
    Poprzez komputer lub telefon nawiązuję połączenie z modułem (parowanie) uruchamiam terminal do wysyłania komend AT.
    Przyciskiem poprzez naciśniecie i przytrzymanie przez 5 sekund uruchamiam funkcję programowania o czym poinformuje dioda LED. W tym momencie ATtiny13 czeka na odebranie komendy AT z komputera lub telefonu.
    Po otrzymaniu komendy AT np. (AT+UART=4800,0,0) zostaje ona zapisana w pamięci ATtiny, która na chwilę wyłączy zasilanie HC-05 i ponownie załączy oraz dodatkowo poda stan wysoki na pin 34 (KEY) by wywołać w module stan programowania z prędkością 38400,0,0.
    Po wprowadzeniu w stan programowania HC-05 po około 2 sekundach zostaje wysłana zapisana wcześniej w pamięci komenda AT, która dokonała by przeprogramowanie modułu HC-05 i nastąpiło by zrestartowanie modułu poprzez chwilowe wyłączenie zasilania na module oraz zanik stanu wysokiego na pinie 34 (KEY).

    Problem jaki widzę w tym projekcie to to, że z modułem będę się komunikował przy różnych ustawieniach prędkości BAUD 4800, 9600, 19200, 38400, 57600 lub 115200 i nie wiem jak to będzie jeśli połączę się poprzez komputer lub telefon przy BAUD 9600 wyślę komendę AT np. (AT+UART=4800,0,0), a ona potem zostanie przesłana przez ATtiny13 z prędkością BAUD38400. Czy nie zostaną wysłane jakieś niezrozumiałe dla HC-05 "krzaki".

    Czy problem jaki opisałem jest możliwy do wykonania?

    Zamierzam wzorować się na tym http://cxem.net/mc/mc179.php projekcie oczywiście z pewnymi modyfikacjami pod to co chciałbym uzyskać.

    0 29
  • #2 09 Mar 2016 22:26
    dondu
    Moderator Mikrokontrolery Projektowanie

    Nie bardzo rozumiem więc napiszę ogólnie. Nie ma znaczenia jaki baud jest ustawiony w terminalu na komputerze, jeśli łączysz się z HC05 drogą radiową przez bluetooth zainstalowany w komputerze.

    Baud ma tylko znaczenie dla pinów RxD i TxD w HC05, czyli na połączeniu ATtiny - HC05.

    Szczegóły: http://mikrokontrolery.blogspot.com/2011/03/Bluetooth-mikrokontrolery-kurs-jak-zaczac.html

    0
  • #3 09 Mar 2016 22:42
    dobo_28
    Poziom 11  

    Chodzi o to, że raz to połączenie na pinach TX i RX połączonych do ATtiny będzie miało 4800 innym razem już 9600, a innym np. 115200 wiec pin z RX na ATtiny musi potrafić odebrać z rożnymi prędkościami komendy AT ale wysłać otrzymaną komendę ze stałą prędkością 38400 i by przy tym, że wystąpią różne prędkości wejścia i wyjścia z ATtiny nie zostały wysłane głupoty w postaci niezrozumiałej komendy.

    0
  • #4 09 Mar 2016 22:45
    dondu
    Moderator Mikrokontrolery Projektowanie

    Moduł HC-05 w trybie komend AT ma dwa sposoby wejścia, co odpowiada dwóm różnym standardowym prędkościom przesyłu komend. Nie można tego zmienić. Jest tak zrobione po to, by zawsze można było wejść do trybu komend AT.

    Przeczytaj dokumentację lub artykuł z linku, który Ci podałem, a który dotyczy komend AT.

    Można natomiast zmieniać baud w przypadku przesyłania innych danych niż komendy AT.

    0
  • #5 09 Mar 2016 23:00
    dobo_28
    Poziom 11  

    dondu napisał:
    Moduł HC-05 w trybie komend AT ma dwa sposoby wejścia, co odpowiada dwóm różnym standardowe prędkości przesyłu danych. Nie można tego zmienić.

    To wiem i dlatego chcę wykorzystać ten drugi sposób czyli ze stałą prędkością 38400 poprzez podanie w tym samym momencie stanu wysokiego i zasilania modułu.

    Chodzi o to, że jak moduł w czasie normalnej pracy będzie miał ustawienia 9600,0,0 i połączę się przez komputer lub telefon z tą prędkością zostanie wysłana komenda (AT+UART=4800,0,0) do ATtiny, która ma być przechowana w jej pamięci. Po odebraniu komendy AT ATtiny ma za zadanie wprowadzić moduł HC-05 w stan programowania (w tym momencie zrywa się połączenie z komputerem lub telefonem bo moduł wchodzi w stan programowania komendami AT) i odesłać komendę przechowywaną w pamięci ATtiny ale z prędkością 38400.

    Jest to skomplikowany projekt, bynajmniej dla mnie, a jest to dopiero mój 2 projekt z ATtiny dopiero raczkuję w temacie z mikrokontrolerami.
    Całość będę chciał napisać w Bascom.
    Ale czy jest to wykonalne?

    0
  • #6 09 Mar 2016 23:16
    373522
    Użytkownik usunął konto  
  • #7 09 Mar 2016 23:38
    dobo_28
    Poziom 11  

    Jeśli chodzi o ATtiny13 to dlatego, że akurat mam parę takich na stanie. Ale nie będzie problemem te, które podałeś. Może też być ATMEGA8A ale im mniejszy tym lepiej.

    niveasoft napisał:
    Da się zrobić tylko czy Ty dasz rade to nie wiem :D

    Wyjścia nie mam, a jak nie spróbuję to się nie dowiem. Zawsze można iść na łatwiznę i kupić coś by działało tak jak byśmy tego chcieli.

    Na ten temat nie wpadłem choć szukałem coś podobnego by mieć jakiś punkt zaczepienia.
    Tam realizacja zmiany BAUD odbywa się poprzez przełącznik, który zmienia 2 zaprogramowane prędkości. Natomiast ja chciałbym o dużo większym zakresie zmian BAUD, oraz dodatkowo np. zmienić Hasło lub nawet nazwę modułu.

    0
  • #8 10 Mar 2016 05:13
    dondu
    Moderator Mikrokontrolery Projektowanie

    dobo_28 napisał:
    Chodzi o to, że jak moduł w czasie normalnej pracy będzie miał ustawienia 9600,0,0 i połączę się przez komputer lub telefon z tą prędkością zostanie wysłana komenda (AT+UART=4800,0,0) do ATtiny, która ma być przechowana w jej pamięci. Po odebraniu komendy AT ATtiny ma za zadanie wprowadzić moduł HC-05 w stan programowania (w tym momencie zrywa się połączenie z komputerem lub telefonem bo moduł wchodzi w stan programowania komendami AT) i odesłać komendę przechowywaną w pamięci ATtiny ale z prędkością 38400.

    Ale co to ma wspólnego z tym co pisałeś wcześniej o zmianach prędkości?

    Nadal nie rozumiem Twojego problemu.

    To co wyślesz z komputera czy telefonu do ATtiny via HC05 nie ma znaczenia, bo to leci drogą radiową z maksymalną prędkością Bluetooth i tutaj baud po stronie komputera, czy telefonu nie ma znaczenia. Baud 4800 będzie istotne tylko dla ATtiny i HC05, czyli dla pinów RxD i TxD którymi są one połączone, a nie dla komputera, czy smartfonu.

    Wyjaśnij może dokładnie po co chcesz zmieniać transmisję na 4800 pomiędzy ATtiny i HC05? Może wtedy zrozumiem, o co Ci chodzi.

    0
  • #9 10 Mar 2016 08:00
    dobo_28
    Poziom 11  

    A moduł nie działa tak, że jak BAUD jest ustawione np. na 9600 to połączenie BT pomiędzy komputerem lub telefonem z modułem HC-05 jest właśnie z taką prędkością. Bo z tego co napisałeś rozumiem, że połączenie BT jest maksymalne dla modułu HC-05 i przez ten moduł musiało by być spowalniane i buforowane do prędkości 9600 bo taki byłby ustawiony parametr BAUD w module. Jeśli zaczął bym wysyłać dane z tak dużą prędkością to po pewnym czasie moduł zapchał by się danymi.
    W tym projekcie chodzi o to by móc zmieniać prędkości komunikacyjne modułu HC-05 by potem ten sam moduł mógł łączyć się z innymi modułami, które będą miały różne parametry BAUD (stałe).
    A ten jeden ma być programowany ale bezprzewodowo by nie wyciągać modułu i podpinać do programatora USB.

    0
  • #10 10 Mar 2016 09:11
    BlueDraco
    Specjalista - Mikrokontrolery

    To też już było. Moduł Bluetooth kosztuje < 10 zł i przełączanie go pomiędzy różnymi urządzeniami nei ma sensu. Protokół komunikacyjny musi gwarantować, że moduł się nie "zapcha". Teoretycznie moduł ma linie RTS/CT,a w niektórych modułach podobno nawet one działają. W praktyce komunikacja jest zawsze dwikierunkowa, więc urządzenie odpowiada na blok danych i ta odpowiedź oznacza, że można mu wysłać następny blok.

    0
  • #11 10 Mar 2016 13:25
    dobo_28
    Poziom 11  

    BlueDraco w innym temacie już wypowiedziałeś się w podobnym tonie oczywiście mogę zrobić coś takiego i to nawet działa jeden moduł BT programuje drugi moduł BT. Ale nie bardzo mam czas na czekanie na przesyłkę z Chin, a uC dziś zakupiłem mam ATtiny85 i ATmega8a cena 4 razy niższa od modułu BT z aledrogo. A dodatkowa nauka zrobienia i przy okazji nauczenia się czegoś nowego bezcenna.

    0
  • #12 10 Mar 2016 14:04
    dondu
    Moderator Mikrokontrolery Projektowanie

    dobo_28 napisał:
    A moduł nie działa tak, że jak BAUD jest ustawione np. na 9600 to połączenie BT pomiędzy komputerem lub telefonem z modułem HC-05 jest właśnie z taką prędkością.

    Toć przecież cały czas to Ci wyjaśniam:

    dondu napisał:
    Nie ma znaczenia jaki baud jest ustawiony w terminalu na komputerze, jeśli łączysz się z HC05 drogą radiową przez bluetooth zainstalowany w komputerze.

    Baud ma tylko znaczenie dla pinów RxD i TxD w HC05
    , czyli na połączeniu ATtiny - HC05.


    dondu napisał:
    To co wyślesz z komputera czy telefonu do ATtiny via HC05 nie ma znaczenia, bo to leci drogą radiową z maksymalną prędkością Bluetooth i tutaj baud po stronie komputera, czy telefonu nie ma znaczenia. Baud 4800 będzie istotne tylko dla ATtiny i HC05, czyli dla pinów RxD i TxD którymi są one połączone, a nie dla komputera, czy smartfonu.



    Ostatecznie więc masz dwie warstwy komunikacyujne:
    1. radiowa i tutaj baud jest maksymalny i niezmieniany (przez Ciebie).
    2. "kabelkowa", czy prędkość transmisji na pinach RxD i TxD, i tę możesz zmieniać.

    dobo_28 napisał:
    Bo z tego co napisałeś rozumiem, że połączenie BT jest maksymalne dla modułu HC-05 i przez ten moduł musiało by być spowalniane i buforowane do prędkości 9600 bo taki byłby ustawiony parametr BAUD w module. Jeśli zaczął bym wysyłać dane z tak dużą prędkością to po pewnym czasie moduł zapchał by się danymi.

    Oczywiście że się zatka, bo transfer Bluetooth 2.0 + EDR, to 2,1Mb/s, czyli około 262kB/s.
    Dlatego o takie sprawy musisz zadbać sam.


    Jeśli natomiast musisz przełączać HC05 pomiędzy różnymi układami sterującymi, to rzecz należy rozwiązać inaczej, Taki układ powinien się przedstawić, czyli wysłać do komputera lub telefonu info, że ten ma posyłać dane znacznie wolniej. Innymi słowy, komputer lub telefon muszą dostosować się do odbiornika.

    Ale swoją drogą, to co to za urządzenia działające z tak małą prędkością jak 4800, czy nawet 9600?

    0
  • #13 10 Mar 2016 15:47
    dobo_28
    Poziom 11  

    dondu napisał:
    Toć przecież cały czas to Ci wyjaśniam:
    Czyli tu sprawa jest jasna i klarowna tak jak sądziłem.
    Co do ustawień w systemie to wiem, że tam nic się nie zmienia.

    Połączenie np. Smartfon - moduł BT jest ustalane na prędkość BAUD z jaką został zaprogramowany moduł BT. Tak mi to działa na androidzie.
    W systemie Windows wygląda to tak, że w RealTerm muszę ustawić taką samą prędkość by dane zostały przesłane prawidłowo w innym wypadku zostaną wysłane "krzaki" lub nic nie odbiorę.

    dondu napisał:
    Innymi słowy, komputer lub telefon muszą dostosować się do odbiornika.
    Telefon to robi. Przetestowane na opisanym przez Ciebie przykładzie z programem MIT App Inventor 2 w nim nigdzie nie wpisuję prędkości BAUD, a telefon łączy się z prędkością zapisaną w module.

    dondu napisał:
    Ale swoją drogą, to co to za urządzenia działające z tak małą prędkością jak 4800, czy nawet 9600?

    Te prędkości były tylko przykładowe do pokazania o co dokładnie chodzi.

    0
  • #14 10 Mar 2016 17:21
    dondu
    Moderator Mikrokontrolery Projektowanie

    Mam wrażenie, że nadal nie rozumiesz różnicy standardu przesyłania danych drogą radiową od danych po kablu z pinów RxD i TxD.

    dobo_28 napisał:
    Połączenie np. Smartfon - moduł BT jest ustalane na prędkość BAUD z jaką został zaprogramowany moduł BT. Tak bynajmniej to działa na androidzie.

    Nie. Działa z prędkością która wynika ze standardu Bluetooth 2.0 + EDR, a którą podałem wyżej 2,1Mbps. Dlatego w App Inventorze nie masz ustawiania baud, ale musisz zadbać, by zbyt szybko danych w dużej ilości nie wysyłać, by nie przepełnić bufora HC-05.


    Zanim ostatecznie napiszę odpowiedz na pytanie:

    dobo_28 napisał:
    Pod Windows wygląda to tak, że np w RealTerm muszę ustawić taką samą prędkość by dane zostały przesłane prawidłowo w innym wypadku zostaną wysłane "krzaki" lub nic nie odbiorę.

    Czy Realterm korzysta z Bluetooth zainstalowanego w komputerze?

    0
  • #15 10 Mar 2016 18:10
    dobo_28
    Poziom 11  

    Realterm służy mi tylko do wysyłania komend AT+UART=............... na razie do niczego więcej.

    czyli jeśli wprowadzę takie ustawienia w ATtiny

    Kod: actionscript
    Zaloguj się, aby zobaczyć kod

    moduł BT będzie ustawiony na BAUD 57600,8,o,1 albo dla czystej abstrakcji 57600,8,e,2.

    Realterm ustawiam np. na 9600,8,n,1 wysyłam komendę by zmienić parametry modułu BT np. na taki parametr AT+UART=115200,0,0

    Oczywiście działanie z odebraniem i wysłaniem komendy AT ma być wykonane jak opisałem to w pierwszym poście.

    Wychodziło by tak, że na kompie i wejściu ATtiny są takie same parametry w pamięci zostaje zapisana komenda w formie tekstowej, po wprowadzeniu modułu w stan programowania, komenda z ATtiny zostaje wysłana z prędkością 38400,8,n,1 moduł zostaje zrestartowany i parametry 57600,8,o,1 lub 57600,8,e,2 zostają zamienione na 115200,0,0.

    Tylko moim zdaniem to nie ma prawa zadziałć bo TX HC-05 będzie miał prędkość 57600,8,o,1 albo dla czystej abstrakcji 57600,8,e,2 natomiast port RX w ATtiny 9600,8,n,1 według mojego rozumowania to nie ma prawa zadziałać.

    0
  • #16 10 Mar 2016 19:59
    dondu
    Moderator Mikrokontrolery Projektowanie

    Chyba się nie dogadamy, bo nie opisujesz dokładnie jak co jest połączone i w której sytuacji którą w danym momencie opisujesz. Zamiast tego opisujesz abstrakcję, z której musimy wywnioskować to sami. W dodatku nie opowiadasz na zadane pytanie.

    Zrób schematy (proste poglądowe) na kartce i załącz do nich opisy, osobno dla każdej sytuacji, którą opisujesz.

    0
  • #17 10 Mar 2016 20:53
    dobo_28
    Poziom 11  

    Kurde staram się to opisać najprościej jak to tylko możliwe.
    Nie chcę za każdym razem powielać to co jest w pierwszym poście.



    Opis działania:
    Poprzez komputer lub telefon nawiązuję połączenie z modułem (parowanie) uruchamiam terminal do wysyłania komend AT.
    Przyciskiem poprzez naciśniecie i przytrzymanie przez 5 sekund uruchamiam funkcję programowania o czym poinformuje dioda LED. W tym momencie ATtiny13 czeka na odebranie komendy AT z komputera lub telefonu.
    Po otrzymaniu komendy AT np. (AT+UART=4800,0,0) zostaje ona zapisana w pamięci ATtiny, która na chwilę wyłączy zasilanie HC-05 poprzez sterowanie tranzystorem i ponownie załączy, a także dodatkowo poda stan wysoki na pin 34 (KEY) by wywołać w module stan programowania z prędkością 38400,0,0.
    Moduł HC-05 po wprowadzeniu w stan programowania przez ATtiny po około 2 sekundach HC-05 otrzymuje od niej zapisaną wcześniej w pamięci komendę AT, która dokonuje przeprogramowanie modułu HC-05, a następnie ATtiny restartuje moduł poprzez chwilowe wyłączenie zasilania na nim oraz następuje wyłączenie stanu wysokiego na pinie 34 (KEY).

    Dodatkowo Piny TX i RX modułu HC-05 są podłączone do urządzenia, które będzie sterowane poprzez ten właśnie moduł ale to nie zostało umieszczone na schemacie.

    W skrócie poprzez telefon lub komputer (ale bardziej zależy mi na telefonie) chcę dokonać zmiany parametrów na pinach TX i RX modułu BT ale bezprzewodowo i za pomocą tego samego modułu.

    0
  • #18 10 Mar 2016 21:04
    dondu
    Moderator Mikrokontrolery Projektowanie

    Więc odpowiadając na Twoje pytanie jeszcze raz tłumaczę - nie masz wpływu na prędkość transmisji radiowej.
    Masz za to wpływ na prędkość transmisji po kablu co zmieniasz.
    To już zostawiamy, bo już to rozumiesz.

    Teraz masz problem z tym, że ustawiłeś HC05 np. na 4800 a ponownie chcesz przesłać komendę AT, którą ATtiny ma zapamiętać, by przeprogramować baud w HC-05.

    Ale przecież Twój ATtiny ma EEPROM i może pamiętać ostatnie ustawienia HC-05 jakie ustawił.

    ... trudno się rozmawia jak nie widzi się sensu takiego kombinowania jak proponujesz.

    0
  • #19 10 Mar 2016 21:28
    dobo_28
    Poziom 11  

    dondu napisał:
    Teraz masz problem z tym, że ustawiłeś HC05 np. na 4800 a ponownie chcesz przesłać komendę AT, którą ATtiny ma zapamiętać, by przeprogramować baud w HC-05.

    Tak chce dowolnie zmieniać Baud, Parity, Stop Bits bezprzewodowo czasem poprzez komputer, a w większości przez telefon. Tak jak bym ten moduł HC-05 podpiął do komputera przez kabel - Konwerter USB-UART PL2303HX i zmieniał te parametry. Ale zamiast tego kabla chcę to zrobić bezprzewodowo za pomocą tego samego modułu.

    dondu napisał:
    Ale przecież Twój ATtiny ma EEPROM i może pamiętać ostatnie ustawienia HC-05 jakie ustawił.
    nie bardzo wiem do czego miałbym tą pamięć wykorzystać jeżeli nie mam wpływu na prędkość transmisji bezprzewodowej.
    Najbardziej obawiałem się problemów przy wysyłaniu komendy AT do ATtiny bo z tego co piszesz nie mam na to wpływu z jaką prędkością zostanie ona wysłana (choć w kompie za pomocą realterm mogę sobie ustawić z jaką prędkością komenda zostanie wysłana, a w telefonie już takiej możliwości nie ma). Natomiast ATtiny odeśle tą komendę już z zadeklarowaną prędkością na porcie ATtiny (Open "comb.3:38400,8,n,1" For Output As #1 ) jak i sam HC-05 będzie miał ustawiony pin RX na taką samą prędkość.

    0
  • #20 12 Mar 2016 23:46
    dobo_28
    Poziom 11  

    Jak na razie udało mi się zrobić coś takiego wczytane do ATtiny85 bo ATtiny13 ma za mało pamięci na wczytanie kodu i nawet taki parametr Dim Cmd As String * 15
    nie mógł być większy jak 15 wiec komenda w takiej postaci AT+UART=9600,0,0 nie przechodziła bo ma 16 znaków, a co dopiero AT+UART=115200,0,0\r\n

    Kod: actionscript
    Zaloguj się, aby zobaczyć kod

    poprawiłem kod teraz dioda gaśnie po wysłaniu komendy AT i zyskałem 3% na zasobach pamięci.

    Na razie nie mam pojęcia jak zrobić by wysłana komenda zapisała się w pamięci i została odesłana po tych 2 sekundach.
    Wiec rozwiązałem to chwilowo w taki sposób jak powyżej. Nie jest to dobre rozwiązanie bo nie da się wysłać innych komend niż te zapisane w ATtiny :(


    Dalej nie potrafię rozwiązać problemu by dynamicznie zmieniać prędkość wejścia RX dla ATtiny, które ma być uzależnione od wyjścia TX HC-05.

    dondu już kumam to co mi wałkowałeś o transmisji BT moje zwoje mózgowe wypoczęte i na spokojnie zrozumiały zasadę prędkości BT oddzielając ją całkowicie od prędkości na pinach TX i RX modułu :)

    Dodano po 3 [godziny] 28 [minuty]:

    Czy jest w ogóle możliwa dynamiczna zmiana prędkości na porcie ATtiny?

    0
  • #21 13 Mar 2016 00:26
    373522
    Użytkownik usunął konto  
  • #22 13 Mar 2016 09:32
    slawko_k
    Poziom 33  

    dobo_28
    Z ciekawości zapytam do czego ma służyć takie urządzenie?
    W jakim celu chcesz te prędkości zmieniać?
    Patrząc na schemat to to urządzenie chyba nic więcej nie będzie robić.

    Tak jak kol Dondu napisał czegoś tu nie rozumiesz w tej transmisji. Gdybyś rozumiał to takie urządzenie nie byłoby CI chyba potrzebne

    0
  • #23 13 Mar 2016 14:42
    dobo_28
    Poziom 11  

    Dorysowałem piny TX i RX, o których pisałem w poście 17 do tych pinów podłączone będą różnego rodzaju urządzenia, które maja stałą prędkość transmisji BAUD
    na obecna chwilę są to prędkości 9600, 38400 i 57600 ale możliwe, że dojdzie jeszcze jedna lub dwie prędkości.


    Bluetooth HC-05 + ATtiny13 - Programowanie modułu HC-05 poprzez połączenie BT


    niveasoft w tamtym temacie ATtiny miało za zadanie przełączanie się pomiędzy dwiema prędkościami. Ja chciałbym zrobić uniwersalny interfejs komunikacyjny czyli więcej możliwych prędkości oraz by móc w przyszłości zmieniać nie tylko "baud" ale nawet "parity" i "stop bits".

    Na obecny stan mojej wiedzy i to co mi podpowiedziałeś port wejściowy "Open "comb.4:38400,8,n,1" For Input As #2" trzeba było by opisać jako dynamiczny SERIN.
    Port wyjściowy "Open "comb.3:38400,8,n,1" For Output As #1" pozostał by bez zmian poprzez wprowadzenie HC-05 w stan programowania z prędkością 38400.


    By dokonać zmiany BAUD na pinach TX i RX w HC-05 ATtiny musiałaby 2 razy wprowadzić HC-05 tryb komend AT.

    Pierwsze wprowadzenie w AT sprawdza ustawienie BAUD poprzez komendę AT+UART po jej otrzymaniu (+UART=9600,0,0) następuje wyjście z AT oraz ustawienie na wejściu ATtiny otrzymanych parametrów komunikacyjnych.
    Teraz łączę się z HC-05 przez komputer lub telefon wysyłam do ATtiny komendę AT+UART=38400,0,0 , która po jej otrzymaniu ponownie (drugi raz) wprowadza HC-05 w tryb AT i wysyła do niego komendę AT+UART=38400,0,0 po czym następuje wyjście z AT.
    Teraz HC-05 na pinach TX i RX ma ustawione parametry 38400,8,n,1.

    Przełączanie pomiędzy kolejnymi prędkościami wyglądało by analogicznie do tego co zostało opisane wyżej.

    Czy można ustawić tylko jeden port jako dynamiczny?

    slawko_k to ma być uniwersalny interfejs do transmisji szeregowej ale bezprzewodowy. Urządzenia, które będą podłączane do tego interfejsu komunikują się z rożnymi prędkościami.
    Dorysowałem brakujące wyprowadzenia.

    Można by to było jeszcze zrobić tak, że po zaprogramowaniu HC-05 odłączam od ATtiny (połączenie na złączach goldpin) i przekładam do urządzenia, z którym inne urządzenia będą łączyć się bezprzewodowo.
    ATtiny ma służyć tylko do przeprogramowania pinów TX i RX w HC-05.


    By uciąć domysły i spekulacje do czego niby ma być użyty ten projekt to nie mogę tego powiedzieć.
    Jeżeli to komuś bardzo przeszkadza, że nie mogę powiedzieć do czego tak przeprogramowywany moduł HC-05 będzie podłączony (wykorzystany) może się w temacie w ogóle nie wypowiadać nikogo do tego nie zmuszę.
    Jeśli jednak nie przeszkadza ta tajemniczość, to nieśmiało liczę na pomoc w ukończeniu projektu za co z góry Dziękuję.


    Dziękuję dondu oraz niveasoft za podpowiedzi i nakierowywanie na możliwe rozwiązania.
    Jestem świadom swojej niewiedzy i, że może ona bardzo denerwować bardziej doświadczonych w temacie jeśli zadaję pytanie, które dla Was może być błahostką dla mnie jest na obecną chwilę "czarną magią".

    0
  • #24 14 Mar 2016 20:49
    dobo_28
    Poziom 11  

    Dzisiaj wpadłem na jeszcze inny sposób przeprogramowywania HC-05.

    Bluetooth HC-05 + ATtiny13 - Programowanie modułu HC-05 poprzez połączenie BT

    W tym rozwiązaniu nie byłoby potrzeby łączenia się z modułem bluetooth.
    Zmiany dokonywane będą przy pomocy 3 przycisków.

    Pierwszy przycisk odpowiada za BAUD i przełącza kolejno 9600, 19200, 38400, 57600, 115200.
    Drugi przycisk odpowiada za PARITY i przełącza kolejno NONE, ODD, EVEN.
    Trzeci przycisk odpowiada za STOP_BITS i przełącza kolejno 1BIT, 2BITS.

    Wywołanie trybu programowania (38400) polega na dłuższym przytrzymaniu przycisku BAUD (5-10 sekund) po czym następuje podanie stanu wysokiego na pin 34 HC-05 oraz chwilowy zanik napięcia na pinie Vcc po tym następuje odpytanie modułu jakie ma zapisane parametry.
    Tu przydałby się wiersz z podziałem na komendę AT (AT+UART=), BAUD (..........), PARITY (..........), STOP_BITS(..........) po odpytaniu HC-05 jakie ma parametry komendą (AT+UART)
    w miejsca wykropkowane podstawiają się odczytane dane, a diody Led poprzez odpowiednią ilość impulsów informują jaki ustawiony jest parametr przykład dla BAUD (1 impuls powtarzany co sekundę) 9600,
    (2 impulsy powtarzane co sekundę) 19200, (3 impulsy powtarzane co sekundę) 38400 ..... analogicznie wyglądałoby to z parametrami PARITY i STOP_BITS.

    Gdy już mamy podstawione dane w nawiasach Komenda AT (AT+UART=) jest stała, BAUD (9600), PARITY (0), STOP_BITS (0) możemy dokonać zmiany w poszczególnych nawiasach za pomocą odpowiedniego przycisku.
    Naciskając raz na przycisk BAUD w nawiasie zmienia się parametr na 19200, a dioda Led miga 2 impulsami powtarzanymi co sekundę, kolejne naciśniecie BAUD ustawia 38400, a dioda Led miga 3 impulsami powtarzanymi co sekundę
    i podobnie dla kolejnych prędkości 57600, 115200 i od nowa 9600.

    Po wprowadzeniu ustawień BAUD, PARITY i STOP_BITS kolejny raz naciskamy i przytrzymujemy przycisk BAUD (5-10 sekund) w tym momencie zostaje wysłana komenda AT i następuje zrestartowanie HC-05.

    To rozwiązanie eliminuje łączenie się z telefonem lub komputerem w celu przeprogramowania modułu BT i kombinowaniem ze zmianą wejścia RX ATtiny.
    To było by najlepsze rozwiązanie.

    Teraz tylko czy to co sobie wymyśliłem jest możliwe i proste :) do wykonania chodzi o to podstawianie się danych w nawiasach i ich zmiana poprzez SW.

    Dodano po 1 [godziny] 40 [minuty]:

    Poprawiłem schemat

    Bluetooth HC-05 + ATtiny13 - Programowanie modułu HC-05 poprzez połączenie BT

    Działa wywołanie trybu programowania komendami AT (38400) oraz wysłanie (AT+UART) do HC-05 w celu sprawdzenia jak jest zaprogramowany moduł :)

    0
  • Pomocny post
    #25 14 Mar 2016 22:23
    373522
    Użytkownik usunął konto  
  • #26 14 Mar 2016 23:08
    dobo_28
    Poziom 11  

    niveasoft problem, który opisałeś chciałem rozwiązać na dwa sposoby:
    1) po zaprogramowaniu modułu odłączać go poprzez zastosowanie listwy goldpin,
    2) pomiędzy HC-05, a GPS wstawić dodatkowo 74HC14D i sterować jego zasilaniem (jak HC-05 jest programowany to rozłącza zasilanie układu 74HC14D)

    0
  • #27 15 Mar 2016 20:33
    dondu
    Moderator Mikrokontrolery Projektowanie

    niveasoft napisał:
    To co proponował Dondu nie było jeszcze optymalne. Po co zapamiętywać jaką prędkością akurat operuje moduł?
    Po włączeniu zasilania przełączamy moduł BT w tryb komend AT i z prędkością 38400 odpytujemy go "AT+BAUD?" moduł odpowie a z otrzymanej odpowiedzi wyłuskujesz prędkość ...

    Słuszna uwaga, z małą poprawką - z oficjalnej dokumentacji nie wynika, by taka komenda istniała. Jest natomiast AT+UART? która zwraca np: +UART:115200,1,2

    0
  • #28 18 Mar 2016 20:20
    dobo_28
    Poziom 11  

    mam już możliwość odebrania komendy z potwierdzeniem jej otrzymania (potwierdzenie potem zostanie usunięte bo nie jest ono do niczego potrzebne ale do testów pozostanie)

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    nadal nie wiem jak podzielić odebraną komendę na BAUD, PARITY i STOP_BITS oraz by po podziale zmieniać za pomocą SW parametry danej części składowej parametru UART

    0
  • #29 19 Mar 2016 09:08
    slawko_k
    Poziom 33  

    Chyba prościej stablicować to jakoś.
    Wysyłasz komendę nie "AT+UART=4800,0,0" tylko np "parametry1".
    i potem w odbiorniku

    IF komenda = "parametry1" then
    xxxx=4800
    yyy=0
    zzz=0
    end if

    i do każdej innej konfiguracji tak samo

    0
  • #30 19 Mar 2016 10:49
    373522
    Użytkownik usunął konto