This is a remote controlled rover which I designed for my minor project.

Remote Controlled Rover

This is a rover I designed as a part of my final year Minor Project. Both hardware and software, except for the modules and boards available in the market, have been designed completely by me. Over here, I am going to describe this project in brief.

Structure of the rover

The base of the rover is made using PVC pipes having a diameter of 2.22 cm. The diagram for the same is shown below: Drawing of the base of the rover On top this structure is fixed a 22.5cm x 12.5cm rectangular piece of hardened cardboard, from which four screws projecting upwards. This allows us to build various levels on top of this rover. Each level can contain its own specialised hardware. For the sake of keeping the centre of gravity of the rover as low as possible for stability reasons, the power source is kept on the lowest level.
Engineering drawing of servo horns which are used for steering the rover is included below:
Drawing of the servo horn to which the front steering wheels are connected

Description of the software

The software used in this project can be divided into two parts.

  1. Command interpreter (rpi/main.c): This is an interactive single command interpreter. It majorly consists of the code for a parser. It is written in C. This interpreter, along with shell scripts or python scripts executes various commands which has been entered by the user. For example, the script rpi/interface.py reads the strings that has been passed to it by the parser, sends them serially to Arduino Nano at /dev/ttyUSB0 where they are executed by the controller. The syntax of these commands is somewhat similar to the syntax of assembly instructions.
  2. Source code for microcontroller (ardcon/ardcon.ino): Servo motors and motor driver are not controlled by the on-board computer (RPi 3B+) directly. The commands to control the motion of the rover via these motors is sent serially by RPi to Arduino Nano. The code running in Nano then executes these instructions and controls the motors accordingly. ardcon.ino contains string to float function which can translate a string to a floating point value of upto 2 decimal places.

List of Instructions supported by the interpreter at present

  1. movf
    Syntax: movf Description: Single operand instruction used to make the rover move forward. Time, in seconds, for which the rover has to be rover has to move forward is passed as an operand.
    Example: movf 05.00 //moves rover forward for 5 seconds

  2. movb
    Syntax: movb
    Description: Similar to movf, but is used to move the rover backwards.

  3. strl
    Syntax: strl
    Description: Single operand instruction used to turn the steering wheels so that the rover can be turned in left direction. Angle of steer is passed as an argument.
    Example: strl 05.00 //steer the rover left by 5 degrees

  4. strr
    Syntax: strr
    Description: Similar to strl, but is used to turn the rover towards right side by the angle passed as an argument with the instruction to the interpreter.

  5. exit
    Syntax: exit
    Description: Zero operand instruction used to exit from the interpreter.

File structure in RPi on-board the rover

Source codes are stored in ~/PROJECTS/main/. Images are stored in ~/PROJECTS/main/images/

On Capturing and transferring images from rover to host

First of all, establish an SSH connection using the following syntax:
ssh [email protected]_ADDRESS
IP address of RPi, provided the SSID and passphrase of the network has been saved in it, can be obtained by using an app like Fing (https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en_IN&gl=US)
Once the connection has been established, run the following terminal command:
rm ~/PROJECTS/main/images/*.png
This removes all previous images in the image folder and preserves memory space on RPi. After this, run on RPi the following command to capture and store image in the image folder:
raspistill -o ~/PROJECTS/main/images/"$(date).png"
Now open a new instance of terminal on the host machine and type the following scp command to transfer images to your own system:
sudo scp -r [email protected]_ADDRESS:~/PROJECTS/main/images/"$(ls *.png)" ~/PROJECTS/"Minor Project"/"Remote Controlled Rover"/images/

Owner
Praneet Kapoor
Currently pursuing Bachelor of Technology in Electrical and Electronics Engineering. Interested in embedded systems, x86 and Arm arch., and algorithms
Praneet Kapoor
Similar Resources

XMap is a fast network scanner designed for performing Internet-wide IPv6 & IPv4 network research scanning.

XMap is reimplemented and improved thoroughly from ZMap and is fully compatible with ZMap, armed with the "5 minutes" probing speed and novel scanning techniques. XMap is capable of scanning the 32-bits address space in under 45 minutes.

Dec 24, 2022

A hacked client designed for Minecraft Bedrock (Minecraft for Windows 10).

Infinite Client A hacked client designed for Minecraft Bedrock (Minecraft for Windows 10). Note This hacked client is a kernel mode cheat. This can ca

Feb 17, 2022

designed for debug Espressif's ESP series chips, include ESP32/ESP32-S2/ESP32-C3/ESP32-S3...

designed for debug Espressif's ESP series chips, include ESP32/ESP32-S2/ESP32-C3/ESP32-S3...

ESPLink δΈ­ζ–‡ ESPLink Introduce Features Pin Description esplink-tool Product Link Reference ESPLink Introduce ESPLink is a debug tool build for Expressi

Nov 19, 2022

An HTTPS beaconing Windows implant and multi-layered proxy C2 network designed for covert APT emulation focused offensive operations

An HTTPS beaconing Windows implant and multi-layered proxy C2 network designed for covert APT emulation focused offensive operations

WARFOX is a software-based HTTPS beaconing Windows implant that uses a multi-layered proxy network for C2 communications. This kit was designed to emulate covert APT offensive operations. This kit includes WARFOX (Windows implant), HIGHTOWER (Listening Post), and other tools to build configs and set up a proxy network.

Nov 25, 2022

A simple networking library for C++. Designed with games in mind, but can be used for other things

A simple networking library for C++. Designed with games in mind, but can be used for other things. Tested to work on Android and Windows.

Nov 14, 2019

A software C library designed to extract data attributes from network packets, server logs, and from structured events in general, in order to make them available for analysis

MMT-DPI A software C library desinged to extract data attributes from network packets, server logs, and from structured events in general, in odrder t

Nov 9, 2022

The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

Welcome! The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design

Dec 30, 2022

Which companies are using Flutter in Turkey πŸ‡ΉπŸ‡·

Which companies are using Flutter in Turkey πŸ‡ΉπŸ‡·

Which companies are using Flutter in Turkey πŸ‡ΉπŸ‡· You can easily see which companies are using Flutter in Turkey. Also, you can easily handle your Flut

Dec 31, 2022

A simple and easy WiFi-enabled ESP8266-powered WSPR and FT8 beacon which uses NTP + DS3231 RTC for timing.

A simple and easy WiFi-enabled ESP8266-powered WSPR and FT8 beacon which uses NTP + DS3231 RTC for timing.

Easy-Digital-Beacons-v1 A simple and easy WiFi-enabled ESP8266-powered WSPR and FT8 beacon which uses NTP + DS3231 RTC for timing. The whole design is

Nov 20, 2022
A project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server.
A project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server.

PS4 Server 9.00 This is a project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server. this is fo

Nov 28, 2022
High-level networking API for real-time simulations with primitives for remote procedure call and object state replication

tnl2 - Torque Network Library version 2 tnl2 is a high-level networking API for real-time simulations with primitives for remote procedure call and o

Apr 10, 2022
FreeRDP is a free remote desktop protocol library and clients

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.

Dec 31, 2022
An MQTT-based Virtual Wall for ESP8266 Devices and Gerber files to make the IR hat; this code and board can easily be adapted to be ANY infrared controller/remote!

Roomba-Virtual-Wall-ESP8266-MQTT An MQTT-based Virtual Wall for ESP8266 Devices I made this based off of the IRSend, IRremoteESP8266, and EspMQTTClien

Sep 20, 2021
A Hidden and Undetectable Remote Access Tool written in C++ and Server in Python3
A Hidden and Undetectable Remote Access Tool written in C++ and Server in Python3

Spyware-RAT A Hidden and Undetectable Remote Access Tool written in C++ and Server in Python3 This program utilizes the standard winsock library for s

Dec 25, 2022
Light and fast program for remote control of a computer.
Light and fast program for remote control of a computer.

DeskX - Remote control program About The project was created for its own use within the home local network (you can use DeskX over the internet using

Nov 28, 2022
C++ framework for json-rpc (json remote procedure call)
C++ framework for json-rpc (json remote procedure call)

I am currently working on a new C++17 implementation -> json-rpc-cxx. Master Develop | libjson-rpc-cpp This framework provides cross platform JSON-RPC

Dec 28, 2022
Voicemeeter Remote API + Source Code Examples

Voicemeeter-SDK Voicemeeter Remote API + Source Code Examples Voicemeeter Remote API provides a set of functions to control Voicemeeter parameters, to

Dec 15, 2022
Minimalistic server (written in C) and a python3 client to allow calling C function on a remote host

Minimalistic server (written in C) and a python3 client to allow calling C function on a remote host

Dec 30, 2022