The High Energy Relay for Multimedia Exploration and Streaming (HERMES) is a system developed by the University of Central Florida's SEDS chapter to transmit a clear video stream from high-altitude amateur rockets.
HERMES is a carrier board for Nvidia's Jetson Nano SoM. We've built in multiple features to give us as much control over the system as possible, while allowing us to expand in the future if needed. Listed below are the interfaces that the PCB is built to support:
- (4x) 2 lane MIPI CSI-2
- (4x) GPIO Status LEDs
- Key-M PCIe
- Ethernet Header
- SPI Bridge for Future Expansion
- Voltage reader
- Current reader
- GPS
- IMU
- Altimeter
- Barometer
- 5v-36v input
The following is step-by-step instructions for setting up the HERMES system on a 4.6.5 Jetpack Linux distribution. You will need the following items:
- Jetson Nano Devleoper Board
- Jetson Nano SoM
- Micro-USB cable (data capable)
- Ethernet cord
- Laptop
- Windows 11 (you can use others, but the instructions listed are for Windows 11)
Download the Jetpack image from Nvidia's website. Use software (we used Balena Etcher) to flash the image to a micro-SD.
Once the image is flashed, put the SD card into the Jetson Nano, and power on the developer board with the micro-USB cable. Connect the ethernet cable as well.
Identify the COM port, and use a software like PuTTY to connect to the port with the serial speed 115200. Follow the set up steps for the Jetson Nano.
Once connected, we'll need to set up SSH and install the libraries needed to properly run the embedded code.
Do library updates:
sudo apt update
sudo apt upgrade -yInstall additional libraries:
sudo apt install -y python3-pip \
python3-venv \
python3-dev \
python3-numpy \
python3-opencv \
v4l-utils \
gstreamer1.0-tools \
openssh-serverGenerate ssh files and reconfigure default files:
sudo systemctl enable ssh
sudo rm -f /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh-server
sudo systemctl start sshWe also need to install the IMX708 camera drivers, to support RPi Camera Module 3s. Luckily, Arducam has these drivers available from their GitHub. If you have followed the steps up to this point, installing the drivers should be as easy as running these commands:
cd ~
wget https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.3/install_full.sh
chmod +x install_full.sh
./install_full.sh -m imx708At this point, restart the Jetson Nano with sudo reboot. Once it has booted back up, check if your camera is recognized by the Jetson Nano with the following command:
v4l2-ctl --list-devices --list-formats-extYour output should look something like this:
vi-output, imx708 8-001a (platform:54080000.vi:4):
/dev/video0
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'RG10'
Name : 10-bit Bayer RGRG/GBGB
Size: Discrete 4608x2592
Interval: Discrete 0.071s (14.000 fps)
Size: Discrete 2304x1296
Interval: Discrete 0.018s (55.000 fps)
Size: Discrete 1536x864
Interval: Discrete 0.011s (90.000 fps)More information on how to interact with the cameras through the Arducam drivers can be found on their website.
At this point, we are ready to clone this repository onto the Jetson:
git clone https://github.com/keagan-b/HERMES