Hello.
I'm trying to build a wi-fi controlled AC remote, based on Wemos D1 mini lite and IRremoteESP8266 library.
The scheme is as simple as it can get, borrowed from the IRremoteESP8266 example - IR LED is connected through a NPN transistor.
Transistor is KSP42.
What I have seen so far:
- Once after I built the circuit and powered it on, I could see that LED was working through my phone camera.
- After that one time, without changes to the circuit, the IR LED was not emitting anything, however the code was printing out everything correctly in serial monitor.
Code is the example:
/* Copyright 2016, 2018 David Conran
* Copyright 2020 Sadid Rafsun Tulon
*
* An IR LED circuit *MUST* be connected to the ESP8266 on a pin
* as specified by kIrLed below.
*
* TL;DR: The IR LED needs to be driven by a transistor for a good result.
*
* Suggested circuit:
* https://github.com/crankyoldgit/IRremoteESP8266/wiki#ir-sending
*
* Common mistakes & tips:
* * Don't just connect the IR LED directly to the pin, it won't
* have enough current to drive the IR LED effectively.
* * Make sure you have the IR LED polarity correct.
* See: https://learn.sparkfun.com/tutorials/polarity/diode-and-led-polarity
* * Typical digital camera/phones can be used to see if the IR LED is flashed.
* Replace the IR LED with a normal LED if you don't have a digital camera
* when debugging.
* * Avoid using the following pins unless you really know what you are doing:
* * Pin 0/D3: Can interfere with the boot/program mode & support circuits.
* * Pin 1/TX/TXD0: Any serial transmissions from the ESP8266 will interfere.
* * Pin 3/RX/RXD0: Any serial transmissions to the ESP8266 will interfere.
* * ESP-01 modules are tricky. We suggest you use a module with more GPIOs
* for your first time. e.g. ESP-12 etc.
*/
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <ir_Gree.h>
const uint16_t kIrLed = D2; // ESP8266 GPIO pin to use. Recommended: 4 (D2).
IRGreeAC ac(kIrLed); // Set the GPIO to be used for sending messages.
void printState() {
// Display the settings.
Serial.println("GREE A/C remote is in the following state:");
Serial.printf(" %s\n", ac.toString().c_str());
// Display the encoded IR sequence.
unsigned char* ir_code = ac.getRaw();
Serial.print("IR Code: 0x");
for (uint8_t i = 0; i < kGreeStateLength; i++)
Serial.printf("%02X", ir_code[i]);
Serial.println();
}
void setup() {
ac.begin();
Serial.begin(115200);
delay(200);
ac.setModel(gree_ac_remote_model_t::YBOFB);
// Set up what we want to send. See ir_Gree.cpp for all the options.
// Most things default to off.
Serial.println("Default state of the remote.");
printState();
Serial.println("Setting desired state for A/C.");
ac.on();
ac.setFan(1);
// kGreeAuto, kGreeDry, kGreeCool, kGreeFan, kGreeHeat
ac.setMode(kGreeCool);
ac.setTemp(20); // 16-30C
ac.setSwingVertical(true, kGreeSwingAuto);
ac.setXFan(false);
ac.setLight(false);
ac.setSleep(false);
ac.setTurbo(false);
}
void loop() {
// Now send the IR signal.
#if SEND_GREE
Serial.println("Sending IR command to A/C ...");
ac.send();
#endif // SEND_GREE
printState();
delay(5000);
}
Where should I start?
Thank you.