bonjour,
j'ai trouvé sur le net des bouts de script pour lire et écrire sur le port série du GPIO
Je cherche à dialoguer avec un microcontrôleur PIC16f
j'utilise une carte RS232 :GPIO Shield pour l'interface
j'ai un problème j'ai des erreur de transmissions en début de trame la fin ne pose pas de problème
est ce que quelqu'un travaille sur ce sujet ou aurai des pistes pour résoudre le problème
J'ai entendu parler de bug sur l' USART du raspberry
ce script LUA fonctionne :
--protocole 9600 bauds, 8 bits, sans parité, 1stop, sans contrôle de flux
local chaine
local trame
trame=( '(124:201)\n')
trame2=( '(241:012)\n')
print("debut lecture port")
os.execute('stty 9600')
os.execute('stty -parenb')
os.execute('stty -parodd')
os.execute('stty cs8')
os.execute('stty -cstopb')
os.execute('stty -ixon')
wserial=io.open("/dev/ttyAMA0","w")
wserial:write(trame)
wserial:write(trame2)
wserial:flush()
rserial=io.open("/dev/ttyAMA0","r")
while chaine==nil do
chaine=rserial:read()
rserial:flush()
end
print (trame)
print (trame2)
print(chaine)
print('fin de script')
return commandArray
utilisation du port serie du gpio dans script LUA
Re: utilisation du port serie du gpio dans script LUA
bonjour,
j'ai amélioré mon script pour avoir le bon fonctionnement
Vous pouvez dialogueur avec n'importe quel appareil équipé avec une liaison série.
j'ai essayé de commander les volets avec une liaison 1wire et des modules DS2408 avec 2 entrées pour les bouton d'origine et deux sorties pour commander le sens et la marche du moteur malheureusement le délais entre la commutation du contact et le démarrage du moteur est de l'ordre de 25 30 secondes je vais donc utiliser un microcontrôleur pour commander en direct les ordres des boutons de commande.
Le bus va servir à envoyer une autorisation des boutons et les ordres d'ouverture et fermeture aux heures programmées dans domoticz
en cas de panne du raspberry les boutons peuvent continuer à fonctionner.
si certains sont intéressés je peux vous envoyer le programme du contrôleur et les typons des cartes.
j'ai ouvert ce sujet car aucun autre ne traite du port serie
local chaine
local trame
trame=( '123456789 \n')
commandArray={}
print("debut config port")
os.execute('stty -F /dev/ttyAMA0 9600 cs8 -cstopb -parodd -onlcr -echo -echoe -echok -opost')
print("debut ecriture port")
wserial=io.open("/dev/ttyAMA0","w")
wserial:write(trame)
--wserial:flush()
wserial=io.close()
print (trame)
trame=( 'désolé\n')
print("debut leture port")
rserial=io.open("/dev/ttyAMA0","r")
while chaine==nil do
chaine=rserial:read()
rserial:flush()
end
rserial=io.close()
os.execute('stty kill')
print(chaine)
print("fin lecture port")
print('fin de script')
return commandArray
j'ai amélioré mon script pour avoir le bon fonctionnement
Vous pouvez dialogueur avec n'importe quel appareil équipé avec une liaison série.
j'ai essayé de commander les volets avec une liaison 1wire et des modules DS2408 avec 2 entrées pour les bouton d'origine et deux sorties pour commander le sens et la marche du moteur malheureusement le délais entre la commutation du contact et le démarrage du moteur est de l'ordre de 25 30 secondes je vais donc utiliser un microcontrôleur pour commander en direct les ordres des boutons de commande.
Le bus va servir à envoyer une autorisation des boutons et les ordres d'ouverture et fermeture aux heures programmées dans domoticz
en cas de panne du raspberry les boutons peuvent continuer à fonctionner.
si certains sont intéressés je peux vous envoyer le programme du contrôleur et les typons des cartes.
j'ai ouvert ce sujet car aucun autre ne traite du port serie
local chaine
local trame
trame=( '123456789 \n')
commandArray={}
print("debut config port")
os.execute('stty -F /dev/ttyAMA0 9600 cs8 -cstopb -parodd -onlcr -echo -echoe -echok -opost')
print("debut ecriture port")
wserial=io.open("/dev/ttyAMA0","w")
wserial:write(trame)
--wserial:flush()
wserial=io.close()
print (trame)
trame=( 'désolé\n')
print("debut leture port")
rserial=io.open("/dev/ttyAMA0","r")
while chaine==nil do
chaine=rserial:read()
rserial:flush()
end
rserial=io.close()
os.execute('stty kill')
print(chaine)
print("fin lecture port")
print('fin de script')
return commandArray