Piloter un volet à partir d'un PC

Piloter un volet à partir d'un PC - VB/VBA/VBS - Programmation

Marsh Posté le 12-01-2008 à 15:45:19    

Bonjour à tous,
 
j'aimerais créer un programme avec Visual Basic pour pouvoir ouvrir et fermer un volet à distance. Pour cela je compte donc faire le programme en Basic, mais comment l'envoyer sur le microcontroleur du volet ?  
Puis une fois envoyer, dois-je faire un réseau en RS 252 pour pouvoir le piloter ? Comment puis-je créer une interface homme machine sur le pc ? J'entend dire par là, un bouton "ouverture" sur une fenêtre du pc qui permet d'ouvrir le volet.
 
Merci d'avance pour toutes vos réponses ;)

Reply

Marsh Posté le 12-01-2008 à 15:45:19   

Reply

Marsh Posté le 13-01-2008 à 11:02:35    

Quelqu'un aurait-il un petite idée ? Pour que je puisse avoir une idée de ma réalisation.
 
Merci d'avance

Reply

Marsh Posté le 13-01-2008 à 11:13:26    

Salut,
Tout dépend du microcontroleur ... Cela dit en VB j'ai un peu de peine à voir .. Il existe peut-être un programme qui converti ton code VB en autre chose d'utilisable par un microcontroleur mais j'en ai jamais vu ..
En général on utilise plutôt des langages de bas niveau pour faire ce genre de truc .. Tu charges ton prog en C sur le microcontroleur et après tu te crée une interface utilisateur en VB/autre-chose qui envoie les bonnes trames sur le port choisi

Reply

Marsh Posté le 13-01-2008 à 11:42:53    

Ok, je pensais aussi faire du C, j'ai déjà un programme en C, maintenant le problème que j'ai c'est comment faire l'interface sur le PC et comment y relié en réseau sur le microcontroleur.
Mon objectif est de piloter deux volets en simultanées avec une interface PC.
 
Comment envoyer les ordre de l'interface sur le microcontrolleur ?

Reply

Marsh Posté le 13-01-2008 à 16:34:49    

Quelqu'un aurait-il une petite idée pour que je puisse avancer dans mon projet ?
 
Merci encore ;)

Reply

Marsh Posté le 13-01-2008 à 22:09:01    

Bein, tu connectes ton ordinateur à tes volets via un canal (port serie, usb, wifi,...) donc tu crée un programme (en vb/autre) qui utilise une lib qui te permet d'utiliser ce canal et voilà

Reply

Marsh Posté le 14-01-2008 à 06:34:47    

D'accord, juste une petite chose : qu'est ce qu'une "lib" ? Et comment mettre un port usb sur le volet, enfin sur le microcontrolleur plutôt ?
 
Merci encore ;)

Reply

Marsh Posté le 14-01-2008 à 06:51:28    

quand tu commences ton programme par <stdio>, tu fais un appel à une lib.
Mais t'as une vague idée de ce qui t'attend ? Parce que tu me fais peur là ... Il va falloir que tu te construise un circuit électrique qui soit capable de piloter un moteur qui ferme les volets. A la limite le microcontroleur, tu pourrais presque t'en passer (une fois j'ai fait un truc du style purement en analogique pour les cours :D)

Reply

Marsh Posté le 14-01-2008 à 07:18:37    

J'ai quand même une idée, par contre les librairies sont fournis avec le microcontrolleur ? Ou je peux les trouvés sur un site ?
 
Par contre je sais bien que je vais devoir faire un circuit électrique, je vais avoir mon alim de 12V qui va être abaissé à 5V pour le microcontrolleur puis un pont en H etc ... En faite je n'ai jamais fait ce type de projet avec un micrcontrolleur, où vais je brancher les fils reliant le Pc au système ? Sur un circuit électrique ? C'est ça en faite que je ne sais pas trop

Reply

Marsh Posté le 14-01-2008 à 14:42:48    

Euh... Pourquoi tu tires pas des fils de 220v et tu poses pas deux interrupteurs à côté de ton PC ? :o
Ca serait plus simple je pense :ange:

