Skip to main content

Internet of Things (IoT) & Embedded Integration

A comprehensive collection of notes on IoT protocols, software frameworks, hardware platforms, and integration techniques.

Software Frameworks & Libraries

Go (Golang)

  • kidoman/embd
    • License: Apache 2.0 | Language: Go | Tech: HAL for Embedded
    • Hardware abstraction layer for boards like Raspberry Pi, BeagleBone Black, etc.
  • stianeikeland/go-rpio
    • License: MIT | Language: Go | Tech: Raspberry Pi GPIO
    • Native Go library for GPIO, SPI, and I2C on Raspberry Pi without C dependencies.
  • dhiltgen/go-owfs
    • Language: Go | Tech: 1-Wire / OWFS
    • Client library for interacting with One-Wire File System (OWFS).
  • tinygo-org/tinygo
    • Go compiler for microcontrollers and WebAssembly.

JavaScript (Node.js)

  • johnny-five
    • rwaldron/johnny-five
    • Language: JavaScript | Tech: Firmata, Robotics
    • The original JavaScript Robotics & IoT Framework.
  • Samsung/iotjs
    • License: Apache 2.0 | Language: C, JavaScript | Tech: JerryScript
    • Lightweight JavaScript platform for resource-constrained IoT devices.
  • Gobot
    • Next generation robotics framework with support for various platforms.

Hardware Utilities

  • themadinventor/esptool
    • License: GPLv2+ | Language: Python | Tech: ESP8266/ESP32 Flashing
    • Essential serial utility for flashing Espressif chips.
  • pellepl/spiffs
    • License: MIT | Language: C | Tech: SPI Flash File System
    • Wear-leveling file system designed for SPI NOR flash.

Communication Protocols

Bus Types & Networks

ProtocolDescriptionPinsCharacteristics
I2CInter-Integrated CircuitSDA, SCLSynchronous, 127/1023 nodes, up to 5Mbps
SPISerial Peripheral InterfaceSCLK, MOSI, MISO, SSFull-duplex, synchronous, higher speed
1-WireSingle wire dataDQ, GNDLow speed (16.3kbps), long distance (300m)
UARTUniversal AsyncTX, RXAsynchronous, point-to-point

Infrared (IR)

Hardware Platforms & Components

Microcontrollers (MCU)

  • ESP8266 / ESP32: Popular WiFi/BT integrated SoCs.
  • ATmega328 (Arduino Uno): Mainstream 8-bit MCU.
  • ATtiny85 (Digispark): Ultra-small USB development board.

Sensors & Modules

  • DS18B20: Digital temperature sensor (1-Wire).
    • Uses 4.7kΩ pull-up resistor. Supports parasitic power mode.
  • HC-SR04: Ultrasonic distance sensor (Trig/Echo).
  • OV7670: VGA camera module (640x480).
  • L293D: Quadruple high-current half-H drivers for motors.
  • SN74HC595: 8-bit shift register with output latches.

USB-Serial Bridges

Common VID/PID for serial converters:

  • PL-2303: VID 067B, PID 2303. Prolific Driver.
  • CH340G: Popular on low-cost Arduino clones.
  • FT232H: High-speed USB to multi-protocol (UART, SPI, I2C, JTAG).

Tools & Troubleshooting

Kernel & Device Logs

# Linux: Follow kernel logs
dmesg -wH

# macOS: Follow kernel logs
watch -n 0.1 "sudo dmesg | tail -n 20"

USB Management

Specialized IoT Projects

Resources