Interactive camera controlled via wifi with an esp32

Similar projects worth following
Security camera that allows the user to monitor what's happening in a room. Our goal is to enable the user to connect to the device through a web server, where they can control the device. For example, take photos, review stored photos, pan or tilt the device..

Our project aims to develop a camera capable of connecting via WiFi to a smartphone or computer. This setup allows the user to remotly control the direction the camera is pointing through a web server interface, as well as facilitating other functionalities, such as video streaming or capturing images. Implementing IoT technology to a common product such as a camera, allows users to conveniently control and interact with products seamlessly, enhancing customer-satisfaction. 

The advantage of creating our own web server is that it allows for a more customizable experience and a higher degree of control. 

Lastly, below is attached an image that contains the electric diagram of the whole circuit

Week 5 - Diagrama electrico.jpg

Electric Diagram for the electronics collection

JPEG Image - 43.64 kB - 05/29/2024 at 16:07


Zip Archive - 3.63 MB - 05/29/2024 at 16:07



sldprt - 560.35 kB - 05/28/2024 at 14:55



sldprt - 901.95 kB - 05/28/2024 at 14:55



sldprt - 467.26 kB - 05/28/2024 at 14:55


View all 17 files

  • 1 × ESP32 Cam The ESP32-CAM is a low-cost ESP32 development board with an onboard camera. This is an ideal solution for IoT applications, prototype constructions, and DIY projects. Wi-Fi and low-power BLE are integrated on the board, as well as two high-performance 32-bit LX6 CPUs.
  • 2 × Micro Servo Motor FS90MG This component is a motor that can rotate to a specified angle according to the signal. This will allow the camera to rotate and check what is going on in the room.
  • 1 × Jumper Wires Electrical wires used to connect components on a circuit board or breadboard.
  • 1 × Micro-USB Small USB connector used for connecting the ESP32 Cam to a computer for data transfer and programming.
  • 1 × Battery Adaptor Providing protection and allowing for secure and tidy connections. Allows connecting the battery to pcb board

