Non-blocking MicroPython drivers for receiving from IR remotes and transmitting IR signals for blaster applications.
micropython_ir is a set of non-blocking device drivers for MicroPython that enable infrared (IR) communication, allowing devices to receive signals from IR remote controls and transmit IR codes for blaster applications. It solves the problem of integrating IR functionality into embedded projects without blocking operations, supporting multiple protocols like NEC, Sony, and Philips. The drivers are cross-platform, tested on hardware including Pyboard, ESP8266, ESP32, and Raspberry Pi Pico.
Embedded developers and hobbyists working with MicroPython on platforms like Pyboard, ESP32, or Raspberry Pi Pico who need to add IR remote control or transmission capabilities to their projects. It's also suitable for those prototyping IoT devices or robots controlled via IR.
Developers choose micropython_ir for its non-blocking design, which allows seamless integration into applications without halting other processes, and its broad protocol support, covering common IR standards. Its cross-platform compatibility and detailed documentation make it a reliable choice for diverse embedded scenarios.
Nonblocking device drivers to receive from IR remotes and for IR "blaster" apps.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The receiver is cross-platform, tested on Pyboard, ESP8266, ESP32, and Raspberry Pi Pico, as stated in the README, ensuring broad compatibility for embedded projects.
Supports NEC, Sony, Philips RC-5, RC-6 mode 0, OrtekMCE, and Samsung protocols, covering common IR standards with documented implementations.
Drivers are non-blocking, allowing integration into applications or use at the REPL for code sniffing, and remain compatible with uasyncio for asynchronous workflows.
Receiver uses demodulated signals from hardware chips, making it independent of the remote's carrier frequency, which simplifies compatibility across different remotes.
On ESP32 and ESP8266, receiver reliability is compromised when running concurrent code like WiFi due to soft IRQs, as admitted in the README under receiver limitations.
Transmitter is unsupported on ESP8266 and requires specific hardware like Pyboard or ESP32, adding constraints for projects on other platforms.
Only supports well-documented protocols; proprietary ones like Panasonic are excluded, limiting use with some commercial remotes.