Shop OBEX P1 Docs P2 Docs Learn Events
XBee 900HP - Page 2 — Parallax Forums

XBee 900HP

2

Comments

  • CreeCree Posts: 132
    edited 2013-07-26 07:35
    I have tried using the xbee pro series 1, and I have the same problem as the 900 hp. The can communicate in the x-ctu terminals, but anything else that I try that involves inputs and outputs does not work. I have tried the push button example on the digi website with my series 1 and It seems the module does receive the the digital input from the push button.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-26 09:39
    Cree wrote: »
    About line passing, there was a thread about that with the xbee 900 hp

    http://forums.parallax.com/showthread.php/148381-Xbee-900HP-Digital-Input-Output-Line-Passing-digi-answer-!

    Just a reminder.

    Yes, and to repost what I said before, that document that thread links to is not related to the 900HP, but rather the series 1 XBee. FYI

    I will look into it today while experimenting with the 900HP in a real application demo, which up until now I hadn't the chance to work on.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-26 09:41
    Cree wrote: »
    I think there may be an issue with my parallax usb boards because I am not able to do a loop back test anymore. the Din and Dout are always high. But I am able to power my xbees and communicate between them

    When idle DIN/DOUT should normally rest high. This is the normal state of these pins when nothing is being sent/received. When data is being transmitted from the module the DOUT should toggle appropriately, however you won't see this with a DVM/DMM. You would ned a scope, logic analyzer of logic probe to actually see the data. If you suspect a problem it is probably we won't be able to really troubleshoot the module without having you send it in, with the exception of what we have already covered.
  • CreeCree Posts: 132
    edited 2013-07-26 10:11
    :thumb: ok I'll go over what we covered earlier and see if I missed anything.

    :blank:Just a bit frustrated that I havnt gotten the series 1 or the 900 hp to work during the 2 weeks or so that have had them
  • CreeCree Posts: 132
    edited 2013-07-26 11:11
    Yes, and to repost what I said before, that document that thread links to is not related to the 900HP, but rather the series 1 XBee. FYI

    I will look into it today while experimenting with the 900HP in a real application demo, which up until now I hadn't the chance to work on.

    Yes the line passing is for series one, I know that. Sry if I'm a bit all over the place now because I recieved the series one today and I am having similar problems as I di with the 900 hp. I'm thinking its a problem with the parallax usb boards.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-26 14:20
    Cree wrote: »
    Yes the line passing is for series one, I know that. Sry if I'm a bit all over the place now because I recieved the series one today and I am having similar problems as I di with the 900 hp. I'm thinking its a problem with the parallax usb boards.

    I'm not aware of anyone else having such issues, so it may be a problem with your board.
  • CreeCree Posts: 132
    edited 2013-07-29 11:19
    usb xbee board issue solved, it was my soldering that wasn't good.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-29 13:24
    Glad to hear it. I didn't get the XBee testing finished this weekend, but what I did get done works fine for me.
  • CreeCree Posts: 132
    edited 2013-07-30 11:06
    it seems that I can't manage to get my BS2sx to communicate with my xbees. I have tried the basic stamp examples on (this is on the series 1 xbee module now) pages 44 and 46.


    I managed to get the push button example to work so far.

    also managed to do the analog line passing with a pot.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-30 12:14
    The BS2sx uses different timing for the SERIN/SEROUT commands than the BS2 does. You need to adjust these values according to the help files or BASIC Stamp Manual.
  • CreeCree Posts: 132
    edited 2013-07-30 12:27
    The BS2sx uses different timing for the SERIN/SEROUT commands than the BS2 does. You need to adjust these values according to the help files or BASIC Stamp Manual.

    K thx, good to know that. Ill let you know how it works out.
  • CreeCree Posts: 132
    edited 2013-07-30 13:17
    correct me if I am wrong, from what I understand I need slow down the serout because the bs2sx is 2.5 times faster then the bs2.

    I am unsure of what I require to use. I see that there is pace and Timeout. Do I use timeout to slow down the message to the speed of the BS2?
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-30 15:38
    There are example baud rates in the BASIC Stampl Manual and Help Files. These shows the baud rate parameter for a given baud rate for each model of BASIC Stamp Module. Which baud rate ar you using?
  • CreeCree Posts: 132
    edited 2013-07-30 16:44
    Its 9600. I believe the code is set up so that it is 9600 no mater the stamp being used.
  • CreeCree Posts: 132
    edited 2013-07-31 06:10
     '' ********************************************************' Simple_Debug.bs2
    ' Sends data to Remote terminal for monitoring
    ' ********************************************************
    ' {$STAMP BS2sx}
    ' {$PBASIC 2.5}
    ' *************** Constants & PIN Declarations ***********
    #SELECT $STAMP
     #CASE BS2, BS2E, BS2PE
     T9600 CON 84
     #CASE BS2SX, BS2P
     T9600 CON 240
     #CASE BS2PX
     T9600 CON 396
    #ENDSELECT
    Baud CON T9600
    Rx PIN 15 ' XBee DOUT - Not used in this example
    Tx PIN 14 ' XBee DIN
    RTS PIN 11 ' XBee RTS - Not used in this example
    ' ************** Variable Declarations ******************
    Counter VAR Byte
    ' ************** Main LOOP ******************************
    PAUSE 500 ' 1/2 second pause to stabilize comms
    SEROUT Tx, Baud, [CLS,"Program Running...",CR]
    PAUSE 2000 ' Pause before counting
    FOR Counter = 1 TO 20 ' Count and display remotely
     SEROUT Tx, Baud, ["Counter = ", DEC Counter, CR]
     PAUSE 100
    NEXT
    SEROUT Tx, Baud, ["Loop complete.",CR]
    END
    

    This is the example that I was talking about, if you were talking about timing and baud rates, I believe it is taken care of in the constant & declarations section.
  • CreeCree Posts: 132
    edited 2013-08-01 07:56
    I am probably doing something wrong with the Basic stamp examples, but I managed to transmit serial data through the xbee with Din/Dout and display temperature on my serial LCD.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-08-01 08:42
    Well, as you can see, posting the code you're having an issue with can sav a lot of back and forth questions.
  • CreeCree Posts: 132
    edited 2013-08-01 08:51
    Well, as you can see, posting the code you're having an issue with can save a lot of back and forth questions.

    But I did post the code just 2 posts up.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-08-01 09:05
    Yes, but if I am not mistaken that was posted after you solved the issue. When you first mentioned the code not running on the BS2sx I had to guess that it was a baud rate parameter issue because there was no code to verify. I'm trying to help you in future requests for help so that your problems are solved quicker.
  • CreeCree Posts: 132
    edited 2013-08-01 12:37
    Sry Ill try to be as clear as possible with what issues that I am trying to solve

    ***New issue

    I am trying to send clock pulses from the BS2sx through a series 1 xbee pro to a SHt11 sensor and send back the data through the xbee to be read by the BS2sx so I can display the data on a LCD.

    I have also gotten the sensor to work directly with the SHT 11, so it should not a program problem.
    I have managed to do digital and serial line passing with different set ups.

    Settings for Xbees
    * anything not listed is default.
    On the base side
    My clock signal is being sent from pin 2 to IO 0
    and
    Recieve serial signal from Dout

    on the remote Xbee I send out the clock to the sensor from IO 0.
    and the SHT 11 should send back a serial signal
    Using xbee usb adapter (5V inputs are not an issue) .


    Base xbee (powered by 5V from the NX1000 stamp works experiment board):

    ch: F
    Pan ID: 1238
    DL:FFFF
    IO 0: 3 (digital in)
    IC:10
    sample rate:3E8

    Remote Xbee (USB powered and in turn it powers the SHT11 from VCC (3.3V)):

    Ch: F
    Pan ID: 1238
    IO 0: 4 (out low)
    -IO line
    IO input adress: FFFF.

    The Clock is on/off, so I believe it should be fine to use digital input,
    Then It should work to send the data through UART back to the BS2sx.

    The Blue Light on the base does not turn on, meaning that there is not data being received from the remote xbee. Not sure if the remote xbee is receiving the Clock data.

    In theory it should work. Any Ideas?
  • FranklinFranklin Posts: 4,747
    edited 2013-08-01 15:46
    In theory it should work. Any Ideas?
    Yes, attach the code you are using and tell us how SHT11 is connected (are you using a breakout board or a raw SHT11
  • CreeCree Posts: 132
    edited 2013-08-02 06:26
    Franklin wrote: »
    Yes, attach the code you are using and tell us how SHT11 is connected (are you using a breakout board or a raw SHT11

    Y I am using the sht11 from parallax,

    D0 is the clock (going to pin 3)

    and

    Din is connected to Data (pin 1)

    VCC is connected to pin 8 for power

    pin 4 goes to ground.

    This the code, I adapted it for one sht 11 sensor
    ' {$STAMP BS2sx}' {$PBASIC 2.5}
    ' -----[ Program Description ]---------------------------------------------
    ' SHT11 monitoring through Xbee
    '------[changes]-----------------------------------------------
    
    
    '------[Xbee Notes]---------------------------------------------------------
    ' Serial data from basic stamp to Xbee 1 Din , comes out as Dout from Xbee 2
    ' Pin 0 ---> Din (pin 4 on Parallax usb adapter board)
    'Power LCD with 5V
    ' Clock pin set up from stamp to Xbee 1
    ' Pin 2 ---> I/O 0
    '
    '
    ' I/O ouotput on xbee 2 go to pin 3 (CLK)
    ' -----[ I/O Definitions ]-------------------------------------------------
    '**** data pin 9, sens 6, clk pin 7, button pin 8
    'sensor
     TX              PIN     0               ' serial output to LCD
     Shtdata PIN 9                           'SHT11 data line
    
    
    
    
    
    
    ' -----[ Constants ]-------------------------------------------------------
    
    
    'Sensor
     ShtTemp CON %00011 ' read temperature
    ShtHumi CON %00101 ' read humidity
    ShtStatW CON %00110 ' status register write
    ShtStatR CON %00111 ' status register read
    ShtReset CON %11110 ' soft reset
    Ack CON 0
    NoAck CON 1
    No CON 0
    Yes CON 1
    DegSym CON 186 ' degrees symbol for DEBUG
    '***************
    'LCD
    #SELECT $STAMP
      #CASE BS2, BS2E, BS2PE
        T2400       CON     396
        T9600       CON     84
        T19K2       CON     32
      #CASE BS2SX, BS2P
        T2400       CON     1021
        T9600       CON     240
        T19K2       CON     110
    #ENDSELECT
      ' Commands/constants
    LcdBaud         CON     T9600
    
    
    LcdBkSpc        CON     $08             ' move cursor left
    LcdRt           CON     $09             ' move cursor right
    LcdMid          CON     $88             'Move to midle
    Lcdend0         CON     $8F             'End of line one
    LcdLF           CON     $0A             ' move cursor down 1 line
    LcdCls          CON     $0C             ' clear LCD (use PAUSE 5 after)
    LcdCR           CON     $0D             ' move pos 0 of next line
    LcdBLon         CON     $11             ' backlight on
    LcdBLoff        CON     $12             ' backlight off
    LcdOff          CON     $15             ' LCD off
    LcdOn1          CON     $16             ' LCD on; cursor off, blink off
    LcdOn2          CON     $17             ' LCD on; cursor off, blink on
    LcdOn3          CON     $18             ' LCD on; cursor on, blink off
    LcdOn4          CON     $19             ' LCD on; cursor on, blink on
    LcdLine1        CON     $80             ' move to line 1, column 0
    LcdLine2        CON     $94             ' move to line 2, column 0
    
    
    'custom character, only degree celcius   **** degree symbol does not work
    LcdCC0          CON     $F8             ' define custom char 0 does not work
    '****************
    ' -----[ Variables ]-- -----------------------------------------------------
    'Sensor
    '*******clock VAR Byte
    Cdata  VAR Word
    Hdata  VAR Word
    Clock VAR Byte ' sensor data for clock switch
    SenscntD VAR Nib' automatic counter / for loop
    'PIN_symbol VAR Byte
    senscnt VAR Nib    ' counts button presses intended for selection of data for display
    old VAR Bit         ' for counter/switch sensor   senscnt
    new VAR Bit          ' for counter/switch sensor  senscnt
     ioByte VAR Byte ' data from/to SHT11
    ackBit VAR Bit ' ack/nak from/to SHT11
    toDelay VAR Byte ' timeout delay timer
    timeOut VAR Bit ' timeout status
    soT VAR Word ' temp counts from SHT11
    tC VAR Word ' temp - Celcius
    tF VAR Word ' temp - Fahrenheit
    soRH VAR Word ' humidity counts
    rhLin VAR Word ' humidity; linearized
    rhTrue VAR Word ' humidity; compensated
    status VAR Byte ' status byte
    
    
    'custom characters, EEPROM
    
    
    CC0             DATA    LcdCC0,$0C, $12, $12, $0C, $00, $00, $00, $00
    
    
    ' -----[ Initialization ]--------------------------------------------------
    'Sensor
    GOSUB SHT_Connection_Reset ' reset device connection
    PAUSE 250 ' let DEBUG window open
    'DEBUG CLS,
    '"SHT11 Sensor count", CR,
    '"-----------------", CR
    
    
    'LCD
     Reset:
      HIGH TX                               ' setup serial output pin
      PAUSE 100                             ' allow LCD to initialize
    
    
    ' -----[ Program Code ]----------------------------------------------------
    Main:
    
    
    GOSUB sensor_select
    GOSUB DataColect
    GOSUB Getdata
    
    
     GOTO Main ' do it again
    ' -----[ Subroutines ]-----------------------------------------------------
     ' sensor select ************************************************************select****
    sensor_select:
      old = new
    
    
    RETURN
    '****data collection ****************************
    DataColect:
    
    
    
    
    'sens 0
    
    
      Clock = 2
       GOSUB SHT_Measure_Temp
       GOSUB SHT_Measure_Humidity
       PUT 0,Word Tc, Word rhTrue
       Clock = 3
    
    
    
    
    
    
    GOTO Getdata
     ' -----------------------------------------------------------------------------------------------------------------
     'Get Tc and rhline data/ temperature and humidity , through sensor selct. Choose the data required.
     Getdata:
                                       ' get data is created to send data to lcd, create Cdata and Hdata
    
    
    
    
    GET 0, Word Cdata, Word Hdata
    
    
    SEROUT TX, LCDBaud, [ LCDCls]
      PAUSE 5
      SEROUT TX, LCDBaud, ["Addr:", DEC( senscnt), LCDMid, DEC (Cdata / 10), ".", DEC1 Cdata,"C",LCDLine2, "Humidity:",DEC(Hdata/10 ), ".", DEC1 Hdata,"%"]  'shows on screen
      PAUSE 1000
    
    
    RETURN
    '---------------------------------------------------------------------
    ' connection reset: 9 clock cyles with ShtData high, then start sequence
    '**************************************************** shift
    SHT_Connection_Reset:
    SHIFTOUT ShtData, Clock, LSBFIRST, [$FFF\9]
    ' generates SHT11 "start" sequence
    ' _____ _____
    ' ShtData |_______|
    ' ___ ___
    ' Clock ___| |___| |___
    '
    SHT_Start:
    INPUT ShtData ' let pull-up take high
    
    
    LOW Clock
    HIGH Clock
    LOW ShtData
    LOW Clock
    HIGH Clock
    INPUT ShtData
    LOW Clock
    RETURN
    ' measure temperature
    ' -- celcius = raw * 0.01 - 40
    ' -- fahrenheit = raw * 0.018 - 40
    '
    SHT_Measure_Temp:
    GOSUB SHT_Start ' alert device
    ioByte = ShtTemp ' temperature command
    GOSUB SHT_Write_Byte ' send command
    GOSUB SHT_Wait ' wait for measurement
    ackBit = Ack ' another read follows
    GOSUB SHT_Read_Byte ' get MSB
    soT.HIGHBYTE = ioByte
    ackBit = NoAck ' last read
    GOSUB SHT_Read_Byte ' get LSB
     soT.LOWBYTE = ioByte
    ' Note: Conversion factors are multiplied by 10 to return the
    ' temperature values in tenths of degrees
    tC = soT ** $1999 - 400 ' convert to tenths C
    tF = soT ** $2E14 - 400 ' convert to tenths F
    RETURN
    ' measure humidity
    '
    SHT_Measure_Humidity:
    GOSUB SHT_Start ' alert device
    ioByte = ShtHumi ' humidity command
    GOSUB SHT_Write_Byte ' send command
    GOSUB SHT_Wait ' wait for measurement
    ackBit = Ack ' another read follows
    GOSUB SHT_Read_Byte ' get MSB
    soRH.HIGHBYTE = ioByte
    ackBit = NoAck ' last read
    GOSUB SHT_Read_Byte ' get LSB
    soRH.LOWBYTE = ioByte
    ' linearize humidity
    ' rhLin = (soRH * 0.0405) - (soRH^2 * 0.0000028) - 4
    '
    ' for the BASIC Stamp:
    ' rhLin = (soRH * 0.0405) - (soRH * 0.002 * soRH * 0.0014) - 4
    '
    ' Conversion factors are multiplied by 10 to return tenths
    '
    rhLin = (soRH ** $67AE) - (soRH ** $83 * soRH ** $5B) - 40
    ' temperature compensated humidity
    ' rhTrue = (tc - 25) * (soRH * 0.00008 + 0.01) + rhLin
    '
    ' Conversion factors are multiplied by 10 to return tenths
    ' -- simplified
    '
    rhTrue = (tC - 250) * (soRH ** $34) + rhLin
    RETURN
    ' sends "status"
    '------------------------------------------------------------------------------------
    SHT_Write_Status:
    GOSUB SHT_Start ' alert device
    ioByte = ShtStatW ' write to status reg cmd
      GOSUB SHT_Write_Byte ' send command
    ioByte = status
    GOSUB SHT_Write_Byte
    RETURN
    ' returns "status"
    '
    SHT_Read_Status:
    GOSUB SHT_Start ' alert device
    ioByte = ShtStatW ' write to status reg cmd
    GOSUB SHT_Read_Byte ' send command
    ackBit = NoAck ' only one byte to read
    GOSUB SHT_Read_Byte
    RETURN
    ' sends "ioByte"
    ' returns "ackBit"
    '****************************************************************shift
    SHT_Write_Byte:
    SHIFTOUT Shtdata, Clock, MSBFIRST, [ioByte] ' send byte
    SHIFTIN Shtdata, Clock, LSBPRE, [ackBit\1] ' get ack bit
    RETURN
    ' returns "ioByte"
    ' sends "ackBit"
    ' *****************************************************************shift
    SHT_Read_Byte:
    SHIFTIN ShtData, Clock, MSBPRE, [ioByte] ' get byte
    SHIFTOUT ShtData, Clock, LSBFIRST, [ackBit\1] ' send ack bit
    INPUT ShtData ' release data line
    RETURN
    ' wait for device to finish measurement (pulls data line low)
    ' -- timeout after ~1/4 second
    '
    SHT_Wait:
    INPUT ShtData ' data line is input
    timeOut = No ' assume no timeout
    FOR toDelay = 1 TO 250 ' wait ~1/4 second
    IF (ShtData = 0) THEN EXIT
    PAUSE 1
    NEXT
    IF (toDelay = 250) THEN timeOut = Yes ' loop completed = timeout
    RETURN
    
    
    
    
    '------------------------------------------------------------------------------
    
    
    ' reset SHT11/15 with soft reset
    '
    SHT_Soft_Reset:
    GOSUB SHT_Connection_Reset ' reset the connection
    ioByte = ShtReset ' reset command
    ackBit = NoAck ' only one byte to send
    GOSUB SHT_Write_Byte ' send it
    PAUSE 11 ' wait at least 11 ms
    RETURN
    


    I program the xbees with the usb and not using commands from the BS2sx.

    Do you think the 2nd xbee is not sending back data over uart because it is always receiving data from the first Xbee?
  • CreeCree Posts: 132
    edited 2013-08-02 08:52
    I tried using an oscilloscope to see if the Clock was outputting anything, but I could not see anything on it.
  • Tracy AllenTracy Allen Posts: 6,658
    edited 2013-08-02 10:14
    XBee digital line passing is meant for relatively slow changes, whereas the Stamp SHIFT commands toggle those pins at around 16 kHz. You are counting on the XBee to keep up with that -- I'm skeptical. Figure, the XBee has to form and transmit a packet and also decode it on the other end. And the first try might not get thru and it will have to do one or more delay and retry. It does happen in the blink of an eye, but, 16 kHz??

    You might have to bitbang a SHIFT driver that runs at a lower rate, how low, I don't see an answer to that.
  • CreeCree Posts: 132
    edited 2013-08-02 10:20
    I found this blog where a guy was able to.

    SHT11 with Xbee, but he did it with a different micro controller
  • CreeCree Posts: 132
    edited 2013-08-02 10:46
    XBee digital line passing is meant for relatively slow changes, whereas the Stamp SHIFT commands toggle those pins at around 16 kHz. You are counting on the XBee to keep up with that -- I'm skeptical. Figure, the XBee has to form and transmit a packet and also decode it on the other end. And the first try might not get thru and it will have to do one or more delay and retry. It does happen in the blink of an eye, but, 16 kHz??

    You might have to bitbang a SHIFT driver that runs at a lower rate, how low, I don't see an answer to that.

    Ok, does that mean it is not possible to send a clock signal through the xbee?
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-08-02 10:46
    Cree wrote: »
    I found this blog where a guy was able to. SHT11 with Xbee, but he did it with a different micro controller

    I'm sorry but your statement isn't entirely accurate. What you're describing isn't what the other guy did. You're trying to send the pulses directly from the SHT11 through the XBee but in the project you linked those pulses are being read by at ATMega MCU and the data sent serially over the XBee, which is how it should be done. You can certainly do that, but it will require a microcontroller on both ends.
  • Tracy AllenTracy Allen Posts: 6,658
    edited 2013-08-03 16:45
    Cree wrote: »
    Ok, does that mean it is not possible to send a clock signal through the xbee?

    It means that the clock signal has to be slow. How slow? It might be 10 bits per second. I don't know. I don't see a figure in the data sheet or app notes about how fast one could expect to update the remote signal lines in an XBee digital line-passing system. Can you rig up a test and let us know your results? Start with one update per second and speed it up by factors of two until it conks out. I'd expect the accuracy to depend somewhat on distance and interference, always chance of missed bits.
  • CreeCree Posts: 132
    edited 2013-08-19 08:27
    Hi sry, I did not respond sooner, I was on vacation.

    Would it work if I used analog line passing instead of digital or would there be a similar issue.
  • CreeCree Posts: 132
    edited 2013-08-20 14:04
    So I used a pulse generator because I don't know how to bitbang the shift. I put 1Hz to 1 KHz through and tested it with an LED. At 1 Hz the LEd flashes normally as if it was straight from the generator. But at 100Hz and 1kHz, the LED is not supposed to flash, and the pulse that I put through the Xbees to the LED flashes. IM going to trying 16MHz again just to see what it does.

    I just realiazed the CLK from the stamp is a serial communication, so what I have been trying to do will not work.

    Solution would be to to have 2 basic stamps, one remote with the sensors and the other local with an LCD display & alarm.
Sign In or Register to comment.