Skip to content
This repository was archived by the owner on Sep 4, 2025. It is now read-only.

Rasppberry‐Pi Jetson Nano

Emir HAMURCU edited this page Jul 7, 2023 · 3 revisions

Overview

The project attempts to modularise the various electronic elements to allow each to be modified or upgraded depending on your specific requirements.

Broadly speaking, the project requires the following components:

  • A power source and switch. I use a USB-C PD that allows the selection of input voltage. As I also have 3 18650 batteries connected, my switch allows me to select between the two power sources.
  • Two buck converters (DC-DC) to step down the voltage to 5V for the Pi and for the arduino / servos. Separate buck converters are used to allow the Pi to be disconnected and powered independently, and to minimise any interference between the two systems.
  • An Arduino Pro Mini with custom PCB to control the servos.
    • 9 SG9010 servos for the legs
    • 2 MG92B servos for the neck and head
    • An MPU6050 accelerometer / gyroscope (optional- used to balance the robot)
    • 2 resistors for the voltage divider. (optional - only used for the battery monitor)
  • A Raspberry Pi 3B+ with custom PCB to control the related components.
    • A camera module. Mine uses a wide angle lens (used for vision input)
    • A buzzer (used for audio output)
    • A momentary push button to signal a shutdown of the Pi.
    • A neopixel LED ring for the eye
    • A logic level converter to allow the Pi to communicate with the Arduino and neopixels.
    • A microwave sensor to detect movement. (RCWL-0516)
    • A coral TPU accelerator for the Pi. (optional but recommended).
    • 2x MEMS I2S microphones (SPH0645)

Schematics

[Coming soon]

PCBs

See the Arduino page for details on the Arduino PCB pinout. See the Raspberry Pi page for details on the Raspberry Pi PCB pinout [coming soon].

The PCBs can be ordered and printed by uploading the gerber files to an appropriate PCB printing service.

Headers and connections

All generic headers use a standard spacing (2.54MM). This is compatible with Dupont or JST XH connectors as well as many others.

I recommend using JST connectors where swapping the polarity would damage components (everywhere except the servos).

Wire gauge (thickness)

To prevent insufficient current supply or damage to components, ensure that the wire gauge is sufficient for the current draw. The following table is a rough guide:

Max Current (A) Wire gauge (AWG)
3 18
4 16
5 14
6 12

Using different components

The project is designed to be modular and allow for the use of different components. The following are some examples of how this can be achieved.

Using a different microcontroller

The Arduino Pro Mini can be replaced with any other microcontroller that supports the required number of PWM outputs. The PCB can be modified to support this by changing the pinout and adding the required components.

Using a different SoC

The Raspberry Pi can be replaced with any other SoC that supports the required number of GPIO pins. The PCB can be modified to support this by changing the pinout and adding the required components.

Using different servos or other components

Refer to the stall torque of the servos specified above to determine if the replacement servos would be appropriate. This will depend on the overall weight of your robot and the angular torque required for each joint. Other components can be substituted as needed, but ensure that the pinout is a match and the voltage and current requirements are met.

Contributing to the project

If you have a modification to the PCBs or guide that you would like to share with the community, please submit a pull request or post a discussion for review. We'd love to see any changes or improvements you have made!

Overview The project attempts to modularise the various electronic elements to allow each to be modified or upgraded depending on your specific requirements.

Broadly speaking, the project requires the following components:

A power source and switch. I use a USB-C PD that allows the selection of input voltage. As I also have 3 18650 batteries connected, my switch allows me to select between the two power sources. Two buck converters (DC-DC) to step down the voltage to 5V for the Pi and for the arduino / servos. Separate buck converters are used to allow the Pi to be disconnected and powered independently, and to minimise any interference between the two systems. An Arduino Pro Mini with custom PCB to control the servos. 9 SG9010 servos for the legs 2 MG92B servos for the neck and head An MPU6050 accelerometer / gyroscope (optional- used to balance the robot) 2 resistors for the voltage divider. (optional - only used for the battery monitor) A Raspberry Pi 3B+ with custom PCB to control the related components. A camera module. Mine uses a wide angle lens (used for vision input) A buzzer (used for audio output) A momentary push button to signal a shutdown of the Pi. A neopixel LED ring for the eye A logic level converter to allow the Pi to communicate with the Arduino and neopixels. A microwave sensor to detect movement. (RCWL-0516) A coral TPU accelerator for the Pi. (optional but recommended). 2x MEMS I2S microphones (SPH0645) Schematics [Coming soon]

PCBs See the Arduino page for details on the Arduino PCB pinout. See the Raspberry Pi page for details on the Raspberry Pi PCB pinout [coming soon].

The PCBs can be ordered and printed by uploading the gerber files to an appropriate PCB printing service.

Headers and connections All generic headers use a standard spacing (2.54MM). This is compatible with Dupont or JST XH connectors as well as many others.

I recommend using JST connectors where swapping the polarity would damage components (everywhere except the servos).

Wire gauge (thickness) To prevent insufficient current supply or damage to components, ensure that the wire gauge is sufficient for the current draw. The following table is a rough guide:

Max Current (A) Wire gauge (AWG) 3 18 4 16 5 14 6 12 Using different components The project is designed to be modular and allow for the use of different components. The following are some examples of how this can be achieved.

Using a different microcontroller The Arduino Pro Mini can be replaced with any other microcontroller that supports the required number of PWM outputs. The PCB can be modified to support this by changing the pinout and adding the required components.

Using a different SoC The Raspberry Pi can be replaced with any other SoC that supports the required number of GPIO pins. The PCB can be modified to support this by changing the pinout and adding the required components.

Using different servos or other components Refer to the stall torque of the servos specified above to determine if the replacement servos would be appropriate. This will depend on the overall weight of your robot and the angular torque required for each joint. Other components can be substituted as needed, but ensure that the pinout is a match and the voltage and current requirements are met.

Contributing to the project If you have a modification to the PCBs or guide that you would like to share with the community, please submit a pull request or post a discussion for review. We'd love to see any changes or improvements you have made!

Clone this wiki locally