Introduction: SKARA- Autonomous Plus Manual Swimming Pool Cleaning Robot

About: I am an Engineering student (department of mechatronics) of SRM University (India)
  • Time is money and manual labour is expensive. With the advent and advancement in automation technologies, a hassle free solution needs to be developed for homeowners, societies and clubs to clean pools from the debris and dirt of daily life, to maintain their personal hygiene as well as maintain a certain standard of living.
  • Tackling this dilemma head-on, I developed a manual cum autonomous pool surface cleaning machine. With its simple yet innovative mechanisms, leave it in a dirty pool overnight and wake up to clean and speck free one.
  • The automaton has two modes of functionality, one autonomous which can be turned on with the flip of a button on the phone and left unattended to do its job and another manual mode to get those specific pieces of twigs and leaves when time is of the essence. In manual mode you can use accelerometer on your phone to control the robot’s movement similar to playing racing game on the phone. Custom made app was made by using Blynk app and accelerometer readings are sent to main server and back to mobile then via hotspot switching data is sent to NodeMCU.
  • Even today, domestic cleaning robots are seen as exotic appliances or luxury toys, so to change this mindset I developed it on my own. Hence in the project, the main objective was to design and manufacture an autonomous pool surface cleaner with the use of available and cheap technologies to keep the whole prototype cost efficient and, therefore majority people can build it in their home just like me.

Step 1: Working Mechanism

Movement and Collection:

  • The basic mechanism of our prototype consists of a constantly rotating conveyor belt in front to collect debris and dirt.
  • Two motors which drive the waterwheels needed for locomotion.


  • Manual mode: Using Mobile's accelerometer data one can control the direction of Skara. Hence the person just needs to tilt his phone.
  • Autonomous mode: I have implemented a randomized motion complementing the obstacle avoidance algorithm to aid the automaton when it senses proximity to a wall. Two ultrasonic sensors are used to detect obstacles.

Step 2: CAD Model

  • CAD Model was done on SolidWorks
  • You can find cad file enclosed in this instructables

Step 3: Components

Mechanical :

  1. Laser cut Panels -2nos
  2. Acrylic sheet 4mm thick
  3. Thermocol or Polystyrene sheet
  4. Lathe cut rods
  5. Curved Plastic sheet (Wooden finish)
  6. 3d printed parts
  7. Screws and Nuts
  8. Stencil ( "Skara" print)
  9. Mseal- Epoxy
  10. Net Fabric


  • Sandpaper
  • Paints
  • Angle Grinder
  • Drill
  • Cutters
  • Other power tool


  • NodeMCU
  • Screw connectors : 2pin and 3pin
  • Buck Converter mini 360
  • Toggle Switch
  • IRF540n- Mosfet
  • BC547b- Transistor
  • 4.7K resistor
  • Single Core Wire
  • L293d- Motor Driver
  • Ultrasonic Sensor- 2nos
  • 100rpm DC motor - 3nos
  • 12v Lead Acid battery
  • Battery Charger
  • Soldering Board
  • Soldering Wire
  • Soldering rod

Step 4: 3d Printing

  • 3d Printing was done by a home assembled printer by one of my friend
  • You can find 4 files which have to be 3d printed
  • Parts were 3d printed by converting the 3d CAD file into stl format.

  • The waterwheel has an intuitive design with airfoil shaped fins to displace water more efficiently than traditional designs. This helps in drawing less load from the motor as well as increasing the locomotion velocity of the automaton noticeably.

Step 5: Laser Cut Panels and Lathe Rods

Side Panels:

  • To make the CAD rendering a reality, the materials to be chosen for the prototype's construct had to be considered carefully, bearing in mind that the whole structure would be required to have a net positive buoyancy.
  • The main structure can be seen in the figure. The initial choice for the frame was to go with Aluminum 7 series due to its lighter weight, better resistance to corrosion and better structural rigidity. However, due to unavailability of the material in the local market, I had to make it with Mild Steel.
  • Side Frame Cad was converted to .DXF format and given to the vendor. You can find the file enclosed in this instructable.
  • Laser cut was done on LCG3015
  • You can also give laser cutting in this website ( )

Lathe Rods:

  • Rods which connects two panels and support the bin was made by lathe machining from local fabrication store.
  • Total of 4 rods were needed

Step 6: Construction of Bin

  • Bin is made by using acrylic sheets which were cut using power tools with dimensions taking reference from the CAD drawing.
  • The individual cut sections of the bin are assembled and stuck together using industry grade water resistant epoxy resin.
  • The whole chassis and its components are assembled together with the help of 4mm stainless steel bolts and 3 stainless steel studs. The nuts used are self-positive locking so as to avoid compliance of any nature.
  • Circular hole in 2 sides of acrylic sheets were done to put motors
  • The battery and electronics enclosure is then cut from 1mm plastic sheet and packaged into the chassis. Openings for the wires properly sealed and insulated.

Step 7: ​Floatation

  • The last component related to purely the structure are the flotation devices which are used to give the whole prototype a positive buoyancy as well as maintain its center of gravity to approximately the whole prototype's geometric center.
  • The flotation devices were fabricated out of polystyrene (thermocol). Sand paper was used to properly shape them
  • These were then attached to the frame at locations by using mSeal by calculated considering the above constraints.

Step 8: Ultrasonic Sensor Support

  • It was 3d printed and back plates were made by using tin plates
  • It was attached by using mseal (a kind of epoxy)

Step 9: Electronics

  • 12V lead acid battery is used to power the entire system
  • It connected in parallel with buck converter and L293d motor controller
  • Buck converter converts 12v to 5v for the system
  • IRF540n mosfet is used as digital switch to control conveyor belt’s motor
  • NodeMCU is used as main microcontroller, it connects to mobile by using WiFi (hotspot)

