PBD 0
Library Conflicts: Some libraries for the LCD and Wi-Fi clashed or didn’t work as expected. I resolved this by testing different libraries and ensuring compatibility.
Memory Limitations: The ESP32 sometimes ran out of memory with large code. I optimized by reducing global variables and cleaning up unused libraries.
Wi-Fi Connection Stability: Connecting the ESP32 to the network was tricky. I used retries and added checks to ensure stable connections.
While programming the web server for alarm setup, the ESP32 wasn’t responding to client requests. I found the issue by printing debug messages in the loop() function, realizing the server wasn’t being called due to a blocking delay. Replacing delay() with millis() resolved the problem.
PBD 1
When working with a team, we assigned tasks such as web server development, hardware setup, and code optimization based on expertise. Clear communication, including frequent updates and shared resources like commented code and diagrams, ensured smooth collaboration. Effective teamwork helped us quickly address challenges, such as debugging Wi-Fi connectivity issues.
While programming the ESP32 to display alarm settings on the 20x4 LCD, the screen remained blank. Troubleshooting revealed that the I2C address was incorrect. Running an I2C scanner sketch helped find the correct address, and updating it in the code fixed the issue.
Strategies:
Isolating components to test them individually (e.g., LCD and Wi-Fi).
Using Serial.print() statements to track variables and execution flow.
Referring to ESP32 documentation and online forums for troubleshooting tips.
Lessons Learned:
I learned the importance of testing components step by step and using tools like an I2C scanner to simplify debugging hardware communication.
PBD 2
The IR sensor was used to detect obstacles or measure distance, depending on the project’s needs. Its output was connected to a digital pin on the ESP32, and the sensor's readings were used to trigger specific actions, such as stopping a motor when an obstacle was detected or updating a status on the LCD display. Code was written to read the sensor’s digital signal and respond accordingly in real-time.
Approach to Testing:
Individual Component Testing: Each component was tested separately to ensure proper functionality. For example, the IR sensor was tested by printing its output to the serial monitor, and the motor was controlled with a basic sketch to verify operation.
Integration Testing: Once individual tests succeeded, components were combined, and edge cases were tested (e.g., checking sensor accuracy at various distances and angles).
Key Lessons Learned:
Calibration Is Crucial: The IR sensor required proper calibration for accurate readings, especially in different lighting conditions.
Avoiding Power Interference: The DC motor’s operation sometimes interfered with the sensor readings due to power fluctuations. Adding decoupling capacitors helped stabilize the circuit.
Debugging in Steps: Testing each component independently before integration made it easier to identify and resolve issues quickly.
PBD 3
Challenge: Wiring and Connections
Ensuring proper connections for multiple components like motors, sensors, and switches was challenging due to the risk of loose wires or incorrect pins.
Solution: I referred to circuit diagrams and verified connections with a multimeter before powering the kit.
Challenge: Motor Control Logic
Synchronizing the movement of the motors and sensors required precise coding and timing.
Solution: I used pre-built libraries for stepper and servo motors and tested small code snippets for each functionality before combining them.
Challenge: Sensor Feedback Accuracy
Limit switches occasionally failed to respond due to mechanical misalignment.
Solution: I adjusted the placement of the switches and added debounce logic in the code to ensure reliable input readings.
Limit Switches:
Industrial automation: Detecting the position of moving parts in conveyors and robotic arms.
Safety systems: Preventing over-travel in machinery by cutting off power.
Elevators: Ensuring precise floor alignment.
Stepper Motors:
3D Printers: Providing precise control for layer-by-layer printing.
CNC Machines: Enabling accurate movement for cutting and engraving.
Robotics: Moving arms and joints with high precision.
Servo Motors:
Drones: Controlling the position of propellers and camera gimbals.
Automated Doors: Opening and closing with controlled motion.
Prosthetics: Powering articulated joints for precise movements.
PBD 4
What challenges did you face while working with the LCD display in your project, and how did you overcome them?
What are the possible real-time applications of an LCD display in embedded systems and other fields?
Challenges Faced While Working with the LCD Display and Solutions:
Challenge: Incorrect I2C Address: The LCD did not display anything because the I2C address was incorrect.
Solution: I used an I2C scanner program to identify the correct address and updated it in the code.
Challenge: Poor Display Visibility: The text on the LCD was faint or unclear.
Solution: Adjusting the contrast potentiometer resolved the issue and improved visibility.
Challenge: Coding Errors in Initialization: The LCD didn’t initialize properly due to incorrect library functions.
Solution: I ensured I was using the appropriate library (LiquidCrystal_I2C) and followed its documentation for setup.
Challenge: Display Update Flicker: The LCD flickered when updating text frequently.
Solution: I minimized unnecessary updates and used clear-and-write logic only for changing values.
Real-Time Applications of an LCD Display:
Industrial Equipment: Used to show machine status, error messages, and operational data.
Home Automation: Displaying temperature, time, and system status in smart devices.
Medical Devices: Showing vital signs, operational parameters, or diagnostic messages.
Kiosks and ATMs: Displaying instructions, user information, or transaction details.
Automotive Systems: Used in dashboards for speed, fuel level, and navigation information.
PBD 5