Demande de renseignements sur programmation gros projet

Bonjour à tous,

je dois preparer un nouveau projet scolaire et j'ai choisit de realiser une installation domotique basée sur arduino et assistée par un pc.
L'arduino Mega recevrait les informations des différents capteurs (Hall,PT100,autre arduino via RX/TX ,temperature,etc) Il devrait avoir la base du programme et selon les ordres reçus (du pc) ou du GSM Shield il devrait realiser certaines opérations. Il devra aussi realiser des bouts de code automatiquement selon les données reçues des capteurs.
Le pc ne serait la que pour l'envoi d'information via une page php et ou une application sur android.
Le pc se chargera également d'heberger le stream des webcam ip et faire des diagramme des temperature de la maison etc.

Le coeur de l'installation serait un voir deux arduino mega communiquant ensemble.

Ma question est : comment doit on realiser un aussi gros projet ? A quoi doit ressembler le code ?
J'ai deja fait de multiples petits programmes mais dans ce cas ci il faudrait que le programme sache gerer plusieurs capteurs en même temps c'est a dire que si il rentre dans une boucle d'opérations pour un capteur N°1 il doit pouvoir sortir de la boucle ou accumuler les taches demandées selon un capteur N°2.

Je ne sais pas si je suis assez clair mais pour un si gros projet ou pleins d'opérations pourraient etre réalisées j'ai du mal à m'imaginer la structure d'un code aussi gros.

Auriez vous des astuces de programmation ou des exemples de code de gros projet à me linker ?

Veuillez m'excusez si j'ai mal placé le topic .

D'avance je vous remercie.

Salut,
Je pense que la programmation arduino soit la même que pour tout projet.
D'abord réalisé un cahier des charges concret , pour savoir ou tu vas et jusque ou tu veux allez..
ensuite tu dois voir si tu ne dépasse pas les capacités d'un module, avec la manières que tu veux faire.
essai aussi de voir si tu peux factorisé certain traitement (éviter les redondances et autres)

tu dois aussi prendre en compte le temps de traitement de chaque partie.. et voir d'apres ton CDC si tu a le temps.. (ex: si entre deux rafraîchissement tu a que 1 min faire en sorte que tout traitement ne le dépasse pas)..

apres tu ne peux pas faire du vrais temps réelle avec arduino .. ou gerer les capteurs au même instant T .. y'aura un p'tit décalage.. (d'ou la ligne plus haut) .. apres suivant les traimement sa peut allez a quelque ms.. donc sa peut toujours allez.. ^^..

je sais pas si ce que je te dis peux déjà t'aider un peut.. lol... il es tot .. et je dois me levé dans 4h.. ^^..

Salut sharlihe, je suis exactement dans la même situation que toi pour la création du projet pour la fin de mon année scolaire.
Je pence que Tealcoune a raison quand il te dit d'établir un cahier des charges. Essai de te faire aussi un graph7 de ton projet avant de commencer ta programmation car ça t'aidera pour la suite :wink: .
Si tu veux on pourra s'échanger quelque idée du projet.
Mon adresse: romain.hars@hotmail.fr

Quelque soit la taille du projet c'est toujours pareil.
Organigramme, logigramme ou grafcet selon tes goûts.

Pour la partie matériel:
Tu fais la liste des entrées/sorties dont tu as besoin, en les séparant par type (bus SPI, bus I²C, entrées logiques simples, sorties logiques simples, entrées analogiques, sorties analogiques, entrées d'interruption, ...)
Tu vérifies que cela n'excède pas les ressources matérielles de la carte que tu comptes utiliser.

Pour la partie logiciel:
Tu décris les tâches à accomplir et leur enchaînement.
Tu détailles chaque tâche.
En détaillant les tâches, tu regardes s'il y a des portions de code dupliquées cela permet de compacter le programme.
Tu découpes le code en fonctions que tu puisses tester unitairement. Pour éviter de mettre au point 1000 ou 2000 lignes de code d'un coup.

Avant de faire le choix d'une seconde carte, il faut s'assurer que c'est bien nécessaire car cela entraîne certaines contraintes qui vont donner du travail supplémentaire.
Nécessité d'un moyen de communication entre les cartes
Mise en place d'un protocole d'échange et mise au point de celui-ci
Allocation des fonctionnalités sur chacune des cartes.