Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

zigbee ATZB-24-A2 schemat podłączania oraz komunikacja USART

lisek_lichu 30 Sep 2010 21:43 6997 19
Texa Poland
  • #1
    lisek_lichu
    Level 11  
    Witam,

    mam mały problem. Buduję urządzenie które ma komunikować się radiówką z komputerem. Używam modułów Zigbee Atmela zakupionych w Maritexie.

    Problem polega na tym że nie jestem pewien czy do końca dobrze zrobiłem schemat podłączania modułu do zasilania i tu prosiłbym o komentarz do dodanego schematu.

    zigbee ATZB-24-A2 schemat podłączania oraz komunikacja USART

    W nocie piszą, że zasilanie musi być z przedziału 1.8 - 3.6 V. Ja zasilam układ bateria Li-Ion 4.2V a zasilanie idzie przez dwie diody 1N4002 na których występuje spadek około 0.65V x 2 więc ostatecznie napięcie zasilające sam układ wynosi 2,9V.
    Dodatkowo wmontowałem dwa kondensatory na wejściu i diodę Zenera 3V6 która ma zabezpieczyć układ przed napięciami większymi od 3,6V. Sprawdzałem napięcia i wszystko jest ok.

    Mój problem polega na tym że zgodnie ze standardem rs232 na wyjściu TX układów komunikujących się tym standardem powinna być cały czas jedynka logiczna a na RX zero logiczne.

    Dodatkowo w nocie piszą że TX jest używany do odbierania danych a RX do przesyłania czyli na odwrót niż normalnie.

    Gdy mierzę oscyloskopem napięcia na tych dwóch pinach to okazuje się że na RX jet zero logiczne a na TX napięcie skacze od zera logicznego do jedynki logicznej z okresem 0.9s

    Nie wiem czy problemem mogą być te kondensatory bo w moim schemacie wmontowałem 470uF a w nocie piszą że 1uF. Zrobiłem tak za radą mojego kolegi.

    Nie wiem czy dioda Zenera nie powoduje takich zachowań.

    Na koniec wylutowałem wszystko i zostawiłem tak jak poniżej

    zigbee ATZB-24-A2 schemat podłączania oraz komunikacja USART

    ale nadal na wyjściu TX pojawia mi się to drganie co 900ms.

    ktoś miał podobny problem? Albo wie czym to jest spowodowane. Kolega używa modułów MeshNeticsa i podłączał tylko VDD i GND oraz Tx i Rx i przez moduł MAX3232 łączył go z komputerem i wszystko mu działało.

    pozdrawiam Szymon
  • Texa Poland
  • #2
    lisek_lichu
    Level 11  
    Czy ktoś z kolegów posiadający taki moduł mógłby sprawdzić jakie ma napięcia na tych dwóch pinach? I jakie ma minimalne podłączenie aby moduł wystartował?

    pozdrawiam Szymon
  • Texa Poland
  • #3
    piti___
    Level 23  
    Układ jest zaprogramowany ? Jeśli nie to możliwe że co sekundę bootloader próbuje się połączyć z hostem.
  • #4
    lisek_lichu
    Level 11  
    Czy jest zaprogramowany to ja nie wiem.

    Z tego co się dowiedziałem to po podłączeniu zasilania można się komunikować z modułem komendami AT ale tego jeszcze nie sprawdzałem. Myślałem też że moduł wysyła jakieś info aby ustawić autobauding ale w nocie piszą że ma sztywno ustawioną prędkość 38400 kodowanie 8n1

    Dodano po 37 [minuty]:

    Na razie to próbuje odpalić moduł i wysłać do niego AT aby otrzymać OK. wtedy będę wiedział że wszystko gra. W nocie wyczytałem że UART_TXD to pin do odbierania danych a nie do nadawania a UART_RXD odwrotnie czyli do nadawania.
    Ten zapis w nocie zaintrygował mnie i chciałem sprawdzić napięcia na tych pinach. Bo normalnie na pinie nadającym powinna być logiczna jedynka. Po zmierzeniu okazało się że na jednym jest zero logiczne a na drugim skacze dziwnie od zera do jedynki logicznej co około 0,9s dlatego zacząłem się zastanawiac czy to ja coś zrobiłem źle czy też może układ coś próbuje wykonać.

    Dodatkowo jest trochę zamieszanie bo normalnie to miały być moduły MeshNeticsa ale teraz są to moduły Atmela bo Atmel chyba wykupił MeshNeticsa. Kolega który mi pomagał ma stare MeshNeticsy a ja już mam nowe bo kupowałem niedawno. Nie wiem czy Atmel czegoś nie pozmieniał.

    W nocie praktycznie nic się nie zmienia. Zmieniono tylko logo na Atmela oraz dodano informację o zamianie TX z RX. W nocie z MeshNeticsa nie było tej informacji ale na schemacie przykładowym w nocie MeshNeticsa mieli podłączone TX do TX MCU oraz RX do RX MCU więc wygląda że i MeshNetics i Atmel mają pozmieniane TX z RX.

    Może nie mam wgranego bootloadera i moduł nie przeczyta żadnej komendy AT a daje jakieś sygnały aby wgrać soft do niego.

    pozdrawiam Szymon
  • #5
    piti___
    Level 23  
    Bootloadera masz na 100%. I jeśli są to nowe moduły to masz tylko bootloadera. Z bootloaderem nie pogadasz komendami AT. Musisz wrzucić odpowiedni wsad do modułu. Połącz według noty z Atmela.

    RX modułu to jest odbiór modułu, TX to jest nadawanie. Widocznie Meshnetics miał niejednoznaczność w oznaczeniu TX,RX.
  • #6
    lisek_lichu
    Level 11  
    piti___ wrote:
    Bootloadera masz na 100%. I jeśli są to nowe moduły to masz tylko bootloadera. Z bootloaderem nie pogadasz komendami AT. Musisz wrzucić odpowiedni wsad do modułu. Połącz według noty z Atmela.


    hmm kolega kupił te moduły chwilę wcześniej i nie wgrywał żadnego wsadu do środka od razu zaczął gadać komendami AT. Tylko że on ma MeshNeticsa a ja już Atmela.

    piti___ wrote:

    RX modułu to jest odbiór modułu, TX to jest nadawanie. Widocznie Meshnetics miał niejednoznaczność w oznaczeniu TX,RX.


    Nie zrozumiałeś mnie chyba albo ja dziwnie to opisałem.
    W nocie MeshNetica nie piszą nic o RX i TX ale maja schemat na którym podłącony mają TX do TX MCU a RZ do RX MCU.

    Nariomiast w nocie Atmela mają dokładnie taki sam schemat ale dodatkowo taką informację:

    Quote:
    The UART_TXD pin is intended for inpur (i.e. its destination as "TXD: implies some complex system containing ZigBit as its RF terminal unit), while UART_RXD pin, vice versa, is for output


    Dlatego zastanawiałem się jak to jest do końca i chciałem zmierzyć napięcia na pinach żeby wiedzieć który jest TX a który RX a tu się okazało że jedno napięcie to zero logiczne a drugie skacze od zera do jedynki co około 0,9s

    Aby porozumiewać się komendami AT musiałbym wgrać stos SerialNet? tak?

    Dodano po 5 [minuty]:

    W innym poście użytkownik olosie napisał:

    Quote:

    Możesz użyć ZigBee Atmela(Meshnetics) (siedzi w nich atmega1281). Moduły możesz sterować komendami AT lub samemu napisać soft (są przykłady). Sterowanie komendami AT ma tą zaletę, że nie potrzebujesz w ogóle oprogramować tych modułów. Możesz zrobić tak:
    1. Robisz kilka EndDevice z czujnikami, które podłączasz do ADC modułu.
    2. Podłączasz każdy moduł poprzez RS232 do komputera i ustawiasz komendami AT panid, mac itd. (jest przykład w dokumentacji jak to ustawić).
    3. Później bierzesz jeden moduł, który będzie koordynatorem i podłączasz go do komputera.
    4. Na komputerze piszesz aplikację, która będzie komendami AT odczytywać wartości ADC z czujników.
    Prościej się nie da Smile
    Możesz z komputera przekonfigurować moduły, bo jest zaimplementowana komenda ATR, która pozwala wywołać zdalnie komendy AT na enddevice.
    Moduły są dostępne w maritexie i niedługo będą w seguro. Polecam ci rodzinę AMP z wyjściem na antenę, są droższe ale mają duży zasięg.


    I też już zwraca uwagę że MeshNetics to Atmel w pierwszym zdaniu
  • #7
    piti___
    Level 23  
    Tak Atmel kupił MeshNetics. Jeszcze nie miałem modułu od Atmela który by miał coś wiecej niż bootloader. Jeśli na jednym z pinów masz zero logiczne to będzie to RX modułu. Drugie pulsujące to będzie TX. Najprawdopodobniej Podczas startu układu jest tam 3 stan (zero), po konfiguracji RSa pojawia się jedynka na czas kiedy układ ma odebrać jakieś dane z PC. Następuje reset bo czas na inicjacje bootloadera minął, a program nie jest wgrany.

    Przynajmniej tak to sobie wyobrażam.
  • #8
    lisek_lichu
    Level 11  
    piti___ wrote:
    Jeszcze nie miałem modułu od Atmela który by miał coś wiecej niż bootloader


    A miałeś moduł MeshNeticsa zamin został wykupiony przez Atmela? I czy miał wgrane coś więcej niż bootloader?

    piti___ wrote:
    Jeśli na jednym z pinów masz zero logiczne to będzie to RX modułu. Drugie pulsujące to będzie TX.


    Tak też myślałem. Nie rozumiałem tylko czemu TX pulsuje.

    piti___ wrote:
    Najprawdopodobniej Podczas startu układu jest tam 3 stan (zero)


    Jak to trzeci stan?

    piti___ wrote:
    po konfiguracji RSa pojawia się jedynka na czas kiedy układ ma odebrać jakieś dane z PC. Następuje reset bo czas na inicjacje bootloadera minął, a program nie jest wgrany.


    Czyli według ciebie wgrany jest tylko bootloader który na TX daje taki dziwny sygnał aby wgrać do niego program czyli stos czyli SerialNet tak? A dopiero po wgraniu tego stosu będzie możliwa komunikacja komendami AT?

    pozdrawiam szymon
  • Helpful post
    #9
    piti___
    Level 23  
    Miałem z Meshneticsa ale nie pamiętam czy tam coś było wgrane. Wydaje mi się że były puste (tylko bootloader).

    Trzeci stan, czyli pin wisi "w powietrzu".

    TX pulsuje ponieważ raz wisi "w powietrzu" (możliwe 0),a raz działa jako skonfigurowane wyjście portu szeregowego (stan gdy nie ma transmisji to 1).

    Quote:
    Czyli według ciebie wgrany jest tylko bootloader który na TX daje taki dziwny sygnał aby wgrać do niego program czyli stos czyli SerialNet tak? A dopiero po wgraniu tego stosu będzie możliwa komunikacja komendami AT?


    Dokładnie tak.
  • #10
    lisek_lichu
    Level 11  
    A istnieje jakaś metoda aby sprawdzić jaki stos mam wgrany lub czy cokolwiek mam wgrane bez użycia programatora?

    Czy po prostu trzeba skombinować odpowiedni programator i wgrać SerialNet aby moduł zaczął odpowiadać na komendy AT?

    W innym temacie pisałeś:

    piti___ wrote:
    Witam
    Korzystam z takich na pasmo 900MHz. Układy te mają wgrany firmowo bootloader. Mozesz je programowac przez port szeregowy za pomoca programu od meshneticsa.

    Pozdrawiam


    Więc można wgrać soft bez potrzeby programatora.

    Następny post brzmiał tak:

    Quote:

    Faktycznie jest taka opcja. Złożyłem wszystko i działa (programuje się). Podaje link do bootloadera:
    http://www.meshnetics.com/downloads/software/
    Dzięki wielkie piti___
    Pozdrawiam.


    Ale na tej stronie nie ma żadnego oprogramowania. Są same pdf i chm. Może na stronie Atmela teraz trzeba szukać?

    pozdrawiam
  • #11
    piti___
    Level 23  
    Jak ściągniesz najnowszy stos BitCloud (ze strony Atmela) na swoje moduły będą tam źródła przykładowych aplikacji jak i SerialNet. Dodatkowo będzie tam program na PC (bootloader).
    Program wywołujesz tak:

    bootloader.exe -p COM1 -f lowpower.srec -C 0
  • #12
    Indios Bravos
    Level 11  
    Wszystko jest na stronie Atmela:) ( www.atmel.com )
    W dziale Wireless MCU w dziale Tools and Software:
    http://atmel.com/dyn/products/tools.asp?family_id=676
    Ściągnij sobie Bitcloud Pro For Zigbit App Kit
    http://atmel.com/forms/bitcloud_rzraven.asp?fn=dl_BitCloud_ZIGBIT_1_9_0.zip&family_id=676
    W tym pliku zip powinien być folder Bootloader, a w nim program który powinien działać bez problemu z modułami Atmela.
    Ja mam jeszcze Meshneticsa i AVR Dragona więc się tym nie bawiłem.
    Jakbyś miał jakieś problemy z tym to potem wrzucę program. Ogólnie jest tam też aktualna dokumentacja więc warto pobrać.
    Pozdrawiam

    EDIT:
    Sry za multiplikowanie odpowiedzi, nie odświeżyłem strony:)
    Generalnie jest tak jak kolega piti napisał.
  • #13
    lisek_lichu
    Level 11  
    Witam,

    dziękuje za odpowiedzi. Dodatkowo napisałem do Atmela aby zobaczyć co mi odpowiedzą z technical support. a więc tak:

    otrzymałem wewnętrzną budowę układu zigbee (zamieszczam bo może się komus przydać)

    zigbee ATZB-24-A2 schemat podłączania oraz komunikacja USART

    dolny "Module Pins" to obudowa kostki czyli schemat wyprowadzeń a te dwa górne to ATmega i układ radiowy.


    tech_support wrote:

    If you look at the labeling for UART_TX as shown on the module IO it is connected to PD2 of the micro and this is the UART1_RXD signal line.
    So the labeling is with respect to the HOST connected to the module. the TX line from the host is connected to the RX line of the micro.


    A więc oznacza to że piny TX i RX na kostce zigbee oznaczają do jakich pinów hosta maja być podłączone a nie jakie jest ich połączenie do wewnętrznego mikro ATmegi. Czyli na kostce TX połączone jest wewnętrznie z RX ATmegi i RX na kostce jest połączone wewnętrznie z TX ATmegi. Dlatego podłączając kostkę zigbee do jakiegoś zewnętrznego mikrokontrolera musimy łączyc TX do TX i RX do RX.

    tech_support wrote:

    The only firmware that comes preloaded in the Zigbit module is a serial bootloader. You will need to upload your own firmware. The serial bootloader communicates thru the uart interface described above.

    If you want to use the AT command set of SerialNet then you will need to load the SerialNet image file supplied with the BitCloud SDK
    onto the module using either the bootloader or a JTAG ICE MK II or AVR Dragon JTAG interface.

    To make it operate as you want, you need to connect the RS232 level shifter to the proper pins as described above and then use the
    bootloader to load SerialNEt and then you will be able to issue the AT command and get OK back.


    także teraz jest wszystko wytłumaczone. I wiem że w modułach ATMELa nie ma nic poza bootloaderem tak jak piti___ napisał. I zgodnie z zaleceniami piti___ muszę wgrać teraz Serial_Net aby operować na komendach AT.

    Dodano po 1 [godziny] 57 [minuty]:

    hmm

    jest jakiś problem przy wgrywaniu danych. Oto co otrzymuje:

    
    c:\Program Files\Atmel\Bootloader>bootloader.exe -p COM1 -f SerialNet_RF230.srec -C 0
    ERROR Node producing error COM:COM1
    java.lang.NullPointerException
            at com.atmel.wsnlibrary.service.bootloader.serial.SerialNodeProducer.createNode(SerialNodeProducer.java:38)
            at com.atmel.wsnlibrary.service.bootloader.NodeFactory.createNode(NodeFactory.java:33)
            at com.atmel.wsnlibrary.service.bootloader.BootloaderMain.run(BootloaderMain.java:61)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at com.atmel.wsnlibrary.launcher.ClassLoaderContainer.run(Unknown Source)
            at com.atmel.wsnlibrary.launcher.FileRunner.run(Unknown Source)
            at com.atmel.wsnlibrary.launcher.FileRunner.launch(Unknown Source)
            at com.atmel.wsnlibrary.launcher.FileRunner.main(Unknown Source)
    Plugin error:null in com.atmel.wsnlibrary.launcher.FileRunner.main(Unknown Source)
    


    plik SerialNet_RF230.srec snajduje się w katalogu c:\Program Files\Atmel\Bootloader

    ktoś wie co oznacza ten komunikat?

    pozdrawiam
  • #14
    lisek_lichu
    Level 11  
    Ok problem rozwiązany. Nie wiem czemu program bootloader się wywalał ale bootloadergui poszedł bez problemów i wgrał do układów Serial_Net.

    Od razu sprawdziłem czy komendy At działają i wszystko śmiga jak trzeba.

    Teraz zabieram się do wysyłania danych.
    Ktoś może wie na jaką odległość potrafią się komunikować te moduły z wbudowanymi antenami?
    Gdzieś pisali że nawet 4km ale z jakimiś antenami i na otwartej przestrzeni.

    pozdrawiam Szymon
  • #15
    mateo19851
    Level 16  
    Witam

    Próbuję dokonać tego samego jednak nie udaje mi sie. Zasilam układ 3,2V ze stabilizatora. Układ okablowany jak na rysunku - spróbowałem też sygnał reset do plusa . Gdy chcę wgrać serial net przez bootloadera i załanczam napięcie układu w programie bootloader wyświetla się komunikat 'please restart the device'.
    Mimo że zasilam układ ze stabilizatora gdy jest niepodłaczony przez RS do PC napięcie na nim wynosi 0,7V , dopiero gdy podpinam go do PC napięcie na nim jest takie jak powinno być .
    Na terminalu wywalają się jakieś śmieci przy 38400kbps .
    Gdzie mogę szukać źrudła problemu ?
  • #16
    migod
    Level 21  
    hej, mam bardzo podobne problemy. Spedzilem nad tym juz ladne kilka wieczorow, tak jakby bootloader w procku nie istnial lub nie odpowiadal programatorowi z komputera. Udalo Ci sie rozwiazac problem ?
  • #17
    matwil
    Level 1  
    Witam. Nie potrafię znaleźć informacji o zasięgu tego modułu. Na stronie Atmela nic o tym nie wspominają, w nocie katalogowej również tego nie widziałem. Czy ktoś kto testował ten układ sprawdzał może jego orientacyjny zasięg?
  • #18
    Zari44
    Level 11  
    Kolejne pytanie z rzędu:

    Jak wgrać SerialNet przez Bootloader?
    Gdzie znaleźć soft i jak wgrać?
  • #19
    migod
    Level 21  
    Hej,

    gdzie znalezc - jest w SDK do pobrania obecnie ze strony Atmela. Po rejestracji mozna pobrac archiwum.

    Natomiast jak wgrac - zdaje sie ze po JTAGu, ale mnie sie nie udalo, mimo wielu prob. Uzywalem tego http://and-tech.pl/modul-ethernetowy-and-eth-v2/ i AVR Studio, ale bez powodzenia. Sam programator jest widoczny, ale nie udaje sie zaprogramowac modulu.

    Jesli ktos moglby podrzucic jakies wskazowki, chetnie skorzystam :)
  • #20
    Zari44
    Level 11  
    Ja wolałbym uniknąć JTAGa bo nie mam go wyprowadzonego na płytce. Wydaje mi się, że Bootloader wgrany na ZigBit'a pozwala na programowanie modułu poprzez USB. Nigdy tego jeszcze jednak nie robiłem i prosiłbym o jakieś wskazówki i o sprawdzeni, czy to co mówię jest sensowne.

    Zaraz zabieram się za lekturę. To może chyba pomóc:

    http://www.atmel.com/Images/doc8390.pdf

    edit:
    Możliwe metody programowanie ZigBita:
    http://support.atmel.com/bin/customer.exe?=&action=viewKbEntry&id=1230