Este tópico mostra um trabalho para quem se aventura com Arduino ou para quem tem necessidades de resolver problemas de engenharia de forma low cost, nomeadamente a monitorização de parâmetros físicos como, a temperatura, a humidade relativa do ar, vibrações, a distância ou mesmo a luminosidade. É abordado este tema porque existem um leque vasto de sensores para as placas da Arduino. Foi feito então uma rotina simples em programação em C através do Dev-C++ para adquirir dados via USB.
Para tal usou-se um potenciómetro e uma placa da DFRduinoRomeo, como se vê nas fotografias (montagem standard).
A ideia é usar um potenciómetro polarizado a 5 V para variar a tensão eléctrica (fio amarelo conectado no canal ANALOG IN 0), assim como podia ser um sensor comercial. Pois gravar esta informação, variação de voltagem para o computador numa extensão .csv para fácil manipulação da mesma ou mesmo em txt.
Para isso compilou-se e enviou-se o seguinte código para a placa do DFRduinoRomeo.
int analogPin = 0; int val; void setup() { Serial.begin(38400); } void loop() { val = analogRead(analogPin); Serial.println(val); }
Quanto à rotina em C, desenvolveu-se o seguinte código.
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <time.h> void layout(); int main(int argc, char *argv[]) { system("COLOR F1"); FILE *ComPort; FILE *gravacao; DCB dcb; int n, i = 0, r =1, voltage; char name[100], COM[4]; dcb.BaudRate = CBR_9600; dcb.ByteSize = 8; dcb.Parity = 0; dcb.StopBits = 1; dcb.fDtrControl = DTR_CONTROL_ENABLE; layout(); printf("\tNome do ficheiro.csv:\t"); scanf("%s",&name); printf("\tPort:\t"); scanf("%s",&COM); ComPort = fopen(COM,"r"); gravacao = fopen(name,"w"); printf("\tNumero de aquisicao:\t"); scanf("%d",&n); if(ComPort) { GetCommState(ComPort, &dcb); while(i<n) { i = i + 1; fscanf(ComPort,"%d",&voltage); printf("\t\t Tensao = %2.2f (V)\n",(float)(voltage/1023.00)*5.00); fprintf(gravacao," %2.2f \n",(float)(voltage/1023.00)*5.00); } fclose(gravacao); } fclose(ComPort); printf("Aquisicao esta conluida\n"); system("PAUSE"); } void layout() { printf("__________________________________________________________________\n\n"); printf("Dev-C++ - Programacao em C - DFRduinoRomeo - TECHO-PORTUGAL\n\n"); printf("__________________________________________________________________\n\n"); return; }
Ficando com este aspecto:
Permite ao utilizador escolher o nome do ficheiro para a gravação, a porta USB onde o Arduino está ligado e o número de aquisições. Desta forma, é possível aceder aos dados e manipula-los.
Claro consoante os problemas de engenharia ou da física que está por detrás, é preciso redefinir ao código, nomeadamente o Baud rate. Quanto à placa DFRduinoRomeo é considerado pelo autor um dispositivo excelente para este tipo de situações.
Por fim, a ideia da Tech-Portugal de partilhar este código é fundamental para que haja interessados que continuem a melhorar este tipo de ferramentas, mostrar as suas aplicações e claro, partilhar com os leitores, visto que estamos todos na mesma linha.