RS232 



Une entrée RS232 est possible (en plus de la ligne de commande/debug) en spécifiant dans le config :


- Dans la section [General]

       RS232 = 0/1 pour enabled (par defaut : 0 ) 

       RS232_BD= Baud rate (par défaut 9600)

       RS232_STX = Start Character (par defaut 0 )

       RS232_ETX = Stop Character (par défaut 10 - LF)

       RS232_prefix = Prefixe pour les messages générés (par defaut M_)


- Dans la section [Device]


       rs2_in_pin= no du pin en réception

       rs2_out_pin= no pin en émission

       rs2_on_hw = 1/0 : variable spécifiant si l'implémentation demandée est une implémentation logiciel (0) ou matériel (1)

Sur ce point, il faut se référer aux disponibilités matériels du processeur 





Le fonctionnement est le suivant : 


Envoi : La fonction d'envoi est la fonction 

SendRS(Text to send); 

ou SRS(Text to send);


Réception : La réception donne lieu à un Event sur l'arbre de traitement (main.xml / ap.xml)


Dans ce cas, la source est <RS> et le message reçu est l'événement précédé du préfixe donné dans le config (RS232_prefix):


Exemple (pour un préfixe par défaut - M_):


La réception de message 'Hello' va lancer l'événement <RS><M_Hello>


Donc pour un main.xml contenant l'arbre :

<RS>

       <M_Hello>DP(M_Hello);</M_Hello>

</RS>


On aura le Display(M_Hello) qui sera exécuté, ainsi si on boucle l'entrée et la sortie, l'affichage donnera :


SRS(Hello);

Hello


Exemple de config.ini :


[General]

...

RS232=1


[Device]

...

rs2_in_pin=9

rs2_out_pin=7

rs2_on_hw=1


Attention, si un bouton est sur le même IO que la RS, il sera impossible d'activer les deux entrées. Il faut désactiver le bouton. Par exemple, pour le UHW_003 :


[General]

...

RS232=1


[Device]

Type=UHW_003


btn_count=0


rs2_out_pin=14

rs2_in_pin=13

rs2_on_hw=0


rf_pin=12





Exemple de lecture de cartes RFID connecté en RS232 :


Matériel : 

- lecteur de carte à puce RDM6300

- Wemos HW-665 (ESP32 sur un board de taille WeMos D1)


0ced1ace-35fc-4440-88bc-53de4b47e25a.jpg


Les lignes RS232 sont connectées ainsi sur le WeMos:


Pinout Wemos d1 : D2 -> Sur HW-665 GPIO : 21 ==> RS232b_IN ------> PIN 1 (TX) du RDM6300

Pinout Wemos d1 : D3  -> Sur HW-665 GPIO : 17 ==> RS232b_OUT ------> PIN 2 (RX) du RDM6300


La config :


[General]

...


RS232=1

RS232_STX=2

RS232_ETX=3


[Device]

Type=WEMOS_665

led_green_pin=2


btn_count=0

btn_IO_1=255


rs2_in_pin=21

rs2_out_pin=17

rs2_on_hw=1

 

Et le main.xml :


<RS>

       <M_..>DP(GS(lastRSMsg));</M_..>

</RS>


Quelques remarques :

Le module RDM6300 communique en 9600 Baud, donc la valeur par défaut, il n'est pas nécessaire de spécifier RS232BD=9600 dans la section [General]

Le module envoie l'id des cartes à puce avec le format 0x02 CARD-ID 0x03. Nous mettons donc les deux paramètres (Start et Stop) dans le config (RS232_STX=2 et RS232_ETX=3)

Les IO utilisées sont rs2_in_pin=21 et rs2_out_pin=17 et, s'agissant d'un ESP32, on active l'UART matériel.

On désactive les boutons (btn_count=0 et btn_IO_1=255) car le shield Button de Wemos utilise par défaut le IO 21)

Dans le config, on ne spécifie pas de préfixe de message (RS232_prefix) donc les messages RS232 seront préfixés de M_ (val par defaut)


Le main.xml récupère les messages M_ en utilsant le regex M_.. ainsi tous les messages de plus de 2 caractères seront récupérés.

Le code lui-même pourra être récupéré par la variable système lastRSMsg. Donc l'affichage se fait avec Display(GetSystem(lastRSMsg));


Même exemple avec un MeMos d1


Dans le cas de l'utilisation d'un WeMos D1 original (basé sur un ESP8266), le config serait à modifier ainsi (Pin D2 / GPIO  4 : RS232b_IN  et pin D3 / GPIO  0 : RS232b_OUT ce qui correspond à la même position physique que dans l'exemple précédent)



[Device]

Type=WEMOS

i2c_scl_pin=255

i2c_sda_pin=255

led_RGB_pin=255


btn_count=0

btn_IO_1=255

        

rs2_in_pin=4

rs2_out_pin=0

rs2_on_hw=0




Considérations matériels :


Sur ESP8266 on n'a qu'une seule UART, donc l'UART supplémentaire doit être en logiciel : rs2_on_hw=0


Sur ESP32 : sont implémentée en matériel deux - parfois plus - UART. On peut donc mettre : rs2_on_hw=1


Spécificité des ESP32


Sur S2 on a UART 0 et UART 1 (2 UART matériel) sur n'importe quel GPIO


Référence :

https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/_images/esp32-s2_saola1-pinout.jpg

et

https://www.espressif.com/sites/default/files/documentation/esp32-s2_datasheet_en.pdf


Sur C3 on a UART 0 et UART 1 (2 UART matériel) sur n'importe quel GPIO


Sur ESP32 WROOM on a UART 0,1 et 2 (3 UART matériel) sur n'importe quel GPIO

Créé avec HelpNDoc Personal Edition: Créer des sites web d'aide facilement