Initial commit: Next.js UWB positioning webapp

- Complete Next.js 14 app with TypeScript and Tailwind CSS
- ESP32 serial communication via API routes
- Real-time UWB positioning visualization
- Interactive 2D warehouse mapping with Canvas
- Device connection interface with auto-detection
- AT command parsing for UWBHelper library integration
- Clean project structure with comprehensive documentation
This commit is contained in:
martin 2025-08-20 15:14:34 +02:00
commit fa75faa69d
20 changed files with 7600 additions and 0 deletions

67
lib/uwb-types.ts Normal file
View file

@ -0,0 +1,67 @@
// UWB Device Data Types (from ESP32 project context)
export interface DeviceData {
deviceId: number;
distance: number;
rssi: number;
lastUpdate: number;
active: boolean;
}
export interface AnchorPosition {
anchorId: number;
x: number;
y: number;
confidence: number;
valid: boolean;
}
export interface RangeResult {
tagId: number;
mask: number;
sequence: number;
ranges: number[]; // 8 elements
rssi: number[]; // 8 elements
anchorIds: number[]; // 8 elements
timer: number;
timerSys: number;
}
export interface TagPosition {
x: number;
y: number;
timestamp: number;
confidence: number;
}
// Configuration constants from ESP32 project
export const UWB_CONFIG = {
MAX_ANCHORS: 8,
UWB_TAG_COUNT: 64,
NETWORK_ID: 1234,
DEVICE_TIMEOUT: 5000,
BAUD_RATE: 115200,
DATA_RATE: 1, // 6.8Mbps
RANGE_FILTER: 1
} as const;
// Serial data parsing types
export interface SerialData {
type: 'range' | 'config' | 'status';
raw: string;
parsed?: RangeResult | DeviceData[];
timestamp: number;
}
// File upload types for offline analysis
export interface PositioningSession {
rawData: RangeResult[];
anchors: AnchorPosition[];
tagPath: TagPosition[];
sessionInfo: {
startTime: number;
endTime: number;
duration: number;
totalPoints: number;
};
}