segunda-feira, 29 de abril de 2019






Esse projeto é uma interface sem fio entre duas calculadoras HP50G permitindo o envio de caracteres  alfa-numéricos entre elas:







Foram utilizados para isso, módulos TX, RX de 315MHz. Foi preciso usar inversores transistorizados para que, na ausência de caracteres transmitidos, os módulos TX ficassem desligados, liberando a freqüência para outros usos. 





Montagem da calculadora no projeto:






As duas calculadoras, cada uma com sua interface: a parte de cima da tela mostra os caracteres transmitidos e, a parte de baixo, os recebidos:








Aqui, os módulos utilizados:






Atrás dos módulos:






Uma placa de fenolite de 10cm x 20cm usada no projeto:




A placa atrás:




O conector RS232 foi improvisado:



Foi necessária a retirada de um capacitor, curto-circuitando-o no módulo RX pois originalmente esses módulos apresentam um ruído de saída que prejudica o funcionamento das UARTS:







É necessário configurar a calculadora p/ trabalhar em 2400 bauds com conexão via fio:

Botão APPS, I/O Functions, Transfer, Port: colocar "Serial", Baud: "2400" NXT, OK;

Botão MODE, FLAGS, em 33: Transfer via wire, OK, OK;









Abaixo o programa que cria algumas variáveis na primeira execução, sendo preciso criar uma pasta específica para ele, no meu caso a pasta HPT.
Esse programa usa um truque, esvaziando o buffer RX logo após a transmissão de um caractere, evitando que ocorram "ecos" com a aparição do mesmo caractere transmitido, na tela de recepção da mesma calculadora.

Como os módulos são iguais, podem ocorrer "colisões" onde o caractere é perdido mas tem uma vantagem que é a possibilidade de se utilizar mais de duas calculadoras na "rede".

Quanto ao alcance, pegou bem do quarto p/ sala e, num corredor de 10 metros.





Vídeo:












O programa para as calculadoras:







%%HP: T(3)A(R)F(.);
\<<



OPENIO



"                      "
1
DISP
"                      "
2
DISP
"                      "
3
DISP
"                      "
4
DISP
"----------------------"
5
DISP
"                      "
6
DISP
"                      "
7
DISP
"                      "
8
DISP
"                      "
9
DISP



"                      "
'STT'
STO
1
'STTL'
STO
1
'STTC'
STO



"                      "
'SRT'
STO
6
'SRTL'
STO
1
'SRTC'
STO



0
'CH'
STO





DO





  KEY

  IF
  THEN


    DUP
    17
    <
    IF
    THEN
      54
      +
    ELSE

      DUP
      24
      <
      IF
      THEN
        50
        +
      ELSE

        DUP
        34
        <
        IF
        THEN
          43
          +
        ELSE

          DUP
          45
          <
          IF
          THEN
            36
            +
          ELSE 

            DUP
            56
            <
            IF
            THEN
              30
              +
            ELSE

              DUP
              66
              <
              IF
              THEN
                25
                +
              ELSE

                DUP
                75
                <
                IF
                THEN
                  17
                  -
                ELSE

                  DUP
                  85
                  <
                  IF
                  THEN
                    30
                    -
                  ELSE

                    DUP
                    95
                    <
                    IF
                    THEN
                      43
                      -
                    ELSE

                      DUP
                      103
                      <
                      IF
                      THEN
                        54
                        -
                      ELSE


                        DUP
                        104
                        <
                        IF
                        THEN
                          57
                          -
                        ELSE

                          DUP
                          105
                          <
                          IF
                          THEN
                            72
                            -
                          ELSE
                          END

                        END
                      END
                    END
                  END
                END
              END
            END
          END
        END
      END
    END



    CHR
    DUP
    XMIT
    DROP

    CLOSEIO
    OPENIO

    STT
    STTC
    ROT
    REPL

    DUP
    'STT'
    STO

    STTL
    DISP

    STTC
    1
    +
    DUP
    'STTC'
    STO
    23
    ==



    IF
    THEN
      1
      'STTC'
      STO
      "                      "
      'STT'
      STO


      STTL
      1
      +
      DUP
      'STTL'
      STO
      5
      ==

      IF
      THEN
        1
        'STTL'
        STO
      ELSE
      END


    ELSE
    END
 

  ELSE
  END





  BUFLEN
  DROP

  0
  >

  IF
  THEN

    1 
    SRECV
    DROP

    CLOSEIO
    OPENIO

    0
    'CH'
    STO

    NUM

    DUP
    64
    >
    IF
    THEN
      DUP
      91
      <
      IF
      THEN
        1
        'CH'
        STO
      ELSE
      END
    ELSE
    END


    DUP
    48
    >
    IF
    THEN
      DUP
      58
      <
      IF
      THEN
        1
        'CH'
        STO
      ELSE
      END
    ELSE
    END


    DUP
    48
    ==
    IF
    THEN
      1
      'CH'
      STO
    ELSE
    END


    DUP
    46
    ==
    IF
    THEN
      1
      'CH'
      STO
    ELSE
    END


    DUP
    32
    ==
    IF
    THEN
      1
      'CH'
      STO
    ELSE
    END


    CH
    IF
    THEN

      CHR

      SRT
      SRTC
      ROT
      REPL
     
      DUP
      'SRT'
      STO

      SRTL
      DISP


      SRTC
      1
      +
      DUP
      'SRTC'
      STO
      23
      ==



      IF
      THEN
        1
        'SRTC'
        STO
        "                      "
        'SRT'
        STO


        SRTL
        1
        +
        DUP
        'SRTL'
        STO
        10
        ==

        IF
        THEN
          6
          'SRTL'
          STO
        ELSE
        END

      ELSE
      END



    ELSE
      DROP
    END



  ELSE
  END



UNTIL 0
END


\>>






Nenhum comentário:

Postar um comentário