ROBÔ DE AQUISIÇÃO DE DADOS

DATA ACQUISITION ROBOT

Summary:

This Project aims to build a robot application for automating the collection of environmental aspects. The robot supports remote monitoring of performance and maintenance of various environmental factors in any area. Details of the design, configuration and use of the robot in the data acquisition system (DAQ) are provided here. Sensors provide accurate and reliable real-time data necessary for autonomous monitoring and control of any type of area or industry. The data acquired by the proposed system can be accessed, plotted and analyzed remotely. This provides a fully automated solution for monitoring and controlling remote locations.

Protótipo de robô Land Rover baseado em Arduino usado para aquisição de dados de sensores

Fig. 1: Arduino-based Land Rover robot prototype used for sensor data acquisition

Description:

Prerequisites and equipment:

You will need the following:

  1. An Arduino board or Arduino clone (here's a guide if you need it)

  2. Two DC motors.

  3. A 5v TTL-UART Bluetooth module.

  4. Robot chassis and wheels that adapt to the size of the chassis and motor.

  5. Arduino IDE for programming.

Block Diagram:

Diagrama de blocos do robô de aquisição de dados de sensores baseado em Arduino

Fig. 2: Block diagram of Arduino-based sensor data acquisition robot

Our goal in this project is to collect sensor data and store it for future analysis. There are many techniques used for data acquisition such as EEPROM, SD card. Here we will use internet-based storage, which is a reliable and efficient way of analyzing any sensor data.

Hardware assembly:

Make robot connections as indicated in the circuit diagram. Assemble the robot with the selected parts and connect the motors to the circuit. Optocouplers are used to protect Arduino from high voltage hazards. Note: The RX of Arduino must be connected to the TX of the Bluetooth module and the TX of the Arduino must be connected to the RX of the Bluetooth module.

Working:

In this Robot we added internet functionality using a GSM modem that provides GPRS connection. The section below will explain how to send sensor readings via an HTTP command to a website. We use the website ThingSpeak, which provides a simple and free API for logging data from a variety of sensors.

Gráfico mostrando variações de intensidade de luz detectadas por LDR no robô Arduino de aquisição de dados

Fig. 3: Graph showing light intensity variations detected by LDR on the Arduino data acquisition robot

Gráfico mostrando as variações de umidade registradas pelo sensor DHT11 no robô Arduino de aquisição de dados

Fig. 4: Graph showing humidity variations recorded by the DHT11 sensor on the Arduino Data Acquisition Robot

Gráfico mostrando as variações de temperatura registradas pelo sensor DHT11 no robô Arduino de aquisição de dados

Fig. 5: Graph showing temperature variations recorded by the DHT11 sensor on the Arduino Data Acquisition Robot

These are some examples of graphics that were generated from sensor data sent from the robot to the channel on the ThingSpeak website:

Thing Speak Setup

Here are the steps needed to make this example work with the ThingSpeak website:

  1. Create an account with ThingSpeak (Sign Up).

  2. Create a new channel

Captura de tela do site Thingspeak mostrando a criação de um canal para aquisição de dados

Fig. 6: Screenshot from the Thingspeak website showing the creation of a channel for data acquisition

  1. Copy the WRITE API KEY from the APIKEYS tab of your new channel.

  2. Set up your new channel (see the Channel Settings tab).

    • Add three fields to your channel.

    • Name the channel and each of the fields.

    • Save the new channel settings.

    • Note: Channel and field names are used to label data in charts. These names have no effect on the API and can be changed at any time.

Here are the channel settings used for this Robot:

Captura de tela do site Thingspeak mostrando a adição de campos de intensidade de luz, temperatura e umidade no canal criado para dis

Fig. 7: Screenshot from the Thingspeak website showing the addition of light intensity, temperature and humidity fields in the channel created for displaying sensor data

Library includes

In addition to the existing libraries, we must now also include the Timerone, Soft serial and DHT libraries in the draft using the #include compiler directive.

#include

#include

#include

The ThingSpeak API limits data upload to a maximum of once every 15 seconds. Additionally, it takes some time to establish the GPRS connection before any data can be sent. For this reason, we set Timer1.initialize(4000000); //sets a 4 second timer. And create a variable for 5 called tick_count so that readings are taken once every 20 seconds. (units are microseconds)

To set up:

In addition to the existing configuration code for robotic controls, we must do some initialization in GSM.

GPRS.write(“AT+CGATT=1”); //Attach a GPRS service

GPRS.write(“AT+CGDCONT=1,”IP”,”airtelgprs.com””); //Set PDP context

GPRS.write(“AT+CSTT=”airtelgprs.com”,””,”””); //Set access point, user ID and password

GPRS.write(“AT+CIICR”); //Activating wireless connection with GPRS takes time

GPRS.write(“AT+CIFSR”); // Get the local IP address. In fact, it's not necessary.

GPRS.write(“AT+CIPSTATUS”); // Gets the status of the PS connection. Must be 'IP STATUS'. // This can be used as a checkpoint.

GPRS.write(“AT+CIPHEAD=1”); // Add headers to the HTTP request.

GPRS.write(“AT+CDNSORIP=1”); //Indicates whether the connection request will use IP address (0) or domain name (1)

GPRS.write(“AT+CIPSTART=”TCP”,”api.thingspeak.com”,”80″”); //Start TCP connection (mode, IP address/name, port) PS if it returns 'CONNECT OK' then you are in luck

GPRS.write(“AT+CIPSEND”);//Informing the GSM module that we are going to send the data

Data collection:

Light = analog reading (A0); //Reading Light intensity

Reading temperature or humidity takes about 250 milliseconds! Sensor readings can also be up to 2 seconds old (it's a very slow sensor)

h = dht.readHumidity; // Read temperature as Celsius (the default)

t = dht.readTemperature ;

Sending data to Thing Speak:

itoa (Light,LIGHT_data,10);

itoa (h,HUMID_dados,10);

itoa (t,TEMP_dados,10); //Function to convert integer to string.

GPRS.write(“AT+CIPSEND”); //Informing the GSM module that we will send the data

GPRS.write(“GET /update?key=XXXXXXXXXXXXXXXXXXXXXX= “); // Switch to your API KEY.

GPRS.write(LIGHT_data);

GPRS.write(“&campo2= “);

GPRS.write(HUMID_dados);

GPRS.write(“&campo3= “);

GPRS.write(TEMP_data);

GPRS.write(”HTTP/1.1″); //And finally here comes the actual HTTP request //Next are the headers that must be set.

GPRS.write(“Host: api.thingspeak.com”);

GPRS.write(“Connection: keep-alive”);

GPRS.write(“Accept: */”);

GPRS.write(“*”);

GPRS.write(“Accept-Language: en-us”);

GPRS.write(0x1A);//Informs the GSM module that we will no longer send data

//char ctrlZ = 0x1A;

Circuit diagrams

Circuit-Diagram-Arduino-Based-Control-Circuitry-Used-Data-Acquisition-Robot

Project video

Back to the blog

Leave a comment

Comments need to be approved before publication.