building blocks for iot devices
TRANSCRIPT
Building Blocks for IoT Devices
Anil GorthySoftware Engineer
linkedin.com/in/anilgorthy@ganilb
© Anil Gorthy
Components of IoT Devices
Controller, Sensor and Actuators
PhysicalObject Internet
© Anil Gorthy
A device that has sensors, actuators and uses wireless protocols to communicate
Created to solve a specific need for the consumer
IoT Devices
© Anil Gorthy
Source: IoT - The Networked Physical World http://dspace.mit.edu/handle/1721.1/86935
© Anil Gorthy
Tear-down of Philips Hue
Source: MIT Technology Review, 2014 © Anil Gorthy
Deeper Dive
© Anil Gorthy
Building Blocks
- microcontrollers- sensors- motors
Physical Computing
Device
Design Software
- industrial- interaction- visual
- build the device - use the device
- Bulb- Doorbell- IP camera- Thermostat
© Anil Gorthy
Typical ArchitectureSoftwareDevice
Server
GPIO / I2C
Micro-controller
Wi-Fi / BLE
ShieldSensor
© Anil Gorthy
Server
Messaging
RESTful API
Software
Arduino Uno WiFly Shield VoiceBox Shield
WiFi Talking Stephen Hawking
Device
Typical Architecture(Example)
© Anil Gorthy
- Start with a sketch
- Iterate on the design
- Create foamcore or cardboard mockups
- Later, 3D printed models
Industrial Design
Steps
- Tinkercad
- SolidWorks
- Rhino
- SketchUp
Tools
© Anil Gorthy
MicrocontrollersRapid prototyping
Quickly identify connectivity and controls
Power efficient
Built-in radios
C++, JavaScript or use littleBits which requires very little programming
Physical Computing
© Anil Gorthy
Arduino components
pins or connections
sensors - ways of getting info into your device, finding out things about the surroundings such as pressure, temperature, humidity, proximity
actuators - outputs for the device which let your device do something to the outside world such as motors, lights
shields - circuit boards that provide capabilities such as Wi-Fi, BLE, etc
IDE for programming - uses a simplified version of C++
Physical Computing
Connecting an Arduino
© Anil Gorthy
© Anil Gorthy
Let us connect a light bulb
Physical ComputingSoftware
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards.// Pin 11 has the LED on Teensy 2.0// Pin 6 has the LED on Teensy++ 2.0// Pin 13 has the LED on Teensy 3.0// give it a name:int led = 13;
// the setup routine runs once when you press reset:void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); }
// the loop routine runs over and over again forever:void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second} © Anil Gorthy
Arduino IDE Physical ComputingSoftware
© Anil Gorthy
Architecture - II
Source: IoT - The Networked Physical World http://dspace.mit.edu/handle/1721.1/86935
Software
© Anil Gorthy
Inspiration
Source: Dragon, http://www.digitalhabits.it/dragon-wireless-led-modular-lamp/
Two outputs
Light : 21 white 3000k 110 LEDs
Microprocessor8 Bit, 32 Mhz
One input
Device
© Anil Gorthy
Thank you
© Anil Gorthy