Jetson TX2与Raspberry Pi 3连接及YOLOv3检测数据传输方案问询
Hey there! Let's break down your questions one by one—since it's your first time working with YOLO and Jetson TX2, I'll keep things practical and easy to follow.
1. How to Connect Jetson TX2 & Raspberry Pi 3, and Which Terminal to Use
You’ve got two reliable connection options, depending on whether you want wired or wireless flexibility:
Option 1: Network Connection (WiFi/Ethernet)
This is the most versatile choice, especially if you want to avoid cables.
- Make sure both devices are on the same local network (either connected to the same WiFi router or linked via Ethernet cables to the same switch).
- On the Jetson TX2, use its built-in Terminal app to connect to the Pi via SSH. Run this command (replace
piwith your Pi's username, andraspberrypi.localwith its direct IP address if the.locallookup fails):ssh pi@raspberrypi.local - For the Pi, you can use its own physical Terminal, or even connect remotely to it from your laptop via SSH. If you prefer a GUI workflow, VS Code's Remote SSH extension works seamlessly for both devices.
Option 2: USB Serial Connection
If you don’t have a network handy, you can connect directly via USB:
- Use a Micro USB cable to plug into Jetson’s Micro USB port, then plug the other end into one of the Pi’s USB-A ports.
- On Jetson, install the
screentool first if it’s not already there:sudo apt install screen - Then connect to the Pi’s serial port (the device name might be
/dev/ttyACM0or/dev/ttyUSB0—check available ports withls /dev/tty*):screen /dev/ttyACM0 115200 - The Pi will recognize the serial connection automatically, and you’ll see the Jetson’s input in its Terminal once linked.
2. Code Implementation for Connection
Let’s use Python socket programming (network connection) since it’s straightforward and scalable. We’ll set up the Pi as a server that listens for incoming data, and the Jetson as a client that sends YOLO detection results.
Raspberry Pi 3 (Server Code)
Save this as pi_server.py on your Pi:
import socket # Configure socket settings HOST = '' # Listen on all available network interfaces PORT = 65432 # Pick an unused port (stick to 1024+ to avoid system conflicts) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() print("Waiting for Jetson to connect...") conn, addr = s.accept() with conn: print(f"Connected by {addr}") while True: data = conn.recv(1024).decode('utf-8') if not data: break print(f"Received detection data: {data}") # We'll add voice broadcast code here later!
Jetson TX2 (Client Code)
Save this as jetson_client.py on your Jetson:
import socket # Replace with your Pi's IP address or hostname (e.g., 'raspberrypi.local') PI_HOST = 'raspberrypi.local' PI_PORT = 65432 def send_detection_data(data): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((PI_HOST, PI_PORT)) s.sendall(data.encode('utf-8')) # Test with dummy YOLO data test_data = "Detected: dog (95%), cat (88%)" send_detection_data(test_data)
To run:
- First start the Pi server:
python3 pi_server.py - Then run the Jetson client:
python3 jetson_client.py
You should see the test data pop up on the Pi’s terminal right away!
3. Sending YOLOv3 Detection Data Over Network
Absolutely! Network transmission is the easiest way to send YOLO’s results to the Pi. Here’s how to integrate it with your workflow:
Step 1: Capture YOLOv3 Detection Data on Jetson
When you run YOLOv3 on Jetson (using Darknet or a TensorRT-optimized version), you’ll get structured output including:
- Detected object class (e.g., "person", "car")
- Confidence score (e.g., 0.92)
- Bounding box coordinates (optional, if you need them)
You can parse this into a readable string or JSON format (JSON is better for structured data). For example, using Darknet’s Python bindings:
# Example snippet from YOLOv3 detection code on Jetson import darknet # Load YOLO model and config net = darknet.load_net("cfg/yolov3.cfg", "yolov3.weights", 0) meta = darknet.load_meta("cfg/coco.data") # Capture image from USB camera (adjust path to your camera device) image = darknet.load_image("/dev/video0", 0, 0) results = darknet.detect_image(net, meta, image) # Format results into a speech-friendly string detection_str = "I detected: " for obj in results: detection_str += f"{obj[0]} with {obj[1]*100:.0f} percent confidence, " detection_str = detection_str.rstrip(', ')
Step 2: Send the Data to Pi
Just pass the formatted detection_str to the send_detection_data function we wrote earlier.
Step 3: Voice Broadcast on Pi
Add text-to-speech functionality to the Pi’s server script. We’ll use pyttsx3 for offline speech (no internet needed) or gTTS for more natural online voices. Here’s the updated Pi server with pyttsx3:
First install pyttsx3 on Pi:
sudo pip3 install pyttsx3
Updated pi_server.py:
import socket import pyttsx3 # Initialize text-to-speech engine engine = pyttsx3.init() engine.setProperty('rate', 150) # Adjust speech speed to your liking engine.setProperty('volume', 0.9) # Set volume (0.0 to 1.0) HOST = '' PORT = 65432 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() print("Waiting for Jetson to connect...") conn, addr = s.accept() with conn: print(f"Connected by {addr}") while True: data = conn.recv(1024).decode('utf-8') if not data: break print(f"Received: {data}") # Speak the detection result out loud engine.say(data) engine.runAndWait()
Quick Jetson YOLO Setup Tip
Since it's your first time with Jetson TX2:
- Compile Darknet with CUDA support to leverage the Jetson’s GPU—this will drastically speed up YOLOv3 inference.
- You can also use NVIDIA’s official
jetson-inferencelibrary, which has pre-built, optimized YOLO models and simplifies camera input handling.
内容的提问来源于stack exchange,提问作者yerin

