Hackaday.io Hackaday.io
Projects
Discover Contests Courses Stack
More
Courses Tutorials Events Hackerspaces Hackaday.com Tindie Marketplace
Sign up Log in
Close
0%
0%

SurvBot

Remote controlled robot that surveys the environment it is travelling in. PCBs for the Robot and Remote Controller will be original designs

ghani-lawalGhani Lawal
Following Follow project
Liked Like project

Become a Hackaday.io member

Not a member? You should Sign up.

Already have an account? Log in.

Sign up with Github
Sign up with Twitter
OR
Forgot your password?

Just one more thing

To make the experience fit your profile, pick a username and tell us what interests you.

Pick an awesome username
hackaday.io/
Your profile's URL: hackaday.io/username. Max 25 alphanumeric characters.
Pick a few interests
Projects that share your interests
People that share your interests

We found and based on your interests.

Choose more interests.

OK, I'm done! Skip
Join this project
Public Chat
Similar projects worth following
425 views
0 comments
227 followers
2 likes
  • Description
  • Details
  • Files 0
  • Components 0
  • Logs 26
    • View all
  • Instructions 0
  • Discussion 0
View Gallery
Public Chat
425
0
227
2

Team (1)

  • ghani-lawalGhani Lawal

Join this project's team
  • SurvBot
hardware
ongoing project
STM32 kicad Embedded pcb

This project was created on 04/02/2024 and last updated 8 months ago.

Description

Part One - Robot Control Unit (RCU)
- Design and implement a PCB that has closed-loop control over 2 DC motors
- Monitors and saves data about itself and the environment it is in:
- Current flowing though the motors
- Ambient temperature
- Ambient light
- Humidity
- Orientation (or just the tilt angle, TBD)
- Possess Bluetooth communication
- Entire system is powered by a 9V-12V battery
- Can connect to computer via USB2 2.0 to load the data saved on the PCB

Project Logs
Collapse

  • SurvBot - Remote Controller - START PART2

    Ghani Lawal • 10/02/2024 at 22:06 • 0 comments

    • Push buttons will connect to GPIOs
    • Joysticks are 2 axis potentiometers, will connect via ADC-I2C
      • https://www.digikey.ca/en/products/filter/joystick-potentiometers/82?s=N4IgTCBcDaIFYHsCeBnALgSwMYGsQF0BfIA
      • Leaning towards "PS2 like thumb joysticks"
        • https://www.digikey.ca/en/products/detail/sparkfun-electronics/COM-09032/6823623
        • https://www.sparkfun.com/products/9032
    • Screen could use I2C to keep it simple, will only be receiving data, might use SPI
    • **UART used to program ESP32
    • Modules:
      • Power supply
      • Motion control
      • uC & Bluetooth
      • Mode change
    • CH340 USB to UART
      • will be attached to the underside of the PCB
      • USB - bottom layer
      • UART - bottom layer ->via -> top layer
    • Other stuff:
      • On-of switch
      • Indicator LEDs (power, BT connected, data Tx, data Rx)
      • Emergency stop?
        • How to you implement a remote E-stop
      • Battery holder and terminals
      • Voltage levels, 3.3V for everything, maybe 5V - leaning towards the former
        • Should be able to connect to external 

  • SurvBot - Remote Controller - START PART1

    Ghani Lawal • 10/02/2024 at 21:51 • 0 comments

    • Requirements:
      • Send/receive messages over Bluetooth - ESP32
      • Control robot's velocity and direction - Joystick most likely
      • Place robot in different modes and itself in different modes - push-buttons
      • Display relevant information, can choose what it displayed and how it is displayed - screen and push buttons
      • Battery powered - BT takes a lot of power
      • Programmable via USB  - use a USB to UART converter
      • Simple to use IDE - Arduino
    • Will take inspiration from game controllers and RC controllers
      • https://www.amazon.ca/FLYSKY-Transmitter-Controller-Receiver-Upgrade/dp/B07Z8VCB45/ref=asc_df_B07Z8VCB45/?tag=googleshopc0c-20&linkCode=df0&hvadid=706841688476&hvpos=&hvnetw=g&hvrand=1694029161074720460&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9001024&hvtargid=pla-1088447909254&psc=1&mcid=c9f926f34897300eaa7c25e74dbb2f04&gad_source=1
      • https://www.amazon.ca/DJI-FPV-Remote-Controller-Compatibility/dp/B0CS6JCX2W/ref=asc_df_B0CS6JCX2W/?tag=googleshopc0c-20&linkCode=df0&hvadid=706724959887&hvpos=&hvnetw=g&hvrand=1694029161074720460&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9001024&hvtargid=pla-2489520640472&psc=1&mcid=f32a5bfd8b8c3bf7bbd4d2b5bef1abd8&gad_source=1
      • https://www.google.com/search?sca_esv=5de61c6dbcae3990&rlz=1C1CHBF_enCA862CA864&sxsrf=ADLYWIJSQK7JbUN--RXnojvIJRHf0_mpcA:1727902305618&q=ps2+controller&udm=2&fbs=AEQNm0CrHVBV9axs7YmgJiq-TjYc7RgyMjmhctvLCnk5YpVfOzTk9UgrCkq1LL6wECoQ_WGpuh2-yvh4a1uIS1ER30dB5AWZ8RxNjUsmzFd4N_UT1oUNZfs4C3G8xLBj8dMjxnxwyU-UJN99U7fNsRI-pWnVE5KFVJFgLI_Oh0CZhjHwc1W0HeIrcIvNwyjxFJw-UaUn9lCRGxP3O_xa89hyqWrDJSrVcw&sa=X&ved=2ahUKEwis84fZyfCIAxUQmIkEHc_SLPsQtKgLegQIEhAB&biw=1920&bih=919&dpr=1#vhid=Lb2cas9fS-k0YM&vssid=mosaic

  • SurvBot RCU Altium Designer

    Ghani Lawal • 09/18/2024 at 20:50 • 0 comments

    • Finished Schematic and PCB in Altium Designer
    • Made custom symbols and footprints

  • SurvBot PCB

    Ghani Lawal • 09/04/2024 at 22:06 • 0 comments

    • Finished SurvBot PCB in KiCad
    • Used JLC7628 stackup

  • Current draw of motors

    Ghani Lawal • 08/10/2024 at 21:10 • 0 comments

    • Tested Motor Under no load at 6V, experimentally determined that:
      • Max speed < 180 rpm
      • Max current draw < 400mA
    • Stalled Current (held motor in place while it tried to rotated at max speed)
      • < 1.5 A
      • ***May have damaged motor, no longer rotated perfectly along axis

  • External Memory

    Ghani Lawal • 08/10/2024 at 21:03 • 0 comments

    • Requirements:
      • store at least 1MB, don't need more than 10MB
      • SPI interface
      • Vdd = 3.3V
      • Recording temperature, orientation/tilt, light, current, commands
    • Temperature, humidity and light: 1 sample/second
    • Orientation, current, commands and speed: 10 samples/second
    • Temperature and humidity from SHT30-DIS & light from ADPDS are each 2 bytes
      • 6 bytes * 1 sample/second = 6 bytes/second
      • 360 bytes/minute
      • 21600 bytes/hour
    • ADC is 12-bit, will store as 2 bytes each for left motor and right motor -> 4 bytes
    • Orientation sensor: roll pitch and yaw - 2 bytes each -> 6 bytes
    • Commands: speed and direction - 2 bytes each -> 4 bytes
      • 14 bytes * 10 samples/s = 140 bytes/second
      • 8400 bytes/min
      • 504 000 bytes/hour
    • Total: 525600 bytes/hour, stored raw this is about half a MB per hour
    • Couldn't find an EEPROM
    • Using NOR flash IC SST26VF032BT-104I/SM: 32Mbit

  • Motor Drive Unit Power

    Ghani Lawal • 08/04/2024 at 16:07 • 0 comments

    • Planning on powering entire device from 9V battery (unregulated supply), motor drive unit needs a 6V regulator
    • Encoder operating voltage is 4.5 to 7.5V
    • ***Even though STM32G0B1CE has 5V tolerant pins that are used for encoder input, the output voltage of the encoder will likely match the operating voltage
      • Will either use level shifters IC's or voltage dividers resistors, leaning towards the latter
    • Since motor is rated for 6V and that is within encoder operating voltage, will use the same IC to power both
      • LM2576S-Adj, I_MAX = 3A
      • Has tips on picking out all the external circuitry and lays out a design procedure as well

  • Power Budget and Power Circuitry

    Ghani Lawal • 08/04/2024 at 15:37 • 0 comments

    • Made a "worst case scenario" power budget, this was made on July 29th, 
      • Absolute max current draw by microcontroller is 100mA, but typical supply current is under 10mA, and adding peripherals only adds a 10s of uA

      • This is important because the efficiency of the buck converter under different current loads is dependent on the Inductor value, large loads -> small inductor, small loads -> large inductor

      • Therefore, want to figure out "typical" current draw before deciding on inductor values for regulators

  • Power From USB

    Ghani Lawal • 08/04/2024 at 15:17 • 0 comments

    • Can be quite noisy, use a pi filter to filter out noise
    • Set up CC pins on USB_C receptacle to get 500mA from source
    • ***** If inductor has no DC resistance, circuity will essentially be a resonator -> give sharp peak at corner frequency instead of trailing off
    • With ESR = 0.15 ohm, the corner frequency is 1MHz, don't want to dampen below that because ICs sometime need high-frequency currents

  • USB Application Notes TA0357 & AN4875

    Ghani Lawal • 08/04/2024 at 15:11 • 0 comments

    • TA0357: Overview of USB Type C and Power Deliver Tech.
      • 2 Configuration channels (CC) for the discovery, configuration and management of USB Type C Power delivery features
      • A sink must assert Rd pull-down resistors on both CC pins
      • USB 2.0: Nominal voltage of 5V, max current of 500mA
    • AN4878: Introduction to USB hardware and PCB Guidelines for STM32
      • Protection against ESD and EMI:
        • The "HBM" require that USB pins of component device be tolerant p to 2kV of discharge
        • Low Price: USBLC6-2SC6 (+ ESDA7P60-1U1M for VBUS)
        • Low Area: USBLC6-2P6 ((+ ESDA7P60-1U1M for VBUS)
      • VBUS Sensing:
        • A USB device must have VBUS sensing detection based on the USB specification
        • When the device detects the host's presence it connects its pull-up resistor to either a D+ or D- data signal line, this allows the host to detect the device presence on the bus
        • 1) If the USB device is bus powered, USB sensing isn't mandatory (USB is always connected with device is powered)
        • 2) Device is self powered - VBUS sensing is mandatory
        • ************* Not all STM32 microcontrollers that have USB peripherals have dedicated sensing pins
          • If they do, it is usually - PA9 additional functions: OTG_FS_VBUS
        • ************* The embedded pull up resistor on D+ pin in STM32G0B1CE is used for USB device detection