Reply

Marsh Posté le 14-01-2008 à 14:42:48   

Reply

Marsh Posté le 14-01-2008 à 15:23:22    

Je veux pas dire .. Mais t'es sur d'avoir les compétences qu'il faut?
Parce que à te lire j'ai l'impression que t'as pas la moindre idée de ce qui t'attend ..

Reply

Marsh Posté le 14-01-2008 à 15:45:36    

Tiens pis au fait...
 
Volets, domotique, toussa...
Ca coûte bonbon, mais ça existe, donc autant utiliser ce qui existe déjà ! (je pense)
 
Et là non seulement tu ouvres tes volets automatiquement, mais en plus ça met en marche la machine à café !
 
Sans devoir acheter une cafetière spéciale.
 
PS : Et le gros intérêt, c'est que t'as PAS UN SEUL fil à tirer, c'est les câbles électriques existants qui transmettent les informations, t'as juste besoin d'installer des interrupteurs programmables sur les équipements que tu veux piloter...


Message édité par MagicBuzz le 14-01-2008 à 15:47:26
Reply

Marsh Posté le 14-01-2008 à 15:49:53    

Bon faut voir ...
Moi par exemple .. J'avais besoin de pouvoir allumer / eteindre /rebooter mon routeur depuis l'ordinateur .. Tu penses bien qu'au lieu de mettre à la poubelle ma daube et acheter un truc qui en a dans le fut, j'ai sorti le fer à souder et me suis mis à bricoler... Faut pas négliger le coté ludique/voir-si-les-cours-ça-marche

Reply

Marsh Posté le 14-01-2008 à 16:09:35    

ben la domotique t'as pas besoin de jeter ton truc, faut juste acheter des trucs à mettre en plus :D
 
sinon, étonnant, ton routeur n'a pas de fonction de reboot intégrée via telnet ?

Reply

Marsh Posté le 14-01-2008 à 17:15:33    

Nop, mon truc c'est pas du luxe, c'est le moins cher du marcher :D

Reply

Marsh Posté le 14-01-2008 à 17:20:18    

Ben ça dépends, une soudure foirée, un coup de 220 dans le RS232 et pouf ! Plus de routeur, plus de PC, et accessoirement, plus d'esox_ch non plus :D


Message édité par MagicBuzz le 14-01-2008 à 17:20:34
Reply

Marsh Posté le 14-01-2008 à 17:26:39    

Plus de PC ... Bof ...suffit de foutre une protection entre les deux si on est pas sur ... un petit optocoupleur ou autre découplage et le PC est sauf.
Par exemple, j'ai un petit peu modifié des enceintes creative pour qu'elles pompes sur l'usb de mon laptop au lieu que sur les piles AAA (C'est moins cher et meilleur pour l'environnement :o), et ai foutu un petit circuit avec quelques transistors&ampliop pour être sur que s'il y avait un court-jus, le PC n'y passe pas ...  
 
ça mange pas trop de pain, suffit d'avoir un minimum en tête ce que tu fait ... Et un petit logiciel genre PSpice, Simplorer & co aide bien au passage :D

Reply

Marsh Posté le 14-01-2008 à 18:29:07    

Bon apparament j'ai pas l'impression d'être pris au sérieux.
J'ai déjà programmer mon microctrolleur en C et le volet marche très bien avec les 3 boutons (ouverture, fermeture et arrêt) et avec deux capteurs de fin de course. J'ai mon circuit de près...
 
La seule chose que j'aimerais faire c'est de piloter maintenant à partir d'une interface sous VB par exemple mon volet depuis l'ordinateur. Le code sous VB n'est pas si difficile que ça, mais là où je suis dans le flou c'est pour le raccord du rs232. Je pensais utiliser une femelle pour brancher mon rs232 sur le circuit mais après comment le relier au microcontrolleur ? C'est juste ça que je voudrais savoir.
 
Comme vous l'aviez dit dans votre premier post :

Citation :

après tu te crée une interface utilisateur en VB/autre-chose qui envoie les bonnes trames sur le port choisi

