Bonjour,
Je teste un 74HC595 avec un ESP32 pour piloter une carte 8 relais.
j’ai contrôlé les branchements, j’alimente le 74HC en 3.3v, les relais seront alimenté en 5V par une autre alim plus tard.
je n’ais que la LED du relais 1 (sortie QA du HC74) qui fonctionne lorsque je bascule les switchs sur on, tous les autres sont inopérants. je ne comprends pas pourquoi ?
Mon code :
esphome:
name: 74hc
friendly_name: 74hc
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "XY5c0KxpLaNk/aJ2jz6cJ1BxFOtr3BL05fOjsvpAkdM="
ota:
password: "a0c3986ef7b8c30f0c5202a35a5b897a"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
captive_portal:
web_server:
port: 80
version: 2
local: true
sn74hc595:
- id: 'sn74hc595_hub'
data_pin: GPIO14
clock_pin: GPIO12
latch_pin: GPIO04
# Individual outputs
switch:
- platform: gpio
name: "Zone 1"
pin:
sn74hc595: sn74hc595_hub
# Use pin number 0
number: 0
inverted: true
- platform: gpio
name: "Zone 2"
pin:
sn74hc595: sn74hc595_hub
# Use pin number 1
number: 1
inverted: true
- platform: gpio
name: "Zone 3"
pin:
sn74hc595: sn74hc595_hub
# Use pin number 2
number: 2
inverted: true
- platform: gpio
name: "Zone 4"
pin:
sn74hc595: sn74hc595_hub
# Use pin number 3
number: 3
inverted: true
- platform: gpio
name: "Zone 5"
pin:
sn74hc595: sn74hc595_hub
# Use pin number 4
number: 4
inverted: true
OUPS ! la boulette, je viens de m’apercevoir, après une semaine à galérer, que j’avais mis le mauvais CI dans le support ! ça n’était pas un 74HC595 mais un CD4050 qui n’a rien à voir.
Donc ça fonctionne très bien.
je vais tester avec 4 x 74HC595 pour 32 relais…
1 « J'aime »
8 relais pour 4 volets roulants.
ça fonctionne :
Bonjour,
le sujet m’intéresse, peux tu donner ton schéma de câblage ainsi que ton code compet pour les 32 relais ?
Merci
Pour le moment, je fais des tests,
le schéma avec 2 x 74HC sur ce blog, avec 4 c’est le même câblage.
pour le code c’est provisoire il faudra que j’y travail.
esphome:
name: esp32wroommini
friendly_name: ESP32Wroommini
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "lbdv2sy9cjksKxDyG8AZ5T7sAr/fDprnikPsqzsZV2M="
ota:
password: "317c00f8a06bee338556da93a0e6b9f4"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp32Wroommini Fallback Hotspot"
password: "rjRNRDE76VS3"
captive_portal:
web_server:
port: 80
version: 2
local: true
text_sensor:
- platform: wifi_info
ip_address:
name: ESP IP Address
ssid:
name: ESP Connected SSID
bssid:
name: ESP Connected BSSID
mac_address:
name: ESP Mac Wifi Address
number:
- platform: template
max_value: 30
name: "Op duration"
optimistic: true
min_value: 5
step: 1
# Example configuration entry
sn74hc595:
- id: 'SORTIES'
data_pin: GPIO25 #SER
clock_pin: GPIO33 #SRCLK
latch_pin: GPIO32 #RCLK
sr_count: 4
# Individual outputs
switch:
- platform: gpio
id: "SORTIE0"
pin:
sn74hc595: SORTIES
number: 0
inverted: true
interlock: &interlock_group0 [SORTIE0, SORTIE1]
restore_mode: always off
- platform: gpio
id: "SORTIE1"
pin:
sn74hc595: SORTIES
number: 1
inverted: true
interlock: *interlock_group0
restore_mode: always off
- platform: gpio
id: "SORTIE2"
pin:
sn74hc595: SORTIES
number: 2
inverted: true
interlock: &interlock_group1 [SORTIE2, SORTIE3]
restore_mode: always off
- platform: gpio
id: "SORTIE3"
pin:
sn74hc595: SORTIES
number: 3
inverted: true
interlock: *interlock_group1
restore_mode: always off
- platform: gpio
id: "SORTIE4"
pin:
sn74hc595: SORTIES
number: 4
inverted: true
interlock: &interlock_group2 [SORTIE4, SORTIE5]
restore_mode: always off
- platform: gpio
id: "SORTIE5"
pin:
sn74hc595: SORTIES
number: 5
inverted: true
interlock: *interlock_group2
restore_mode: always off
- platform: gpio
id: "SORTIE6"
pin:
sn74hc595: SORTIES
number: 6
inverted: true
interlock: &interlock_group3 [SORTIE6, SORTIE7]
restore_mode: always off
- platform: gpio
id: "SORTIE7"
pin:
sn74hc595: SORTIES
number: 7
inverted: true
interlock: *interlock_group3
restore_mode: always off
# Cover
# HA frontend
cover:
- platform: time_based
device_class: shutter
name: "Volet_1"
id: Volet_1
open_action:
- switch.turn_on: SORTIE0
open_duration:
seconds: 12
close_action:
- switch.turn_on: SORTIE1
close_duration:
seconds: 12
stop_action:
- switch.turn_off: SORTIE0
- switch.turn_off: SORTIE1
- platform: time_based
device_class: shutter
name: "Volet_2"
id: Volet_2
open_action:
- switch.turn_on: SORTIE2
open_duration: 15s
close_action:
- switch.turn_on: SORTIE3
close_duration: 15s
stop_action:
- switch.turn_off: SORTIE2
- switch.turn_off: SORTIE3
- platform: time_based
device_class: shutter
name: "Volet_3"
id: Volet_3
open_action:
- switch.turn_on: SORTIE4
open_duration: 35s
close_action:
- switch.turn_on: SORTIE5
close_duration: 35s
stop_action:
- switch.turn_off: SORTIE4
- switch.turn_off: SORTIE5
- platform: time_based
device_class: shutter
name: "Volet_4"
id: Volet_4
open_action:
- switch.turn_on: SORTIE6
open_duration: 15s
close_action:
- switch.turn_on: SORTIE7
close_duration: 15s
stop_action:
- switch.turn_off: SORTIE6
- switch.turn_off: SORTIE7
Intéressant, mais j’ai un peu de mal a savoir comment ça fonctionne.
Si je comprends bien 3 gpio pour du « codage » pour compter de 0b à 111b soit 8 décimal ce qui fait que tu commande 8 relais
Comment faire tu pour piloter à la fois le relais 3 et 5 par exemple ?
c’est le code qui gère le BUS, les 74HC595 sont en série
pour le relais 32 (0 à 31):
- platform: gpio
id: "SORTIE31"
pin:
sn74hc595: SORTIES
number: 31
inverted: true
il y a des blogs Arduino la dessus, pas beaucoup avec ESPHome par contre :
le sn74hc595 est un convertisseur série/parallèle
tu as un « bus » avec les signaux latch et clock pour tous tes sn74hc595, tu rentre ton input série dans le premier, et ensuite tu chaine tes chips, la sortie du premier entre dans le second et ainsi de suite, avec un max de 8 sn74hc595
si tu as besoin de plus de 64 relais, il faut passer par un second jeu de sn74hc595 avec un second input série.
très bien expliqué là:
2 « J'aime »
Bonjour,
J’ai terminé une carte de 16 entrées et 16 sorties avec un Esp32 POE Ethernet (donc pas besoin d’alimentation) en utilisant 2 multiplexeurs 74HC595 pour les sorties et 2 multiplexeurs 74HC165 pour les entrées.
J’ai développé le circuit imprimé et j’ai testé la carte qui fonctionne super bien.
(attention, il faut alimenter les multiplexeurs en 3.3v)
Pour ceux que ça intéresse, le code et schéma:
substitutions:
disp_name: esp32-poe-carte1
esphome:
name: esp32-poe-carte1
friendly_name: esp32-poe-carte1
esp32:
board: esp32-poe
framework:
type: arduino
##############################################
ota:
password: "acb5275c4c844f25003ca3e16d8bdbc4"
api:
encryption:
key: !secret enc_key_rostock
logger:
web_server:
local: true
port: 80
auth:
username: !secret web_server_username
password: !secret web_server_password
############################################
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk_mode: GPIO17_OUT
phy_addr: 0
power_pin: GPIO12
# manual_ip:
# static_ip: 192.168.0.25
# gateway: 192.168.0.254
# subnet: 255.255.255.0
#########################################
# Information de la carte
text_sensor:
- platform: ethernet_info
ip_address:
name: ${disp_name} IP Address
########################################
# Bouton de redémarrage
button:
- platform: restart
id: reset
name: ${disp_name} Reset
########################################
sensor:
- platform: uptime
name: ${disp_name} Allumé depuis (s)
id: uptime_sec
#######################################
# Multiplexeur pour 16 sorties. Le sn74hc595 doit être en 3.3v
sn74hc595:
- id: 'sn74hc595_hub'
data_pin: GPIO16 #SER
clock_pin: GPIO33 #SRCLK
latch_pin: GPIO32 #RCLK
sr_count: 2
######################################
# Les relais sont en 5v
switch:
- platform: gpio
name: "Relais-1" #"SN74HC595 Pin #0"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 0
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-2" #"SN74HC595 Pin #1"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 1
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-3" #"SN74HC595 Pin #2"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 2
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-4" #"SN74HC595 Pin #3"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 3
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-5" #"SN74HC595 Pin #4"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 4
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-6" #"SN74HC595 Pin #5"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 5
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-7" #"SN74HC595 Pin #6"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 6
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-8" #"SN74HC595 Pin #7"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 7
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-9" #"SN74HC595 Pin #8"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 8
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-10" #"SN74HC595 Pin #9"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 9
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-11" #"SN74HC595 Pin #10"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 10
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-12" #"SN74HC595 Pin #11"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 11
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-13" #"SN74HC595 Pin #12"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 12
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-14" #"SN74HC595 Pin #13"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 13
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-15" #"SN74HC595 Pin #14"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 14
inverted: false
restore_mode: always off
- platform: gpio
name: "Relais-16" #"SN74HC595 Pin #15"
icon: "mdi:electric-switch"
pin:
sn74hc595: sn74hc595_hub
number: 15
inverted: false
restore_mode: always off
#######################################
# Multiplexeur pour 16 entrées. Le sn74hc164 doit être en 3.3v
# Les entrées sont avec une resistance de 10k en pull-up
sn74hc165:
- id: 'sn74hc165_hub'
clock_pin: GPIO02 #pin 2 du sn74hc165_hub
data_pin: GPIO01 #pin 9 du sn74hc165_hub
load_pin: GPIO03 #pin 1 du sn74hc165_hub
clock_inhibit_pin: GPIO00 #pin 15 du sn74hc165_hub
sr_count: 2
#-----------------------------------------
# Entrées
binary_sensor:
# Etat de connexion de l'esp32
- platform: status
name: ${disp_name} Status
#-----------------------------------------
# Declaration des entrees sur le sn74hc165
#-----------------------------------------
- platform: gpio
name: "In-1" #"SN74HC165 Pin #0"
pin:
sn74hc165: sn74hc165_hub
number: 0
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-2" #"SN74HC165 Pin #1"
pin:
sn74hc165: sn74hc165_hub
number: 1
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-3" #"SN74HC165 Pin #2"
pin:
sn74hc165: sn74hc165_hub
number: 2
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-4" #"SN74HC165 Pin #3"
pin:
sn74hc165: sn74hc165_hub
number: 3
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-5" #"SN74HC165 Pin #4"
pin:
sn74hc165: sn74hc165_hub
number: 4
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-6" #"SN74HC165 Pin #5"
pin:
sn74hc165: sn74hc165_hub
number: 5
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-7" #"SN74HC165 Pin #6"
pin:
sn74hc165: sn74hc165_hub
number: 6
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-8" #"SN74HC165 Pin #7"
pin:
sn74hc165: sn74hc165_hub
number: 7
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-9" #"SN74HC165 Pin #8"
pin:
sn74hc165: sn74hc165_hub
number: 8
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-10" #"SN74HC165 Pin #9"
pin:
sn74hc165: sn74hc165_hub
number: 9
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-11" #"SN74HC165 Pin #10"
pin:
sn74hc165: sn74hc165_hub
number: 10
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-12" #"SN74HC165 Pin #11"
pin:
sn74hc165: sn74hc165_hub
number: 11
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-13" #"SN74HC165 Pin #12"
pin:
sn74hc165: sn74hc165_hub
number: 12
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-14" #"SN74HC165 Pin #13"
pin:
sn74hc165: sn74hc165_hub
number: 13
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-15" #"SN74HC165 Pin #14"
pin:
sn74hc165: sn74hc165_hub
number: 14
inverted: true
#-----------------------------------------
- platform: gpio
name: "In-16" #"SN74HC165 Pin #15"
pin:
sn74hc165: sn74hc165_hub
number: 15
inverted: true
#####################################
1 « J'aime »
Après les essais avec des bouts de fils, mauvaises soudures, faux contacts, j’ai la vue qui baisse
Je vais bientôt me lancer dans l’achat de PCB sur mesure…
ça sera plus propre et définitif, je prévois 32 sorties, 16 entrées, un DS18B20 et bus One-Wire, des bornier libres pour extensions futures avec des connecteurs Dupont vers l’ESP.
les cartes 8 Relais ou 8 LowLevelTrigger seront externe avec connecteurs Dupont et les entrées avec deux cartes 8 optocoupleurs.
Une alim externe en 12V, un régulateur 7805 pour le 5V, le 3.3V fourni par ESP32.
j espère que je n’oublie rien.
Comme c’est minimum 5 pièces en fabrication, j’en utiliserai une pour mes 12 Volets Roulants et une autre pour l’éclairage, 32 lampes, 16 inter ça devrait aller.
pour la conception j’ai utilisé https://easyeda.com/
Soudure des composants, 1er tests et debug logiciel.
je commence progressivement par les sorties relais Switch.
2 « J'aime »