Skip to content

Tentativo di implementazione per far parlare RaspBerry con Arduino

Notifications You must be signed in to change notification settings

Loreton/LnProtocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

148 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LN-Protocol

Tentativo di implementazione un protocollo di comunicazione per la gestione ed il controllo di diversi dispositivi tramite RaspBerry-->Arduino.

Il protocollo si basa su RS-485 oppure Wireless.

Non è previsto che lo Slave prenda iniziativa della trasmissione.

Tutto il controllo è demandato al MASTER (RaspBerr) il quale tramite un protocollo di polling provvede ad interrogare tutti gli SLAVE predefiniti. Questo permette di evitare conflitti nelle comunicazioni.

Tutto il processo parte dal RaspBerry il quale conosce tutti i dispositivi e per ognuno di essi l'opportuno comando da inviare per raccogliere le informazioni. Nel caso di RS-485 RaspBerry è autonomo nell'inviare il comando e raccogliere le info. Nel caso di Wireless RaspBerry si deve appoggiare ad un Arduino locale che provvede ad eseguire il comando per lui. Il dialogo tra RaspBerry ed ArduinoLocale avviene anmcora tramite RS-485.

Sintassi generica dei comandi string Master to Slave:

STX                           - STX
    DATALEN                   - datalen out of STX ed ETX
    SENDER_ADDR               - Dest   Address
    DESTINATION_ADDR          - Source Address    (00 = Master)
    SEQNO_HIGH                - Sequence message number (To associate Req/Resp)
    SEQNO_LOW                 -
    CMD_RCODE                 - Execution of Command returnCode (ignored during TX)
    COMMAND                   - Command to be executed
    SUBCOMMAND                - SubCommand... related to Command
    COMMAND_DATA              - TX-data to be used during command execution RX-response data
    ....                      -
CRC                           - CRC
ETX                           - ETX

COMMAND:
    - RELAY_ECHO                                                        -
        NO_REPLY
        REPLY
    ;
    - SLAVE_ECHO                                                        -
        NO_REPLY
        REPLY

    - SLAVE_POLLING                                                     -
    ;
    - DIGITAL
        - SUBCOMMAND:   READ_PIN
            DATA:       pinNO
            RET:        analogReadValue

        - SUBCOMMAND:   WRITE_PIN
            DATA:       pinNO, valueToWrite
            RET:        analogReadValue
    ;
    - ANALOG                                                          -
        - READ_PIN
            DATA: pinNO
            RET:  digitalReadValue
        - WRITE_PIN
            pinNO value
            RET:  digitalReadValue
    ;
    ;
    - SET_PINMODE                                                       -
        will be soon available...
    ;
    - I2C                                                       -
        I2C_address cmd byte0, byte1, ...., bytex

------------------------!-----------------! -------------!---------------------------------------------------------------- origin ! destination ! CMD ! parameters ------------------------!-----------------! -------------!---------------------------------------------------------------- CMD: MasterAddress ! slaveAddress ! ReadI2C ! I2C_address cmd byte0, byte1, ...., bytex RSP: ! ! ReadI2C ! STATUS_BYTE - dati.... ! ! ! CMD: MasterAddress ! slaveAddress ! WriteI2C ! I2C_address cmd byte0, byte1, ...., bytex RSP: ! ! WriteI2C ! STATUS_BYTE - dati.... ! ! ! CMD: MasterAddress ! slaveAddress ! ReadPin ! numeroPIN RSP: ! ! ReadPin ! numeroPIN ! ! ! CMD: MasterAddress ! slaveAddress ! WritePin ! numeroPIN, value RSP: ! ! WritePin ! numeroPIN

TAG v01.07: Arduino-Relay partito in SIMULATE_ECHO. Invia il messaggio di echo sulla rs485. Con una pen_usb_rs485 collegata al RaspBerry si può monitorare il bus con il comando: python3.4 /home/pi/GIT-REPO/LnProtocol/RaspBerry/main.py monitor rs485 --port ttyUSBxxx (pen_usb_rs485)

About

Tentativo di implementazione per far parlare RaspBerry con Arduino

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors