mirror of
https://github.com/jhbruhn/respira.git
synced 2026-01-27 10:23:41 +00:00
150 lines
4.1 KiB
Markdown
150 lines
4.1 KiB
Markdown
# Brother Embroidery Machine Web Controller
|
|
|
|
A modern web application for controlling Brother embroidery machines via WebBluetooth.
|
|
|
|
## Features
|
|
|
|
- **WebBluetooth Connection**: Connect directly to Brother PP1 embroidery machines from your browser
|
|
- **Pattern Upload**: Load and upload PEN format embroidery files
|
|
- **Pattern Visualization**: Preview embroidery patterns on an interactive canvas with color information
|
|
- **Real-time Monitoring**: Monitor sewing progress, position, and status in real-time
|
|
- **Machine Control**: Start mask trace, start sewing, and manage patterns
|
|
|
|
## Requirements
|
|
|
|
- Modern browser with WebBluetooth support (Chrome, Edge, Opera)
|
|
- HTTPS connection (required for WebBluetooth API)
|
|
- Brother PP1 compatible embroidery machine with BLE
|
|
|
|
## Getting Started
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### Development
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The application will be available at `http://localhost:5173`
|
|
|
|
**Note**: WebBluetooth requires HTTPS. For local development, you can use:
|
|
- `localhost` (works with HTTP)
|
|
- A reverse proxy with SSL
|
|
- Vite's HTTPS mode: `npm run dev -- --https`
|
|
|
|
### Build for Production
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
The built files will be in the `dist` directory.
|
|
|
|
### Preview Production Build
|
|
|
|
```bash
|
|
npm run preview
|
|
```
|
|
|
|
## Usage
|
|
|
|
1. **Connect to Machine**
|
|
- Click "Connect to Machine"
|
|
- Select your Brother embroidery machine from the browser's Bluetooth device picker
|
|
- Machine information and status will be displayed
|
|
|
|
2. **Load Pattern**
|
|
- Click "Choose PEN File" and select a `.pen` embroidery file
|
|
- Pattern details and preview will be shown on the canvas
|
|
- Different colors are displayed in the preview
|
|
|
|
3. **Upload to Machine**
|
|
- Click "Upload to Machine" to transfer the pattern
|
|
- Upload progress will be shown
|
|
- Pattern information will be retrieved from the machine
|
|
|
|
4. **Start Mask Trace** (optional)
|
|
- Click "Start Mask Trace" to trace the pattern outline
|
|
- Confirm on the machine when prompted
|
|
|
|
5. **Start Sewing**
|
|
- Click "Start Sewing" to begin the embroidery process
|
|
- Real-time progress, position, and status will be displayed
|
|
- Follow machine prompts for color changes
|
|
|
|
6. **Monitor Progress**
|
|
- View current stitch count and completion percentage
|
|
- See real-time needle position
|
|
- Track elapsed time
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
web/
|
|
├── src/
|
|
│ ├── components/ # React components
|
|
│ │ ├── MachineConnection.tsx
|
|
│ │ ├── FileUpload.tsx
|
|
│ │ ├── PatternCanvas.tsx
|
|
│ │ └── ProgressMonitor.tsx
|
|
│ ├── hooks/ # Custom React hooks
|
|
│ │ └── useBrotherMachine.ts
|
|
│ ├── services/ # BLE communication
|
|
│ │ └── BrotherPP1Service.ts
|
|
│ ├── types/ # TypeScript types
|
|
│ │ └── machine.ts
|
|
│ ├── utils/ # Utility functions
|
|
│ │ └── penParser.ts
|
|
│ ├── App.tsx # Main application component
|
|
│ ├── App.css # Application styles
|
|
│ └── main.tsx # Entry point
|
|
├── public/ # Static assets
|
|
├── package.json
|
|
├── tsconfig.json
|
|
└── vite.config.ts
|
|
```
|
|
|
|
## Technology Stack
|
|
|
|
- **React 18**: UI framework
|
|
- **TypeScript**: Type safety
|
|
- **Vite**: Build tool and dev server
|
|
- **WebBluetooth API**: BLE communication
|
|
- **HTML5 Canvas**: Pattern visualization
|
|
|
|
## Protocol
|
|
|
|
The application implements the Brother PP1 BLE protocol:
|
|
- Service UUID: `a76eb9e0-f3ac-4990-84cf-3a94d2426b2b`
|
|
- Write Characteristic: `a76eb9e2-f3ac-4990-84cf-3a94d2426b2b`
|
|
- Read Characteristic: `a76eb9e1-f3ac-4990-84cf-3a94d2426b2b`
|
|
|
|
See `../emulator/PROTOCOL.md` for detailed protocol documentation.
|
|
|
|
## PEN Format
|
|
|
|
The application supports PEN format embroidery files:
|
|
- Binary format with 4-byte stitch records
|
|
- Coordinates in 0.1mm units
|
|
- Supports multiple colors and color changes
|
|
- Includes jump stitches and flags
|
|
|
|
## Browser Compatibility
|
|
|
|
WebBluetooth is supported in:
|
|
- Chrome 56+
|
|
- Edge 79+
|
|
- Opera 43+
|
|
|
|
**Not supported in:**
|
|
- Firefox (no WebBluetooth support)
|
|
- Safari (no WebBluetooth support)
|
|
|
|
## License
|
|
|
|
MIT
|