HowTo simple Arduino project
Simple Arduino sensor & acturator projects
The Arduino is an open hardware mircocontroller platform. A microcontroller can be used has the hart of a device that responds to an event by a certain action. Sensors are used to sense that a certain event or condition has occured. Acturators (including displays) are used to perform the action.
A project starts with the formulation of a short description of what one want to achieve. Questions that need to be answered are
- What do I want to sense?
- What do I want to act or display?
- With state or not? (Time words: after, when, ..)
An example of a stateless device is a light switch to switch a light on/off. An example of a device with a state is a lamp that is triggered by movement: the light goes on when some movement is detected and stays of until for 10 second no movement has been detected.
It is a good idea to draw a State Diagram, starting from the initial state and thinking about all the events/triggers that could happen. For each of this a line is drawn to a state. And then continue on with a state that has not been investigated yet. Whenever a state is reached that is equivalent to an earlier state, one can draw the line to that state.
There are three types of sensors that can be used with the Arduino to perform some kind of measurement or register an event in the environment. These are: on-off, analog, and serial.
Examples of on-off sensors are:
The Arduino can measure a voltage between 0V and 5V with 1024 levels.
- Potentiometer (to measure a rotary position)
- Temperature sensitive resitor (TMP36, LM35)
- Force sensitive resitor
Simple, but low resolution and/or accuracy.
There are sensors which return a numeric value by means of a serial protocol. A serial protocol consists of a sequence of pulses, where the lenght of the position of the pulses code a on-off (digital) value. The sequence of the on-off values represents a numeric value. Usually, the sensor is first send a signal to perform a measurement and then will respond with an answer. A number of commonly used protocols are:
Examples of such sensors are:
- DS18B20 temperature sensor (1-Wire)
- DHT-22 humidty and temperature sensor (proprietary)
- TC04 temperature sensor (I²C)
- TMP75 temperature sensor (I²C)
- HMC5883L: 3-axis digital compass (I²C)
- DS3231 Real Time Clock (I²C)
- Ping Ultrasonic Range Finder (proprietary, delay)
Choicing the right type of sensor
Often it is the case that more than one type of sensor can be used to measure something, like for example the temperature. The choice depends on the kind of measurement one wants to do. Think about the resolution, the accuracy, and the frequence of the measurement.
There are also three types of acturators that can be used in combination with the Arduino to cause some action or display some information: on-off, analog, and serial.
The Arduino can be used to switch something on or off. Examples are:
- Relay shield
The Arduino can also give an 'analog' signal. It is not really analog, but uses Pulse-width modulation (PWM) at a frequency of 500 pulses per second. The width of the pulses can be adjusted in 255 levels.
Examples of uses are:
The Arduino can also send digital information through a serial protocol. These are often used to display information on a display.
Types of displays are:
- MAX7219 and MAX7221 (SPI) led drivers (matrix)
- LCD displays (many)
- WS2812 RGB LED strips NeoPixel (LedPet)
Some examples are:
Initialization and loop.
- Read sensors
- Make decision (on state)
- Activate acturators
Everything in a single file and libraries.
- Include statements of libraries
- Pin definitions