Ik wil nog een project van mij delen. Ik heb wel meerdere projecten afgemaakt sinds het weerstationproject, een LED-matrix (8x32) ESPHome-klok gebouwd voor mijn zoons kamer, die klok, temperatuur en CO²-gehalte van zijn kamer laat zien en rood/wit flasht als er brandalarm is of blauw/wit flasht als er waterlekkage is (met tekst).
Ik heb ook een ESPHome-sirene gebouwd, omdat de Zigbee-versie niet betrouwbaar was. Gewoon een bestaande "domme" alarmflitser en sirene in een kastje gekocht en daarin een ESP32 ingebouwd.
Project dat ik wil delen is een ESPHome IR Blaster. Ik had een van MOES met Zigbee, maar dit was zo traag en reageerde soms raar als je te snel iets bediende, dus ik heb besloten om zelf een te bouwen. En wat voor een? Een hele krachtige!
Dit ding bedient 3 apparaten in onze woonkamer die ongeveer 12m (inclusief keuken), een IPTV-kast (Formulier Z8) ongeveer 7m verderop, een lamp boven de eettafel ongeveer 3m verderop, en een plafondventilator in de keuken die 6m verderop buiten het zicht van de IR-blaster zit, MOES kon de plafondventilator niet bereiken. Deze IR-blaster is zo krachtig dat het weerkaatsingen vanuit de muren en keukenkasten mogelijk maakt om de plafondventilator te bedienen. Het hangt op dezelfde plek waar de MOES IR Blaster hing.
Het is ook razendsnel vergelijken met MOES!
Ik heb een 3D-behuizing gedesignd en met ASA geprint. Ik heb het zo klein mogelijk gehouden, omdat ik geen joekel van een ding op de muur wil hangen.
Ik heb 3x IR-LED's van 3W 940nm gebruikt. Deze zijn behoorlijk sterk, dus daarbij heb ik een MOSFET moeten gebruiken om ze te schakelen. Ik heb de LED's voorzien van sterkoelribben. Die zijn best groot, maar dat was wat ik had liggen. Ik denk dat het zelfs zonder deze geen problemen veroorzaakt, maar als je het lang bedient, bijvoorbeeld voor de dimfunctie, is het wel handig om deze te koelen. Voor de LED's heb ik per LED een 5W-weerstand gebruikt. Let op, dit zijn grote weerstanden.
IR-receiver om codes van de afstandsbedieningen in te leren is een VS1838B
Ik heb ook een 3mm rode led gebruikt om transmissie te laten zien als het bediend wordt. Dit is niet nodig, het is mooi om te hebben. Het kan ook op dezelfde GPIO aangesloten worden waar 3W IR-LEDs aangestuurd worden, maar ik heb gekozen om een aparte GPIO te gebruiken.
Hier een lijst van onderdelen die ik heb gebruikt:
3x
3W 940nm IR LEDs
3x
5W 4.7 ohm metaaloxide film weerstanden
1x
IR Ontvanger VS1838B
1x
IRLZ44N Mosfet
3x
36x15mm alu koelers (nogmaals deze zijn best groot) je kan ook kleine vierkante koelers gebruiken.
1x 5V-voeding van minimaal 3A
Andere weerstanden en condensatoren zijn standaard
Zoals ik had gezegd, ik heb de behuizing zo klein mogelijk proberen houden. Hierdoor moest ik bij de buitenste koelers iets afhalen om het passen te maken. Behuizing is 114mm breed, 46mm diep en 76mm hoog. Buitenste LED's zijn 70 graden verdraaid.
Ik heb een smoked lexaanplaat van 3mm tot mijn spijt gebruikt. Dit is te dik om te buigen op een klein stukje lexaan, zelfs na verwarmen. De binnendiameter van de boog is 250mm en lexaan moet 110mm breed en 70mm hoog gezaagd worden voor het buigen.
Beste is om een 1mm lexaan te gebruiken als je makkelijk wil buigen.
Dit is de behuizing boven ondertrapkastdeur:
Hier de onderkant, links 3mm rode led, en rechts de IR-receiver:
Hier is het schema dat ik heb getekend voor hier:
/f/image/weQ5LpY5l4h651eHHDAgEzsr.png?f=fotoalbum_large)
Gebruik wel wat dikkere draden tot de IR LED's dus min naar MOSFET en vanuit de MOSFET naar de IR LED's en plus zijde van de MOSFET. Hou het minimaal 0.75mm², de rest mag dunner.
Zoals eerder gezegd, Transmit LED is niet nodig, maar wel leuk om te hebben.
Hieronder de ESPHome Yaml, met twee voorbeelden, een met NEC-protocol en een met Pronto. Tijdens het receiven krijg je meerdere codes te zien; je moet even kijken wat er werkt voor jou. Bij mij was de IPTV en plafondventilator NEC en de eettafellamp Pronto. Je krijgt ze allemaal te zien in de logs van je ESPHome.
Ik zou de receiver wel uit taggen (#) na inleren van alle knoppen, anders spamt het constant als er een IR-afstandsbediening gebruikt wordt.
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
| esphome:
name: esp-ir-blaster
friendly_name: esp_ir_blaster
esp32:
board: esp32-c3-devkitm-1
framework:
type: esp-idf
logger:
level: INFO
baud_rate: 0
#baud_rate: 115200
api:
encryption:
key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ota:
- platform: esphome
password: "asdfghjklzxcvmbnqwertyuio"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: none
reboot_timeout: 15min
output_power: 8.5dB
ap:
ssid: "Esp-Ir-Blaster Fallback Hotspot"
password: "XXXXXXXXXX"
captive_portal:
remote_transmitter:
pin:
number: GPIO4
carrier_duty_percent: 33%
non_blocking: false
remote_receiver:
pin:
number: GPIO5
inverted: true
dump: all
output:
- platform: gpio
pin:
number: GPIO6
inverted: false
id: status_led_output
light:
- platform: binary
name: "Status LED"
id: status_led
output: status_led_output
restore_mode: ALWAYS_OFF
script:
- id: tx_led_flash
mode: restart
then:
- light.turn_on: status_led
- delay: 150ms
- light.turn_off: status_led
button:
# ---------- IPTV MENU ----------
- platform: template
name: "IPTV MENU"
on_press:
- script.execute: tx_led_flash
- remote_transmitter.transmit_nec:
address: 0xFF00
command: 0xE51A
# ---------- DIM UP SHORT ----------
- platform: template
name: "Dim UP Short"
on_press:
- script.execute: tx_led_flash
- remote_transmitter.transmit_pronto:
data: "0000 006D 0022 0000 015B 00AF 0016 0017 0016 0017 0016 0017 0016 0016 0016 0017 0016 0017 0016 0017 0016 0042 0016 0042 0017 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0017 0016 0017 0016 0042 0017 0016 0016 0017 0016 0042 0016 0017 0016 0017 0016 0017 0016 0042 0016 0017 0016 0042 0016 0042 0017 0016 0016 0042 0016 0042 0016 0042 0016 0181"
- repeat:
count: 20
then:
- delay: 40ms
- remote_transmitter.transmit_pronto:
data: "0000 006D 0002 0000 015B 0056 0015 0181"
# ---------- DIM UP LONG ----------
- platform: template
name: "Dim UP Long"
on_press:
- script.execute: tx_led_flash
- remote_transmitter.transmit_pronto:
data: "0000 006D 0022 0000 015B 00AF 0016 0017 0016 0017 0016 0017 0016 0016 0016 0017 0016 0017 0016 0017 0016 0042 0016 0042 0017 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0042 0016 0017 0016 0017 0016 0042 0017 0016 0016 0017 0016 0042 0016 0017 0016 0017 0016 0017 0016 0042 0016 0017 0016 0042 0016 0042 0017 0016 0016 0042 0016 0042 0016 0042 0016 0181"
- repeat:
count: 45
then:
- delay: 40ms
- remote_transmitter.transmit_pronto:
data: "0000 006D 0002 0000 015B 0056 0015 0181"
sensor:
- platform: internal_temperature
name: "ESP-IR Blaster Temperature"
- platform: wifi_signal
name: "ESP-IR Blaster WiFi Signaal"
id: wifi_signal_db
update_interval: 60s |
Werking is simpel, richt je afstandbediening naar de IR-receiver, capture de codes via de logs of via VISIT vanuit de ESPHome-builder, en kijk welk protocol voor jou werkt.
Wel hierop letten:
carrier_duty_percent: 33%
33% duty cycle gaf kortere en scherpere IR-pulsen, waardoor de IR-ontvangers het signaal beter konden herkennen. Bij 50% werd het signaal te “zwaar” en minder goed gedetecteerd door ontvangers.
50% is normaal gesproken de standaard.
Extra voordeel is dat de IR LEDs, MOSFET en weerstanden hierdoor ook minder warm worden.
Hier HA dashboard:
[
Voor 1% gewijzigd door
Reptile-X op 16-05-2026 14:01
. Reden: Screenshot van HA dashboard toegevoegd. ]