OMOTE/README.md

108 lines
7.0 KiB
Markdown
Raw Normal View History

2023-06-28 14:26:56 -04:00
# OMOTE - Open Universal Remote
2024-03-12 14:41:40 -04:00
![](images/OMOTE_assembled.jpg)
2023-07-21 16:23:39 -04:00
2024-03-12 14:46:52 -04:00
![Ubuntu Build](https://github.com/CoretechR/OMOTE/actions/workflows/build-platformio.yml/badge.svg)
2023-12-02 09:21:21 -05:00
[![OMOTE Discord](https://discordapp.com/api/guilds/1138116475559882852/widget.png?style=shield)][link1]
2023-07-28 07:19:26 -04:00
2023-07-21 16:23:39 -04:00
## Overview
2023-06-28 14:26:56 -04:00
OMOTE is an ESP32 based open source universal remote. Its capacitive 2.8” touchscreen provides an intuitive and snappy user interface for switching devices and settings. No hub or docking station is required as the remote features infrared, Wi-Fi and Bluetooth connectivity. With its well optimized power consumption, OMOTE can run for months on a charge. And since the design files are open source, you can fully customize them to your devices and needs.
2023-07-21 16:23:39 -04:00
<div align="center">
2024-03-12 14:41:40 -04:00
<img src="images/GUI_sliding_demo.gif" width="50%">
2023-07-21 16:23:39 -04:00
</div>
### Features
* 2.8” 320x240px capacitive touchscreen
* Ergonomic, fully 3D printed case
* Responsive LVGL user interface
* Built in infrared, Wi-Fi and Bluetooth
* Press any button or simply lift the remote to wake it up
* Up to 6 months of battery life using a 2000 mAh Li-Po battery
2024-03-10 12:27:10 -04:00
### The state of this project
2024-03-10 10:54:55 -04:00
#### Hardware
2023-07-21 16:23:39 -04:00
The hardware for OMOTE is designed to be easily replicated, using 3D-printed parts, a 2-layer PCB and commonly available components. The mechanical and PCB design can be considered mostly complete. Still, there might be areas for improvement, for example the IR range could be further optimized.
2024-03-10 10:54:55 -04:00
#### Software
2024-03-10 12:20:28 -04:00
The software can be adjusted to your needs. You can add your own amplifier, TV and media player. Smart home devices can be controlled with MQTT. The software is an example made up of:
* a TV and an amplifier controlled with infrared
* a Fire TV media player controlled with BLE (bluetooth keyboard)
* some smart home devices controlled with MQTT
* an IR receiver for decoding the IR codes from your remote
2024-03-10 10:54:55 -04:00
2024-03-10 12:43:21 -04:00
Please see the [wiki on how to understand and modify the software.](https://github.com/CoretechR/OMOTE/wiki/02-How-to-understand-and-modify-the-software)
2024-03-10 10:54:55 -04:00
2024-03-10 12:20:28 -04:00
You need to have PlatformIO running, and you need to know how to compile and flash your own firmware with PlatformIO. There is no prebuild firmware.
2024-03-10 10:54:55 -04:00
2024-03-10 12:27:10 -04:00
The remote can be charged and programmed via its USB-C port. Open the [PlatformIO project](https://github.com/CoretechR/OMOTE/tree/main/Platformio) to compile and upload the code to the ESP32.
2023-07-21 16:23:39 -04:00
2024-03-10 12:27:10 -04:00
As a long term goal, maybe a prebuild firmware will be published, where you can configure your OMOTE via a web interface.
2023-07-21 16:23:39 -04:00
2024-03-10 12:27:10 -04:00
### LVGL GUI simulator for Windows and Linux
2023-07-23 14:04:46 -04:00
2024-03-12 14:55:37 -04:00
A simulator for running the LVGL UI on your local Windows or Linux machine is available.
You can run the simulator in Visual Studio Code with PlatformIO. No need for any other compiler or development environment (no Visual Studio needed as often done in other LVGL simulators).
2024-03-12 14:46:52 -04:00
<div align="center">
2024-03-12 14:55:37 -04:00
<img src="images/WindowsSimulator.gif" width="60%">
2024-03-12 14:46:52 -04:00
</div>
2024-03-12 14:55:37 -04:00
2024-03-12 14:46:52 -04:00
For details, please see the [wiki for the software simulator for fast creating and testing of LVGL GUIs.](https://github.com/CoretechR/OMOTE/wiki/03-Software-simulator-for-fast-creating-and-testing-of-LVGL-GUIs)
2023-07-23 14:04:46 -04:00
2024-03-10 12:27:10 -04:00
### Building the hardware
2023-07-21 16:23:39 -04:00
The central component of OMOTE is its PCB. If you want to build the PCB yourself, you will need SMT-reflow tools like a hot plate or a hot-air station. The 2-layered board and a solder paste stencil can be ordered from any PCB manufacturer using the [KiCad files](https://github.com/CoretechR/OMOTE/tree/main/PCB). Manufacturers like OSHPARK or Aisler will accept these files directly. For JLCPCB or PCBWay, you can use their plugin to export the optimized Gerber files. A [zip archive](https://github.com/CoretechR/OMOTE/blob/main/PCB/production/gerber.zip) with theses Gerber files is also included in this repository.
2023-07-21 16:23:39 -04:00
I sourced the electrical parts from LCSC, but most of them should be available from the usual suppliers like Digikey or Mouser as well. You can check out the [BOM](https://github.com/CoretechR/OMOTE/blob/main/PCB/BOM.csv) for all the necessary components.
The project uses a 2000mAh Li-Ion battery with a JST-PHR-2 connector. Any 3.7V Li-Ion battery that fits into the 50x34x10mm dimensions should work alright. Please ***make sure to choose a battery with integrated undervoltage protection*** (usually visible as a small PCB under Kapton tape between the battery cables).
The 2.8" capacitive touchscreen can be sourced from Adafruit ([2770](https://www.adafruit.com/product/2770)). If you look for the part number CH280QV10-CT, you can also buy this display directly from the manufacturer via [Alibaba](https://www.alibaba.com/product-detail/High-Quality-240-3-rgb-320_1600408828330.html). Shipping from China is expensive, so this only makes sense if you order multiple displays. In general, the cost for a single OMOTE is quite high. Check out the buy-sell page on the [Discord](https://discord.com/channels/1138116475559882852/1153343867681243279) to see if you can share the cost of the PCBs and components with others.
2023-07-21 16:23:39 -04:00
<div align="center">
2024-03-12 14:41:40 -04:00
<img src="images/OMOTE_parts.jpg" width="80%">
2023-07-21 16:23:39 -04:00
</div>
The [housing and buttons](https://github.com/CoretechR/OMOTE/tree/main/CAD) can be printed using PLA or PETG. I sliced the models with PrusaSlicer with a layer height of 0.25mm and printed them using ColorFabb PETG. It is important that the case part is printed with its flat side towards the print bed using lots of support structures. If your printer is well calibrated, the cover plate will snap onto the case.
2024-03-10 12:27:10 -04:00
### To Dos for software
2023-07-21 16:23:39 -04:00
2024-03-10 12:27:10 -04:00
Short term goals
2024-03-12 14:46:52 -04:00
- [x] simulator for creating pages in Windows, WSL2 and Linux
2024-03-10 12:27:10 -04:00
- [ ] scene selector page as start page
- [ ] available gui pages based on the currently active scene. Hide pages not needed in a scene
- [ ] make gui actions context sensitive for the currently active scene
2024-03-10 10:54:55 -04:00
2024-03-10 12:27:10 -04:00
Long term goals (not yet scheduled)
- [ ] Easier configuration
- [ ] Document the current process of customization
- [ ] Store the configuration in Flash (e.g. as a editable json file)
- [ ] Add an interface for graphically editing the configuration
See the [open issues](https://github.com/CoretechR/OMOTE/issues) and [discussions](https://github.com/CoretechR/OMOTE/discussions) for a full list of proposed features (and known issues).
2023-07-21 16:23:39 -04:00
## Contributing
2023-08-03 13:19:49 -04:00
If you have a suggestion for an improvement, please fork the repo and create a pull request. You can also simply open an issue or for more general feature requests, head over to the [discussions](https://github.com/CoretechR/OMOTE/discussions).
2023-07-21 16:23:39 -04:00
## License
Distributed under the GPL v3 License. See [LICENSE](https://github.com/CoretechR/OMOTE/blob/main/LICENSE) for more information.
## Contact
2023-12-02 09:21:21 -05:00
[![OMOTE Discord](https://discordapp.com/api/guilds/1138116475559882852/widget.png?style=banner2 "OMOTE Discord")][link1]
2023-06-28 14:26:56 -04:00
Join the OMOTE Discord: [https://discord.gg/5PnYFAsKsG](https://discord.gg/5PnYFAsKsG)
Maximilian Kern - [kernm.de](https://kernm.de)
2023-08-11 18:15:29 -04:00
Project Page on Hackaday.io: [https://hackaday.io/project/191752-omote-diy-universal-remote](https://hackaday.io/project/191752-omote-diy-universal-remote)
2023-12-02 09:21:21 -05:00
Modular approach - first version for main branch (#60) * first version of "modular-approach" * changed keyboard commands for HOME and BACK * Update README.md * only some typos in comments * readability * comment for what the mqtt keyboard is used * removed numbering of tab variables. not needed anymore * changed the default keyboard from "´mqtt keyboard" to "BLE keyboard" * updated to latest version of keypad library from Github, changes for inverted logic are explicitely marked * added comment for key repeatModes * added comment for MQTT keyboard * setting timout via GUI now works, not only dropdown without functionality * BLE indicator added; separation of BLE/WiFi activation from activation of devices using it * report battery level to BLE device * Dynamic keyboard commands, so you can safely deactivate BLE and/or WiFi and not break the example code * reorganized files into folders * moved lv_conf.h into the gui folder * added devices for appleTV and smarthome * assets.c broken up and placed them where they are used * added support for IR RC5 * reorganization of files and folder * added comment * renamed assets files * introduction of gui_registry * removed unnecessary functions from sleep.h * use gui_registry.h only once * some files renamed for better understandability * minor renaming * some more renaming * check if WiFi label was instantiated before using it * introduction of a scene registry * save prefs directly after timeout is changed * renaming of preferencesStorage * comment added * only readability * detailled definition of key layout for the diferrent scenes * made code compile for "device_smarthome" when WiFi is deactivated * fixed access violation when no scene was active * added support for IR DENON commands * increased lvgl heap from 32K to 48K
2024-02-12 13:57:51 -05:00
[link1]: https://discord.gg/5PnYFAsKsG