View all 9 components

  • Week #9

    Bruno05/28/2024 at 14:50 0 comments

    As we prepare the prototype for the final delivery, we identified the need to model and print a box to conceal all the wiring, the PCB, and the battery. This box includes its own lid to protect and hide the components, providing a more professional finish to the product.

    Detail of the mechanism for joining the lid and the box

    Additionally, during the final tests, we found that the base required a non-slip material to prevent the device from sliding on the surface when it moves. To address this issue, we applied silicone stickers to the base.

    Adding silicone in order to provide more friction between the resting surface and the device's base.

    Finally, we noticed that the base's dimensions did not provide enough weight, causing the product to tip over when the motors operated. To prevent this, we implemented a geometry that adapts to the current camera base, providing more stability to the device during use and enhancing the overall appearance.

    Final view of the device with the electronics' box.

    Finally, we have successfully achieved our goal of creating a camera that utilizes IoT technology and can be connected through a smartphone. This project allowed us to integrate various disciplines, including 3D design, electronics, and software development, resulting in a fully functional and reliable prototype. By addressing challenges such as stability, connectivity, and user interface, we ensured that our Vision360 camera is both user-friendly and efficient.

    Through this project, we have not only built a sophisticated device but also gained invaluable experience in IoT technology. This knowledge will enable us to apply IoT solutions to a wide range of future projects, enhancing our ability to innovate and solve complex problems. We are excited about the possibilities this expertise opens up and look forward to continuing to push the boundaries of technology and design.

  • #Week 8

    ines.calvo-alier05/23/2024 at 09:14 0 comments

    During today's class, we continued to embarked on the assembly process, piecing together all components to ensure functionality. Upon connecting the battery to the motors, we eagerly observed their response, and to our satisfaction, they operated as expected. We also finsihed designing the enclosure, which you can see next. It had features that allowed the camera to move smoothly without altering the movement of the device and also a whole through where the camera would operate to take pictures, etc.

    Testing the camera support 

    However, our journey was not without its challenges. As we delved into the fabrication of the camera casing, we encountered several unexpected obstacles. We had to redesign our initial design sketch, meticulously scrutinizing each detail to identify and rectify any deficiencies. Since we did not take into account an space for the jumper wires, we had to refine our phisical design by calculating and creating wholes through where to connect the wires to the ESP32. 

    measuring to readjust the camera support

    Through collaborative effort and perseverance, we successfully addressed these issues, ensuring that our project continues to progress toward its ultimate fruition. 

  • Week #7

    ines.calvo-alier05/16/2024 at 09:03 0 comments

    During today's session, our focus was on the assembly of the camera using the pre-fabricated 3D-printed components. Our first step involved meticulous sanding of these parts to achieve precise alignment and seamless integration. As you can see in the image below, we also redesigned the base of the device since having a circular base looks more professional and aesthetically appealing in our opinion.

    First look at the Assembly of the camera

    Following this preparatory phase, we proceeded to draw another comprehensive diagram delineating the structural layout and interconnections of the entire system. This schematic representation served as a vital roadmap for the subsequent soldering process. Each component and its corresponding electrical interface were meticulously annotated within the diagram, facilitating a systematic approach to the soldering task at hand. This planning not only ensured accuracy but also minimized the risk of errors during the assembly process.

    Diagram of how the electrical components will be solded

    Additionally, we continued to work on the enclosure of the device.  As mentioned in previous logs, we used the computer program SolidWorks to design it, making sure it had the right size so everything fits perfectly. In the image below there is the first look at how it's going. As you can see, to design this piece we started by assembling all the stls and continuing that we started designing the enclosure. This way, we could this design would cover the whole electronics but at the same time it wouldn't limitate the camera's movement ( see the lateral extrude cats for allowing the camera to tilt and pan). We will continue to work on this for the final product.

    Camera enclosure

    In summary, today's class was characterized by a series of deliberate and methodical steps, encompassing the sanding of 3D-printed components, the creation of a comprehensive schematic diagram, and the meticulous execution of soldering tasks. Through careful planning and execution, we successfully advanced the assembly process, laying the foundation for a functional and robust camera system.

  • Week #6

    Bruno05/02/2024 at 08:25 0 comments

    During this week's session, we focused on redesigning the 3D-printed parts of the base on which the ESP32 device is mounted. Since we need to adapt it to the pcbs, motors and screws we actually have, we made necessary adjustments to the base: accommodate the screws we have available, which are of size M2. These screws are essential to ensure a secure user experience, as a method of fastening because it is necessary to prevent the device from disconnecting or moving during use.

    Following this, we also created various renders of the three pieces that compose the base to aid our understanding and that of the project's reader.

    Renders of the internal structure

    Furthermore, in today's session, we assembled the electrical circuit and tested that the motors we received function correctly alongside the user interaction through the web server.

    Testing out the servomotors.

    Lastly, we began working on 3D modeling the casing that encloses the entire internal structure, following the moodboard we created in previous sessions. This casing is necessary to create a visually appealing product and to conceal all components and the rotating base. We will continue working on this in the next session to 3D print it and complete the final assembly.

  • Week #5

    Bruno04/25/2024 at 17:22 0 comments

    During this week's session, we focused on enhancing the visual aspect of the web server through which users connect to the camera. To ensure optimal functionality and provide users with an intuitive experience, we made corresponding adjustments to the web page, including text size, colors, and button placement.

    Subsequently, we continued our work on integrating motors to complement the device's functionality and offer mobility. Considering the previously selected servomotors, we created a digital diagram of the electrical circuit - illustrating the motor connections - using software. This diagram not only facilitates and organizes our assembly work but also serves as an essential reference for anyone external to the project to replicate and understand the device's operation.

    Digital diagram of the electrical circuit

    Additionally, we received the missing material we ordered online prepared the materials to continue our work in the upcoming session: two boards and 2 servo motors of the FS90MG type, sourced from the French provider GoTronic. 

    Preparing the material for next session

    As you can see in the left board of the image above, we have installed a voltage regulator to prevent damage to the device. This precaution is necessary because we will be using a battery holder with 4 batteries of 1.5V each, resulting in a total voltage of 6V. Since the ESP32 only accepts 5V, it is imperative to regulate the voltage supplied to it.

    We remain committed to refining our project and welcome any feedback or insights that may contribute to its success.

  • Week #4.2 - Web Server & Motors

    Bruno04/04/2024 at 11:04 0 comments

    During this week, we have added two new features to our web server: the pan button (to move the camera left or right) and the tilt button (to move the camera up or down). This movement will be possible on our device thanks to the gimbal, controlled by two servo motors. These two innovations appear on the web server in the form of a slider, meaning that the user must slide the bar to the left or right to move the camera. Additionally, we wanted to implement that when the cursor is over one of the sliders, this slider will darken slightly; this way, the user can know at all times which slider they are interacting with. All this has been implemented by making the corresponding changes in the code. On the other hand, we have also discovered that the ESP32 cam has a flash. Therefore, we have decided that the flash should also be part of the interaction: when the user presses the photo capture button, the flash will turn on, indicating to the user that the photo is being taken. 

    Regarding the control of the motors, we have managed to make the motor rotate according to the position of the slider bar, controlled by the user. This is our first advancement regarding the motor, as we have managed to combine both the motor and ESP32 codes so that everything works together. However, we have encountered a delay that hinders smooth and real-time movement, so we will continue working on this.

    The following pictures show how the flashes turns on when taking a picture, and if you look closely, you will see how the motor has moved from position one to position two.

  • Week #4.1 - 3D Enhousing CAD

    ines.calvo-alier04/04/2024 at 09:06 0 comments

    In today's session, we embarked on the search for a suitable 3D printing base for our camera enclosure. We did extensive research into the workings of 3D printing and potential challenges that might arise during the design phase. Following thorough investigation, we identified a model that best aligned with our project requirements. Additionally, we initiated the process by downloading the necessary files and meticulously measured the key components of our servo motor to ensure proper fitting, making necessary adjustments as needed. Once we confirmed the compatibility of the servo motor with our design files, we proceeded to install PursaSlicer, an open-source slicing software utilized for preparing 3D models for printing on Pursa Research's 3D printers. This software facilitated customization of settings such as layer thickness, enabling us to enhance the durability of our components. Finally, we modified the orientation of certain file surfaces to optimize printing outcomes. From this point onward, we will proceed with printing the CAD and conducting thorough testing. Any required redesigns or modifications will be implemented as needed to ensure the optimal functionality and fit of the components within the enclosure.

    This previous image is a render simulating how the different pieces would be assembled. The blue parts simulate the two servo motors.

  • Week #3.2 - Web Server Improvements & Code

    ines.calvo-alier03/28/2024 at 09:26 0 comments

    The objective of this week's session is to improve our  web server, so that it allows the user not only to record but also to take pictures and rotate these. In order to do this, we added some extra buttons to the interface: by modifying the actual code we wrote, we adjusted the size of the image to a proper size and we added titles so that the apparence of the web looks appealing and makes its use easier for the user. The html page contains 3 buttons: reload page button, take picture button and one to rotate picture. The image captured is displayed in the center of the page in a proper size. We also included clear instructions on how the device works. We will also continue to customize its graphic design.

    As for the code, for the moment this is what it looks like (a full-completed code will be uploaded in the files hackaday section, once we finish designing and perfecting our product):

  • Week #3.1 - Camera Housing Inspo Moodboard

    ines.calvo-alier03/28/2024 at 09:01 0 comments

    Alongside the electronic aspect of our project, during this week's session we have been working on the design of the enclosure that houses the ESP32. This enclosure will be responsible for providing protection to the ESP32, ensuring user safety, preventing any interference or displacement of internal components, and giving a professional visual appearance to the product. To manufacture this enclosure, we have analyzed the different surveillance camera products currently available in the market and have created an inspiration mood board where we gather our ideas.

    To create this enclosure, we will use 3D printing technology. Why? As engineers, 3D modeling plays a significant role in our profession, so taking advantage of the facilities offered by our university, and aiming to adhere to the budget for this project, we have decided that this is the best way to manufacture the enclosure. 3D printing allows us to work comfortably, quickly, and efficiently, and depending on the filament selection used to print the enclosure, we can achieve the specific characteristics that this product should have; for example, shock resistance (ABS).

    From this, we will seek the one that best matches the requirements of the product we want to manufacture and its visual aspect.

  • Week #2 - Creation of the web server

    ines.calvo-alier03/21/2024 at 10:15 0 comments

    As we continued working on this project, this week we came to the conclusion of the necessity to create a Gimbal. This is because the motor must be able to rotate in two directions: rotate on the Y-axis (pan), to turn left or right; and rotate on the X-axis, to tilt up or down. To achieve this action, the base on which the ESP32 is integrated needs to have two motors. During this session, our work was to obtain a first draft of the web server on which the device is controlled.
    An HTML page was created to allow user interaction. We were working on how to create the different buttons necessary to interact with the device and how to display instructions on what is happening and to which device we are connected.

    As you can see, the design of the page includes the basics we used to learn to program our web server. In the upcoming sessions, one of our focuses will be to enhance the visual aspect of the web server, add new interactions to complete the user experience and keep working on the features we want to integrate.

View all 11 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates