This document summarizes a presentation given by Reid Carlberg of Salesforce on building a DIY wireless sensor network. The presentation covered using Arduino, XBee, and Raspberry Pi devices connected over a wireless network to send and receive sensor data via REST APIs and a streaming API. It included details on components, wiring, communication protocols, and lessons learned from prototyping the system.
1. DIY Wireless Sensor Networks
18 Nov 2013, 9:00am, Dreamforce
Reid Carlberg, Salesforce.com, Director - Evangelism
@ReidCarlberg(Link)
Update: 30 Jan 2014 (a)
2. Safe harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties
materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results
expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be
deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other
financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any
statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new
functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our
operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any
litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our
relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our
service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to
larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is
included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent
fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor
Information section of our Web site.
Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently
available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions
based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these
forward-looking statements.
3. We’re Building a Wireless Sensor Network
REST API
XBee
Streaming API
Node JS
http://github.com/ReidCarlberg/DF13_WirelessSensorNetwork
4. Hands on making is the best way to learn
connected device app development.
5. Arduino – Open Source Prototyping Board.
ATmega328 Controller
32k of RAM
Easy to program (~C++)
No SSL.
Arduino Classes here Tues & Thurs
9. Bill Of Materials
Arduino Experimenter’s Kit: $85
Arduino XBee Shield: $25
XBee Pro Series 1 (2): $76
Raspberry Pi Starter Pack: $105
Xbee Adapter Kit: $10
Salesforce Developer Edition: FREE
9V Battery: $2
Total: $303
10. Breadboards
+/- conduct up and down.
#’s conduct side to side
A,b,c,d,e, etc don’t matter
Voltage goes to + (red)
Ground goes to – (blue)
Put component leads in different #
rows – up and down, not side to side
11. Wires
Red or Orange – Positive
Black or Green – Negative
Otherwise doesn’t matter
12. Polarity Sometimes Matters
Positive is voltage in.
Negative is voltage out.
Matters on: LED, TMP36
Doesn’t matter on: RESISTORS,
PIEZO
On an LED, the long lead
is POSITIVE.
17. Add Components to Breadboard
LED: Positive lead up
Positive Leads
TMP36: Flat side, right.
Put things in the F column
toward the center.
+
+
+
18. Add Components to Breadboard (optional view)
“Fritzing” Style illustration
Note the vertical bars on
right – polarity reversed!
Careful:
RED & BLUE
REVERSED
19. Add Resistors to Negative LED leads
Resistors connect
negative LED leads with
GROUND.
Remember Fritzing may
not match your board!
23. Connect TMP36 – PLEASE DOUBLE CHECK
Middle to A0
Top to - / Blue (Ground)
Bottom to + / Red
Polarity Matters here –
reversed wiring will result in a
VERY HOT TMP36.
24. Plug In The Battery!
Purple & Green Light = initializing.
Purple (flashing) = Xbee activity
Green = ready
Red = alarm
Disco Lights = DISCO
If you smell something burning your
TMP36 is wired wrong. Disconnect your
battery, wait for it to cool & try again.
25. Raspberry Pi in action
Connected to the network.
GPIO cable to breadboard
XBee to TTYAMA0
27. Communication Protocol
To Arduino
To Raspberry Pi
^Address:Messagen
REST format (single line)
Address = 2 char
{
Message = 5 char
“addr”:”A1”,
Specific Unit Ex: ^A1:ALARMn
“msg”:”hello”,
All Units Ex: ^00:DISCOn
“detail”:”tmp36,alarm,disco”
}
29. Lessons Learned
Prototype, not production.
Test with a meaningful # of devices.
Easy to set up race conditions.
Arduino is limited.
Simple communication protocols are better.