je voudrais savoir comment envoyer les bonnes trames sur le port choisi, rien de plus, je sais que c'est avec du rs232 mais concrètement dans la réalisation, comment y faire ?
 
Merci d'avance ;)

Reply

Marsh Posté le 14-01-2008 à 18:39:07    

Non c'est pas qu'on te prend pas au sérieux, c'est juste qu'à lire tes premiers posts, on aurait dit que t'avais absolument aucune idée de ce que tu faisais ... Donc on se faisait un peu de soucis.
Maintenant, tu dois implémenter un bout de code sur ton microcontroleur pour lui faire comprendre les trames que tu enverras sur ton port série, et ce qu'il doit faire en conséquence ..  
 
Concernant l'interface, il faut que tu crées un programme en VB/autre chose qui utilise une lib te permettant de parler sur le port serie .. Moi par exemple j'ai écrit ça en ruby avec interface GTK et j'ai une lib qui me fourni une API qui s'occupe des trucs de bas niveau .. Moi j'ai juste à m'occuper des aspects "haut niveau".

Reply

Marsh Posté le 14-01-2008 à 18:53:24    

Merci de votre réponse, en faite j'ai une petite chose qui me chiffonne, qu'est ce que vous entendez par "trames" ?
 
Le problème c'est qu'en utilisant VB, je fais du basic et le microcontroleur ne gère que du C, comment faire ? Je suis perdu avec GTK, je ne l'ai jamais utilisé auparavant.
 
 
En faite si je récapitule, je fais un programme en visual basic avec disons pour faire simple 3 boutons et une librairie pour que cela puisse être envoyé sur le port ethernet. Ensuite il faut que je l'envoie par rs232 sur le microcontrolleur qui lui après pilotera le moteur. Mais c'est là que je bloque, en faite je n'arrive pas à me le visualiser.
 
Merci encore ;)

Reply

Marsh Posté le 14-01-2008 à 22:17:29    

Non mais attend, là tu mélanges tout.
Si tu veux communiquer par rs232, utilise le port série déjà, c'est fait pour.  
Ensuite, si tu comprends exactement ce qu'est le rs232, regarde sur wikipedia, y a un article qui m'a bien servi au début. Ensuite, sur ton circuit, tu soudes un connecteur série qui te permet d'envoyer le signal vers ton microcontroleur, et là c'est lui qui doit comprendre que tel signal correspond à telle action.
 
En gros, t'as ton interface écrite en basic, qui utilise une lib pour convertir le signal "ouvre-volet" en une trame rs232, tu expédie ça dans le câble série et ton microcontroleur reçoit la trame et la reconverti en "ouvre-volet". Après c'est à toi de voir comment tu vas implémenter ça, et tu vas le décider en fonction de ce que tu donne comme option ton microcontroleur ... Moi par exemple dans un petit robot que j'ai fait, j'ai un mini-interpreteur basic stocké dans une EEPROM qui va faire tout le boulot low-level pour moi ... Si le tien est programmable en C, tu regardes comment lui faire comprendre ce qu'est ton signal et voilà ..

Reply

Marsh Posté le 14-01-2008 à 23:31:58    

Et puis avec de nombreux microcontroleurs ont des pattes dédiés (pré cablées) pour comprendre le RS232.
 
Si il faut le recoder en interne c'est pas toujours trivial (surtout de gérer la "norme" RS232 dans ça complétude)
 
Sinon pour l'ouverture d'un port com en VB il existe des choses sur le net, j'ai trouvé cela :
http://elkhiyar.ifrance.com/

Reply

Marsh Posté le 15-01-2008 à 18:24:23    

Merci de vos réponses. Je pense que c'est assez claire.
 
Juste une chose esox_ch, pour que je sois sûr d'une chose, pour que je lui fasse comprendre au microcontrolleur ce qu'il doit faire en fonction de la trame, par exemple je peux avoir dans mon programme en C du microcontrolleur si on imagine que la trame du signal d'ouverture est 0001 (c'est juste un exemple ;)), j'aurais par exemple:
if 0001=1
  sortie A=1.
