This shows you the differences between two versions of the page.
iothings:proiecte:2023:rgbledbar [2024/01/16 07:06] rares.niculescu [Overview] |
iothings:proiecte:2023:rgbledbar [2024/01/16 07:28] (current) rares.niculescu [RGB Ledbar] |
||
---|---|---|---|
Line 4: | Line 4: | ||
* Email: <rares.niculescu@stud.acs.upb.ro> | * Email: <rares.niculescu@stud.acs.upb.ro> | ||
* Master: GMRV | * Master: GMRV | ||
- | * Source code, video and presentation: gitlab TODO | + | * Source code, video and presentation: https://gitlab.cs.pub.ro/rares.niculescu/iot-rgb_ledbar/-/tree/main/ |
=====Overview===== | =====Overview===== | ||
Line 31: | Line 31: | ||
* In the automatic mode the user will control the ledbar by selecting an individual lighting mode. There are 4 buttons on this page and the user can choose between: "Christmas Mode", "Running", "Blinking", "Full Auto". | * In the automatic mode the user will control the ledbar by selecting an individual lighting mode. There are 4 buttons on this page and the user can choose between: "Christmas Mode", "Running", "Blinking", "Full Auto". | ||
* In the custom mode the user will control the ledbar through an schedule uploaded in the Firebase DB. At first the LEDBAR is completely red and the user must not interact with the Web Page. After the ESP32 downloads the content from DB, the LEDBAR turns green and it's ready to "play" the content. The user will manually trigger the schedule by pressing the "START!" button. | * In the custom mode the user will control the ledbar through an schedule uploaded in the Firebase DB. At first the LEDBAR is completely red and the user must not interact with the Web Page. After the ESP32 downloads the content from DB, the LEDBAR turns green and it's ready to "play" the content. The user will manually trigger the schedule by pressing the "START!" button. | ||
- | ===How the Web interface works=== | + | ===Web interface design=== |
* The web interface is locally stored in the ESP32 SPIFFS. | * The web interface is locally stored in the ESP32 SPIFFS. | ||
- | * Initial State | + | * **Initial State** |
* {{:iothings:proiecte:2023:ScreenRGB_0.jpg?400|}} | * {{:iothings:proiecte:2023:ScreenRGB_0.jpg?400|}} | ||
- | * Manual Mode | + | * **Manual Mode** |
* {{:iothings:proiecte:2023:ScreenRGB_1.jpg?400|}} | * {{:iothings:proiecte:2023:ScreenRGB_1.jpg?400|}} | ||
- | * Auto Mode | + | * **Auto Mode** |
* {{:iothings:proiecte:2023:ScreenRGB_2.jpg?400|}} | * {{:iothings:proiecte:2023:ScreenRGB_2.jpg?400|}} | ||
- | * Custom Mode | + | * **Custom Mode** |
* {{:iothings:proiecte:2023:ScreenRGB_3.jpg?400|}} | * {{:iothings:proiecte:2023:ScreenRGB_3.jpg?400|}} | ||
=====Software implementation Overview===== | =====Software implementation Overview===== | ||
Line 46: | Line 46: | ||
After that I have configured the Firebase Database. I have assigned the API key and the RTDB URL and I have signed up on the firebase. | After that I have configured the Firebase Database. I have assigned the API key and the RTDB URL and I have signed up on the firebase. | ||
- | The main idea of the project is to switch between individual "states". For example state 1 is for the manual mode, state 2 is for "auto mode - Christmas Mode and so on." Inside the loop function is where the behavior is altered. For the manual and auto mode the behavior is modified 100% by the "internal code" I have implemented. For the custom mode the ESP32 interrogates the Firebase DB to see if there is any schedule to download. If there is none, the ESP32 will wait until the DB updates or the user changes the lighting mode. If there is any content in the DB, the ESP32 will download the schedule and save it in a local file. Once the download is complete the ESP32 waits for the user to actually trigger the schedule. | + | The main idea of the project is to switch between individual "states". For example state 1 is for the manual mode, state 2 is for "auto mode - Christmas Mode" and so on. Inside the loop function is where the behavior is altered. For the manual and auto mode the behavior is modified 100% by the "internal code" I have implemented. For the custom mode the ESP32 interrogates the Firebase DB to see if there is any schedule to download. If there is none, the ESP32 will wait until the DB updates or the user changes the lighting mode. If there is any content in the DB, the ESP32 will download the schedule and save it in a local file. Once the download is complete the ESP32 waits for the user to actually trigger the schedule. |
====Project real-life view==== | ====Project real-life view==== | ||
{{:iothings:proiecte:2023:ScreenRGB_4.jpg?720|}} | {{:iothings:proiecte:2023:ScreenRGB_4.jpg?720|}} | ||
=====Challenges and things to improve===== | =====Challenges and things to improve===== | ||
- | * I need a few but consistent libraries for this project and the problem is that these libraries take up a lot of internal space (especially the Firebase_ESP_Client). Therefore the ESP32's internal memory is almost full. An immediate disadvantage is that you cannot upload a very long schedule. But this is a minor problem overall as it can be easily resolved using an SD Card to save the schedule. | + | * I need a few but consistent libraries for this project and the problem is that these libraries take up a lot of internal space (especially the Firebase_ESP_Client). Therefore the ESP32's internal memory is almost full. An immediate disadvantage is that you cannot upload a very long schedule. But this is a minor problem overall as it can be easily resolved using an SD Card to download the schedule. |
* Another useful functionality would be implementing a "music-auto" mode where the behavior would altered by the input from a microphone. | * Another useful functionality would be implementing a "music-auto" mode where the behavior would altered by the input from a microphone. | ||
- | * Hardware challenge: You need a lot of equipment to implement this project (as you can see I've used a lot of cables). Also the ESP32's connections are faulty so you would have to either solder the wires or attach the ESP32 module to a breadboard. But, once the connections are stable, the satisfaction comes immediately. | + | * Hardware challenge: You need a lot of equipment to implement this project (as you can see I've used a lot of wires). Also the ESP32's connections are faulty so you would have to either solder the wires or attach the ESP32 module to a breadboard. But, once the connections are stable, the satisfaction comes immediately. |
- | * //A dedicated program where the user can elaborate a schedule more easily. It would be also useful because the user will se the actual behavior before uploading the data to the Firebase DB.// | + | * //A dedicated program where the user can create a schedule more easily. It would be also useful because the user will see the actual behavior before uploading the data to the Firebase DB.// |
=====Conclusions===== | =====Conclusions===== | ||
In this project I've managed to implement a small RGB Ledbar with functionalities similar to those available on the market. It is an entertaining tool and a very good initial prototype for light show enthusiasts. Certain refinements and tests need to be done to make the user experience as enjoyable as possible. Overall, I consider the project to be a success. :-) | In this project I've managed to implement a small RGB Ledbar with functionalities similar to those available on the market. It is an entertaining tool and a very good initial prototype for light show enthusiasts. Certain refinements and tests need to be done to make the user experience as enjoyable as possible. Overall, I consider the project to be a success. :-) |