A small educational robot made from recycled plastic from fishnets
RefiBot is an open-source educational robot designed to be built at home using recycled plastics from fishnets, promoting sustainability and encouraging learning. The project includes hardware designs, software libraries, and documentation to help you build and program your RefiBot.
Please cite the following paper (https://www.sciencedirect.com/science/article/pii/S2468067223000913) when using ReFiBot for your research:
@article{PANTOS2023Refibot,
title = {The ReFiBot makers guide: Fostering academic open science and circularity with a robotic educational kit},
journal = {HardwareX},
volume = {16},
pages = {e00484},
year = {2023},
issn = {2468-0672},
doi = {https://doi.org/10.1016/j.ohx.2023.e00484},
url = {https://www.sciencedirect.com/science/article/pii/S2468067223000913},
author = {Christos Pantos and Jurrian Doornbos and Gonzalo Mier and João Valente},
keywords = {Robotics, Education, Circularity, Open-science, Recycling, Low-cost}
}- Modular and customizable structure: RefiBot's laser-cut components are designed to fit together easily, making assembly and customization a breeze.
- Support for various sensors and actuators: RefiBot can be equipped with a wide range of sensors and actuators, such as distance sensors, light sensors, and servo motors, to adapt to different tasks.
- Pre-programmed example code: The provided
example.inoArduino sketch is the perfect start point to explore the functions of RefiBot. We also recommend you to take a look at the Tutorial - Open-source software and hardware: RefiBot's design files, software libraries, and example code are all open-source, encouraging collaboration and modification to suit your needs.
RefiBot's flexibility makes it an ideal platform for a variety of applications, including:
- Robotics education: Teach programming and robotics concepts using RefiBot as a hands-on learning tool.
- Research and development: Use RefiBot as a test platform for new algorithms, sensors, or actuators.
- Artistic installations: RefiBot's unique appearance and movement capabilities can be used in interactive installations or performances.
The possibilities for RefiBot are only limited by your imagination and creativity. We encourage you to explore its potential and share your own customizations and applications with the community.
The RefiBot is a robotic platform built using various hardware components, including motors, sensors, and controllers.
- Arduino Uno
- Servo motors
- TCS34725 color sensor
- PCA9685 PWM servo driver
- QTR reflectance sensor array for line following
- HC-SR04 ultrasonic sensor
- Buzzer for audio feedback
- Power supply (LiPo battery, or USB)
- Several laser-cut parts
The robot consists of the following parts, whose design files are available in the hardware folder:
- Ball Holder (
Ball_Holder.png) - Bottom Plate (
Bottom_Plate.png) - Front Plate (
Front_Plate.png) - IR Focus - Dark (
IR_Focus_Dark.png) - IR Focus - Light (
IR_Focus_Light.png) - Left Wheel Disk (
Left_Wheel_Disk.png) - M3 Spacer (
M3_Spacer.png) - Protective Plate (
Protective_Plate.png) - Right Wheel Disk (
Right_Wheel_Disk.png) - Robot Stand (
Robot_Stand.png) - Side Plate (
Side_Plate.png) - Top Plate (
Top_Plate.png)
The library software/awesome_lib.h provides a set of functions and definitions for controlling the sensors of the RefiBot.
- TCS34725 color sensor support
- PCA9685 PWM servo driver support
- QTR reflectance sensor array support for line following
- HC-SR04 ultrasonic sensor support
- Buzzer support for audio feedback
- Wheel odometry with proximity sensors
- Motor control functions for movement (forward, backward, left, right)
- Sonar distance measurement
- Color reading with RGB values
- Arduino.h
- Wire.h
- Adafruit_TCS34725.h
- Adafruit_PWMServoDriver.h
- QTRSensors.h
- Adafruit_NeoPixel.h
Please refer to the example.ino file in the software folder for a sample usage of the library in an Arduino sketch.
The example provided initializes the sensors using the default_config_setup() function and prints "Hello World" on the serial monitor:
#include "awesome_lib.h" //Include the awesome library
void setup(){
default_config_setup(); // Initialize all the sensors
}
void loop(){
Serial.println("Hello World"); // Print "Hello World" on the serial monitor
}To learn more about how to use this robot, please, check the Tutorial
Any contribution is welcome! Apart from pull requests you can open an issue to report bugs. For feature requests, general ideas, or any broader topic, please use the Discussions section.
This project (hardware and software) is licensed under the GPL3 license - see the LICENSE file for details.

