Please, proceed carefully following the tips published in this blog, specially when Main Power is involved. I'm not responsible for any damages caused by what is written in this blog.
Thank you

Saturday, 29 August 2015

Data Acquisition - Remote Gas Detector

Now, it's time to connect a remote sensor to my new receiver and begin a real data acquisition.

I think I'll go back to my sensor gas prototype...I already made some experiments with it:

First experiment: a simple gas detector

I'm going to use it as a remote gas sensor with MQ-4 [Datasheet].

and a wireless RF-433 transmitter.

with a lot of wire, led and a push button to reset sensor status.


This is the fritzling design:

As well as Wireless transmitter and gas sensor, we could see a red led, a green led and a RGB led. On the left side of the schema, there is also a push button. Led are powered by Arduino 5V power line, protected by resistors...Arduino is powered by a 12V transformer just like the wireless transmitter, to ensure the best transmission power.

PIN 11: push-button

PIN A1: analogue pin linked to GAS sensor

PIN 9: wireless data transmission

PIN 12: red led for wireless activity indication
PIN 8: green led for data acquisition activity
PIN 3, 5 and 6: RGB led for showing system status
 - off: normal values;
 - yellow: an out of tolerance value under the danger threshold;
 - rosso: an out of tolerance value over the danger threshold;

Here is it:


When the system is powered up, the gas sensor warm up stage starts; this is necessary to ensure better precision...during this time, RGB led blinks.

Then, data acquisition starts.

Every second the system gets 10 samples data from the sensor (the green led flashes every second) and calculates the average...Every 5 seconds the average of the collected values is sent to the receiver (the red led flashes every 5 seconds).

When the average is out of tolerance, RGB led lights up.

The push buttons reset the system status and turns off the RGB led. If a value is out of tolerance and then other samples return to normal values, the led still lights on...to get the attention...only through the push button, led could be turned off.

The wireless data sent every 5 seconds is a text string with the following format:


VALUE is the calculated average, STATUS is a numeric value indicating the system status according to the following schema:

 - 1: ok;
 - 2: warning
 - 3: danger


You can download the complete Arduino Sketch from here:


As for the receiver, I used RADIOHEAD libraries to manage wireless transmitter.


- wireless receiver setup;

- status led setup;

- MQ-4 sensor warm up;

Main loop:

- First, the system checks the push button status...If it was pressed, the variable which manages the system status will be set to OFF;

- Then, the system read 10 samples from the gas sensor and calculates their average; during this time the green led lights up (PIN 8);

- Every 5 seconds the system calculates the average and set the system status according to this value; then, this value is sent to the receiver;

- In case of out of tolerance value, RGB status led (PIN 3, 5 e 6) will light up;

- The average value is sent to the receiver; during this time the green led (PIN 12) will light up;

And finally, here is a short video:

Saturday, 8 August 2015

Data acquisition - The Receiver

Let's get started with the first component: The Receiver.

Here is it still as a prototype

It's made up by an Arduino Uno Board, with the ethernet shield to get network access and the wireless RF433 receiver

Functionality and communication protocols

The wireless receiver receives messages sent by sensors and then route them towards WEB/APP server, using http protocol. It acts as a simple router.

Communication protocols are very simple and currently not secure, so for now this system cannot be in a public network.

The message sent by sensors is a character string made up in the following way:


where SENSOR is the name of the sensor; VALUE is the current value of the sensor and STATUS is a particular condition for the sensor (DANGER, WARNING, and so on...)

The receiver gets this string and send it to the WEB/APP server, using the following HTTP GET request:


where SERVERNAME is the domain in which WEB App is installed, PASSWORD is a secret key known also by the WEB/APP server and STRING is the sensor's data.

As already said, communication protocol is very simple and without ACK...for now it's just a prototype and it aims only to debug system


Fritzling Schema (approx)

PIN 2 OUTPUT for RF status led (RED), reporting wireless activity;
PIN 3 OUTPUT for ETH status led (GREEN), reporting ethernet activity;
PIN 5V to power up wireless received and led;
PIN GND linked to wireless receiver GND pin;
PIN 7 INPUT to receive wireless data;

The Ethernet shield is linked to Arduino UNO; all the system is powered up by external 5V.



- wireless receiver setup using RadioHead library;

- ethernet shield setup using standard Ethernet library; it this case we use a static IP (but you can use DHCP if your network provides it);

- status led setup;

Main Loop

- the main thread wait for a wireless message;

- after received a new message, RF status led lights up and the message is sent to WEB/APP server using HTTP request;

- during the http request, ETH status led lights up and it turns off after the HTTP response;

Here you can find source code for the receiver: DOWNLOAD

And here is a video about the receiver doing its job...

Saturday, 1 August 2015

My first project - data acquisition system

I started design my first data-acquisition system with Raspberry PI and Arduino. The idea is to have a sensors network which send data to a receiver which, through ethernet, send these data to WEB/APP server.

The main components are:

- one or more sensors
- a receiver
- a DB Server for storage purpouse
- a WEB/APP server to acquire data and let remote user monitoring the system

Here is the design:

More details:


They can send data in different ways:

- wireless RF-433 towards receiver
- ethernet towards receiver
- USB directly towards server

They can be Arduino board or Raspberry PI or others...
Depending on the type of communication, there can be other interface boards or control led...


It receives data via wireless RF-433 or via Ethernet
Through ethernet, it transmits data to WEB/APP server, for storage and monitoring purpose

It's built over an Arduino boards with Ethernet Shield and wireless RF-433 receiver. There are also control led.


It receives data from receiver through ethernet or from sensor directly connected on its USB port
It stores data on DB server
It runs a web application for remote monitoring

The WEP/APP server software is the world famous Apache HTTPD, installed on Raspberry, running Fedora linux distro.

The monitoring web application is written in PHP / HTML5 using Bootstrap framework, which make it responsive.


It stores data received from WEB/APP server.

The RDBMS is Mysql Community Edition installed on the same Raspberry of WEB/APP server