Awesome
Welcome to the nanoFramework IoT.Device Library repository!
This repository contains bindings which can be sensors, small screen and anything else that you can connect to your nanoFramework chip!
Most of the bindings have been migrated from .NET IoT repository. Not all the bindings make sense to migrate to .NET nanoFramework, so the effort of migration has been placed into devices that can work with .NET nanoFramework. Please note as well that some devices have been migrated without been tested, so they main contain problems.
List of devices
<devices>- 28BYJ-48 Stepper Motor 5V 4-Phase 5-Wire & ULN2003 Driver Board
- 4-Wire stepper motor & A4988 driver board
- AD5328 - Digital to Analog Convertor
- Adafruit Seesaw - extension board (ADC, PWM, GPIO expander)
- ADS1115 - Analog to Digital Converter
- ADXL343 - Accelerometer
- ADXL345 - Accelerometer
- ADXL357 - Accelerometer
- AGS01DB - MEMS VOC Gas Sensor
- AHT10/15/20 - Temperature and humidity sensor modules
- AK8963 - Magnetometer
- AM2320 - Temperature and Humidity sensor
- AMG8833/AMG8834/AMG8853/AMG8854 Infrared Array Sensor Family
- APA102 - Double line transmission integrated control LED
- AT24C32/AT24C64/AT24C128/AT24C256 family of I2C EEPROM
- AXP192 - Enhanced single Cell Li-Battery and Power System Management IC
- Bh1745 - RGB Sensor
- BH1750FVI - Ambient Light Sensor
- Bmm150 - Magnetometer
- BMP180 - barometer, altitude and temperature sensor
- BMP280/BME280/BME680 Device Family
- BNO055 - inertial measurement unit
- BQ2579x/BQ25792/BQ25798 - Buck-boost battery charger
- Button
- Buzzer - Piezo Buzzer Controller
- CCS811 Gas sensor
- Character LCD (Liquid Crystal Display)
- Charlieplex Segment binding
- CHSC6540 - Touch screen controller
- DAC63004/DAC63004W - Ultra-low-power quad-channel 12-bit smart DAC with I²C, SPI and PWM
- DC Motor Controller
- DHCP Server
- DHT10/DHT11/DHT12/DHT21/DHT22 - Digital-Output Relative Humidity & Temperature Sensor Module
- DHT10/DHT11/DHT12/DHT21/DHT22 for Esp32 using RMT - Digital-Output Relative Humidity & Temperature Sensor Module
- Digital liquid level switch
- DS1302 - Realtime Clock
- Ds1621 - 1-Wire Digital Thermometer with Programmable Resolution
- Ds18b20 - Temperature Sensor
- ePaper drivers for .NET nanoFramework
- Ft6xx6x/Ft6336GU - Touch screen controller
- Generic AT Modem SIM800 and SIM7070, SIM7080, SIM7090 - Dual Mode Wireless Module CatM, LTE modems
- Generic shift register
- Global Navigation Satellite System Device NMEA 0183 - Including Generic Serial Module with GPS, GNSS, BeiDou - NEO6-M, NEO-M8P-2, NEO-M9N from u-blox, ATGM336H, Minewsemi, ZED-F9P, ZOE-M8Q, SAM-M8Q, SARA-R5 and many many more
- HC-SR04 - Ultrasonic Ranging Module
- HC-SR04 for ESP32 with RMT - Ultrasonic Ranging Module
- HC-SR501 - PIR Motion Sensor
- Hdc1080 - temperature and humidity sensor
- HLK-LD2410 24Ghz Human Presence Radar Sensor Module
- HMC5883L - 3 Axis Digital Compass
- HTS221 - Capacitive digital sensor for relative humidity and temperature
- Hx711 (M5Stack WEIGHT)
- INA219 - Bidirectional Current/Power Monitor
- Iot.Device.Multiplexing
- Iot.Device.NumberHelper
- Iot.Device.WeatherHelper
- IP5306 - Power management
- Key Matrix
- LCD library for SparkFun RGB Serial Open LCD display (sizes 20x4 or 16x2) with I2C connection
- LidarLiteV3 - LIDAR Time of Flight Sensor
- LIS2MDL - Ultra-low-power, high-performance 3-axis digital magnetic sensor
- LM75 - Digital Temperature Sensor
- Lp3943 LED driver
- LPS22HB - MEMS nano pressure sensor: 260-1260 hPa absolute digital output barometer
- LPS25H - Piezoresistive pressure and thermometer sensor
- LSM9DS1 - 3D accelerometer, gyroscope and magnetometer
- M5Stack ATOM QR Code reader
- MAX1704x/MAX17043/MAX17044/MAX17048/MAX17049 - Battery gauge
- Max31856 - cold-junction compensated thermocouple to digital converter
- MAX31865 - Resistance Temperature Detector Amplifier
- MAX44009 - Ambient Light Sensor
- Max7219 (LED Matrix driver)
- MBI5027 -- 16-bit shift register with error detection
- Mcp23xxx/MCP23008/MCP23009/MCP23017/MCP23018 - I/O Expander device family
- Mcp25xxx/MCP2515/MCP2565 device family - CAN bus
- MCP3001/MCP3002/MCP3004/MCP3008/MCP3201/MCP3202/MCP3204/MCP3208/MCP3301/MCP3302/MCP3304 family of Analog to Digital Converters
- Mcp3428 - Analog to Digital Converter (I2C)
- Mcp7940xx/MCP79400/MCP79401/MCP79402 - I2C Real-Time Clock/Calendar with SRAM
- MCP960X/MCP9600/MCP9601 - device family of cold-junction compensated thermocouple to digital converter
- MCP9808 - Digital Temperature Sensor
- MFRC522 - RFID reader
- MH-Z19B CO2-Sensor
- MLX90614 - Infra Red Thermometer
- Modbus - Machine to machine communication protocol
- Module and Unit 4 Relay - I2C relay
- MPR121 - Proximity Capacitive Touch Sensor Controller
- MPU6050/MPU6500/MPU9250 - Gyroscope, Accelerometer, Temperature and Magnetometer (MPU9250 only)
- Mpu6886 - accelerometer and gyroscope
- Ms5611 in GY-63 module - temperature and pressure sensor
- nRF24L01 - Single Chip 2.4 GHz Transceiver
- Pca95x4/PCA9534/PCA9534A/PCA9554/PCA9554A - I2C GPIO Expander
- PCD8544 - 48 × 84 pixels matrix LCD, famous Nokia 5110 screen
- PCx857x/PCF8574/PCF8575/PCA8574/PCA8575 - NXP/TI GPIO expansion
- PN5180 - RFID and NFC reader
- PN532 - RFID and NFC reader
- QTR Sensors - Pololu QTR Reflectance Sensors
- Quadrature Rotary Encoder
- Quadrature Rotary Encoder (ESP32)
- Radio Receiver
- Radio Transmitter
- Realtime Clock
- RFID shared elements
- RGB diode - PWM
- SCD4x - Temperature & Humidity & CO2 Sensor
- Sensirion SCD30 Particulate Matter Sensor
- Sensirion SEN5x series module
- Sensirion SPS30 Particulate Matter Sensor
- Servo Motor
- SHT3x/SHT30/SHT31/SHT35 - Temperature & Humidity Sensor
- Sht4x/SHT40/SHT41/SHT45 - Temperature & Humidity Sensor with internal heater
- SHTC3 - Temperature & Humidity Sensor
- Si7021 - Temperature & Humidity Sensor
- SN74HC595 -- 8-bit shift register
- SSD13xx/SSD1306/SSD1327 & SSH1106 - OLED display family
- Swarm Tile
- System.Buffers.Binary.BinaryPrimitives
- System.Device.Model - attributes for device bindings
- System.Diagnostics.Stopwatch and DelayHelper
- System.Drawing
- System.Numerics
- TCS3472x/TCS34721/TCS34723/TCS34725/TCS34727 Sensors
- TLC1543 - 10-bit ADC with 11 input channels
- TM1637 - Segment Display
- TSL256x/TSL2560/TSL2561 - Illuminance sensor
- VL53L0X - distance sensor
- Ws28xx/WS2812B/WS2815B/WS2808/SK6812/Neo pixel for ESP32 using RMT - LED drivers
- Ws28xx/WS2812B/WS2815B/WS2808/SK6812/Neo pixel using SPI - LED drivers
- YX5200/YX5300 - MP3 Player </devices>
Folder Structure
/devices/ contains devices that were cleaned up and should be working out of the box.
/src/devices_generated/ contains devices that were automatically ported from the NET Core IoT Libraries devices. They might not work or compile at this point, but are a good starting point if you need support for one of the devices contained here but missing from the /devices/ folder.
/src/nanoFramework.IoT.Device.CodeConverter contains the tool used to generate the devices from the NET Core IoT Libraries devices.
Other folders in /src contain nanoFramework projects that you can reference when creating/updating devices with provide functionality such as a StopWatach, a DelayHelper, BinaryPrimitives or various System.Device.Model Attributes.
Contributing
Important: If you plan to clean up the code in /src/devices_generated/, please copy your work to the /devices/ folder as the content of /src/devices_generated/ will be overwritten by the generator tool.
Please check the detail list of tips and tricks to facilitate the migration. The generator takes care of some heavy lifting but there is always some manual adjustments needed.
We are using the following structure for the bindings:
/devices
/Binding1
/samples
Binding1.Samples.nfproj
AssicateFile.cs
Program.cs
/test
BindingA.Test.nfproj
AssociatedTestFile.cs
Binding1.nfproj
Binding1.nuspec
version.json
OtherFiles.cs
OtherFiles.anythingelse
Readme.md
Using the Code Converter
The Code Converter allows to facilitate migration of .NET Core/.NET 5.0 code into .NET nanoFramework. More information and how to customize and run it here.
Porting a .NET nanoFramework binding to .NET IoT
Did you know that with minimal efforts you can make a nanoFramework binding available for .NET IoT as well? More information and guidance on the steps to take, can be found in this article.
Feedback and documentation
For documentation, providing feedback, issues and finding out how to contribute please refer to the Home repo.
Join our Discord community here.
Credits
The list of contributors to this project can be found at CONTRIBUTORS.
License
The nanoFramework Class Libraries are licensed under the MIT license.
Code of Conduct
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.
.NET Foundation
This project is supported by the .NET Foundation.