a Versatile robotic platform for various tasks.

Similar projects worth following
// ------------------------- I N T R O
I present you TE-01. This is a project i'm building for fun and for learning things.
My goal is to build a robust and small robotic platform with 2 major components: An arduino for the IO and a raspberry as the brain.
// ------------------------- T A S K S
- Exploration,
- House or garden mapping,
- Grapping/using things,
- Use tools like a spray (for killing paper wasp nest in my garden).
// ------------------------- F U N C
The robot is :
- Remote controled form a HTTP browser,
- Designed in 3D and printed in PLA / FlexPLA,
- Have many sensor : GPS, Gyro 9DOF, Lidar, Temperature, IR/Sonic),
- Have 2 cameras :
- IR cam for night vision and remote control,
- Deapth Camera,
- Have a robotic arm with 1 hand for using tools.

This is a research project. I will post some details when i'm ready. Thank you.

> Mechanic:

  • 3D printed Chassis,
  • 4x 9V Motors with 2 hall sensors each,
  • Total weight: 2.2kg.

> Power supply:

  • Battery: 3x  Samsung INR 3.7V 18650 25R 2500 mah (not fused),
  • 5V via voltage regulator LM2596 DC-DC convertor (not fused),
  • 9V via voltage regulator LM2596 DC-DC convertor (not fused),
  • An ina219 to calculte the battery percent and checking W consummed.

The 3 batteries are connected in serial. 

> Computers & controlers:

  • Raspberry Pi 4 4 Gb with an additionnal Wifi dongle,
  • Arduino Mega2560.

> Software:

  • Raspbian OS ,
  • OpenCV 4,
  • Apache2 with Python3 WSGI.

> Motor control:

  • Motors driven by 2x TB6612fng with PWM,
  • Speed control and Odometry are controled by hall sensors on a the motor (8 sensors).

> Sensor & Inputs/Outputs :

  • Temperature sensor (bme280),
  • Not ready yet

> Computer vision:

  • Not ready yet

> Remote control interface:

  • Not ready yet


  • Not ready yet

> Tools :

  • Robotic ARM,
  • Spray module,

  • 1 × Arduino Mega 2560 Adruino MCU
  • 1 × Rapsberry Pi4 with 4Gb of ram Small Board Computer
  • 3 × 18650 battery 2500 mah Power supply
  • 1 × A lot of M3 screws & nuts
  • 2 × DC-DC converter LM2596 for powering motors and arduino/Rpi

