Salut à tous !
Pour le contexte rapide, ça fait un moment que je m'amuse à monter un paludarium (c'est un terrarium avec de l'eau), complètement automatisé (humidificateur, VMC, chauffage, lumière, pompe, et tous les capteurs qui vont avec).
En gros, l'architecture c'est un raspi4 avec Node-RED / Grafana / InfluxDB interconnectés en MQTT, entre eux, et avec un ESP8266. L'ESP a donc très peu d'intelligence, c'est un simple esclave (avec quand même quelques systèmes pour empêcher des catastrophes en cas de perte de connexion avec le Raspberry).
J'ai essayé de faire le code (de l'ESP) propre, modulaire (malheureusement avec task scheduler vu que FreeRTOS ne tourne pas sur ESP8266, petite erreur de casting à la base, mais c'est pas grave). Le but etait qu’ajouter un actionneur / capteur soit simple et rapide, avec quelques fonctions génériques à ajouter par nouveau fichier (=nouvelle fonctionnalité) pour que ça marche tout seul. Dans l'ensemble, ça marche bien (le repo git est en privé pour le moment car pas du tout nettoyé).
Voici un shema de l'architecture de tout ca, rien de tres innovant... globalement tout ce qui se trouve dans "rpi 4" ne devrait pas trop bouger. C'est le coté "esp8266" qui, je l'espere, va bien changer!
Le truc, c'est que je commence à voir apparaître de sérieuses limites, en termes d'évolutivité, principalement à cause des capacités en entrées/sorties de la carte, de résilience, du besoin de longueur des cables à la limite de ce que supporte one wire et i2c (d'ailleurs je suis obligé de filtrer les erreurs liéees au bruit sur mes i2c de 2m50 lol).
Pourtant, depuis le début, le but est que le système soit hyper facilement replicable et adaptable à d'autres projets plus ou moins similaires (de la ventilation de ma maison au chauffage de ma cafetière). Je veux que ça soit générique, évolutif et résilient (ça fait pompeux dit comme ça je reconnais), et plus pour l'amour de la tech que par réel besoin, me rapprocher de quelque chose qui fasse pas trop DIY pour se rapprocher d'un design un peu plus industriel (en toute modestie, je n'entends pas non taper dans les standards industriels je n'en ni les moyen ni les compétences).
Du coup, j'ai réfléchi à plein de designs différents depuis quelques mois.
J'en arrive donc à l'objet de mon post, c'est-à-dire avoir vos retours, critiques ou idées sur l'architecture que j'ai en tête.
Je voudrais partir sur des petits boîtiers imprimés en 3D qui embarqueraient :
-un ESP-C3 super mini
-une interface CAN bus
-des optocoupleurs + MOSFET (genre 3 ou 4), SOIT pour de l'entrée SOIT pour de la sortie ; en effet, je préfère séparer les boîtiers "actionneurs" des boîtiers "capteurs".
Au niveau des connectiques extérieures du boîtier :
D'un côté :
-les entrées ou sorties numériques (autant qu'il y a d'opto dans le boîtier)
-l'entrée analogique sans isolation galvanique
-et une prise 4 pins pour l'I2C
De l'autre côté :
-l'alim 3.3V
-et une alimentation "de puissance" (3.3, 5, 12V), correspondant à la tension d'alimentation des actionneurs ou capteurs, au choix de ce qu'on met derrière donc.
L'idée est que tout ce petit monde soit sur le même bus, au travers d'un câble Ethernet qui transporte le H et le L du CAN bus, le 3.3V, le 5V et le 12V. De ce côté-là, d'ailleurs, je crains des phénomènes inductifs ; je ne sais pas trop si c'est pertinent ou si je devrais les séparer...
Il y aurait donc :
RPI4 (haut niveau d'abstraction) => Ethernet => ESP-quelque chose => CAN bus => tous les boîtiers décrits.
Bien sûr, il est possible d'utiliser plusieurs CAN bus si besoin ; l'idée est d'avoir un identifiant unique pour chaque "cluster" CAN bus.
Je ne sais pas encore si l'interface Ethernet - CAN bus (un ESP-quelque chose) recevra des JSON ou s’il sera plutôt abonné à un topic MQTT, mais je pense plutôt partir sur l'option MQTT.
VOILA! Merci si vous etes parvenu jusqu'ici!, je sais que c'est tres long.....
Cela vous semble il réaliste? Ai-je oublié des elements essentiels? Une betise evidente que je ne vois pas?
Petit disclaimer : je n’entends pas faire ça en claquant des doigts. Je ne pense pas terminer avant au moins un an, voire deux. Il reste encore beaucoup de travail de conception, et même d’apprentissage. Mais je voulais acheter les premiers composants pour commencer ce projet qui me tient à cœur, et éviter de jeter de l’argent par la fenêtre à cause d’une mauvaise préparation...
PS1: Pardonnez mon manque de vocabulaire, je m'exprime avec mes connaissances qui sont purement amateures... (d'où les nombreux "xxx")
PS2: Pour les opto, je pensais prendre des cartes toutes faites sur AliExpress avec opto + MOSFET + diode Schottky.