XML Temp Controller

Salut à tous !

Dans le cadre de mon école, j'ai 12 jours pour un projet libre. (le but est de nous apprendre à planifier des projets et faire des docs correctes)

J'ai donc choisit un projet que j'avais depuis un moment en tête:

Un contrôleur de température

Le but est de pouvoir chauffer un liquide par palier et d'être assez précis.
Le moyen de chauffe est laissé libre (sortie contacteur)
Un arduino uno se charge de la régulation grâce a une sonde ds1820
Un ordinateur avec un programme en c++ s'occupe du gui et de l'import/export de fichier xml.

le cahier des charges:
http://pdfcast.org/pdf/xml-temp-controller-cahier-des-charges-v3

Je me rend compte après 2 jours de projet, que c'est surement très ambitieux de ma part de réussir ce projet en 12 jours mais au pire je le finirais à la maison.

Je viens vers vous tout d'abord pour vous demandez vos avis (et si vous avez des conseils volontiers).
Merci de prendre en compte que je suis un informaticien qui n'a jamais touché d'arduino de sa vie.

Bonne journée
Damien

Bonjour,

Le projet en soit en réalisable en 12 jours :wink:

Pour la sonde de température :

http://playground.arduino.cc/Learning/OneWire
http://www.hobbytronics.co.uk/ds18b20-arduino

Pour le RS232 :
Est-ce obligatoire ?
Tu as de base une liaison usb-série sur les cartes arduino, mettre un port RS232 demanderai un "level shifter" (MAX3232 par exemple) et un connecteur DB9 en plus ...

Pour la régulation : PID (Proportionnelle, Intégrale, Dérivée).
Ça à l'air compliqué mais en fait ça peut se résumer à trois lignes de code :wink:
http://playground.arduino.cc/Code/PIDLibrary

Pour le GUI t'as le choix :

  • VB.net ou C# (simple et rapide mais windows uniquement (linux/mac avec "mono"))
  • Processing (un peu galéré pour les gui mais ya pas mal d'exemples sur le net)
  • Java et Swing (si tu connais le java)
  • Qt (si tu connais le C++)
  • Python, ...

Hello et merci de ta réponse !

Merci aussi pour les liens !
(ah on me dit dans mon oreillette que c'est toi qui a fait les tuto aussi. Merci !)

Pour le rs232, certains électro m'ont dit que le protocole usb était plus compliqué et que je me ferait moins ch*** avec du rs232.

Je garde le pid sous le coude, mais pour l'instant je vais me contenter du 0 ou 1.

Pour le gui, je n'ai malheureusement pas le choix, mes maigres connaissances en prog' se limitent à Borland c++ builder (oui oui je sais c'est pas libre =( )

jund:
(ah on me dit dans mon oreillette que c'est toi qui a fait les tuto aussi. Merci !)

Juste le premier sur mon blog, je fait pas tout les tuto du playground (encore heureux) :grin:

jund:
Pour le rs232, certains électro m'ont dit que le protocole usb était plus compliqué et que je me ferait moins ch*** avec du rs232.

Ils t'ont dit ça ? Halala encore une belle brochette d'idiots que je prendrai plaisir à secouer :zipper_mouth_face:
Le port usb en arduino s'énumère côté ordinateur comme un port COM classique sous windows, ou comme un modem série /dev/ttyACMx sous linux.
En gros d'un point vue programme que tu utilises le port RS232 de l'ordi ou l'usb c'est exactement la même chose.

jund:
Je garde le pid sous le coude, mais pour l'instant je vais me contenter du 0 ou 1.

Sinon tu peut faire de la logique flou, mais c'est pas très nette comme truc (hohoho JeuDeMotDeMerde détecté) :grin:

Ou sinon une bonne vielle moyenne (mais c'est tout de suite moins drôle) :
http://arduino.cc/en/Tutorial/Smoothing

jund:
Pour le gui, je n'ai malheureusement pas le choix, mes maigres connaissances en prog' se limitent à Borland c++ builder (oui oui je sais c'est pas libre =( )

C'est mieux que rien.

Hello !

J'ai trouvé un petit programme qui lit sur les port comm avec borland:

J'ai pris le zip et j'ai eu des erreur à la compilation.
Du coup j'ai modifié une variable globale. J'ai mit un widechar à la place d'un char:
// Add these global variables
HANDLE hComm = NULL;
bool CommFlag;
WideChar InBuffer[101];

Le soucis que j'ai c'est que le programme me renvoie des caractères chinois...

Vous avez une idée de ce qui pourrait causer ce problème ?
Le fait que j'ai modifié le type de InBuffer ?

Merci de votre aide =D

C'est quoi l'erreur ... Juste dire "j'avais une erreur" ça donne pas franchement de détail ...

Hello !

Désolé !
voici l'erreur:

[BCC32 Erreur] Main.cpp(134): E2034 Impossible de convertir 'char[101]' en 'wchar_t *'
[BCC32 Erreur] Main.cpp(134): E2342 Mauvaise correspondance de type dans le paramètre 'Buffer' ('wchar_t *' désiré, 'char *' obtenu)

Voila l'erreur que ça me fait quand ça compile (donc avec widechar et pas char)

Edit:

J'ai essayé de modifier les paramètre de cette ligne:
if(!BuildCommDCB("baud=9600 parity=N data=8 stop=1", &dcbCommPort)

parity =Y => nok
data=12 => nok (example ds data =12 )
stop =1 => nok

J'ai essayé avec 12 car dans le sample de la librairie onewire il mettent 12 byte de data.

Ce genre de problèmes arrivent quand le compilateur est configuré pour supporter de l'utf8/unicode mais pas le code.
Sous Visual C++ il suffit de changer une option après sous Turbo C++ je sait pas ...

De quelle erreur parles-tu ?

J'utilise borland cpp builder XE.

Tu pense que les caractères chinois seraient du au compilateur et non au code ?