Step 10: Conveyor Belt

  • It was made by using net fabric purchased from local store
  • The fabric was cut an attached in a circular way to make is continuous

Step 11: Painting

  • Skara was painted by using synthetic paints

Step 12: Skara Symbol Laser Cut

  • The Stencil was cut by using homemade laser made by my friend.
  • The material on which laser cutting was done is sticker sheet

Step 13: Coding

Pre-Coding Stuffs:

  • For this project I used Arduino IDE for programming my NodeMCU. It's the easier way if you've already used an Arduino before, and you won't need to learn a new programming language, like Python or Lua for instance.

  • If you've never done this before, first you'll have to add ESP8266 board support to the Arduino software.

  • You can find the latest version for Windows, Linux or MAC OSX on Arduino's website:
    Download it for free, install it on your computer and launch it.

  • Arduino IDE already comes with support to a lot of different boards: Arduino Nano, Mine, Uno, Mega, Yún, etc. Unfortunatly ESP8266 isn't by default among those suported development boards. So in order to upload your codes to a ESP8266 base board, you'll have to add its properties to Arduino's software first.
    Navigate to File > Preferences (Ctrl + , on Windows OS); Add the following URL to Additional Boards Manager textbox (the one on the bottom of the Preferences window):

  • If the text box wasn't blank, it means had already add other boards before on Arduino IDE before. Add a comma at the end of the previous URL and the one above.

  • Hit "Ok" button and close the Preferences Window.

  • Navigate for Tools > Board > Boards Manager for adding your ESP8266 board.

  • Type "ESP8266" on the search text box, select "esp8266 by ESP8266 Community" and install it.

  • Now your Arduino IDE will be ready to work with a lot of ESP8266 based development boards, like the generic ESP8266, NodeMcu (which I used in this tutorial), Adafruit Huzzah, Sparkfun Thing, WeMos, etc.

  • In this project, I used Blynk library. Blynk library should be installed manually. Download Blynk library at Unzip the file, and copy the folders to Arduino IDE libraries/tools folders.

  • Main Coding:

  • You'll have to update Blynk auth key and your WiFi credentials (ssid and password) before uploading the code.

  • Download code and libraries provided below.
  • Open the provided code ("final code") in Arduino IDE and upload it to the NodeMCU.
  • Some sensors of the smartphone can also be used with Blynk. This time I wanted to use its accelerometer to control my robot. Tilt the phone and the robot will turn left/right or move forward/backward.

Step 14: Explanation of Code

  • In this project I only had to use ESP8266 and Blynk libraries. They are added in the beginning of the code.

  • You'll have to configure your Blynk authorization key and you Wi-Fi credentials. This way your ESP8266 will be able to reach your Wi-Fi router and wait for commands from Blynk server. Replace "type your own authorisation code", XXXX and YYYY with your auth key (you'll receive it on your e-mail), SSID and password of your Wi-Fi network.

  • Define the pins of the NodeMCU connected to the h-bridge. You might use the literal value (D1, D2, etc.) of the GPIO number of each pin.

Step 15: Setup Blynk

  • Blynk is a service designed for controlling hardware remotely over an internet connection. It makes allows you to create Internet of Things gadgets easilly, and supports several hardwares, such as Arduinos, ESP8266, Raspberry Pi, etc.
  • You can use it to send data from an Android or iOS smartphone (or tablet) to remote device. You can also read, store, and display data obtained by your harware sensors, for instance.
  • Blynk App is used for the creation of the user interface. It has a variaty of widgets: buttons, sliders, joystick, displays, etc. Users an drag and drop the widget to the dashboard and create a custom graphic interface for a multitude of projects.
  • It has a 'energy' concept. Users start with 2000 free energy points. Every widget used (in any project) consumes some energy, thus limiting the maximum number of widgets used on the projects. A button, for instance, consumes 200 energy points. This way, one can create an interface with up to 10 buttons for instance. Users can buy extra energy points, and create more complex interfaces and/or several different projects.
  • The commands from Blynk App are uploaded to Blynk Server over the internet. Another hardware (a NodeMCU, for instance) uses Blynk Libraries to read those commands from the server and perform actions. The hardware can also some data to the server, which might be displayed on the App.
  • Download Blynk app for Android or iOS from the following links:
  • Install the app and Create a new account. After that you'll be ready to create your first project. You'll also need to install Blynk libraries and to get the auth code. The procedure to install the library was described on the previous step.
  • · BLYNK_WRITE(V0) function was used to read accelerometer values. The acceleration on y-axis was used to control if the robot should turn right/left, and z-axis acceleration is used to see if the robot is supposed to move forward/backward.If threshold values aren't exceeded, motors will stop.
  • Download blynk app on mobile Drag accelerometer object from Widget Box and drop it on the dashboard. Under Button Settings assign a virtual pin as output. I used virtual pin V0. You should get Auth Token in the Blynk App.

  • Go to the Project Settings (nut icon).For Manual/Autonomous button I have used V1 in the app For Conveyor belt I have used V2 as output.

  • You can see a screenshoot of the final app on the pictures.

Step 16: Final Assembly

  • I attached all the parts

Hence the project is finished

Step 17: Credits

I would like to thank my friends for:

1. Zeeshan Mallick: Helping me with CAD model, chassis manufacturing

2. Ambarish Pradeep: Content Writing

3. Patrick: 3d Printing and Laser Cutting

IoT Challenge

Second Prize in the
IoT Challenge