View all 11 components

  • 15.09.2020

    nj133709/15/2020 at 01:18 2 comments

    A lot of time has passed since my last update. I have since learned a lot and this version of the robot base reflects that.

    I completely reviewed the chassi, with meccanum wheels, real DC9V motors with reduction and an acceptable speed.

    I redesign the box and made a complete review of the electrical system.

    The communication mode has also been revised, and it is now in series via the TX and RX pins.

    Now i'm programming the RPi and the arduino to work together. 

    Thank you !

  • 12.03.2020 - Some progress

    nj133703/12/2020 at 01:02 0 comments

    Hi !

    I've made some progess in the last days. I've designed the new shape of  the robot and printed it. It's a "little" bigger as you can see  in the picture : 

    I've added a couple of sensor : 

    • a rotary encoder,
    • a TMP36 analog thermometer (to get inside case temperature),
    • a GPS neo 6m,
    • a PI camera.

    I've changed the way raspberry pi 4 and arduino are communcating. I'm using SerialUSB.

    I'm working now on the software on a small prototype : 

    And here is the major change, i've totaly rewrited the sofware : 

    • The webserver is handled by "flask framwork" in pyhton,
    • The web interface is using websocket in JS to send and recieve data,
    • The arduino is using Serial data via USB (it"s powering the arduino too),
    • All the data are managed by a multithreaded core writed in python. It get the data from arduino and web interface, and it send the data to arduino and web interface.

    Here is the web interface (not finished yet) : 

    You can see in the SSH windows the "core" dispatching data to browser and arduino.

    Next step is to change motors with more powerfull one with encoder and begin to add a small arm. Or maybe some computer vision. I dont know yet.

    Have fun !

  • 20.10.2019 - somes changes on the "small" version

    nj133711/20/2019 at 01:39 0 comments

    Today i've got some time : 

    Power Supply : 
    I have made some change on the electrical circuit. My raspberry was undervoltage. After a lot a search, i discovers that the cable i've used was not large enough to permit enough current to power the raspberry.

    I previouly used 28 AWG cable. i didint know that this cable have a limit on the current they can carry. Rapsberry pi 3B+ need 2.5A. I buyed some 22 AWG cable , and make all the power circuit again. 

    After running some test, it was a lot better. but i got always undervoltage under eavy load. i upped the voltage to 5.1V and now all is fine ! My Raspberry Pi is working fine. 

    I used  this document to get the max current rating for AWG cable.

    I soldered a new microUSB cable to. I like soldering, it's a relaxing activity =)

    Wifi : 

    For the Wifi, to get an extended range, i changed the external wifi dongle. I buyed a 8822bu chipset with an external 2.4Ghz/5Ghz antenna. I replaced this antenna with a big one of 50 cm 2.4Ghz only. 

    this thing is really big and i'm a little scared for the USB port. i got to find a way to make this more solid.

    The wifi card is compatible with Linux, but my ubuntu is on ARM and there was no drivers. 

    So i modified the compliation instruction code to make it compatible with ubuntu mate with Arm processor. 

    Here is what i do (in a short way): 

    sudo apt install -y dkms
    git clone --branch linux-4.15-fix
    sudo cp -r rtl8822bu /usr/src/8822bu
    cd /usr/src/8822bu
    ln -s /arm arm7l
    apt install linux-headers-4.15.0-1049-raspi2

    Modifiy the make file from line 960 to change the taget to ARM. otherwise it will not compile into the Linux kernel.

    Then :

    sudo dkms add -m 8822bu -v 1.1
    sudo dkms build -m 8822bu -v 1.1
    sudo dkms install -m 8822bu -v 1.1
    sudo modprobe 8822bu

     done =)

    Have fun building robots =)

  • 13.10.2019 - new version

    nj133711/13/2019 at 16:30 0 comments

    I'm design the new version. Cause this one is really too small =)

    Here's is a first look : 

    Electronics will be the same with some little variations.

    New size will be 30 x 50 cm. I hope i get enough space to setup all my electronic =)

    I've changed the motors. I use N20 geared micromotors. they are very powerfull.  Heres one wheel with the attached motor.

    Thank you =)

  • 06.11.2019 first video

    nj133711/06/2019 at 12:30 0 comments

    Here is a first video of my little project :

    The remote console is writed by hand. i will publish the source when it's ready. 

    Now i'm adding : 

    - an oled screen to see the robot status,

    - a GPS module for getting the position,

    - 4 hall sensors for the odometry,

    - I'm changing the USB Wifi AC card with a long range one (9db antenna) supported by ubuntu.

    Next step will be to add a case for the top of the robot, and add an arm or some tools =)

    Thank you for following this project.

  • 26.10.2019

    nj133710/26/2019 at 18:12 0 comments

    Hi ! The lasts day i was working on the data bus and the remote control interface. And Everything is working. 

    I'lm using websockets from ESP32 with ESP Async Web Server libray and Javascript for the remote console accessible from a web browser. 

    I can send and receive, restart the ESP32 or RPi3, and send specific command to the ESP32. 

    Now i have change some piece of code on the arduino from "delay()" to "millis()". Delay is a blocking function and i need to use the motors at any time.

    Next step will be to add the RPi V2.1 Noir Camera to the http console. I'm thinking about adding mjpg streamer, but i will like to stream directly from openCV. idont know now if its possible. 

    Last step of this code, will bee to add some vitual Joystick conneted to websocket server on the ESP32. i really like the ESP32 it's very powerfull. 

    And some part of the HTTP remote console where data are updated in real time (websockets are really cool !!) : 

    Thank you for reading and have fun =)

  • 16.10.2019 - Building networks

    nj133710/16/2019 at 14:08 0 comments

    Today, i was thinking about how differents components will communcate and work together.  After some reading about i2c, serial, and other CAN possibilty, i was not convinced... this protocols are pretty old and i dont know them very well.  

    I was a network engineer for 12 years ... So i decided to make them communicate with an internal Wifi network at 2.4Ghz. I will use RPi3 and many ESP32 to build the main core of the robot. Here's is how it work : 

    • RPi3 will serve an acces point for remote control console,
    • x Esp32 will connect to this internal Wifi secured by WAP2,
    • Developpement and debug has to be done from an ethernet cable (SSH and xRDP accessing ubuntu desktop,).

    I can now use as many ESP32 as i need and get "infinite" IO ports. Data from sensor will be published by an HTTP server with a json format, and some ajax call will display them in the remote HTTP console served by the RPi3.

    I setted up a mDNS service, so i dont have to rember IP from esp32. just use come comon DNS name like : motors.local, or roboticarm.local ...

    Here is a photo of my notes ... (sorry it's just a draft) : 

    and what it look like in real life : 

    have fun building robots, and thank you for following this little project.

  • 11.10.2019 - rebuild power system, disigning new shape

    nj133710/11/2019 at 12:01 0 comments

    i'm continuing to remodel the whole thing in 3D and print it. 

    Tinkercad is really easy to use, and you can get pretty fast results.

    I have rebuilded the power system. my ina219 was not well connected and i2c informations was wrong. i've made a "shunt" near the battery, so i can calculate the percent left. 

    I'm using 2x18650 samsung 25R. With a given temperature, volatge, and Ah its easy to calculate the percent left in real time :

    Now i can get this information directly into the HTTP remote console : 

    Next step is to build the communication bus. I'm thing about i2c, but CAN bus seems to be cool too. i've not decided yet. 

  • 05.10.2019 - Majors changes on hardware

    nj133710/05/2019 at 16:56 0 comments

    Hi !

    While i'm coding the software part, i'm doing majors changes on the hardware part and on the 3D design. 

    The thing is too small. the size is actually 28 x 35 cm, i'm planning a bigger size. 45 x60 cm at least. 

    Today, i've redsigned the wheels. I've changed the design and the size. They are now 100mm from 65mm.

    Second big change, i'm not using DC motors anymore. They are not precise and slow speed is too hard to control. So i buyed some Nema17 (5 in total), and i'm planning to use theme with a4498 driver. 

    I Will use 4 battery 18650 (from 2) @ 2500mah for powering the 4 engines. battery can take 35A in a burst, i hope they can sustain the 4 Nema 17.

    If someone have experienced this, lets me know =)

    For the software part,  as you know, i'm using ubuntu on a RPi3. i've installed and apache2 and i will use python and JS as front languages for the remote control. The goal is to get something reactive with manuals controls. i'm thinking about using webSocket (local)with a Serial betwin Arduino Mega & Rpi. 

    Thank you for following my garage project =)

  • 03.10.2019 - installating OpenCV on RPI3B with ubuntu

    nj133710/02/2019 at 23:25 0 comments

    today i was checking some website for computer vision. And i think i will use an intel D415 or D435 cam depth camera. But it's not supported in raspbian. So i decided to install ubuntu on my Raspberry Pi 3. 

    Here is how to to do this.

    First, grab the archive from ubuntu, then write it to your SD car. I'm using rufus for this operation.

    When done, put your SDcard in the RPi3 and boot. Make the first configuration ... keyboard, location ... 

    Once this done, install SSHd : 

    apt remove openssh-server
    apt install openssh-server
    systemctl disable sshguard
    systemctl enable openssh-server

    Go to your main computer and connect with SSH, then purge some useless packages

    sudo su
    apt-get remove --purge libreoffice*
    apt-get clean
    apt-get autoremove

    Update the OS : 

    sudo apt update && sudo apt upgrade -y

    sudo apt update && sudo apt upgrade -y

    I'm the current version (beta), there is a bug with the firmeware, you need to force it

    sudo dpkg -i --force-all /var/cache/apt/archives/linux-firmware-raspi2_1.20190215-0ubuntu0.18.04.1_armhf.deb

    I need screen, cause i'm working with SSH and i dont want to loose my session : 

    apt install screen

     Then install RDP, so you can connect from windows easly : 

    sudo apt install xrdp
    sudo systemctl enable xrdp

    Now we can start OpenCV 4.X installation :

    First, make the swap bigger : 

    swapoff /swapfile
    rm  /swapfile
    dd if=/dev/zero of=/swapfile bs=1M count=2048
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile

    Then, install some needed packages :  

    apt install build-essential cmake git pkg-config libgtk-3-dev "libcanberra-gtk*"
    apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
    apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
    apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev

     Go back to your user and download openCV with git : 

    mkdir ~/opencv_build && cd ~/opencv_build
    git clone
    git clone
    mkdir -p ~/opencv_build/opencv/build && cd ~/opencv_build/opencv/build

    screen a new session : 


     hit space

    then cmake the thing : 

        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D ENABLE_NEON=ON \
        -D ENABLE_VFPV3=ON \
        -D BUILD_TESTS=OFF \
        -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \

    then compile the monster : 

    make -j4

    if make stop or hang, just restart it without the -j4 

    Make a coffee, grab a good netflix film, and stay relax for 2/3 hours.

    Once done, install the compiled thing :

    sudo make install


    Check if it's working :

    for C++ : 

    pkg-config --modversion opencv4

    For python : 

    python3 -c "import cv2; print(cv2.__version__)"

    lets get back to previous swap file : 

     sudo su
    swapoff /swapfile
    rm  /swapfile
    dd if=/dev/zero of=/swapfile bs=1M count=1024
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile

    Have fun =)

View all 16 project logs

  • 1
    Nothing yet

    Wait for the base =)

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

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