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

BASCOM, ATmega8 i bluetooth po RS232.

splawik00 28 Cze 2013 21:46 8484 4
  • #1 28 Cze 2013 21:46
    splawik00
    Poziom 23  

    Witam.
    Mam kłopot z transmisją przez bluetooth pomiędzy ATmegą i PC. Jest to moduł HC-05. Datasheet.
    O ile dałem sobie rady z przesyłem z PC do ATmegi to w drugą stronę już nie wiem jak to zrobić.
    Doszedłem do tego, że bluetooth ma osobny port do nadawania i do odbierania.
    Napisałem prostą aplikację otwierającą port nadawczy, wysyłającą dane i zamykającą port po wysłaniu. I to działa. :)
    Lecz w jaki sposób mam odebrać dane?
    Próbuję w ATmedze wysyłać co sekundę print "ok" lecz w terminalu bascomowym nic się nie pojawia. Terminal ustawiony na port odbierania danych, parametry transmisji się zgadzają. Moduł BT ma domyślne ustawienia (slave).
    Wydaje mi się, że to komputer jako master ma w jakiś sposób pozwolić modułowi nadać dane, lecz to tylko moje domysły. Proszę o jakieś wskazówki.

    Kodu nie zamieszczam bo jest prosty jak drut. Po prostu polecenie print i wait w pętli.

    0 4
  • Arrow Multisolution Day
  • #2 27 Lut 2014 21:48
    scorpik77
    Poziom 11  

    Wiem że minęło już trochę czasu od napisania wątku. ale mam zamiar także połączyć atmegę 8 przez bluetooth z androidem znalazłeś może rozwiązanie ? możesz załączyć schemat połączenia i program jaki użyłeś ?

    0
  • Arrow Multisolution Day
  • #3 28 Lut 2014 00:00
    splawik00
    Poziom 23  

    Witam.
    Tak poradziłem sobie z uruchomieniem.
    Myślę, że warto opisać tutaj dokładnie co i jak z tym HC-05.
    A więc jeśli ktoś ma sam układ HC-05 bez dodatkowej płytki z goldpinami, to powinien podłączyć go według tego schematu:

    BASCOM, ATmega8 i bluetooth po RS232.

    Oczywiście diody LED nie są konieczne. Jednak polecam podłączyć jedną (dwóch nie ma sensu wg mnie). Mam na myśli diodę LED, która na schemacie jest podłączona do zielonego "przewodu".
    Oczywiście należy pamiętać o rezystorach dla tych diód np. 470R.

    Dobra, mamy podłączony układ z prockiem i co teraz?

    Układ pracuje na baudrate 9600 (domyślnie). Hasło to 1234.
    Jeżeli ktoś chce "spersonalizować" swój moduł, czyli pozmieniać ustawienia to można zrobić to za pomocą poleceń. Jak to zrobić?
    Poprzez terminal z komputera za pomocą przejściówki lub z pomoca procesora.
    Tak zmienione ustawienia pozostaną w module nawet przy wyłączonym napięciu.
    Z tego też powodu nie ma sensu pisać programu do procesora gdzie po włączeniu zasilania konfigurowany będzie za każdym razem moduł BT.
    Wystarczy zrobić to raz. Jeżeli ktoś nie ma przejściówki USB<->RS232 na 3,3V a jedynie na 5V (ważne) to musi poradzić sobie albo z obniżeniem poziomu napięcia do 3,3V albo użyć procesora jako takiej przejściówki pisząc program, który wyśle komendy do HC-05 i zmieni ustawienia. Ale należy pamiętać, że procesor ten musi być zasilany 3,3V !!!

    Dobrze, do rzeczy. Warto przestudiować datasheet tego układu, tym bardziej, że nie jest ani skomplikowany, ani długi.
    Link do dikumentacji HC-05
    Warto zmienić takie ustawienia jak nazwa układu, hasło oraz prędkość transmisji. To wszystko :)

    Aby to zrobić należy zewrzeć pin 34 układu HC-05 do zasilania 3,3V, czyli nacisnąć przycisk na schemacie. Trzymając go wciśniętego włączamy zasilanie układu.
    W tym momencie LED (zieloony przewód) zacznie mrugać wolno, co oznacza, że jesteśmy w trybie programowania.
    Zakładam, że już mamy podłączony układ do przejściówki lub procesora.
    Ustawienia, które sa zawsze stałe dla trybu programowania to 38400 bodów.
    Ustawiamy więc terminal na tę częstotliwość (ewentualnie procesor) i wysyłamy tekst AT. Jeżeli wszystko działa układ zacznie "sypać" napisami OK. Wciskamy enter, aby zatrzymać ten proces. Jeżeli używasz procesora do tego celu to musisz po prostu wysłać ten ciąg znaków poleceniem print "AT".




    Zmieńmy więc nazwę urządzenia, która będzie wyświetlana później podczas łączenia się z tym modułem.
    Wysyłamy więc komendę AT+NAME=mojanazwa lub print "AT+NAME=mojanazwa" jeżeli ktoś robi to z poziomu procesora.
    Układ znów odpowie OK. Oczywiście zamiast mojanazwa wpisujecie co chcecie do 31 znaków.
    Dalej zmieńmy hasło. Wysyłamy AT+PSWD=mojehaslo lub print "AT+PSWD=mojehaslo". Znów otrzymujemy OK od urządzenia.
    Teraz można zmienić baudrate. I znowy wysyłamy AT+UART=38400,0,0 lub dla procków print "AT+UART=38400,0,0". W miejsce 38400 można wpisać jedną z poniższych wartości:

    Cytat:
    4800
    9600 (domyślna)
    19200
    38400
    57600
    115200
    234000
    460800
    921600
    1382400

    Ważne aby po przecinku nie wpisywać spacji !!!

    Jeżeli coś namieszamy to możemy przywrócić ustawienia domyślne tego modułu wysyłając polecenie AT+ORGL lub dla procesorowiczów print "AT+ORGL"

    Jeżeli wszystko się nam udało to mamy zmienione już parametry układu.

    Wyłączamy więc zasilanie i włączamy ponownie już bez wciśniętego przycisku.
    Tak więc jeżeli ktoś nie zamierza zmieniać ustawień często, to nie ma nawet sensu montować switcha.

    Obsługa modułu jest zadziwiająco prosta i nie wymaga totalnie żadnej zmiany w stosunku do normalnej komunikacji UART po kablu.
    Po prostu wpinamy zamiast przewodu nasz HC-05 i musi działać.

    Obsługa w BASCOM normalna, czyli za pomocą poleceń print lub input.

    Przykładowy kod dla Atmega8:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Kod nawet nie wymaga komentarzy ;)

    A więc mamy skonfigurowany moduł i w dodatku wysyła on co sekundę napis.
    Ale gdzie? No właśnie nigdzie. Nasz moduł nie ma nawiązanego połączenia, więc wszysko co teraz wejdzie (dane z procesora) do układu zostanie po prostu zignorowane.

    Kolejny krok to połączenie się z naszym modułem.
    Wyszukujemy więc nasz moduł w systemie poprzez normalną opcję "Dodaj urządzenie bluetooth". Znajdujemy nasz moduł klikamy dalej i w pewnym momencie komputer zapyta, czy mamy kod parowania lub czy ma utworzyć taki kod.
    My oczywiście mamy hasło więc klikamy opcję wprowadź hasło.
    Wpisujemy nasze hasło i przechodzimy dalej.
    Komputer zainstaluje nasze urządzenie i już pół drogi za nami.

    Teraz odnajdujemy nasz moduł (dla Windows: Panel sterowania->Urządzenia i drukarki) i klikamy na nim prawym->Właściwości. Wchodzimy w zakładkę Usługi i zobaczymy coś takiego jak Port szeregowy SPP, a z prawej COMx, np. COM8 lub inny. I to jest nasz port komunikacji z urządzeniem (procesorem).

    A zatem wchodzimy w Bascom->Options->Communication i wybieramy nasz COM8, czy jaki tam kto miał oraz baudrate na ten ustawiony dla modułu wcześniej.
    Zapisujemy i zamykamy okno.

    Możemy teraz otworzyć terminal w bascomie i powinniśmy zobaczyć nasz napis "TEST MODUŁU" pojawiający się co sekundę. Gotowe :D

    Oczywiście gdybyśmy teraz coś wpisali do terminalato pojawi się to w procesorze, a zatem trzeba to odebrać. Ale tutaj jest jakiś problem z bascomowym terminalem.
    I właśnie w tym miejscu utknąłem zakładając tem temat. To był właśnie powód.

    Jedynym rozsądnym rozwiązaniem jakie znalazłem to napisanie własnego terminala.
    Zamieszczam go poniżej dla wszystkich, którzy chcieli by skorzystać.
    Są to tak na prawdę dwa terminale działające jednocześnie wystarczy przełączyć klikając opcję "Przełącz na 2 terminale". Ale nam na razie wystarczy jeden.

    A zatem w moim terminalu wybieramy port COM i klikamy połącz.
    Teraz znów widzimy ten sam napis co w Bascom, ale mamy możliwość wysłania tekstu do procesora.

    Zmieńmy więc program i wgrajmy do procesora poniższy:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Procesor odbiera napis wysłany z komputera i odsyła go z powrotem z poprzedzającym napisem odebrano: .

    Myślę, że już wyjaśniłem sprawę komunikacji z modułem HC-05.
    Mam nadzieję, że komuś to pomoże :)
    Uzyskaliśmy dwukierunkową komunikację. Każdy z Was już na pewno ma pomysł jak i do czego wykorzystać tak fajne "narzędzie" jakim jest moduł HC-05 lub inny moduł BT.

    Po więcej informacji proponuję zajrzeć do datasheetów link_1 link_2 , bo to co opisałem to zaledwie czubek góry lodowej możliwości tego urządzenia :D

    Pozdrawiam.

    0
    Załączniki:
  • #4 02 Mar 2014 19:53
    scorpik77
    Poziom 11  

    Genialne !! Dziękuję za obszerną wypowiedź w imieniu swoim i całej społeczności która przeczyta ten post na elektrodzie na 100% bardzo to pomoże. Dziękuję także moderatorom za wyrozumiałość.

    0
  • #5 25 Gru 2014 12:53
    splawik00
    Poziom 23  

    Dodaję nowszą wersję terminala do konfiguracji tych modułów. Usunąłem zacinanie się programu i dodałem parę funkcji. Teraz można nim konfigurować również inne moduły, nie tylko bluetooth. Mamy również możliwość wyboru znaku(ów) końca linii osobno dla każdego terminala.

    1