mutoo / axidraw-web

AxiDraw Web allow artists to connect pen plotter in the browser with the WebUSB API

Home Page:https://axidraw.mutoo.im

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Axidraw-Web

This project is work-in-progress!

screenshot

Axidraw-Web allow artists to connect AxiDraw in the browser with the WebUSB API. Or connect to remote AxiDraw with WebSocket proxy.

arch

TODOs

Checkout more on the project board.

Communication Interface

  • EBB Communication via WebUSB
  • EBB Communication via WebSocket
  • EBB Command Debugger

Plotter App

  • SVG load and preview
  • SVG path parser
  • SVG elements to line segments
  • Motion Planning (simple)
  • Motion Planning (reorder)
  • Plotting (constant speed)
  • Plotting (acceleration mode)
  • Plotting control (pause/resume/stop)
  • Plot skipping/seeking

Composer

Play it on browsers:

The latest version is deployed at https://axidraw.mutoo.im , you don't need to install any software or plugins to use it. Just open the website and plug the AxiDraw on your machine to plot any svg with it.

Other Apps

Try the Debugger if you want to play with low-level ebb command.

Try the Composer if you wondering how the pen plotter singing.

Run locally

Make sure you have node 12+ and yarn installed. Then checkout the repo and run yarn to install all the dependencies.

$ yarn

Self-signed cert

In order to use WebUSB on the browser, you have to generate a self-signed cert on your own:

$ bash ./scripts/create-cert.sh

This is required even you are running it locally. This command will generate a CA.pem and localhost.crt in the server/cert folder.

Please import the CA.pem to your system or browser and trust it for Secure Sockets Layer (SSL).

The local server will use the localhost.crt and localhost.key to host the website at:

https://localhost:8443

The cert generation script will also provide extra DNS including your hostname, and a wildcard dns address with your LAN ip (in case you don't have mDNS service in your OS):

# e.g. your hostname is raspberry-pi.local
# and your LAN ip is 192.168.3.14
https://raspberry-pi.local:8443
https://192.168.3.14.nip.io:8433

This very handy when you run the web server on Raspberry PI or other computer.

Production build

To run production build locally, run the yarn build to build the and, and then yarn start to start the web server:

$ yarn build
$ yarn start

Then visit the app in your browser with links listed in the section above.

Development build

Feel free to run dev build if you like to inspect how the app work with devTools:

$ yarn dev

it will run a dev server at https://localhost:8443, which will popup automatically in your browser.

Run on Raspberry PI

What if you plug in the axidraw on a Raspberry PI? No problem! This app also provide a proxy mode via WebSocket, so that you can run a web server to communicate the axidraw and your browsers in different computers.

N.B. The serialport permission has to be set up so that the server can communicate with the device.

License

MIT

Credits

Thanks Evil Mad Scientist for providing such a great machine to play with.

This project is initially inspired by saxi. That I want to build a Web App like this without install a node project locally.

About

AxiDraw Web allow artists to connect pen plotter in the browser with the WebUSB API

https://axidraw.mutoo.im

License:MIT License


Languages

Language:JavaScript 97.6%Language:CSS 1.6%Language:Shell 0.7%Language:HTML 0.1%