machine control, reloaded
tosqa.com laser 3d-printer frees
machine control, ‘CNC’ Beauty …
3 … and the beast
4 Doe-het-zelf CNC nú
apparaat- job motor- bediening scheduling aansturing
status & rendering end-stops voortgang naar gcode spindle
3D data hot-end/-bed previews communicatie temperatuur
Gebruikers Informatie Machine Interface Verwerking Interface
Alles in één: MakerBot, UltiMaker, …
5 Het hele plaatje
gedeeld apparaat standalone gebruik kenmerken apparaat
CAD ontwerp low-end relais, servos, (Sketchup?) Linux boards licht, pompen
eigen code pick & place, ontwikkelen soldeerpasta
eigen h/w low-end integreren plotters, lasers
uitwisselen high-end 3D: depositie, (Thingiverse?) PC processing UV printers
kunstenaars, trajectory maatwerk architecten planning machines
6 Modulaire keuzes
alles in de browser alles ≥ Linux alles via de CAN bus ontwerp-proces + multi-platform host: direct of via bediening / status multi-language network / serial bridge
JavaScript, HTML5 host engine in Go ARM µC met CAN AngularJS, D3 (SVG) LevelDB, MQTT ChibiOS RTOS WebSockets dataflow architectuur CAN firmware upload real-time, responsive hardware discovery RJ12 klik-systeem
Gebruikers Informatie Machine Interface Verwerking Interface
Google Chrome BeagleBone Black LPC11C24 Safari (FireFox) (RasPi, Odroid) “SSB” & “IOU”
7 BeagleBone Black
of een Raspberry Pi of andere willekeurige Linux-computer CAN-bus single stepper board SmoothieBoard, met 1x LPC1769 en o.a. 5 stepper drivers
5x Tosqa’s Single Stepper Board - elk met een LPC11C24
11 Tosqa
Host engine (Go) Web browser pipe socket JavaScript exec Process AngularJS
JeeBus Flow
serial Interface Device Tosqa CAN bus USB HTTP LevelDB JavaScript Tosqa Host (BeagleBone)
Ethernet (LAN / WLAN)
12 • “HTML enhanced” - declaratief, attributes + {{…}}
• SPA: Single Page Application (de URL is N E P)
• static pages + JS, alles gebeurt in de browser
• bi-directionele data binding, geen DOM manipulatie:
13 Dataflow
• denk aan Unix pipes, maar dan overal binnen één proces
• visueel ontwerp == later nog zien (snappen!) hoe het zat
• iedereen “doet het” nu: FBP, Scratch, NoFlo, Node-Red
• ook: Grasshopper, Quartz Composer, Pure Data, Max/MSP
• perfecte match voor Go’s CSP: channels en goroutines
• terminologie in Tosqa: gadgets, pins, wires, circuits, feeds
14 Alles is een Gadget
$ tosqa-host info Registered gadgets and circuits: ! AddTag Attach CanBridge CanSerial Clock CmdLine Concat3 Counter DataSub Delay Dispatcher EnvVar FanOut FbpParser Forever GcodeInterp GcodeParser GcodeScanner HTTPServer JavaScript LevelDB MQTTPub MQTTServer MQTTSub Pipe Printer ReadFileJSON ReadFileText Repeater RpcHandler SerialPort SinglePlanner Sink SketchType SocketCan StepGen TimeStamp Timer WSLiveReload Waiter WebSocket-default WebSocket-jeebus circuitFill dbdump dbexport dbget dbimport dbkeys dbput demo help info init main mqttpub mqttsub tableFill try1
15 Visuele Circuit Editor
(Max/MSP voorbeeld)
16 SSB v1.2 (Single Stepper Board)
IOU v0.0 (Input/Output Unit)
17 SSB 10..25V (opt) CAN bus + power v1.2 NTC temp JTAG debug LEDs (2x) power ok
reset button CAN bus current + power adjust boot button 3.3V switcher LEDs (2x) red + green
Bottom: mag-pos encoder end stops (2x) / I2C
18 BeagleBone + CAN “cape” LPC1769 + LPC11C24 (12V loodaccu eronder)
STM32 ARM + LCD (eBay)
LPC11 ARM bordje + 2x rotary encoders
19 The End Beginning!
• Website ➤ http://tosqa.com/ (en GitHub)
• Code + PCBs ➤ 100% Open Source (MIT/BSD)
• Tosqa team ➤
Peter Brier, Tim Castelijn, David Menting, Emile Nijssen, Peter Uithoven, Jean-Claude Wippler
• Vele uitdagingen ➤ Doe je mee?
20