Si ce n'est pas ça, pourriez vous me donner juste un petit exemple de fonctionner dans ce code ? Juste quelque chose de toute bête :if .... then ....
 
Par contre peut-on dire au début du programme que 0001=OuvertureVolet et j'aurais alors:
if OuvertureVolet =1
  sortie A=1
 
 
Enfin une dernière chose, où peut-on récupérer les librairies qui permettent de convertir le signal ouvre-volet en trame rs232 ?
 
Merci encore pour votre patience ;)
 
Bonne soirée

Reply

Marsh Posté le 15-01-2008 à 19:03:47    

Salut,
 
J'ai rien compris à ton if ...
Tu dois juste lui dire :
 
if trame_rs232 == '0001'
 pinA = 1
else  
....
 
Mais regarde bien si ton microcontroleur comprend le rs232 tout seul, parce que sinon tu vas vraiment t'amuser à devoir lui expliquer comment le comprendre...

Reply

Marsh Posté le 15-01-2008 à 19:05:57    

D'accord, je pensais pas que le bout de code était aussi simple.

 

Il faut que je trouve le bon microcontrolleur alors, sinon comment lui expliquer comment il doit comprendre ?

 

Par contre en ce qui concerne les librairies qui permettent de convertir le signal ouvre volet en trame rs282, où puis-je en trouver ?

 

Merci encore ;)


Message édité par Panda184 le 15-01-2008 à 19:08:04
Reply

Marsh Posté le 15-01-2008 à 19:10:55    

Mon on va prendre un exemple que tu vas comprendre :
 
J'ai un programme qui doit retrouver des informations dans un fichier XML. Alors j'ai 2 cas de figure :  
Soit il existe une librairie intégrée au langage qui me permet d'ouvrir un XML comme un XML et donc d'utiliser les XPath et tout et tout et donc ça prend 5 min de trouver ce que j'ai besoin
Soit ça existe pas, et c'est moi qui vais devoir en écrire une.  
 
Voilà pour toi c'est pareil, si ton microchip il intègre une structure qui lui permet de dire "Cette trame rs232 que j'ai reçu sur cette patte, elle a pour représentation le string "ouvre". Ou alors c'est pas le cas et c'est toi qui va devoir "t'amuser" à le faire ...
Si ton microchip est pas imposé, c'est vite vu, t'en prend un qui comprenne déjà tout ça tout seul, comme ça toi tu t'occupe seulement de lui dire quoi faire et quand.

Reply

Marsh Posté le 15-01-2008 à 19:14:14    

Oui je pense que je vais essayer de me débrouiller pour en trouver un qui lise les données du rs232. Après en fonction des trames que j'envoie à partir du pc (de l'interface VB), dans mon programme que je ferais, je dirais que quand il reçoit cette trame, il doit ouvrir la sortie A par exemple. Comme vous l'aviez fait dans votre post précédent.
 
Je pense que c'est ça non ? Car je ne me sens pas de faire une librairie pour le rs232... c'est pas de mon ressort je pense.
 
Merci pour tout ;)

Reply

Marsh Posté le 16-01-2008 à 20:04:01    

Est-ce bien ça ?
 
Je pense avoir bien compris le programme que je dois faire sur Visual Basic, je suis en train de le réaliser, il me reste à trouver le bon microcontrolleur non ?
Je vais envoyer les trames d'octets du Pc au microcontrolleur avec le MsCOMM

Reply

Marsh Posté le 16-01-2008 à 23:42:55    

Oui il te reste a trouver le microchip adapté .. Concernant VB, j'ai jamais tapé une seule ligne, donc je saurai pas trop de conseiller pour la lib :D

Reply

Marsh Posté le 18-01-2008 à 17:17:16    

J'ai choisi le PIC 16F877, apparament il gère le rs232, mais maintenant comment lui dire qu'il doit gérer le rs232 ? Je pense qu'il faut mettre une fonction rs232 dans le programme non ?
C'est juste par exemple : if (trame_rs232 == 0001) alors ....
Ou c'est plus compliqué ? Je pense qu'il faut lui mettre une librairie en plus au début non ? ou lui activé la fonction rs232.
 
Je vais essayer de faire l'interface avec Visual Basic, je pense avoir compris pour ça, j'utilise le MSCOMM. Je vais donc envoyer une trame d'octet par le port COM que doit lire après le microcontrolleur avec la fonction trame_rs232 ==..... ?
 
Merci encore ;)

Reply

Marsh Posté le 18-01-2008 à 17:58:42    

Lit le manuel [:spamafote]


Message édité par esox_ch le 18-01-2008 à 17:58:50

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 18-01-2008 à 18:08:58    

Je n'ai pas de notice avec... et c'est introuvable sur internet, auriez-vous une idée ?

Reply

Marsh Posté le 18-01-2008 à 18:18:54    

Reply

Marsh Posté le 24-01-2008 à 23:39:24    

Panda184 a écrit :

J'ai choisi le PIC 16F877, apparament il gère le rs232, mais maintenant comment lui dire qu'il doit gérer le rs232 ? Je pense qu'il faut mettre une fonction rs232 dans le programme non ?
C'est juste par exemple : if (trame_rs232 == 0001) alors ....
Ou c'est plus compliqué ? Je pense qu'il faut lui mettre une librairie en plus au début non ? ou lui activé la fonction rs232.
 
Je vais essayer de faire l'interface avec Visual Basic, je pense avoir compris pour ça, j'utilise le MSCOMM. Je vais donc envoyer une trame d'octet par le port COM que doit lire après le microcontrolleur avec la fonction trame_rs232 ==..... ?
 
Merci encore ;)


 
Avant d'aller lire quoique ce soit sur le port rs232 du pic16f877, tu dois t'assurer de l'état reset de chaque registres internes du pic16f877. Pour cela, utilises le memory map fournit dans le manuel du pic16f877.

Reply

Marsh Posté le 27-01-2008 à 13:43:36    

il faut aller sur le site du constructeur et recupérer le kit de dev (mplab) ainsi que la "datasheet" (pdf de ref - la bible du microcontrolleur) si tu préfères...
Mais vu la nature des questions que tu te poses, je pense qu'il vaut mieux faire 2/3 tours sur des tutoriels et/ou acheter un bouquin sur le sujet...
La programmation de micro controlleur est assez hard surtout les PICs (le kit de dev est de l'Assembleur), en effet c'est une plateforme complète :
- un CPU
- de la mémoire
- des E/S (ports dont certains sont spécialisés)
- un "zone" de programme (mem flash dans ton cas)
 
Bon courage, mais à mon avis tu en as encore pour de nombreuses semaines de dev...

Reply

Marsh Posté le 27-01-2008 à 19:03:12    

Surtout que pour ce qu'il veut faire, ce chip à l'air beaucoup trop complexe ...

Reply

Marsh Posté le 27-01-2008 à 22:31:56    

Faut bien qu'il se lance

Reply

Marsh Posté le 27-01-2008 à 23:41:36    

Tout à fait, mais il existe des microcontroleurs pilotables plus simplement ... Rien qu'à voir celui avec lequel j'ai commencé .. Il est fourni par Parallax   avec tout ce qu'il faut pour pouvoir le programmer en PBasic (http://bstamp.sourceforge.net/) ... Et il sait très bien faire des trucs de ce genre :o Après je suis d'accord que c'est pas le plus optimisé&co, mais au moins il a une chance de voir son projet aboutir :o

Reply

Marsh Posté le 31-01-2008 à 23:22:37    

esox_ch a écrit :

Tout à fait, mais il existe des microcontroleurs pilotables plus simplement ... Rien qu'à voir celui avec lequel j'ai commencé .. Il est fourni par Parallax   avec tout ce qu'il faut pour pouvoir le programmer en PBasic (http://bstamp.sourceforge.net/) ... Et il sait très bien faire des trucs de ce genre :o Après je suis d'accord que c'est pas le plus optimisé&co, mais au moins il a une chance de voir son projet aboutir :o


 
On devrait lui conseiller un autre que celui de parallax , car il lui faut quand même un bus I/O plus étendu pour son projet. Mais il peut programmer le pic16F877 en utilisant des outils de mplab.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed