4. Preparation Notes
We reuse the previous nRF24L01+ example (Simple Remote Control) with some changes i.e.:
for simplicity both nodes are now Nano-based, an LCD is attached to Node-2 for a better
communication and debugging experience.
In the next examples, the switch will be replaced with laser and PIR
sensors.
4 / 74
5. 5 / 74
I2C LCD1602
An LCD display that can display a max
of 16x2 characters.
As the pin resources of ucontroller is limited, your project may
be not able to use normal LCD shield after connected with a
certain quantity of sensors/actuators i.e. if you are doing more
than a simple project, you may be out of pins using a normal
LCD shield. With this I2C interface LCD module, you only need 2
lines (I2C) to display information.
Interface: connect the I2C LCD1602 to the I2C port of Arduino
(SDA - A4 and SCL - A5) and power this module with 5V.
Ref: arduino-info, elecrow
19. 19 / 74
LDR
LDR or Light Dependent Resistor (sometimes called
a photoresistor or photocell) is a two-terminal,
resistive component that increases or decreases its
resistance depending on the light it senses. An LDR
initially has a very high resistance. But, as light falls
on it, the resistance will drop, allowing more current
through.
Ref: Earthshine Design
20. 20 / 74
LDR Sensor Module
LDR sensor module is used to detect the intensity of
light. It might have both analog output pin and
digital output pin labelled as AO and DO
respectively on the board. When there is light, the
resistance of LDR will become low according to the
intensity of light. The greater the intensity of light,
the lower the resistance of LDR. The sensor has a
potentiometer knob that can be adjusted to change
the sensitivity of LDR towards light.
Ref: LDR Sensor Module
24. 24 / 74
PIR Sensor
A PIR (Passive Infra-Red) sensor is an electronic
sensor that measures infrared light radiating from
objects in its eld of view. Normally this type of
sensor would be used as a motion or proximity
sensor. Quite often they are referred to as: PIR,
Motion, Proximity, or Pyroelectric sensor.
The sensor in the PIR detects or "reads" infrared radiation "emitted"
from objects all around us. Each object with a temperature above
absolute zero will radiate infrared, even us humans, and even though we
mere humans cannot see this. Note that the PIR just uses a relatively
simple sensor - it is most de nitely not an IR camera!
Ref: Testing and Playing with PIR sensors @Tweaking4All
28. 28 / 74
LM35
LM35 is a linear temperature sensor with the output
voltage calibrated in centigrade celsius. 1 degree
celsius makes an output voltage of 10mV. So when
you have room temperature at 22C the LM35 gives
you a voltage of 220mV = 0.22V.
The sensor has only 3 pins: VCC which can be between +4V and +20V,
GND and Vout. Vout has to be connected to one of the analog inputs and
that's all - in most cases.
Ref: connecting an arduino with a LM35 temperature sensor @heliosoph
29. 29 / 74
DHT11
DHT11 is a temperature and humidity sensor with a
calibrated digital signal output.
The DHT11 sensor has four pins. Connect the rst pin on left of sensor
('VCC') to 5V of your board, the second pin ('Data') to a digital pin and
the fourth pin ('GND') to ground. When the connecting cable is shorter
than 20m, a 5K pull-up resistor between the second Pin of sensor and 5V
is recommended.
Ref: DHT11 Temperature and Humidity Sensor Example @arduino.org
32. #include "DHT.h"
#define DHTPIN 3
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.println(t);
}
32 / 74
DHT11
34. 34 / 74
Processing
Processing is a exible software sketchbook and a
language for learning how to code within the
context of the visual arts.
Since 2001, Processing has promoted software literacy within the visual
arts and visual literacy within technology. There are tens of thousands of
students, artists, designers, researchers, and hobbyists who use
Processing for learning and prototyping.
Ref: Processing.org
35. 35 / 74
Processing is an open source language/
development tool for writing programs in other
computers. Useful when you want those other
computers to talk with an Arduino, for instance to
display or save some data collected by the Arduino.
How to Work with Processing?
Write Arduino sketch as usual, except for input/output intended to
be retrieved from or sent to Processing
Write Processing program that receives/sends data from/to
Arduino
If you just want to control an Arduino board from a Processing program,
you may want to use the Arduino Library for Processing.
Ref: Arduino Playground - Processing
46. void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(A0));
// wait a bit for the analog-to-digital converter
// to stabilize after the last reading:
delay(2);
}
46 / 74
Arduino
47. import processing.serial.*;
Serial myPort; // The serial port
int xPos = 1; // horizontal position of the graph
float inByte = 0;
void setup () {
size(400, 300);
myPort = new Serial(this, "/dev/ttyUSB0", 9600);
myPort.bufferUntil('n');
background(0);
}
void draw () {
stroke(127, 34, 255);
line(xPos, height, xPos, height - inByte);
if (xPos >= width) {
xPos = 0;
background(0);
} else {
xPos++;
}
}
void serialEvent (Serial myPort) {
String inString = myPort.readStringUntil('n');
if (inString != null) {
inString = trim(inString);
inByte = float(inString);
println(inByte);
inByte = map(inByte, 0, 1023, 0, height);
//inByte = map(inByte, 0, 100, 0, height);
}
}
47 / 74
Processing
50. 50 / 74
Ultrasonic Sensor
HC-SR04 ultrasonic ranging sensor provides 2cm to
400cm of non-contact measurement functionality
with a ranging accuracy that can reach up to 3mm. It
is a very a ordable proximity/distance sensor that
has been used mainly for object avoidance in
various robotics projects.
Each HC-SR04 module includes an ultrasonic transmitter, a receiver and
a control circuit. It has 4 pins: VCC, GND, Trigger and Echo pin.
60. SR04 Sonar
Our previous case can be rearranged to make a simple DIY Sonar
(SOund Navigation And Ranging) system.
The following example was modi ed from Dejan Nedelkovski's code.
60 / 74
73. Refs/Resources
1. LDR Sensor Module Interface With Arduino
2. Using a Photocell @Adafruit
3. Photoresistor @ElectroSchematics
4. Testing and Playing with PIR sensors @Tweaking4All
5. Arduino Playground - Processing
6. Processing Foundation
7. Electronics - Processing.org
8. Typography, Strings and Drawing Text
9. Arduino library for DHT11DHT22, etc Temp & Humidity Sensors
10. A simple and con gurable plotting library for Processing
11. Clipart - Strain Gauge
73 / 74