Commit 8ff4eb83 authored by Jake Read's avatar Jake Read
Browse files

doc

parent 3c72037a
# AutomataKit
AutomataKit is a collection of open hardware and software developed to as a rapidly reconfigurable library for various machine-building, process development, and robotics projects.
AutomataKit is a collection of reconfigurable open hardware and software for machine-building, process development, and robotics projects.
It uses a Distributed Dataflow Programming paradigm: hardware and software objects are all nodes in a graph, executing computing and physical tasks.
It uses a Distributed Dataflow Programming paradigm: hardware and software objects are all nodes in a graph, executing computing and physical tasks, together!
[ATKAPI](https://gitlab.cba.mit.edu/jakeread/reich) serves a development environment for those graphs.
![atkapi](images/atkapi.png)
[RuNDMC](https://gitlab.cba.mit.edu/jakeread/rndmc) serves a development environment for those graphs.
![atkapi](images/machine-with-atkapi.jpg)
......@@ -18,31 +16,6 @@ It uses a Distributed Dataflow Programming paradigm: hardware and software objec
- [SmallGantries](https://gitlab.cba.mit.edu/jakeread/smallgantries)
- [ClayStacker](https://gitlab.cba.mit.edu/jakeread/claystack)
# Wiring
At a bare minimum, you're going to be hooking these things up to power, and to each other (network).
- don't forget to check polarity before you power up
- network cables can be made two ways: only one is correct - *rj45 tabs should be on the same side of the ribbon cable* i.e. the cable is a 'straight through' type, not a crossover. this means that tx meets rx, etc.
- the transmit / receive ports are RS-485 Differential Driven, meaning there is no common gnd connection between boards besides the power bus.
The connectors I use are called 'RJ45' Jacks and Plugs. These are standard for Ethernet, but also 'generally useful'. This is not ethernet, but these *are* RJ45. It's 8 wires, and in our case that's four differential pairs - two duplex lines on each side.
One cool thing about RJ45 is the modularity of the cables. We can use commodity crimping tools to make our own lengths:
- one side cuts, one side strips. use both at the same time to get the right length of stripped wire
- use the '8p' crimp, note the tab direction in the crimp
- pinch! the plug has a plastic tab inside that should come down to meet the wire jacket
![rj45 video](images/rj45-assembly.mp4)
```make sure those tabs are on the same side of the flat cable```
![rj45](images/rj45-tabs.jpg)
To power the boards, I put M3 'studs' on each PCB. These can handle lots of current, and have a good mechanical connection. To hookup, I solder or crimp eye-terminals onto ~ 18ga - 14ga wire, then screw them down with short M3 Socket Head Screws.
Power can be bussed - i.e. we can screw two terminals onto the same stud to make the circuit a 'drop' on the line.
## The Network
To make individual motors and sensors modular, AutomataKit endpoints use a port-forwarding, source-routed network. This is *not a bus* and can be connected in a complete graph. All connections are full-duplex and include support for hardware clock synchronization.
......@@ -75,6 +48,31 @@ Endpoints are designed to be very simple: they receive minimum viable commands a
# Usage
## Wiring
At a bare minimum, you're going to be hooking these things up to power, and to each other (network).
- don't forget to check polarity before you power up
- network cables can be made two ways: only one is correct - *rj45 tabs should be on the same side of the ribbon cable* i.e. the cable is a 'straight through' type, not a crossover. this means that tx meets rx, etc.
- the transmit / receive ports are RS-485 Differential Driven, meaning there is no common gnd connection between boards besides the power bus.
The connectors I use are called 'RJ45' Jacks and Plugs. These are standard for Ethernet, but also 'generally useful'. This is not ethernet, but these *are* RJ45. It's 8 wires, and in our case that's four differential pairs - two duplex lines on each side.
One cool thing about RJ45 is the modularity of the cables. We can use commodity crimping tools to make our own lengths:
- one side cuts, one side strips. use both at the same time to get the right length of stripped wire
- use the '8p' crimp, note the tab direction in the crimp
- pinch! the plug has a plastic tab inside that should come down to meet the wire jacket
![rj45 video](images/rj45-assembly.mp4)
```make sure those tabs are on the same side of the flat cable```
![rj45](images/rj45-tabs.jpg)
To power the boards, I put M3 'studs' on each PCB. These can handle lots of current, and have a good mechanical connection. To hookup, I solder or crimp eye-terminals onto ~ 18ga - 14ga wire, then screw them down with short M3 Socket Head Screws.
Power can be bussed - i.e. we can screw two terminals onto the same stud to make the circuit a 'drop' on the line.
## Network Interface
Once you understand the packet structure, any program you can imagine to write that has access to a USB or Serial Port, can issue and receieve packets. For us, this means [RNDMC](https://gitlab.cba.mit.edu/jakeread/rndmc) - a Reconfigurable Numeric Dataflow Machine Controller. For you, it might mean some other Node.js program (some exaple code for a simple version of which is available [here](atkterminal.js)), or Python, etc.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment