README.md 7.6 KB
Newer Older
R
Richard Lander 已提交
1
# Resources
2

R
Richard Lander 已提交
3 4
See the following resources to get started.

5 6 7 8 9
## Repo Layout

This repository mainly contains two different components:

1. **System.Device.Gpio** library and tests which is the main library that has the implementation for protocols such as: GPIO, SPI, I2C, PWM. This library is fully supported by the dotnet team since it has the same level of support that dotnet/corefx does. All the code for the library lives under src/System.Device.Gpio. This library targets .NET Standard 2.0, and will work on both Windows and Linux. It's implementation consists of just IL code, so that means that it is supported across different platforms. In order to add new API to this library, an API Proposal would have to be submitted and approved first. [Here](https://github.com/dotnet/iot/issues/122) is an example of a how a good API proposal should look like.
10
Doing a PR on this part of the project may result in API review, higher exigence for the code quality and longer discussions. You need to be ready for this.
11
1. **Iot.Device.Bindings** device bindings library. This is a collection of types which work as wrappers (or bindings) for devices and sensors which are able to talk to a microcontroller unit (or MCU like a Raspberry Pi for example) using the protocols supported by System.Device.Gpio. For example: [BME280](../src/devices/Bmxx80/README.md) is a temperature sensor which uses SPI and I2C in order to communicate with a MCU and is able to report the current temperature. Because the process of how to compute the temperature from the data is not trivial, we have a `Bme280` class which exposes friendly methods like `ReadTemperature()` which will internally use either SPI or I2C to get the current temperature value. In order to start adding a new binding, check out our [guide on how to contribute a new binding](../tools/templates/DeviceBindingTemplate/README.md). It is worth noting that even though all device bindings will be built and packaged as a single library (Iot.Device.Bindings), the code is split under src/devices on individual projects for easier development of a single binding and developer inner-loop.
R
Richard Lander 已提交
12

13 14
While contributing, you should read the [coding guidelines section](https://github.com/dotnet/runtime/tree/main/docs#coding-guidelines), the [device conventions](./Devices-conventions.md) and also how to [best contribute to a binding](../src/devices/README.md#contributing-a-binding).

G
Greg Ingram 已提交
15 16
## System.Device.* APIs

17 18
* [Device Bindings](https://github.com/dotnet/iot/tree/main/src/devices) - Includes a collection of APIs representing a range of sensors, displays and human interface devices based on System.Device.* APIs.
* [DevicesApiTester CLI](https://github.com/dotnet/iot/tree/main/tools/DevicesApiTester) - Helpful utility, based on System.Device.* APIs, that include various commands for testing connected development boards and external hardware.
G
Greg Ingram 已提交
19

G
Greg Ingram 已提交
20
### Design Reviews
21

G
Greg Ingram 已提交
22 23 24 25
* [.NET Design Reviews: GPIO (10/2/2018)](https://youtu.be/OK0jDe8wtyg)
* [.NET Design Reviews: GPIO (10/19/2018)](https://youtu.be/wtkPtOpI3CA)
* [.NET Design Reviews: GPIO (11/2/2018)](https://youtu.be/UZc3sbJ0-PI)

26
### Showcase
27

28 29
[Mono WinForms GPIO Demo Using Toradex Colibri iMX7D and Torizon Container](https://www.youtube.com/watch?v=1d3g2VDZyXE)

G
Greg Ingram 已提交
30
## Interface Knowledge Base
31

G
Greg Ingram 已提交
32
### General-Purpose Input/Output (GPIO)
33

G
Greg Ingram 已提交
34 35 36 37
* [GPIO Wiki](https://en.wikipedia.org/wiki/General-purpose_input/output)
* [Digital I/O Fundamentals](http://www.ni.com/white-paper/3405/en/#toc1)

### Inter-Integrated Circuit (I2C)
38

G
Greg Ingram 已提交
39 40 41 42
* [I2C Wiki](https://en.wikipedia.org/wiki/I%C2%B2C)
* [I2C Tutorial](https://learn.sparkfun.com/tutorials/i2c/all)

### Serial Peripheral Interface (SPI)
43

G
Greg Ingram 已提交
44 45
* [SPI Wiki](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface)
* [SPI Tutorial](https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi/all)
R
Richard Lander 已提交
46

47
## Other Helpful links
48

49
* [Configuring Remote Debugging from Dev machine to Raspberry Pi on ARM](https://www.hanselman.com/blog/RemoteDebuggingWithVSCodeOnWindowsToARaspberryPiUsingNETCoreOnARM.aspx)
50 51 52 53 54 55
* [.NET Core Documentation](https://docs.microsoft.com/dotnet/)
* [Install .NET Core on Raspberry Pi](https://github.com/dotnet/core/blob/master/samples/RaspberryPiInstructions.md)
* [.NET Core ARM64 Status](https://github.com/dotnet/announcements/issues/82)
* [.NET Core Docker Samples](https://github.com/dotnet/dotnet-docker/tree/master/samples)
* [How to Prepare a Publish Profile](How-to-Deploy-an-IoT-App.md)

G
Greg Ingram 已提交
56
## Development Boards
57 58

> **NOTE**: It has been verified that .NET Core will work on the following development boards.  However, there has only been limited testing so far.  It is recommended you experiment with the Raspberry Pi 3 and HummingBoard for now.
G
Greg Ingram 已提交
59 60

### Raspberry Pi
61 62 63

#### General information for Raspberry Pi

G
Greg Ingram 已提交
64 65 66 67 68 69
* [Raspberry Pi Website](https://www.raspberrypi.org/)
* [Raspberry Pi GitHub Website](https://github.com/raspberrypi)
* [Raspberry Pi Wiki](https://en.wikipedia.org/wiki/Raspberry_Pi)
* [Raspberry Pi GPIO Pinout](https://learn.sparkfun.com/tutorials/raspberry-gpio/gpio-pinout)
* [Raspberry Pi GPIO Tutorial](https://learn.sparkfun.com/tutorials/raspberry-gpio/all)

70 71
#### How-Tos for Raspberry Pi

72
* [Enable SPI on Raspberry Pi](./raspi-spi.md)
73
* [Enable I2C on Raspberry Pi](./raspi-i2c.md)
L
Laurent Ellerbach 已提交
74
* [Enable Hardware PWM on Raspberry Pi](./raspi-pwm.md)
G
Greg Ingram 已提交
75 76 77
* [Enable Headless Raspberry Pi](https://hackernoon.com/raspberry-pi-headless-install-462ccabd75d0)
* [Docker Access to Raspberry Pi GPIO Pins](https://stackoverflow.com/questions/30059784/docker-access-to-raspberry-pi-gpio-pins)
* [Design a Raspberry Pi Hat in 10 Minutes](https://www.youtube.com/watch?v=1P7GOLFCCgs)
R
Rich Lander 已提交
78

79 80
#### Product details for Raspberry Pi

G
Greg Ingram 已提交
81
* [Raspberry Pi 3 Model B+](https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/)
R
Rich Lander 已提交
82

G
Greg Ingram 已提交
83
### HummingBoard
84 85 86

#### General information for HummingBoard

G
Greg Ingram 已提交
87 88 89
* [SolidRun Website](https://www.solid-run.com/)
* [SolidRun GitHub Website](https://github.com/SolidRun)

90 91
#### Product details for HummingBoard

G
Greg Ingram 已提交
92 93 94
* [HummingBoard](https://www.solid-run.com/nxp-family/hummingboard/)

### BeagleBoard
95 96 97

#### General information for BeagleBoard

G
Greg Ingram 已提交
98 99 100 101
* [BeagleBoard Website](https://beagleboard.org/bone)
* [BeagleBoard GitHub Website](https://github.com/beagleboard)
* [BeagleBoard Wiki](https://en.wikipedia.org/wiki/BeagleBoard)

102 103
#### How-Tos for BeagleBoard

G
Greg Ingram 已提交
104 105
* [Example of .NET Core on a BBB](https://github.com/Redouane64/beaglebone-dotnet/tree/master/Examples/LEDBlink)

106 107
#### Product details for BeagleBoard

G
Greg Ingram 已提交
108 109 110 111
* [BeagleBone Black (BBB)](https://beagleboard.org/black)
* [BeagleBone Green (BBG)](https://beagleboard.org/green)

### Pine64
112 113 114

#### General information for Pine64

G
Greg Ingram 已提交
115 116
* [Pine64 Website](https://www.pine64.org/)

117 118
#### Product details for Pine64

G
Greg Ingram 已提交
119 120 121 122 123
* [PINE A64-LTS](https://www.pine64.org/?page_id=46823)

## Maker Resources

### Prototyping
124

G
Greg Ingram 已提交
125
#### How-Tos
126

127
* [Blinking LED Blog Post by Scott Hanselman](https://www.hanselman.com/blog/InstallingTheNETCore2xSDKOnARaspberryPiAndBlinkingAnLEDWithSystemDeviceGpio.aspx)
G
Greg Ingram 已提交
128 129 130 131
* [Collin's Lab: Breadboards & Perfboards](https://www.youtube.com/watch?v=w0c3t0fJhXU)
* [How to Use a Breadboard](https://www.youtube.com/watch?v=6WReFkfrUIk)

#### Software
132

G
Greg Ingram 已提交
133 134 135
* [Autodesk EAGLE PCB Designing Software](https://www.autodesk.com/products/eagle/free-download)
* [FreeCAD](https://www.freecadweb.org/downloads.php)
* [Fritzing](http://fritzing.org/home/)
F
ferdymercury 已提交
136
* [KiCad EDA](http://kicad.org/)
G
Greg Ingram 已提交
137 138

### Social
139

140
* [Hackaday.io](https://hackaday.io)
G
Greg Ingram 已提交
141 142 143 144
* [hackster.io](https://www.hackster.io/)
* [instructables](https://www.instructables.com/)

### Vendors
145

G
Greg Ingram 已提交
146 147 148 149 150
* [Adafruit](https://www.adafruit.com/)
* [CanaKit](https://www.canakit.com/)
* [Digikey](https://www.digikey.com/)
* [Jameco Electronics](https://www.jameco.com)
* [Sparkfun Electronics](https://www.sparkfun.com)
151
* [SunFounder](https://www.sunfounder.com/)