View all 26 project logs

Enjoy this project?

Share

Discussions

Log In/Sign up to comment

Become a Hackaday.io Member

Create an account to leave a comment. Already have an account? Log In.

Sign up with Github
Sign up with X
OR

Similar Projects

Adding Power Delivery 3.0 (PD3.0) & PPS to our beloved RP2040 chip in Pico footprint.
Project Owner Contributor

PicoPD - USB-C PD 3.0 PPS Trigger with RP2040

centylabCentyLab

My version of the ubiquitous USB serial port gizmo
Project Owner Contributor

FTDI-be-gone

nick-sayerNick Sayer

Official Hackaday Prize Entry
To build a improved controller for DC motor conversions of workshop machine tools.
Project Owner Contributor

Improved Machinetool DC Motor Controller

sciSci

Supplyframe DesignLab: 2023 Hackada…
A compact, silent, high-performance open-source closed-loop (servo) stepper motor driver with USB, CAN-FD and 48V support
Project Owner Contributor

CLN17 V2: $12 BoM Closed-Loop Driver for NEMA17

anton-khrustalevAnton Khrustalev

Does this project spark your interest?

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

Going up?

About Us Contact Hackaday.io Give Feedback Terms of Use Privacy Policy Hackaday API

© 2025 Hackaday

Yes, delete it Cancel

Report project as inappropriate

You are about to report the project "SurvBot", please tell us the reason.

Send message

Your application has been submitted.

Remove Member

Are you sure you want to remove yourself as a member for this project?

Project owner will be notified upon removal.