Updated documentation and added little plan.

This commit is contained in:
clinton 2017-05-21 21:18:14 +10:00
parent 7070035e9c
commit 5219ac6204
1 changed files with 53 additions and 45 deletions

View File

@ -1,4 +1,4 @@
# embd [![Build Status](https://travis-ci.org/kidoman/embd.svg?branch=master)](https://travis-ci.org/kidoman/embd) [![GoDoc](http://godoc.org/github.com/cfreeman/embd?status.png)](http://godoc.org/github.com/cfreeman/embd) # embd [![GoDoc](http://godoc.org/github.com/cfreeman/embd?status.png)](http://godoc.org/github.com/cfreeman/embd)
**embd** is a hardware abstraction layer (HAL) for embedded systems. **embd** is a hardware abstraction layer (HAL) for embedded systems.
@ -18,11 +18,6 @@ What embd then adds is first a Golang library interface on top of the various Li
devices and then another layer of user-level drivers for specific sensors and controllers devices and then another layer of user-level drivers for specific sensors and controllers
that are connected to gpio pins or one of the buses. that are connected to gpio pins or one of the buses.
Development supported and sponsored by [**SoStronk**](https://www.sostronk.com) and
[**ThoughtWorks**](http://www.thoughtworks.com/).
Also, you might be interested in: [Why Golang?](https://github.com/cfreeman/embd/wiki/Why-Go)
[Blog post introducing EMBD](http://kidoman.io/framework/embd.html) [Blog post introducing EMBD](http://kidoman.io/framework/embd.html)
## Getting Started ## Getting Started
@ -76,16 +71,50 @@ Then on the rPi run the program with ```sudo```*:
* This sample program is optimized for brevity and does not clean up after itself. Click here to * This sample program is optimized for brevity and does not clean up after itself. Click here to
see the [full version](https://github.com/cfreeman/embd/blob/master/samples/fullblinker.go) see the [full version](https://github.com/cfreeman/embd/blob/master/samples/fullblinker.go)
## Getting Help ## Supported Platforms
Join the [slack channel](https://gophers.slack.com/archives/embd)
## Platforms Supported
* [RaspberryPi](http://www.raspberrypi.org/) (including [A+](http://www.raspberrypi.org/products/model-a-plus/) and [B+](http://www.raspberrypi.org/products/model-b-plus/))
* [RaspberryPi 2](http://www.raspberrypi.org/)
* [NextThing C.H.I.P](https://www.nextthing.co/pages/chip)
* [BeagleBone Black](http://beagleboard.org/Products/BeagleBone%20Black) * [BeagleBone Black](http://beagleboard.org/Products/BeagleBone%20Black)
* [Intel Edison](https://software.intel.com/en-us/iot/hardware/edison)
* [NextThing C.H.I.P](https://www.nextthing.co/pages/chip)
* [RaspberryPi 1 A+](http://www.raspberrypi.org/products/model-a-plus/)
* [RaspberryPi 1 B+](https://www.raspberrypi.org/products/model-b-plus/)
* [RaspberryPi 2](https://www.raspberrypi.org/products/raspberry-pi-2-model-b/)
* [RaspberryPi 3](https://www.raspberrypi.org/products/raspberry-pi-3-model-b/)
## Supported Protocols
* **Digital GPIO** [Documentation](http://godoc.org/github.com/cfreeman/embd#DigitalPin)
* **Analog GPIO** [Documentation](http://godoc.org/github.com/cfreeman/embd#AnalogPin)
* **PWM** [Documentation](http://godoc.org/github.com/cfreeman/embd#PWMPin)
* **I2C** [Documentation](http://godoc.org/github.com/cfreeman/embd#I2CBus)
* **LED** [Documentation](http://godoc.org/github.com/cfreeman/embd#LED)
* **SPI** [Documentation](http://godoc.org/github.com/cfreeman/embd#SPIBus)
## Supported Sensors
* **BH1750FVI** Luminosity sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/bh1750fvi), [Datasheet](http://www.elechouse.com/elechouse/images/product/Digital%20light%20Sensor/bh1750fvi-e.pdf)
* **BME280** Pressure, Temperature and Humidity Sensor [Documentation](https://godoc.org/github.com/cfreeman/embd/sensor/bme280), [Datasheet](https://cdn-shop.adafruit.com/datasheets/BST-BME280_DS001-10.pdf)
* **BMP085** Barometric pressure sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/bmp085), [Datasheet](https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf)
* **BMP180** Barometric pressure sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/bmp180), [Datasheet](http://www.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf)
* **L3GD20** Gyroscope [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/l3gd20), [Datasheet](http://www.adafruit.com/datasheets/L3GD20.pdf)
* **LSM303** Accelerometer and magnetometer [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/lsm303), [Datasheet](https://www.sparkfun.com/datasheets/Sensors/Magneto/LSM303%20Datasheet.pdf)
* **TMP006** Thermopile sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/tmp006), [Datasheet](http://www.adafruit.com/datasheets/tmp006.pdf), [Userguide](http://www.adafruit.com/datasheets/tmp006ug.pdf)
* **US020** Ultrasonic proximity sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/us020), [Product Page](http://www.digibay.in/sensor/object-detection-and-proximity?product_id=239)
## Interfaces
* **Keypad(4x3)** [Product Page](http://www.adafruit.com/products/419#Learn)
## Controllers
* **PCA9685** 16-channel, 12-bit PWM Controller with I2C protocol [Documentation](http://godoc.org/github.com/cfreeman/embd/controller/pca9685), [Datasheet](http://www.adafruit.com/datasheets/PCA9685.pdf), [Product Page](http://www.adafruit.com/products/815)
* **MCP4725** 12-bit DAC [Documentation](http://godoc.org/github.com/cfreeman/embd/controller/mcp4725), [Datasheet](http://www.adafruit.com/datasheets/mcp4725.pdf), [Product Page](http://www.adafruit.com/products/935)
* **ServoBlaster** RPi PWM/PCM based PWM controller [Documentation](http://godoc.org/github.com/cfreeman/embd/controller/servoblaster), [Product Page](https://github.com/richardghirst/PiBits/tree/master/ServoBlaster)
## Convertors
* **MCP3008** 8-channel, 10-bit ADC with SPI protocol, [Datasheet](https://www.adafruit.com/datasheets/MCP3008.pdf)
## The command line tool ## The command line tool
@ -213,38 +242,7 @@ heading, err := mag.Heading()
The above two examples depend on **I2C** and therefore will work without change on almost all The above two examples depend on **I2C** and therefore will work without change on almost all
platforms. platforms.
## Protocols Supported
* **Digital GPIO** [Documentation](http://godoc.org/github.com/cfreeman/embd#DigitalPin)
* **Analog GPIO** [Documentation](http://godoc.org/github.com/cfreeman/embd#AnalogPin)
* **PWM** [Documentation](http://godoc.org/github.com/cfreeman/embd#PWMPin)
* **I2C** [Documentation](http://godoc.org/github.com/cfreeman/embd#I2CBus)
* **LED** [Documentation](http://godoc.org/github.com/cfreeman/embd#LED)
* **SPI** [Documentation](http://godoc.org/github.com/cfreeman/embd#SPIBus)
## Sensors Supported
* **TMP006** Thermopile sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/tmp006), [Datasheet](http://www.adafruit.com/datasheets/tmp006.pdf), [Userguide](http://www.adafruit.com/datasheets/tmp006ug.pdf)
* **BMP085** Barometric pressure sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/bmp085), [Datasheet](https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf)
* **BMP180** Barometric pressure sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/bmp180), [Datasheet](http://www.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf)
* **LSM303** Accelerometer and magnetometer [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/lsm303), [Datasheet](https://www.sparkfun.com/datasheets/Sensors/Magneto/LSM303%20Datasheet.pdf)
* **L3GD20** Gyroscope [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/l3gd20), [Datasheet](http://www.adafruit.com/datasheets/L3GD20.pdf)
* **US020** Ultrasonic proximity sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/us020), [Product Page](http://www.digibay.in/sensor/object-detection-and-proximity?product_id=239)
* **BH1750FVI** Luminosity sensor [Documentation](http://godoc.org/github.com/cfreeman/embd/sensor/bh1750fvi), [Datasheet](http://www.elechouse.com/elechouse/images/product/Digital%20light%20Sensor/bh1750fvi-e.pdf)
## Interfaces
* **Keypad(4x3)** [Product Page](http://www.adafruit.com/products/419#Learn)
## Controllers
* **PCA9685** 16-channel, 12-bit PWM Controller with I2C protocol [Documentation](http://godoc.org/github.com/cfreeman/embd/controller/pca9685), [Datasheet](http://www.adafruit.com/datasheets/PCA9685.pdf), [Product Page](http://www.adafruit.com/products/815)
* **MCP4725** 12-bit DAC [Documentation](http://godoc.org/github.com/cfreeman/embd/controller/mcp4725), [Datasheet](http://www.adafruit.com/datasheets/mcp4725.pdf), [Product Page](http://www.adafruit.com/products/935)
* **ServoBlaster** RPi PWM/PCM based PWM controller [Documentation](http://godoc.org/github.com/cfreeman/embd/controller/servoblaster), [Product Page](https://github.com/richardghirst/PiBits/tree/master/ServoBlaster)
## Convertors
* **MCP3008** 8-channel, 10-bit ADC with SPI protocol, [Datasheet](https://www.adafruit.com/datasheets/MCP3008.pdf)
## Contributing ## Contributing
@ -257,3 +255,13 @@ Thank you!
## About ## About
EMBD is affectionately designed/developed by Karan Misra ([kidoman](https://github.com/kidoman)), Kunal Powar ([kunalpowar](https://github.com/kunalpowar)) and [FRIENDS](https://github.com/cfreeman/embd/blob/master/AUTHORS). We also have a list of [CONTRIBUTORS](https://github.com/cfreeman/embd/blob/master/CONTRIBUTORS). EMBD is affectionately designed/developed by Karan Misra ([kidoman](https://github.com/kidoman)), Kunal Powar ([kunalpowar](https://github.com/kunalpowar)) and [FRIENDS](https://github.com/cfreeman/embd/blob/master/AUTHORS). We also have a list of [CONTRIBUTORS](https://github.com/cfreeman/embd/blob/master/CONTRIBUTORS).
## TODO
* Continue to tidy up the readme and other documenting files.
* Find more details/datasheet on the implemented watersensor.
* Dig through logs and add license/copyright headers throughout.
* Remove AUTHORS & CONTRIBUTORS -- That stuff is better maintained within git history (don't forget update_contributors script).
* Make sure there are samples for all the supported hardware.
* Organise samples into different folders.
* Rummage through the old, largely abandoned parent repo and pull in as many of the requests as possible.