diff --git a/README.md b/README.md index c6da30dc8c7d272357d19b84e2dbb36e540c4d40..4233f050173192d853c9f8e741f8865c743aa360 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,14 @@ [](https://gitlab.control.lth.se/labdev/LabConnections.jl/commits/master) # Welcome to LabConnections.jl - the IO-software part of the LabDev project -<img src="docs/src/fig/labio_overview.png" height="150" width="900"> - +<p align="center"> +<img align="center" src="docs/src/fig/labio_overview.png" height="180" width="900"> +</p> The goal of this project is to develop a software package in [Julia](https://julialang.org/) -for interfacing with lab processes using either the [BeagleBone Black Rev C](http://beagleboard.org/) (BBB) +for interfacing with lab processes using either the [BeagleBone Black Rev C](http://beagleboard.org/) (BB) with custom [IO-board cape](https://gitlab.control.lth.se/labdev/ioboards), or the old IO-boxes in the labs using Comedi. With this package, the user is able to setup a connection between the -host computer and the IO-device, and send and +host computer and the IO-device (BB or old IO-box), and send and receive control signals and measurements from the lab process. The full documentation of the package is available [here](https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/julia1/docs/build/index.md). @@ -17,54 +18,55 @@ The full documentation of the package is available [here](https://gitlab.control The `LabConnections.jl` package is subdivided into two main modules; `Computer` and `BeagleBone`. `Computer` defines the user interface on the host computer side, while `BeagleBone` defines low-level types and functions meant -to be used locally on the BBB. - -### Computer -<img src="docs/src/fig/computertypes.png" height="250" width="800"> +to be used locally on the BB. -This module contains the user interface on the host computer side, and defines +### LabConnections.Computer +<p align="center"> +<img src="docs/src/fig/computertypes.png" height="320" width="900"> +</p> +The module `LabConnections.Computer` contains the user interface on the host computer side, and defines types for devices/connections to the lab process, and filestreams between the -host computer and different IO-devices (BBB or Comedi). There are currently 3 +host computer and different IO-devices (BB or Comedi). There are currently 3 different device/connection types (each has the abstract super type `AbstractDevice`): * `AnalogInput10V` : Represents ±10V connections from the lab process to the IO-device. Each instance will correspond to a physical ±10V measurement signal from the lab process, whose value can be read. * `AnalogOutput10V` : Represents ±10V connections from the IO-device to the lab process. Each instance will correspond to a physical ±10V input signal to the lab process, whose value can be set. -* `SysLED` : Represents the System LEDs on the BBB. Used for simple testing and debugging from the host computer side. +* `SysLED` : Represents the System LEDs on the BB. Used for simple testing and debugging from the host computer side. There are 2 different filestream types (each has the abstract super type `LabStream`): -* `BeagleBoneStream` : Represents the data stream between the host computer and the BBB. +* `BeagleBoneStream` : Represents the data stream between the host computer and the BB. * `ComediStream` : Represent the data stream between the host computer and the old IO-boxes using Comedi. -### BeagleBone -<img src="docs/src/fig/beaglebonetypes.png" height="300" width="500"> +### LabConnections.BeagleBone +<p align="center"> +<img src="docs/src/fig/beaglebonetypes.png" height="420" width="700"> +</p> -This module defines types representing different pins and LEDs on the BBB, and +The module `LabConnections.BeagleBone` defines types representing different pins and LEDs on the BB, and functions to change their status and behaviour. There are currently 4 different types defined (each has the abstract super type `IO_Object`): -* `GPIO` : Represents the BBB's General Purpose Input Output (GPIO) pins. +* `GPIO` : Represents the BB's General Purpose Input Output (GPIO) pins. Each instance will correspond to a physical GPIO pin on the board, and can be set as an input or output pin, and to output high (1) or low (0). -* `PWM` : Represents the BBB's Pulse Width Modulation (PWM) pins. +* `PWM` : Represents the BB's Pulse Width Modulation (PWM) pins. Each instance will correspond to a physical PWM pin on the board, which can be turned on/off, and whose period, duty cycle and polarity can be specified. -* `SysLED` : Represents the 4 system LEDs on the BBB, and can be turned on/off. -Used to perform simple tests and debugging on the BBB. -* `Debug` : Used for debugging and pre-compilation on the BBB. It does +* `SysLED` : Represents the 4 system LEDs on the BB, and can be turned on/off. +Used to perform simple tests and debugging on the BB. +* `Debug` : Used for debugging and pre-compilation on the BB. It does not represent any physical pin or LED on the board. -**Note:** In addition to GPIO and PWM, the BBB also has pins dedicated for [Serial Peripheral +**Note:** In addition to GPIO and PWM, the BB also has pins dedicated for [Serial Peripheral Interface](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) (SPI). -Work to feature this functionality in the module `BeagleBone` is currently ongoing. More -information can be found [here](https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/master/docs/build/man/introduction.md#spi-development) +Work to include this functionality in the module `LabConnections.BeagleBone` is currently ongoing. ## Getting Started ### Installation -Instructions on installing the required software and setting up a connection between -the host computer and the BBB are found [here](https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/julia1/docs/build/man/installation.md#installation-instructions). +First, you should follow the instructions on how to install the required software and setting up a connection between the host computer and the BB. These instructions are found [here](https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/julia1/docs/build/man/installation.md#installation-instructions). ### A Simple Example -We will here go through a simple example of using the host computer interface to communicate with the BBB and control the onboard system LEDs. +This is a simple example that demonstrates the usage of local devices on the BB via a host computer. The devices that will be used in the example are `SysLED` and `GPIO`. -First make sure that you have followed the installation guide, and that the BBB is running a server and is connected to the host computer. +First make sure that you have followed the installation guide, and that the BB is running a server connected to the host computer. Then, start the Julia REPL and input using LabConnections.Computer