[PROJET] Create Windcalm convertion Zigbee natif : firmware dispo, besoin de renforts pour le PCB

Hello à tous !

Je bricole sur un firmware espressif IDF open-source qui transforme un ventilateur de plafond Create Windcalm en appareil Zigbee natif, en remplaçant le module Tuya d'origine par un ESP32-H2.

Une fois flashé, le ventilateur apparaît directement dans Home Assistant (ou toute box Zigbee) sans cloud, sans dépendance à l'application Tuya.

Ce qu'on peut contrôler, comme d'origine :

  • Ventilateur : Marche/arrêt, 6 niveaux de vitesse
  • Lumière : On/off + température de couleur (Froid / Neutre / Chaud)
  • Minuterie : Extinction auto à 60, 120 ou 240 min
  • Direction : Mode Été / Hiver
  • Son : Bip de confirmation on/off

La synchronisation avec la télécommande RF physique fonctionne dans les deux sens, et les mises à jour de firmware se font en OTA Zigbee sans démontage.

Le firmware est fonctionnel et peut être flashé dès maintenant mais il reste à tester sur davantage de configurations. Si vous avez un Windcalm et l'envie de tester en mode labo, c'est déjà possible !




La carte cible : ESP32-H2 Super Mini

La carte utilisée est une ESP32-H2 Super Mini (~3€ sur AliExpress), un module ultra-compact (25 × 18 mm) avec Zigbee natif (IEEE 802.15.4), USB-C, et une empreinte suffisamment petite pour loger dans le boîtier du ventilateur.


Appel à contributeurs : PCB & branchement

C'est la partie où j'ai besoin de renfort.

Aujourd'hui la carte doit être alimentée en USB, ce qui n'est pas viable pour une installation définitive dans un plafond. L'objectif est d'alimenter le module directement depuis le 3.3V interne du ventilateur et de câbler proprement les lignes UART vers le MCU Tuya d'origine.
Il faut aussi pendre en compte le condensateur de découplage... Je galère sur ces parties

ota:
zigbee_ota_override_index_location: https://raw.githubusercontent.com/Pulpyyyy/zigcreate-ota/main/ota/index.json

Je cherche des personnes avec :

Broche Rôle
3V3 / GND Alimentation
GPIO 8 précablé LED RGB WS2812 (indicateur d'état)
GPIO 9 précablé Bouton BOOT — maintenu 5 s → factory reset Zigbee
GPIO 10 UART1 TX → MCU Tuya
GPIO 11 UART1 RX ← MCU Tuya
GPIO 14 Reset externe logiciel (actif bas, pull-up interne) — maintenu 200 ms → reboot
Si tu as du matos, des compétences ou juste de la curiosité, on en parle ici

Lien vers le dépot:
github.com/Pulpyyyy/zigcreate-ota

Références:

Tags:
@Forhorse @Atiroocky @bentou @jrvrcd @freetronic

Je suis pas un pro mais j’ai une petite expérience en création de PCB. Faut que je me penche sur le projet, mais sans garantie.

Hello,

vu en passant mais je ne peux pas ouvrir le fichier sous kicad 9.x ( ubuntu 24.04 ) je regarderai pour maj, je n’ai pas le ventilateur sous le coude par contre.

Tu n’a pas une image du schéma sous le coude ? ça ne semble pas très complexe en regardant les autres topics.

A suivre…

cdt

@Forhorse
Je ne suis pas un pro non plus mais j’arrive à rien de top de mon oté

@freetronic
Kicad 10 sous windows mais ça donne ça pour l’instant


Le condo est mal branché/placé/cablé, les via doivent eviter de faire un faux contact avec les trucs sous l’esp
Et ça ressemble d’origine à

J’ai remis la liste de pin à intégrer, les pinout images dimensions sont sur le github

Un premier jet…
A vérifier que le schéma correspond à ce qui est voulu :

Taille PCB au pif. Il faudrait la dimension du module d’origine.

Pas mal du tout ! Merci !

  • je note que TX/RX sur le H2 sont à inverser dans nos branchements (my bad)
  • il faut laisser un peu de place entre le connecteur J1 et le H2 car il y a le port USB à éviter de faire toucher

Pour les dimensions celles d’origine sont 29.5x19.0 mm, mais on peux gagner un peu de place en longueur (large) et très peu sur la largeur coté droite (j1 en bas)

moi j’ai un ventilateur windcalm

Il y avait une contradiction entre ce que tu avais donné sur l’affectation des broches et ton brouillon de PCB. Je me suis basé sur le PCB.

PCB de la même taille que l’origine, en augmentant la distance H2 - J1

Oui je sais pas si c’est moi ou kicad mais j’arrive pas à grand chose.

Questions techniques :

  • sur la plaque d’origine, la valeur du condo est illisible, idéalement il faut que je fasse des essais mais je manque de composant, tu as un idée ?
  • Trou ou pad type smd à souder pour la liaison pcb/h2. Les trous sont mieux pour les dimensions mais moins pratique (plus de soudure, hauteur en plus etc), les pads ça demande un peu plus de largueur pour qu’ils débordent
  • zone d’antenne, c’est à isoler (fond cuivre) ou pas ?

On peux parier que le module ESP embarque déjà ce qu’il faut niveau découplage. En ajouter c’est toujours mieux, mais c’est sans doute pas indispensable. La valeur n’est pas critique et n’importe quoi entre 1 et 10µF est très bien. Sur mon brouillon j’ai prévu une empreinte en 0805 qui est le plus petit soudable « facilement » à la main.
L’emplacement n’est pas idéal, si il y a de la place en dessous et que ça ne risque pas de toucher quoi que ce soit, il serait mieux au plus proche des broches d’alim de l’ESP.

Je pense que des pads type SMD seront plus adapté si la hauteur est un problème. Et ça évite aussi l’utilisation de « header » pour faire la liaison entre l’ESP et le PCB.

Les environs de l’antenne doivent absolument être exempt de cuivre… voir même exempt de PCB tout court quand c’est possible.

Non justement en l’état, avec branchement en direct, il s’allume, le zigbee s’apparaire et il recommence. Difficile de tracer exactement mais je comprends qu’il manque d’un peu de jus.
C’est bien du 3.3v et en principe le h2 consomme moins que le C3 qui lui fonctionne avec un condo de base
Si tu as une autre idée de position (en dessous à la limite), je suis preneur
J’ai vu qu’on peut commander les pcb avec les composants soudés donc au pire pour quelques €, pas besoin de s’emmerder

donc on peut prendre 3/4mm de plus en largeur, sur la carte d’origine c’est un gros condo qui peux bouger un peu.

Exempt de pcb, ça va être dur, les TX/RX sont pas loin, non ?

Des fois le problème c’est le régulateur de tension intégré au module ESP. Dans les version les plus « cheap » c’est un régulateur bas de gamme qui a une consommation propre très importante même quand il ne fait rien. Quand la puissance disponible est faible, ça peut tout changer.
Si tu as un 10µF sous la main, essaye avec cette valeur.
On peut le placer en dessous (côté cuivre) sans problème si ça ne risque pas de toucher quoi que ce soit sur la carte principale.
Pour l’assemblage c’est à voir. Parce que ça fait passer le prix du PCB de 2$ à rapidement 20 même juste pour 1 composants car les frais de mise en production ne sont pas négligeables. Mais c’est possible, ça s’étudie.
Pour dégager le PCB sous l’antenne c’est pas un problème…

Du coup pour TX et RX c’est quoi le bon câblage finalement ?

Il faut que je regarde que j’ai dans mes trucs de recup

Oui il y a de la place sur une autre carte du même genre on voit


j’ai regardé ultra rapidement mais si effectivement pour 20$ je le fais à la mano

Ta dernière version est correcte, merci

Nouvelle version avec pad SMD pour l’ESP (mais plus large du coup : 23mm x 29.5mm), condensateur 10µF en boîtier 0805 sous le PCB et dégagement pour l’antenne.

En faire fabriquer 5, en PCB nu, épaisseur 0.8mm (vu la taille c’est suffisant) te coûterais 1.79€ hors frais de port chez JLCPCB.
Si tu veux leur faire souder le condensateur, le prix passe à 10.79€ (pour 5 toujours) ça fait cher le condo :sweat_smile:

Bon j’ai trouvé des condo normaux polarisés, testé en 10uf et 100uf, je ne vois pas de différence de comportement au bootloop. Mais ça m’étonne quand même le C3 avec le wifi+BT c’est genre 300mA, alors que le H2 c’est de l’ordre de 50mA. ça fout un peu le projet en l’air s’il n’y a pas de soluce.

J’ai regardé l’écart entre le WBR3 d’origine et le PCB, il y a 3mm donc je vais tenterai de réduire d’1mm par sécurité
Merci pour ton aide

Oui mais c’est pas si inabordable non plus, 2€ la PCB au global c’est loin du tarif du dernier shelly

Petit progrès.
Brachement du 3.3V sur la pin 5V car elle semble équipée d’un regulateur alors que la 3.3V non
Et avec le condo 470uF ça démarre plus longtemps
Du coup, j’ai branché l’usb au début, attendu la fin du boot et débranché l’usb. Là ça tient.
Donc c’est bien un souci d’appel de courant.
Je vais ajouter un délai pour le démarrage de la stack zigbee dans le code pour essayer de lisser un peu la conso
Je suis preneur d’autres idées

EDIT en fait non…

Bizarre quand même. Tu as essayé de faire des mesures de conso ?

je bricole pas dans de bonnes conditions : pas d’oscillo, pas de plaquette d’essai, pas beaucoup de composants et un multimètre de gros bricolage

Bon …

  • J’ai commandé un mini oscillo, un truc chinois aussi mais ça devrait suffire pour faire un peu d’analyse du courant/voltage
  • J’ai ajouté dans le code, peu d’étagement du démarrage des stacks.

Reste à revenir à la maison pour tester en direct. J’ai encore une belle semaine à faire au boulot.

Et autre question, le format H2 zero est-il de meilleure facture (régul de tension) https://www.waveshare.com/esp32-h2-zero.htm ?

Et pour les soucis de réception (la coupole est en métal) je vais imprimer ce genre de cache