Sorry. Disregard.
MySensors WeMos Mini Infra-Red blaster and receiver shield with support for SMD NRF24L01+ or SMD RFM69(H)W radio modules.
Gerber files are included so you can order these PCB at your favorite PCB fab house and solder the few components yourself. For an easy ordering process, you can directly order these PCB without having to do anything else:
Start by soldering all the SMD components, then proceed to WeMos header, IR LEDs and IR receiver. By default, the BOM indicates TSAL6400 LEDs but you can use any high-power IR LEDs to have different beam angle or power according to your needs. I personally use a mix of TSAL6400, TSAL6200 and TSAL6100. Some of the SMD 0805 capacitors are optional and could be skipped but I still recommended to solder all of them for optimal operation.
Tx and Rx LEDs are optional. Their only purpose is to indicate than an IR signal was either sent or received. If you do not wish to add these status LEDs you can also skip both 120Ω SMD 0805 resistors. By default, in the BOM Rx is green and Tx is yellow, but you can use different colors, update their corresponding current limiting resistor if needed.
For security reasons, you can add a CryptAuthEE SHA256 chip. This will allow you to sign messages and will secure communications between the gateway and other nodes (this is not encryption, just signing). If you decide to add the ATSHA204 chip you will need to add a 0.1µF SMD 0805 decoupling capacitor and 4.7kΩ SMD 0805 pull-up resistor. Signing can also be done at the software level, without the chip if you decide to add this function later. For complete reference see the detailed MySensors Security & Signing guide
The Infra-Red module is optional, if you already know your IR codes or plan to learn them separately you can omit it.
Because this module is based on ESP8266 you do not necessary need to install a radio module.
Plug your WeMos Mini on top of the shield and power it through the micro USB port. Do not forget to edit the various options of the Arduino example code before uploading it.
Included program
Example code implementing custom web server and MySensors support. You will (very probably) need to modify this code with your own IR codes and definitions. This program was created to allow me to control my Eufy RoboVac 11 robotic vacuum cleaner which unfortunately by default lack of any advanced scheduling options. By default, this vacuum cleaner will start its "auto" mode every day at the same hour, but can now be scheduled to operate only certain days, at different times, or even using different modes.
This program will set up a web server on your WeMos that you can access from any other device on your local network or by connecting directly to the ESP8266 hotspot (depending on WiFi settings) allowing you to trigger IR commands. Interface is optimized for access through a smartphone, allowing you to use it as a smart remote.
It will also create a MySensors node behaving like a selector switch. You can then program it to perform various actions through your controller.
Version 1.0: Initial release.
This project use the Kicad footprints and templates for WeMos D1 mini board library.
Quantity | Reference | Value | Package | Manufacturer | Manufacturer P/N | Mouser P/N | Comment | Aliexpress or Ebay link | |
---|---|---|---|---|---|---|---|---|---|
1 | C1 | 4.7µF | SMD 0805 | Murata | GRM21BR61C475KA88K | 81-GRM21BR61C475KA8K | AliExpress: https://www.aliexpress.com/item//32561376020.htm... | ||
1 | C2 | 0.1µF | SMD 0805 | Murata | GRM21R71C104JA01D | 81-GRM21R71C104JA01D | AliExpress: https://www.aliexpress.com/item//32560085454.htm... | ||
2 | C3,C4 | 10µF | SMD 0805 | Murata | GRM21BR6YA106KE43L | 81-GRM21BR6YA106KE3L | AliExpress: https://www.aliexpress.com/item//32560458041.htm... | ||
1 | R1 | 4.7k | SMD 0805 | Bourns | CR0805-JW-472ELF | 652-CR0805-JW-472ELF | AliExpress: https://www.aliexpress.com/item//32570155447.htm... | ||
1 | R2 | 56k | SMD 0805 | Bourns | CR0805-JW-563ELF | 652-CR0805JW-563ELF | AliExpress: https://www.aliexpress.com/item//32570183133.htm... | ||
2 | R3,R4 | 120 | SMD 0805 | Bourns | CR0805-FX-1200ELF | 652-CR0805FX-1200ELF | |||
1 | U1 | NRF24L01 | NRF24L01-SMD | Radio module | NRF24L01+ SMD | U1 or U2 | AliExpress: https://www.aliexpress.com/item//32430542898.htm... | ||
1 | U2 | ATSHA | SOT-23-3 | Atmel | ATSHA204A-STUCZ-T | 566-ATSHA204ASTUCZ-T | Optional, for signing | ||
1 | U3 | RFM69W | RFM69(H)W-SMD | Radio module | RFM69(H)W SMD | U1 or U2 | AliExpress: https://www.aliexpress.com/item//32707574282.htm... | ||
1 | U4 | WeMos_mini | WeMos D1 mini Pin Header | WeMos | D1 mini pro | AliExpress: https://www.aliexpress.com/item//32724692514.htm... | |||
1 | U5 | TSOP4838 | Through Hole | Vishay Semiconductors | TSOP4838 | 782-TSOP4838 | AliExpress: https://www.aliexpress.com/item//32634580343.htm... | ||
1 | Q1 | FDV303N | SOT-23-3 | Fairchild Semiconductor | FDV303N | 512-FDV303N | AliExpress: https://www.aliexpress.com/item//32551535591.htm... | ||
7 | D1-D7 | LED | Through Hole | Vishay Semiconductors | TSAL6400 | 782-TSAL6400 | AliExpress: https://www.aliexpress.com/item//32766698010.htm... | ||
1 | P1 | ANT | Through Hole | RFM69 antenna | Various frequencies | ||||
1 | D8 | Tx | SMD 0805 | OSRAM Opto Semiconductors | LG R971-KN-1 | 720-LGR971-KN-1 | Green | AliExpress: 100PCS 5 Colors 0805 SMD LED Kit White Red Yello... | |
1 | D9 | Rx | SMD 0805 | OSRAM Opto Semiconductors | LY R976-PS-36 | 720-LYR976-PS-36 | Yellow | AliExpress: 100PCS 5 Colors 0805 SMD LED Kit White Red Yello... |
Name | Size | # Downloads |
---|---|---|
MySWeMosIRShield.pdf | 38.32 kB | 1109 |
MySWeMosIRShield-B.Mask.gbs | 27.06 kB | 749 |
MySWeMosIRShield-B.Cu.gbl | 40.68 kB | 802 |
MySWeMosIRShield-B.SilkS.gbo | 11.15 kB | 805 |
MySWeMosIRShield-Edge.Cuts.gko | 362 B | 760 |
MySWeMosIRShield-F.Cu.gtl | 95.81 kB | 794 |
MySWeMosIRShield-F.Mask.gts | 32.73 kB | 789 |
MySWeMosIRShield-F.SilkS.gto | 31.48 kB | 769 |
MySWeMosIRShield.drl | 1.12 kB | 713 |
Revision | Created | Layers | Dimensions |
---|---|---|---|
rev1 | 8 years ago | 2 | 50 × 50 |
Actually was not too bad to update.
I pushed the updated example sketch to github and openhardware, compatible with IRremoteESP8266 v2.0 and up.
I did a quick test here, no errors, and the vacuum cleaner already escaped to the bedroom, so good to go!
As for the board, feel free to share any sketch here or on github.
Short and not perfect answer, they changed everything when they updated the library to >2.0.
For a quick way to test your board etc, you can compile the example sketch by reverting to version 1.2.0
Ideally you may want to upgrade your sketch to be compatible with version 2.0 according to this https://github.com/markszabo/IRremoteESP8266/wiki/Upgrading-to-v2.0
I wanted to do it, but completely forgot about it... Will try to have a look at it tonight, but hopefully you can start testing everything using the old library version.
May also ask what minor modifications you did? Always open to suggestions to improve the board.
I ordered some of the MySweMosIRShield PCBs (after som minor modifications) an now while I wait for them to arrive I started looking into creating a sketch. I thought I would start from the example @emc2 provided but I cannot get it to compile and I don't know why.
Seems like it has something to do with the data types used. I tried both the github version and the latest available version via the Library manager of the IRremoteESP8266 Lib but same problem.
Arduino IDE 1.6.11
My Copy/paste coding skills are to no use if I don't have something that works to start from
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino: In function 'void handleIr()':
MySWeMosIRShield:316: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyAUTO, sizeof(eufyAUTO) / sizeof(eufyAUTO[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:316:77: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:319: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyHOME, sizeof(eufyHOME) / sizeof(eufyHOME[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:319:77: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:322: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyMAX, sizeof(eufyMAX) / sizeof(eufyMAX[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:322:74: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:325: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufySPOT, sizeof(eufySPOT) / sizeof(eufySPOT[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:325:77: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:328: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyEDGE, sizeof(eufyEDGE) / sizeof(eufyEDGE[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:328:77: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:331: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyROOM, sizeof(eufyROOM) / sizeof(eufyROOM[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:331:77: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:334: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufySTART, sizeof(eufySTART) / sizeof(eufySTART[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:334:80: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:337: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyPAUSE, sizeof(eufyPAUSE) / sizeof(eufyPAUSE[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:337:80: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino: In function 'void ircode(decode_results*)':
MySWeMosIRShield:542: error: 'class decode_results' has no member named 'panasonicAddress'
Serial.print(results->panasonicAddress, HEX);
^
MySWeMosIRShield:546: error: call of overloaded 'print(uint64_t&, int)' is ambiguous
Serial.print(results->value, HEX);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:546:35: note: candidates are:
In file included from C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:26:0,
from C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/HardwareSerial.h:31,
from C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Arduino.h:245,
from sketch\MySWeMosIRShield.ino.cpp:1:
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:71:16: note: size_t Print::print(unsigned char, int)
size_t print(unsigned char, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:72:16: note: size_t Print::print(int, int)
size_t print(int, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:73:16: note: size_t Print::print(unsigned int, int)
size_t print(unsigned int, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:74:16: note: size_t Print::print(long int, int)
size_t print(long, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:75:16: note: size_t Print::print(long unsigned int, int)
size_t print(unsigned long, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:76:16: note: size_t Print::print(double, int)
size_t print(double, int = 2);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino: In function 'void dumpCode(decode_results*)':
MySWeMosIRShield:659: error: 'class decode_results' has no member named 'panasonicAddress'
Serial.print(results->panasonicAddress, HEX);
^
MySWeMosIRShield:665: error: call of overloaded 'print(uint64_t&, int)' is ambiguous
Serial.print(results->value, HEX);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:665:37: note: candidates are:
In file included from C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:26:0,
from C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/HardwareSerial.h:31,
from C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Arduino.h:245,
from sketch\MySWeMosIRShield.ino.cpp:1:
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:71:16: note: size_t Print::print(unsigned char, int)
size_t print(unsigned char, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:72:16: note: size_t Print::print(int, int)
size_t print(int, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:73:16: note: size_t Print::print(unsigned int, int)
size_t print(unsigned int, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:74:16: note: size_t Print::print(long int, int)
size_t print(long, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:75:16: note: size_t Print::print(long unsigned int, int)
size_t print(unsigned long, int = DEC);
^
C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:76:16: note: size_t Print::print(double, int)
size_t print(double, int = 2);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino: In function 'void receive(const MyMessage&)':
MySWeMosIRShield:724: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyAUTO, sizeof(eufyAUTO) / sizeof(eufyAUTO[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:724:83: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:732: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyHOME, sizeof(eufyHOME) / sizeof(eufyHOME[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:732:83: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:740: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyMAX, sizeof(eufyMAX) / sizeof(eufyMAX[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:740:80: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:748: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyROOM, sizeof(eufyROOM) / sizeof(eufyROOM[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:748:83: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:756: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufySPOT, sizeof(eufySPOT) / sizeof(eufySPOT[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:756:83: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:764: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyEDGE, sizeof(eufyEDGE) / sizeof(eufyEDGE[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:764:83: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:772: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufySTART, sizeof(eufySTART) / sizeof(eufySTART[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:772:86: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
MySWeMosIRShield:780: error: no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
irsend.sendRaw(eufyPAUSE, sizeof(eufyPAUSE) / sizeof(eufyPAUSE[0]), khz);
^
C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:780:86: note: candidate is:
In file included from C:\Users\Tomas\Documents\Arduino\MySWeMosIRShield\MySWeMosIRShield.ino:127:0:
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: void IRsend::sendRaw(uint16_t*, uint16_t, uint16_t)
void sendRaw(uint16_t buf[], uint16_t len, uint16_t hz);
^
C:\Users\Tomas\Documents\Arduino\libraries\IRremoteESP8266\src/IRsend.h:37:8: note: no known conversion for argument 1 from 'unsigned int [83]' to 'uint16_t* {aka short unsigned int*}'
Multiple libraries were found for "WiFiClient.h"
Used: C:\Users\Tomas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi
Not used: C:\Program Files\Arduino\libraries\WiFi
Not used: C:\Program Files\Arduino\libraries\WiFi
Not used: C:\Program Files\Arduino\libraries\WiFi
Not used: C:\Program Files\Arduino\libraries\WiFi
exit status 1
no matching function for call to 'IRsend::sendRaw(unsigned int [83], unsigned int, int&)'
@emc2 Ok thank you for your feedback ! I'm doing an IR blaster also, and as it seems to work reliably for you even with the aliexpress versions, I'll include a bypass for the resistors to have the option.
@Nca78 Not sure either to be honest, but technically I only did the calculation for a specific type of LED, the ones in the BOM.
I do use TSAL LEDs, and used http://ledcalc.com/#calc to do the resistor calculation for 7 LEDs with numbers extracted from the datasheet, leading to the ~5ohm resistor calculation.
I tried without any, or with a 4.7ohm resistor and I had significant better range results without resistor. Not a surprise, looking at the IR signal with a smartphone camera you can definitively see a brightness difference too, that's really a blaster
No burned LED after 48h of testing (sending one of my IR code every 5s). I also tried, for 10min, with regular red LED (http://www.nteinc.com/specs/3000to3099/pdf/nte3019.pdf) which have lower Vf and If requirements, no problems either.
I don't say that this is right, I truly don't have the background to do more than empirical experimentations, but it seemed good enough for me at the time. I did not had any problems since then, both with real TSAL from mouser and probably fake ones from aliexpress.
@emc2 I'm not sure you can calculate like that as all LEDs are different. The LED manufactured with the lowest forward voltage can take way more current than the others and die prematurely. Then the next one, and so on.
I hope you will like this board when you receive it!
True, no current limiting resistor in that configuration for IR LEDs. One of my previous version had one and IR signal was quite dim. By having 7 LEDs the current in each one is actually quite low, and they are only ON for a few micro seconds. I have been using this specific configuration for 3 months now (breadboard to various prototypes) and no burned LEDs so far.
It may differ for other IR LEDs, but TSAL series is pretty resilient and by using 7 LEDs it can take up a few amps without any problem. (If you do the calculations you will find that you could add a 5ohm resistor to limit to 100mA, or 2.5ohm for 200mA, so as you can see it's safe to skip)
Even using ONE regular (visible light) LED for a quick test to send a signal is actually ok, but leaving it on for more than 5s is sufficient to burn it. Having all seven LEDs, they were still working after 1 minute being ON, which is already far from any real case use.