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.
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.
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 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)
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)
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
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é)
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 =( )
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 ?
[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 ...