Errata

Making Things Talk

Errata for Making Things Talk, Second Edition

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page 78
in the blue box entitled "Modems, Hubs, Switches, and Routers"

in the blue box entitled "Modems, Hubs, Switches, and Routers", in the next to last paragraph beginning with "A switch is like a hub,..."

I believe that the last sentences should read:
"Objects attached to a hub *switch* don't get to see messages that aren't
addressed to them."

Note from the Author or Editor:
Correct. Please change the final sentence of the penultimate paragraph of the sidebar on page 78 to read:

"Objects attached to a switch don't get to see messages that aren't addressed to them."

Also, there's an unnecessary line break in the text after "addressed". Please remove it.

Anonymous  Jul 18, 2012  Mar 22, 2013
Printed
Page 121
Fig 4.4

picture and circuit diagram do not match, A0- A2 connected directly to 5v on breadboard picture

Note from the Author or Editor:
Correct. A corrected image for this has been sent to Adam Zaremba.

Anonymous  Jan 30, 2013  Mar 22, 2013
Printed, PDF, , Other Digital Version
Page 122
first code box

Arduino Ethernet API has changed. Change the line:


Server server;

to read

EthernetServer server;

Tom Igoe
Tom Igoe
 
Oct 06, 2011  Mar 22, 2013
Printed, PDF, , Other Digital Version
Page 123
First code box

Arduino Ethernet API has changed. Change the line:


Client client = server.available();

to read

EthernetClient client = server.available();

Tom Igoe
Tom Igoe
 
Oct 06, 2011  Mar 22, 2013
Printed
Page 124
first blue code box

Arduino Ethernet API has changed. Change the line:

Client client = server.available();

to:

EthernetClient client = server.available();

and in the second bluecode box, change:

void makeResponse(Client thisClient) {

to:

void makeResponse(EthernetClient thisClient) {

Tom Igoe
Tom Igoe
 
Oct 06, 2011  Mar 22, 2013
Printed
Page 124
Code example

Before (or indeed) after adding the lines in blue you'll need to declare

int lineLength = 0;

before the setup () method or you'll get an error when compiling.

Note from the Author or Editor:
Correct. In the first code block replace the following:

String requestLine = "";

with this:

int lineLength = 0; // length of the incoming text line

baronrouge  Jan 28, 2013  Mar 22, 2013
Printed
Page 125
first blue code box

Arduino Ethernet API has changed. Change the line:

void makeResponse(Client thisClient) {

to:

void makeResponse(EthernetClient thisClient) {

Tom Igoe
Tom Igoe
 
Oct 06, 2011  Mar 22, 2013
Printed, PDF
Page 133
Under "TextFinder Library"

Inclusion of TextFinder results in a "Error compiling" message in the following (and any other 1.0-beta4 sketch:


/*
Web client

This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13

created 18 Dec 2009
by David A. Mellis

*/

#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>


// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x25, 0xCA};
IPAddress server(173,194,33,104); // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;
TextFinder finder(client);

void setup() {
// start the serial library:
Serial.begin(9600);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for(;;)
;
}
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");

// if you get a connection, report back via serial:
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
}
else {
// kf you didn't get a connection to the server:
Serial.println("connection failed");
}
}

void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
if (client.connected()) {
finder.find("Results <b>"); // seek to the Results field
finder.find("of about <b>"); // skip past this
long value = finder.getValue(); // get numeric value
Serial.print(value);
Serial.println(" hits");

}

// if the server's disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();

// do nothing forevermore:
for(;;)
;
}
}

Note from the Author or Editor:
TextFinder needs to be updated. To fix this error, open the file TextFinder.h in libraries/TextFinder and change WProgram.h to Arduino.h. Save the changes to this file, then re-compile the sketch.

TextFinder has been partially incorporated in Arduino 1.0-rc1, though some of the method names have been changed. I'm working on updated code, which will be found on my gitHub repository when I'm done.

Anonymous  Sep 25, 2011 
Printed, PDF
Page 133
United States

Sketches will not compile with TextFinder as downloaded from playground/Code.
TextFinder Cannot find WProgram.h and Wprogram.h from 022 does not work.

Note from the Author or Editor:
TextFinder needs to be updated. To fix this error, open the file TextFinder.h in libraries/TextFinder and change WProgram.h to Arduino.h. Save the changes to this file, then re-compile the sketch.

TextFinder has been partially incorporated in Arduino 1.0-rc1, though some of the method names have been changed. I'm working on updated code, which will be found on my gitHub repository when I'm done.

Ted Lawson  Sep 26, 2011 
Printed
Page 135
secodn blue code box

Arduino Ethernet API has changed. Change the line:

Client client;

to:

EthernetClient client;

Tom Igoe
Tom Igoe
 
Oct 06, 2011  Mar 22, 2013
Printed
Page 143
first blue code box

Arduino Ethernet API has changed. Change the line:

Client client;

to:

EthernetClient client;

Tom Igoe
Tom Igoe
 
Oct 06, 2011  Mar 22, 2013
Printed
Page 160
second blue code box

Arduino Ethernet API has changed. Change the line:

Client client;

to:

EthernetClient client;

This change needs to be made on all the examples using the Ethernet library. The gitHub repo for the code has been updated. A separate mail has been sent to Adam Zaremba about this.

Tom Igoe
Tom Igoe
 
Oct 06, 2011  Mar 22, 2013
Printed
Page 201
Fritzing Schematic

Both TX/RX lines (yellow) connected to the XBee should move one row to the left to function.

Note from the Author or Editor:
Correct. A corrected version of this image has been sent to Adam Zaremba.

Markus Ulsass  Dec 03, 2011  Mar 22, 2013
Printed
Page 204
near top between if and else

the 2 lines between if and else need to be swapped in order. Lastsensor reading needs to be the result(0-1023) before being divided by 4 (0-255) so it can be compaired to the new sensor reading(0-1023)
Works great now.

Note from the Author or Editor:
Correct. Please change the code sample at the top of page 204 to read as follows:

// look for a change from the last reading
// that?s greater than the threshold:
if (abs(result - lastSensorReading) > threshold) {
lastSensorReading = result;
result = result/4; // divide by 4 to fit in one byte

Anonymous  Jan 02, 2012  Mar 22, 2013
Printed
Page 218
first blue code box

WiFi library API for Arduino has changed. Change the line:

Server server;

to

WiFiServer server;

Tom Igoe
Tom Igoe
 
Oct 07, 2011  Mar 22, 2013
Printed
Page 252
7th paragraph

In the top part of figure 7-14, you have chosen a LM7833 as voltage ragulator. This has the following pins:
1: INPUT
2: GND
3: OUTPUT

In the bottom part of the figure (breadboard view), the pin configuration is that of a LD1117-33V:
1: GND
2: OUTPUT
3: INPUT

Additionally, in the bottom part of the figure pin Vcc of the Xbee radio is conncted to +9V of the battery.

Note from the Author or Editor:
Correct. Please change the label on the regulator in the upper half of 7-14 from "LM7833 Voltage Reg" to "LD1117-33V Voltage Reg"

Anonymous  Jan 21, 2012  Mar 22, 2013
PDF
Page 270
right paragraph

The example covers a setup of five Sensors. The last sentence reads:

"Because each one takes up to 5 milliseconds to return a result, you?d need up to 250 milliseconds to make a complete scan of the space."

This doesn't add up (or, rather, multiply). Either each Sensor takes 50 ms (so 5*50=250) or the total should be 25 ms (5*5=25).

Note from the Author or Editor:
Correct. Please change the last sentence of the last paragraph on page 270 to read:

"Because each one takes up to 50 milliseconds to return a result, you?d need up to 250 milliseconds to make a complete scan of the space."

Philip Steffan  Feb 08, 2012  Mar 22, 2013
Printed, PDF
Page 278
caption of source code

In the source code located just below MATERIALS box.

Next, type:
SU,48\r
> "This sets the radio to 9600 bps."

should be changed "This sets the radio to 4800 bps."

Note from the Author or Editor:
Correct. Please change text to read "This sets the radio to 4800 bps."

Hyun-Gyu Kim  Feb 17, 2013  Mar 22, 2013
Printed
Page 386
Column 2, last paragraph

Twilio is now available in some European countries, see http://www.twilio.com/blog/2011/10/twilio-launches-in-europe-opens-office-london.html

Note from the Author or Editor:
Yes, this is indeed true.

Tom Igoe
Tom Igoe
 
Oct 30, 2011 
PDF
Page 393
1st paragraph

SMS character limit is 160, not 140, as claimed in the book.
(140 is Twitter's limit - so the message and the sender can fit into 160 characters:9

Note from the Author or Editor:
Correct. Please change all references to "140 characters" in page 393, paragraph 2 to "160 characters".

Philip Steffan  Mar 01, 2012  Mar 22, 2013
PDF
Page 423
Bit Masking section, logic table in the AND operation

In the description on the AND operation

if the two bits are equal, the result is 1. Otherwise, it's 0:
1 & 1 = 1
0 & 0 = 1


should be changed
0 & 0 = 0

Note from the Author or Editor:
Correct. Change text to read as follows:

if the two bits are equal, the result is 1. Otherwise, it's 0:

1 & 1 = 1

0 & 0 = 0

Ethan Hyun-Gyu Kim  Feb 23, 2013  Mar 22, 2013
PDF
Page 436
contents of right panel (A Web-Based Device)

In the description part of A Web-Based Device,

The blinds can be positioned variably, in a range from 1 to 10.

should be changed to 0 to 100 or 0 to 10, because the URL is written below.

To set a window's blind halfway down:
http://mywindows.example.com/window/2/50

To close them all:
http://mywindows.example.com/window/all/0

OR URL should be changed.

Note from the Author or Editor:
Correct. Please change text to read as follows:

To set a window's blind halfway down:

http://mywindows.example.com/window/2/5

Ethan Hyun-Gyu Kim  Feb 24, 2013  Mar 22, 2013
PDF
Page 436
the 2nd paragraph in the right panel(section)

Just follow the basic RESTful style of /object/attribute/newValue to get the value of a parameter,

URL should be changed

/object/attribute/

Note from the Author or Editor:
Correct. Please change sentence to read as follows:

If you don't like these particular addressing schemes, you could make your own, of course, as long as you followed the basic RESTful style of /object/attribute/ to get the value of a parameter, and /object/attribute/ newValue to set it.

Ethan Hyun-Gyu Kim  Feb 24, 2013  Mar 22, 2013