All Projects

JavaChip Diagnostics — Raspberry Pi Hardware & LiDAR Validation System

Raspberry Pi Hardware Diagnostics & LiDAR Validation System

JavaChip Raspberry Pi Tester is a native desktop application built to help prepare Raspberry Pi 4 Model B boards for robotics projects. It brings system diagnostics, LD19 LiDAR validation, guided distance measurements, and diagnostic reporting into one interface.

The application turns low-level system readings and raw sensor packets into clear results with supporting evidence and practical recommendations. It supports board diagnostics on Raspberry Pi OS and Debian, alongside direct LiDAR testing from a Windows computer.

PythonPySide6Qt Widgetspyserialpsutil
JavaChip Raspberry Pi hardware diagnostics and LD19 LiDAR validation desktop application showing test controls and diagnostic evidence panels

Core Features

Raspberry Pi Hardware Diagnostics

Provides quick, full, and individual diagnostic workflows for checking CPU temperature, memory availability, storage, power conditions, networking, USB devices, and kernel errors.

The full suite adds availability checks for GPIO, I2C, SPI, UART, and camera utilities. Manual inspection guidance covers physical components that software cannot fully verify.

LD19 LiDAR Detection & Validation

Automatically discovers compatible wired serial ports and validates LD19 sensor data through the D300 development kit at 230400 baud.

The application checks packet integrity, rotations, angular coverage, distance readings, and stream continuity. Detection requires valid sensor packets, preventing a connected USB adapter from being mistaken for a working LiDAR.

Guided Distance Testing

Walks users through measurements at 0.5 m, 1.0 m, and 2.0 m. Each step prompts the user to reposition a target before collecting readings and comparing the measured distance against a ±10% tolerance.

Completed results remain available throughout the sequence, making it easier to review measurements and identify inconsistent readings.

Evidence-Based Reports

Exports diagnostic sessions as JSON and plain-text reports containing device information, timestamps, individual results, collected evidence, and recommendations.

Results distinguish between passed checks, warnings, failures, unavailable interfaces, untested components, and checks requiring manual inspection.

Development Process

The Challenge

Hardware preparation involves several disconnected tasks: inspecting Linux system information, interpreting power warnings, checking interfaces, and decoding sensor data.

The challenge was bringing these tasks into an accessible desktop application while keeping the interface responsive and ensuring that missing tools, restricted permissions, or incomplete measurements never appeared as successful hardware checks.

The Solution

  • Modular Diagnostic Architecture: Separated the interface, diagnostic checks, serial communication, result models, and report generation into dedicated modules. This keeps hardware logic independent of presentation and supports focused testing.
  • Streaming Protocol Parser: Implemented incremental decoding of 47-byte LD19 packets with CRC-8 validation. The parser handles fragmented reads, rejects corrupted frames, and resynchronizes when valid data returns.
  • Background Processing: Used Qt workers and signals to run diagnostics without blocking the interface. Progress and completed results appear as checks finish.
  • Native Interface Design: Built a graphite-and-copper interface with bundled typography, geometric status markers, and detailed evidence panels. Status labels accompany visual indicators so results remain understandable beyond color alone.

Reliability & Performance

Because the application interacts with physical hardware and operating-system tools, predictable execution and accurate interpretation are central to its design.

Controlled Diagnostic Execution

System commands run without a shell and use execution timeouts. Diagnostics inspect system information and sensor data without stress testing hardware, changing configuration, or writing test patterns to devices.

Serial Connection Recovery

Handles disconnected devices, permission failures, busy ports, missing sensors, and invalid packets. Bluetooth virtual COM ports are excluded from LiDAR discovery.

Explicit Verification Limits

A passed result applies to the specific condition checked. Interface availability does not establish physical connector health, and automated software tests do not replace testing on a real Pi or sensor.

Automated Regression Coverage

The project includes 28 passing automated tests covering diagnostic decisions, report exports, packet parsing, serial failure handling, guided distance workflows, and repeated GUI runs.

Key Takeaways

Building JavaChip strengthened my experience in native desktop development, hardware communication, binary protocol parsing, and automated testing.

The project demonstrates how low-level device information can become an accessible diagnostic workflow while preserving the evidence and limitations behind each result. It also reinforced the importance of separating software verification from physical hardware validation.

© 2026 John Philip Orogo. All rights reserved.