Guias · 18 min de leitura

Experimentos de ciências com Arduino: coleta de dados, tabelas e gráficos

Experimentos de ciências com Arduino para a sala de aula: 3 práticas prontas com DS18B20, LDR e HC-SR04, código que gera CSV, Plotter Serial, gráficos, um plano de 2 aulas e relatório.

Fazer experimentos de ciências com Arduino se resume a seis passos: primeiro os alunos escrevem uma pergunta mensurável e uma hipótese, depois ligam um sensor adequado ao Arduino; a placa escreve cada leitura com a marcação de tempo na porta serial no formato “zaman_ms,deger” (tempo em ms, valor), a curva é acompanhada ao vivo no Plotter Serial, as linhas do Monitor Serial são copiadas para uma planilha como arquivo CSV, um gráfico é feito a partir da tabela e a conclusão é escrita comparando o gráfico com a hipótese. Ao contrário da medição feita à mão com termômetro e cronômetro, o Arduino coleta 60 pontos em 10 minutos em intervalos iguais, sem se cansar e sem erros de leitura. Assim os alunos ficam livres para interpretar os dados em vez de copiar números.

Este post traz três experimentos prontos que se encaixam nas aulas de ciências, física e biologia: a curva de resfriamento da água quente com um DS18B20, como a intensidade da luz muda com a distância usando um LDR e o movimento em um plano inclinado com um HC-SR04 (mais uma medição da velocidade do som). Cada experimento vem com a pergunta, as variáveis, os materiais, um resumo das ligações, um código que compila, um modelo de tabela de dados e o resultado esperado. Depois vêm os passos do Plotter Serial e da passagem dos dados para uma planilha, uma tabela de erros de medição e calibração, um roteiro de 2 × 40 minutos, um modelo curto de relatório de laboratório e notas de segurança. Os exemplos partem desta suposição: digamos que você tenha uma turma de 24 alunos, eles trabalham em 6 grupos de 4 e cada grupo tem um Arduino Uno e um computador. Não entramos aqui nos detalhes de ligação de cada sensor; deixamos o link para o guia de cada sensor onde ele aparece.

Experimentos de ciências com Arduino em 6 passos: da pergunta à conclusão

  1. Pergunta e hipótese: Escolha uma pergunta mensurável (“A água quente esfria mais rápido nos primeiros 5 minutos ou nos 5 seguintes?”) e peça aos alunos que escrevam a hipótese no formato “Se … então …, porque …”. A hipótese deve indicar uma direção ou um número; “muda” não basta.
  2. Variáveis: Peça aos alunos que anotem em uma tabela a variável independente (o que você muda: tempo, distância, inclinação), a variável dependente (o que o sensor mede: temperatura, luz, posição) e as variáveis controladas (quantidade de água, a mesma lanterna, a mesma tábua). Quando um experimento dá errado, a causa costuma ser uma variável que não foi mantida constante.
  3. Sensor e código: Ligue o sensor e carregue o código. O código escreve cada linha no formato “zaman_ms,deger”; a primeira linha é um cabeçalho com o nome das colunas. A placa marca o tempo com o próprio contador millis(), então não é preciso cronômetro.
  4. Acompanhamento ao vivo: Antes da rodada gravada, acompanhe uma rodada curta de teste no Plotter Serial. Se a curva saltar de forma inesperada (fio solto, sombra, mão encostando em algo), corrija na hora; perceber depois da medição é tarde demais.
  5. Dados e tabela: Copie as linhas do Monitor Serial, salve como arquivo .csv, importe para uma planilha e acrescente a conversão de unidade (ms → s) e as colunas calculadas.
  6. Gráfico e conclusão: Faça um gráfico XY (de dispersão), coloque nome e unidade nos dois eixos, compare o gráfico com a hipótese e escreva a conclusão em uma frase baseada nos dados: “Nossa hipótese foi ou não foi confirmada, porque …”.

Lista de materiais e resumo das ligações

MaterialPor grupoTotal da turma (6 grupos)Experimento
Arduino Uno + cabo USB16Todos
Computador (com a Arduino IDE instalada)16Todos
Protoboard + 10 jumpers macho-macho1 conjunto6 conjuntosTodos
Sonda DS18B20 à prova d'água + resistor de 4,7 kΩ1 + 16 + 61 Resfriamento
Caneca resistente ao calor (cerca de 250 mL) + copo medidor1 + 16 + 61 Resfriamento
Água quente (cerca de 60 °C, distribuída pelo professor)200 mL1,2 L + reserva1 Resfriamento
LDR + resistor de 10 kΩ1 + 16 + 62 Luz
Lanterna LED pequena ou lanterna do celular + trena1 + 16 + 62 Luz
Sensor de distância HC-SR04163 Movimento
Tábua lisa de 1–1,5 m, 2–3 livros, carrinho de brinquedo + papelão de 10 × 10 cm1 conjunto6 conjuntos3 Movimento
Termômetro de laboratório (para comparação)—1Calibração
ExperimentoSensorLigação no Arduino UnoPeças extras e observações
1 ResfriamentoSonda DS18B20Vermelho → 5V, preto → GND, amarelo (DQ) → D2Resistor de 4,7 kΩ entre o fio amarelo e o 5V; bibliotecas OneWire e DallasTemperature
2 LuzLDRUm terminal → 5V, o outro terminal → A0Resistor de 10 kΩ entre A0 e GND (divisor de tensão); não precisa de biblioteca
3 Movimento e somHC-SR04VCC → 5V, GND → GND, Trig → D9, Echo → D10Sem peças extras; mantenha livre o cone de cerca de 15° à frente do sensor

Experimento 1: curva de resfriamento da água quente (DS18B20)

Sonda de temperatura DS18B20 à prova d'água com ponta de aço inox
A ponta metálica da sonda DS18B20 à prova d'água pode ir direto na água; com seus fios vermelho, preto e amarelo, ela se liga a um único pino digital do Arduino.

Pergunta: A água quente esfria a mesma quantidade a cada minuto ou o resfriamento fica mais lento com o tempo? Exemplo de hipótese: “O resfriamento é rápido enquanto a diferença de temperatura entre a água e o ambiente é grande e fica mais lento à medida que a diferença diminui.” A variável independente é o tempo e a variável dependente é a temperatura da água; as variáveis controladas são a quantidade de água (200 mL), o tipo de recipiente, o lugar dele na mesa e a temperatura ambiente. Você também pode dar uma segunda pergunta aos grupos: há diferença entre uma caneca com tampa e uma sem tampa, ou entre um copo de vidro e um de papel? Aí o recipiente vira a variável independente, dois grupos medem ao mesmo tempo e comparam suas curvas. Para as ligações e a instalação das bibliotecas, veja o guia do DS18B20. Se você só tem um DHT11, nunca o coloque na água: o equivalente seguro com o DHT11 é aquecer o sensor na mão por um minuto, deixá-lo sobre a mesa e medir como ele esfria no ar (guia do DHT11).

C++ (Arduino IDE)
1// Deney 1: Sıcak suyun soğuma eğrisi / Experiment 1: cooling curve of hot water
2// Kütüphaneler: OneWire + DallasTemperature / Libraries: OneWire + DallasTemperature
3#include <OneWire.h>
4#include <DallasTemperature.h>
5
6const int ONE_WIRE_PIN = 2;                // DS18B20 veri (DQ) pini / data (DQ) pin
7const unsigned long INTERVAL_MS = 10000;   // 10 saniyede bir ölçüm / one reading every 10 s
8const bool PLOTTER_MODE = false;           // true: Serial Plotter için yalnız değer / value only for Serial Plotter
9
10OneWire oneWire(ONE_WIRE_PIN);
11DallasTemperature sensors(&oneWire);
12unsigned long startMs = 0;
13unsigned long lastMs = 0;
14
15void setup() {
16  Serial.begin(9600);
17  sensors.begin();
18  if (!PLOTTER_MODE) {
19    Serial.println("zaman_ms,sicaklik_C");  // CSV başlık satırı / CSV header line
20  }
21  startMs = millis();
22  lastMs = startMs - INTERVAL_MS;           // ilk ölçüm hemen / first reading right away
23}
24
25void loop() {
26  unsigned long now = millis();
27  if (now - lastMs < INTERVAL_MS) {
28    return;                                 // daha zamanı gelmedi / not time yet
29  }
30  lastMs += INTERVAL_MS;                    // kaymayan zamanlama / drift-free timing
31
32  sensors.requestTemperatures();            // ölçümü başlat (~750 ms) / start conversion (~750 ms)
33  float tempC = sensors.getTempCByIndex(0);
34  if (tempC == DEVICE_DISCONNECTED_C) {     // sensör yanıt vermedi / sensor did not respond
35    return;
36  }
37
38  if (PLOTTER_MODE) {
39    Serial.print("sicaklik_C:");
40    Serial.println(tempC, 2);
41  } else {
42    Serial.print(now - startMs);            // deney başından beri ms / ms since start
43    Serial.print(",");
44    Serial.println(tempC, 2);
45  }
46}
Tempo (s)Temperatura da água T (°C)Temperatura ambiente T_amb (°C)Diferença ΔT = T − T_amb (°C)Razão restante ΔT / ΔT₀
0………1,00
60…………
120…………
300…………
600…………
900…………
1200…………

O código escreve uma linha a cada 10 segundos, então uma rodada de 20 minutos dá 120 linhas. O tempo vem do contador millis() da placa e, como exatamente 10.000 é somado a lastMs a cada vez, as leituras não se deslocam com o tempo; a técnica está explicada no post sobre millis() e delay(). Coloque PLOTTER_MODE como true no início do código e a coluna de tempo some, assim o Plotter Serial desenha só a temperatura. O modelo acima é a tabela-resumo do relatório, enquanto os dados completos ficam no arquivo CSV; meça a temperatura ambiente no ar com o mesmo sensor no início e anote. Resultado esperado: A curva não é uma reta, mas uma curva que vai ficando mais plana: a temperatura cai rápido nos primeiros minutos e depois a queda fica mais lenta. É a lei de resfriamento de Newton: a taxa de resfriamento é proporcional à diferença de temperatura entre o objeto e o ambiente. Os alunos que calcularem a última coluna vão ver que a diferença diminui mais ou menos na mesma proporção em intervalos de tempo iguais; digamos que a diferença caiu pela metade nos primeiros 8 minutos, então ela cai pela metade de novo nos 8 seguintes. Uma caneca com tampa esfria mais devagar, porque se perde menos calor por evaporação. Em biologia, o mesmo experimento repetido com recipientes pequenos e grandes leva a uma discussão sobre por que animais pequenos perdem calor mais rápido.

Experimento 2: intensidade da luz e distância (LDR)

Sensor de luz LDR (fotorresistor)
A resistência de um LDR cai quando a luz aumenta. Em um divisor de tensão com um resistor de 10 kΩ, a entrada A0 do Arduino transforma essa variação em um número entre 0 e 1023.

Pergunta: Como a intensidade da luz diminui à medida que você se afasta de uma fonte de luz; quando a distância dobra, a luz cai para a metade ou para um quarto? Exemplo de hipótese: “Quando a distância dobra, a intensidade da luz cai para um quarto.” A variável independente é a distância da lanterna ao LDR (10, 15, 20, 30, 40 e 50 cm), a variável dependente é o valor lido em A0; as variáveis controladas são a mesma lanterna, as mesmas pilhas, a lanterna apontada de frente para o LDR e a luz ambiente. Faça o experimento com as persianas fechadas e, se possível, com as luzes da sala reduzidas; com luz ambiente forte, a contribuição da lanterna se perde nas distâncias maiores. Com esta ligação, a leitura sobe quando a luz aumenta; a ideia por trás do divisor de tensão está no guia do LDR. Deslize a lanterna ao longo da trena, espere 5 segundos em cada distância até o valor se estabilizar e anote na tabela três valores seguidos do Monitor Serial. No início, faça uma leitura com a lanterna desligada: esse é o valor de fundo da sala. Se o valor na maior distância estiver muito perto do fundo, deixe essa distância fora do gráfico.

C++ (Arduino IDE)
1// Deney 2: Işık şiddeti ve mesafe / Experiment 2: light intensity and distance
2// Bağlantı: 5V - LDR - A0 - 10 kΩ - GND / Wiring: 5V - LDR - A0 - 10 kΩ - GND
3const int LDR_PIN = A0;                    // bölücünün orta noktası / divider midpoint
4const unsigned long INTERVAL_MS = 500;     // yarım saniyede bir satır / one line every 0.5 s
5const int SAMPLES = 16;                    // ortalama için örnek sayısı / samples per average
6const bool PLOTTER_MODE = false;           // true: Serial Plotter için yalnız değer / value only for Serial Plotter
7
8unsigned long startMs = 0;
9unsigned long lastMs = 0;
10
11int readAverage() {
12  long sum = 0;
13  for (int i = 0; i < SAMPLES; i++) {
14    sum += analogRead(LDR_PIN);             // 0 (karanlık) ... 1023 (aydınlık) / dark ... bright
15    delay(2);
16  }
17  return (int)(sum / SAMPLES);              // gürültüyü azaltır / reduces noise
18}
19
20void setup() {
21  Serial.begin(9600);
22  if (!PLOTTER_MODE) {
23    Serial.println("zaman_ms,ldr_ham");     // CSV başlık satırı / CSV header line
24  }
25  startMs = millis();
26  lastMs = startMs - INTERVAL_MS;           // ilk ölçüm hemen / first reading right away
27}
28
29void loop() {
30  unsigned long now = millis();
31  if (now - lastMs < INTERVAL_MS) {
32    return;
33  }
34  lastMs += INTERVAL_MS;
35
36  int raw = readAverage();
37  if (PLOTTER_MODE) {
38    Serial.print("ldr_ham:");
39    Serial.println(raw);
40  } else {
41    Serial.print(now - startMs);            // deney başından beri ms / ms since start
42    Serial.print(",");
43    Serial.println(raw);
44  }
45}
Distância d (cm)1 / d² (1/cm²)Leitura 1Leitura 2Leitura 3Média brutaResistência do LDR (Ω)
Lanterna desligada—……………
100,0100……………
150,0044……………
200,0025……………
300,0011……………
400,0006……………
500,0004……………

A cada meio segundo, o código escreve a média de 16 leituras, o que suaviza a pequena oscilação dos valores isolados de analogRead. Para calcular a resistência do LDR, se a média bruta estiver na coluna F, digite =10000*(1023-F3)/F3 na coluna G e arraste para baixo (para um resistor fixo de 10 kΩ e o LDR ligado ao 5V). Resultado esperado: A leitura cai à medida que a distância aumenta, rápido de perto e devagar mais longe. Mas o valor bruto não cai para um quarto entre 10 cm e 20 cm, porque o número bruto não é a intensidade da luz, e sim uma medida da tensão do divisor. Para ver a lei do inverso do quadrado, coloque a distância e a resistência do LDR em um gráfico com os dois eixos logarítmicos: os pontos se alinham mais ou menos em uma reta. A intensidade da luz é inversamente proporcional ao quadrado da distância, e a resistência do LDR é aproximadamente inversamente proporcional à intensidade da luz elevada a uma potência γ; por isso a inclinação da reta não dá 2, e sim 2 × γ. Nos LDRs comuns, γ costuma ficar entre 0,5 e 0,9, então espere uma inclinação entre 1 e 1,8. Em uma aula de física do ensino médio, essa é uma boa porta de entrada para a pergunta “como o comportamento do próprio instrumento de medida afeta o resultado?”

Um LDR não é um instrumento de medida linear, e dois LDRs podem dar valores diferentes sob a mesma luz. Não apresente os valores brutos como se fossem lux e não os compare diretamente entre os grupos; cada grupo deve fazer sua própria curva com seu próprio LDR. A lei do inverso do quadrado também só vale para uma fonte pequena (pontual) e em distâncias muito maiores que a própria fonte: não meça a 5 cm de uma luminária de mesa larga; trabalhe com uma lanterna LED pequena, de 10 cm para cima.

Experimento 3: movimento em um plano inclinado e velocidade do som (HC-SR04)

Sensor ultrassônico de distância HC-SR04
O HC-SR04 emite um pulso sonoro e mede quanto tempo o eco leva para voltar. Com cerca de 16 leituras por segundo, dá para montar o gráfico posição-tempo de um objeto que se aproxima.

Pergunta: Um carrinho solto em um plano inclinado desce com velocidade constante ou vai ficando cada vez mais rápido? Como a aceleração muda quando a inclinação aumenta? Exemplo de hipótese: “O carrinho percorre distâncias cada vez maiores em intervalos de tempo iguais, então ele acelera; uma inclinação maior faz ele acelerar mais rápido.” A variável independente é o tempo (e, em uma segunda rodada, a inclinação: 1, 2 e 3 livros), a variável dependente é a distância do carrinho ao sensor; as variáveis controladas são o carrinho, o ponto de partida e a tábua. Montagem: levante uma ponta de uma tábua lisa de 1–1,5 m com livros e coloque o HC-SR04 na ponta mais baixa, virado para a parte de cima da tábua. Cole um pedaço de papelão de 10 × 10 cm na traseira de um carrinho de brinquedo; o sensor não consegue um eco confiável de objetos pequenos e arredondados, enquanto um papelão plano dá um eco forte. Segure o carrinho a cerca de 100 cm do sensor, solte e coloque um livro na frente do sensor para que o carrinho não bata nele. O funcionamento do sensor e o alcance dele estão no guia do HC-SR04.

C++ (Arduino IDE)
1// Deney 3: Eğik düzlemde hareket ve ses hızı / Experiment 3: motion on a ramp and speed of sound
2const int TRIG_PIN = 9;                    // tetik / trigger
3const int ECHO_PIN = 10;                   // yankı / echo
4const unsigned long INTERVAL_MS = 60;      // ölçümler arası en az ~60 ms / at least ~60 ms between pings
5const bool PLOTTER_MODE = false;           // true: Serial Plotter için yalnız değer / value only for Serial Plotter
6const bool RAW_ECHO_US = false;            // true: ses hızı deneyi için yankı süresi (µs) / echo time for speed of sound
7
8unsigned long startMs = 0;
9unsigned long lastMs = 0;
10
11void setup() {
12  pinMode(TRIG_PIN, OUTPUT);
13  pinMode(ECHO_PIN, INPUT);
14  digitalWrite(TRIG_PIN, LOW);
15  Serial.begin(9600);
16  if (!PLOTTER_MODE) {
17    Serial.println(RAW_ECHO_US ? "zaman_ms,yanki_us" : "zaman_ms,mesafe_cm");  // CSV başlığı / CSV header
18  }
19  startMs = millis();
20  lastMs = startMs - INTERVAL_MS;           // ilk ölçüm hemen / first reading right away
21}
22
23void loop() {
24  unsigned long now = millis();
25  if (now - lastMs < INTERVAL_MS) {
26    return;
27  }
28  lastMs += INTERVAL_MS;
29
30  digitalWrite(TRIG_PIN, LOW);
31  delayMicroseconds(2);
32  digitalWrite(TRIG_PIN, HIGH);             // 10 µs tetik darbesi / 10 µs trigger pulse
33  delayMicroseconds(10);
34  digitalWrite(TRIG_PIN, LOW);
35
36  unsigned long echoUs = pulseIn(ECHO_PIN, HIGH, 25000UL);  // en fazla 25 ms (~4 m) / max 25 ms (~4 m)
37  if (echoUs == 0) {                        // yankı yok, satırı atla / no echo, skip the line
38    return;
39  }
40  float distanceCm = echoUs * 0.0343 / 2.0; // 343 m/s, gidiş-dönüş / round trip
41
42  if (PLOTTER_MODE) {
43    Serial.print("mesafe_cm:");
44    Serial.println(distanceCm, 1);
45  } else {
46    Serial.print(now - startMs);            // deney başından beri ms / ms since start
47    Serial.print(",");
48    if (RAW_ECHO_US) {
49      Serial.println(echoUs);
50    } else {
51      Serial.println(distanceCm, 1);
52    }
53  }
54}
ColunaCabeçalhoConteúdo ou fórmulaO que mostra
Azaman_msVem do CSVTempo desde o início da rodada
Bmesafe_cmVem do CSVDistância do carrinho ao sensor
Czaman_s=A2/1000Eixo horizontal do gráfico
Dyol_cm=B$2-B2Distância percorrida desde o ponto de partida
Ehiz_cm_s=(D7-D2)/(C7-C2), a partir de E7Velocidade média em cerca de 0,3 s
Fkosul1, 2 ou 3 livrosA qual rodada a linha pertence

O código escreve uma linha a cada 60 ms, cerca de 16 linhas por segundo; esse intervalo entre leituras é o recomendado para que os ecos do HC-SR04 não se misturem. Se nenhum eco voltar (o objeto está fora do alcance ou inclinado), essa linha é pulada. Calcule a velocidade não a partir de duas linhas seguidas, mas entre linhas separadas por 5 posições; com um intervalo de 60 ms, até 1–2 mm de oscilação na medição fazem a velocidade pular muito. Resultado esperado: O gráfico posição-tempo não é uma reta, mas uma curva que vai ficando mais inclinada (uma parábola), enquanto o gráfico velocidade-tempo é mais ou menos uma reta: o carrinho acelera com aceleração constante, e a inclinação dessa reta dá a aceleração. Em um plano inclinado sem atrito, a aceleração seria g × sen θ: uma tábua de 1,5 m levantada 10 cm dá sen θ ≈ 0,067, ou seja, cerca de 65 cm/s². Um valor medido abaixo disso se deve ao atrito e à rotação das rodas, e entra no relatório como fonte de erro. Variação com a velocidade do som: Coloque RAW_ECHO_US como true, ponha um pedaço de papelão plano na frente do sensor a 20, 40, 60, 80 e 100 cm e tire a média do tempo do eco em cada distância. Em um gráfico com a distância de ida e volta (2 × d) no eixo horizontal e o tempo no eixo vertical, a inclinação é 1/v; v dá cerca de 340 m/s em temperatura ambiente e aumenta com a temperatura (aproximadamente v ≈ 331 + 0,6 × T m/s). O método da inclinação também elimina automaticamente o atraso constante dentro do sensor.

Plotter Serial e passagem dos dados para uma planilha

  1. Depois de carregar o código, abra Ferramentas > Monitor Serial e ajuste a velocidade para 9600 baud, como no código. Deixe o botão de marcação de data e hora desligado; se estiver ligado, o horário do computador é acrescentado ao início de cada linha e o CSV quebra.
  2. Antes de medir, limpe a saída e aperte o botão RESET da placa. Assim o tempo começa do 0 e a primeira linha é um cabeçalho como zaman_ms,sicaklik_C.
  3. Para um gráfico ao vivo, coloque PLOTTER_MODE como true no código, carregue de novo e abra Ferramentas > Plotter Serial. O Plotter Serial não salva dados, só os exibe; por isso use-o na rodada de teste e volte PLOTTER_MODE para false na rodada gravada.
  4. Quando a medição terminar, selecione com o mouse as linhas do Monitor Serial, do cabeçalho até a última linha, e copie com Ctrl+C (Cmd+C no macOS). Cole em um editor de texto simples e salve com um nome que inclua grupo, experimento e data, como grupo2-resfriamento-1104.csv.
  5. Importe o arquivo para uma planilha: no Excel use Dados > De Texto/CSV, no Google Planilhas Arquivo > Importar e no LibreOffice Calc basta abrir o arquivo. Escolha a vírgula como separador.
  6. Atenção ao separador decimal: o Arduino escreve os números com ponto, como 23.50, enquanto planilhas configuradas em português do Brasil e em muitas outras localidades esperam vírgula. Se necessário, escolha Inglês (Estados Unidos) como localidade na importação ou troque os pontos por vírgulas; caso contrário, 23.50 é lido como texto ou data e o gráfico sai vazio.
  7. Acrescente as colunas calculadas (ms → s, diferença, razão, velocidade) e faça o gráfico como gráfico de dispersão XY. Um gráfico de linhas trata o eixo horizontal como categorias igualmente espaçadas, então o eixo do tempo fica distorcido onde houve linhas puladas.

Um bom gráfico de experimento tem quatro coisas: a variável independente no eixo horizontal, a variável dependente no eixo vertical, nome e unidade nos dois eixos (“Tempo (s)”, “Temperatura (°C)”) e um título que diga o que ele mostra (“Resfriamento de 200 mL de água em uma caneca sem tampa”). Mostrar duas condições no mesmo gráfico em cores diferentes (com e sem tampa, 1 e 3 livros) deixa a comparação visível de relance. Antes de os alunos olharem o gráfico, peça que respondam “Se nossa hipótese estiver certa, como o gráfico deve ficar?” com um esboço rápido no papel; colocar o gráfico real ao lado do esboço é o jeito mais fácil de escrever a conclusão. A conclusão deve sempre se apoiar em um número: “A água esfriou … °C nos primeiros 5 minutos e … °C nos 5 seguintes.” Como fixar a escala e nomear as linhas no Plotter Serial está explicado no guia do Monitor Serial. Se você preferir não copiar rodadas longas à mão, pode gravar os dados direto em um arquivo com Python ou, para medições sem computador, gravar CSV em um módulo de cartão SD.

Erros de medição e calibração

TemaO que saberO que fazer em sala
Precisão do DS18B20±0,5 °C entre −10 e +85 °C; com 12 bits, uma leitura leva cerca de 750 ms.Antes de medir, coloque todas as sondas no mesmo recipiente com água e gelo; anote quanto cada uma se afasta de 0 °C e corrija isso na tabela.
Precisão do DHT11±2 °C entre 0 e 50 °C; no máximo 1 leitura por segundo, resposta lenta.Nunca o coloque na água, use-o só em experimentos no ar; não o leia mais de uma vez por segundo.
LDRNão é linear, varia de uma peça para outra; o valor demora a se estabilizar depois que a luz muda.Use o mesmo LDR do começo ao fim, espere 5 s em cada distância e interprete o resultado só dentro dos dados do próprio grupo.
HC-SR042–400 cm, resolução de cerca de 3 mm; a velocidade do som muda cerca de 0,6 m/s a cada 1 °C; um cone de cerca de 15°.Confira a 20 e a 50 cm com uma trena; o alvo deve ser plano e estar de frente para o sensor, sem mais nada no caminho.
Taxa de amostragemAmostrar raramente demais perde o formato da curva; amostrar com frequência demais gera ruído e arquivos grandes sem necessidade.Escolha pela duração do fenômeno: resfriamento 10 s, luz 0,5 s, movimento 60 ms. Busque pelo menos 20–30 pontos ao longo do fenômeno.
Medições repetidasUma única leitura pode ser sorte; as repetições mostram o quanto o resultado é confiável.Meça cada condição pelo menos 3 vezes; informe a média e a diferença entre o maior e o menor valor (a dispersão).
TempoCom um cronômetro na mão, o tempo de reação humano é de cerca de 0,2 s.Deixe a marcação do tempo para o contador millis() da placa; use a cronometragem manual só como conferência.

Roteiro da aula: 2 × 40 minutos

O roteiro abaixo serve para os três experimentos. Na primeira vez, sugerimos dar o Experimento 1 a todos os grupos: é o mais simples de montar, e os grupos podem preparar suas tabelas enquanto a medição corre sozinha. Quando a turma estiver acostumada, você pode dividir os 6 grupos em três estações de dois; com dois grupos fazendo cada experimento, eles também podem comparar os resultados. Carregar o código nas placas antes da aula economiza 8–10 minutos da primeira aula. Para cartões de função e organização de estações em turmas grandes, veja o post sobre turmas grandes e, para materiais e organização das mesas, o guia do laboratório escolar.

Aula e minutosProfessorGruposProduto
Aula 1, 0–5Abre a pergunta com uma observação do dia a dia: “Por que o chá esfria mais rápido nos primeiros minutos?”Escrevem a pergunta no caderno e compartilham os primeiros palpites.Pergunta do experimento
Aula 1, 5–12Explica o formato da hipótese e os tipos de variável e distribui as funções: experimentador, tempo e conferência, responsável pelos dados, relator.Escrevem a hipótese e a tabela de variáveis.Hipótese e tabela de variáveis
Aula 1, 12–20Mostra a tabela de ligações; pode ter carregado o código com antecedência.Montam o circuito e veem a linha de cabeçalho e os primeiros valores no Monitor Serial.Circuito funcionando
Aula 1, 20–35Passa pelos grupos e confere as variáveis controladas.Fazem as medições: 15 minutos para o resfriamento, 7 condições × 3 repetições para a luz, 3 inclinações × 3 rodadas para o movimento.Dados brutos
Aula 1, 35–40Lembra os alunos da regra para nomear os arquivos.Copiam os dados, salvam como .csv e colocam na pasta compartilhada.Arquivo CSV
Aula 2, 0–10Mostra no quadro o separador decimal e os passos da importação.Importam o CSV para uma planilha e acrescentam as colunas calculadas.Tabela organizada
Aula 2, 10–22Lembra os alunos da regra de nome do eixo, unidade e título.Fazem o gráfico XY e o comparam com o esboço da hipótese.Gráfico
Aula 2, 22–32Pergunta quais linhas da tabela de erros se aplicam ao experimento do grupo.Escrevem a conclusão e as fontes de erro.Parágrafo de conclusão e de erros
Aula 2, 32–37Conduz a rodada de apresentação dos gráficos.Explicam o gráfico ao grupo vizinho em 1 minuto e respondem a uma pergunta.Feedback entre pares
Aula 2, 37–40Faz duas das perguntas de saída abaixo.Escrevem respostas curtas no papel.Ficha de saída
  • Quais eram suas variáveis independente e dependente, e qual variável você manteve constante?
  • Em que parte do gráfico a mudança é mais rápida, e como você percebe isso no gráfico?
  • Sua hipótese foi confirmada? Em quais dois números você se baseia para dizer isso?
  • Como o seu gráfico mudaria se você medisse a cada 60 segundos em vez de a cada 10?
  • Qual foi a maior fonte de erro, e o que você mudaria se fizesse o experimento de novo?

Avaliação: um modelo curto de relatório de laboratório

  • Título e pergunta: Nome do experimento, integrantes do grupo, data e a pergunta do experimento em uma frase.
  • Hipótese: No formato “Se … então …, porque …”, exatamente como foi escrita antes da medição; ela não é corrigida depois.
  • Variáveis: Independente, dependente e pelo menos duas variáveis controladas.
  • Materiais e método: Sensor, resumo das ligações, intervalo de amostragem e número de repetições; claro o bastante para outro grupo repetir o experimento, em no máximo 6 passos.
  • Dados: Uma tabela-resumo como a do modelo, mais o nome do arquivo CSV.
  • Gráfico: Um gráfico XY com nomes dos eixos, unidades e título.
  • Conclusão: A hipótese foi confirmada? 2–3 frases baseadas em um ou dois números.
  • Fontes de erro e melhorias: Pelo menos duas fontes de erro e o que você mudaria se repetisse o experimento. Para dar nota, você pode adaptar a essas seções os critérios do post sobre a rubrica para aulas de Arduino.

Projetos prontos com sensores, Entenda o código e ferramentas no app

O BlueGrays tem projetos prontos com esquema do circuito, lista de peças e código para todos os sensores destes experimentos; os alunos podem usá-los para conhecer um sensor antes do experimento. Os grátis: Medição da intensidade da luz com LDR, Medição de distância com HC-SR04 (Monitor Serial) e Temperatura e umidade com DHT11; se você usa ESP32, Leitura da intensidade da luz com módulo LDR e ESP32, Medidor ultrassônico de distância HC-SR04 com ESP32 e Temperatura e umidade com ESP32 e DHT22 (com display LCD) também são grátis. Nos projetos grátis, os blocos e a seção Entenda o código também ficam abertos: os alunos leem passo a passo o que o código faz e fazem eles mesmos uma pequena mudança na tarefa Experimente você mesmo; como usar a seção em sala está no post sobre o Entenda o código. Para calcular a tensão do divisor no experimento com o LDR, a ferramenta Divisor de tensão (Premium) resolve, e as ferramentas grátis Código de cores e Lei de Ohm ajudam a conferir os resistores. Se você quiser liberar para a turma toda projetos Premium com sensores, como Medição de temperatura com NTC e display LCD 2x16, que mostra a temperatura em um LCD, ou Registrador de temperatura com ESP32 (DHT22 + DS1307 RTC + microSD + OLED), que salva os dados em um cartão microSD, é para isso que existem os pacotes para educadores, de pagamento único: os alunos ganham o Premium sem cadastrar cartão.

Segurança: água quente, eletricidade e água por perto

  • Água quente: Não use água fervendo; cerca de 60 °C basta e ainda dá uma curva nítida. Deixe o professor distribuir a água e mantenha as canecas no meio da mesa, onde nenhum cabo possa enroscar nelas. Durante a medição, a caneca não é segurada nem mudada de lugar.
  • Água e eletricidade: Só a ponta metálica da sonda à prova d'água entra na água. Mantenha o Arduino, a protoboard e o computador a pelo menos 30 cm da água, de preferência em uma bandeja separada. Se cair água na mesa, primeiro desconecte o cabo USB e depois seque.
  • Só alimentação USB: Todos estes experimentos funcionam pela porta USB do computador; nenhum aparelho ligado na tomada (chaleira elétrica, luminária, aquecedor) é conectado ao circuito do Arduino.
  • Ligações: Faça e altere as ligações só com o USB desconectado. Se uma peça esquentar ou você sentir cheiro de algo, desconecte o USB na hora.
  • Luz: Não aponte a lanterna para os olhos de ninguém; olhar de perto para uma lanterna LED forte incomoda os olhos.
  • Plano inclinado: A tábua não deve ficar para fora da borda da mesa, o carrinho deve ser parado por um livro antes de bater no sensor e os livros sob a tábua devem ser colocados de modo que não escorreguem.

Um sensor, uma saída CSV limpa e uma pergunta bem feita transformam um experimento de ciências, que antes só repetia o resultado do livro didático, em um estudo de medição de verdade: os alunos fazem seus próprios gráficos, discutem suas próprias fontes de erro e defendem a conclusão com seus próprios números. Se você quiser conhecer os sensores e montar os circuitos passo a passo no celular antes do experimento, pode começar pelos projetos grátis de LDR, HC-SR04 e DHT11 no app BlueGrays.

Perguntas frequentes

Que experimentos de ciências dá para fazer com Arduino?

Qualquer grandeza que um sensor consiga medir pode virar um experimento: temperatura (resfriamento, aquecimento, isolamento térmico), luz (distância, filtros coloridos), distância e movimento (planos inclinados, pêndulos), umidade do solo (experimentos com plantas), som e pressão. Para começar, a curva de resfriamento, a relação entre luz e distância e o plano inclinado são os três mais fáceis de montar e os que dão os resultados mais claros.

Como passar os dados do Arduino para o Excel?

O jeito mais simples é o código escrever os dados na porta serial como linhas separadas por vírgula, como “zaman_ms,deger”. Você copia as linhas do Monitor Serial, salva como arquivo .csv e importa no Excel com Dados > De Texto/CSV. Se o seu Excel usa vírgula como separador decimal, escolha Inglês (Estados Unidos) como localidade na importação; caso contrário, os números são lidos como texto.

O Plotter Serial do Arduino salva os dados?

Não, o Plotter Serial só mostra um gráfico ao vivo e não grava os dados em um arquivo. Para guardar os dados, você precisa copiar as linhas CSV do Monitor Serial, gravá-las em um arquivo com um script em Python ou usar um módulo de cartão SD.

Devo usar um DS18B20 ou um DHT11 em um experimento de ciências?

Se você vai medir água ou outro líquido, use um DS18B20 na versão com sonda à prova d'água; a precisão de ±0,5 °C e a ponta que pode ir na água fazem dele uma boa escolha para experimentos de resfriamento. O DHT11 mede a temperatura e a umidade do ar com precisão de ±2 °C, não pode ir na água e responde devagar; use-o só em experimentos no ar.

Como medir a velocidade do som com Arduino?

Mostre o tempo do eco do HC-SR04 em microssegundos e coloque um pedaço de papelão plano na frente do sensor em distâncias diferentes. Faça o gráfico da distância de ida e volta (2 × distância) em função do tempo do eco; a inclinação da reta dá a velocidade do som, que fica em cerca de 340 m/s em temperatura ambiente.

Quantas aulas leva um experimento de ciências com Arduino?

Duas aulas de 40 minutos bastam para um experimento: a primeira para a hipótese, a montagem e a medição, a segunda para a tabela, o gráfico, a conclusão e o relatório. Se o código for carregado nas placas antes da aula, sobra mais tempo para medir na primeira aula.

Ver todos os projetos
Medição da intensidade da luz com LDR
#11Iniciante

Medição da intensidade da luz com LDR

Quer ver a luminosidade do seu quarto em números? O LDR, um pequeno componente sensível à luz, mede a luz ambiente, e o Arduino exibe o valor na tela do computador a cada meio segundo. Cubra o sensor

4.6(81)
139
Medição de distância com HC-SR04 (Monitor Serial)
#27Iniciante

Medição de distância com HC-SR04 (Monitor Serial)

O sensor HC-SR04 funciona como um morcego que se orienta no escuro: emite um som que você não consegue ouvir, escuta o eco e mede a distância até o objeto à sua frente. O Arduino escreve essa distânci

4.6(46)
71
Temperatura e umidade com DHT11
#55Intermediário

Temperatura e umidade com DHT11

Qual é a temperatura do seu quarto? O ar está úmido ou seco? O sensor DHT11 mede a temperatura e a umidade, e o Arduino mostra os valores em um display LCD de duas linhas, atualizando a cada poucos se

4.7(47)
73
Leitura da intensidade da luz com módulo LDR e ESP32
#113Iniciante

Leitura da intensidade da luz com módulo LDR e ESP32

Acompanhe em tempo real no Monitor Serial o valor bruto do ADC do módulo LDR e a porcentagem relativa de luz calculada a partir de referências de escuridão e claridade. Essa porcentagem não é uma medida em lux. O projeto ensina a lógica de calibração do módulo. É ideal fazê-lo antes do projeto 10, pois ajuda a determinar o valor do limiar.

4.6(36)
55
Medidor ultrassônico de distância HC-SR04 com ESP32
#116Intermediário

Medidor ultrassônico de distância HC-SR04 com ESP32

O sensor ultrassônico HC-SR04 calcula a distância medindo o tempo que a onda sonora emitida leva para atingir um objeto e retornar (tempo de voo). Neste projeto, enviaremos um pulso de 10 microssegundos do ESP32 ao pino TRIG do sensor e leremos a duração do eco no pino ECHO com pulseIn(). Exibiremos a distância calculada em centímetros em um LCD I2C 16x2. Como o HC-SR04 opera a 5V, é preciso usar um divisor de tensão no pino ECHO; caso contrário, o GPIO de 3,3V do ESP32 será danificado.

4.9(28)
45
Temperatura e umidade com ESP32 e DHT22 (com display LCD)
#117Intermediário

Temperatura e umidade com ESP32 e DHT22 (com display LCD)

Este projeto mede a temperatura e a umidade do ambiente com um sensor DHT22 e exibe os dados em tempo real em um LCD I2C 16x2. Os dados são lidos do sensor pelo protocolo de um fio (one-wire) com a biblioteca Adafruit DHT. Este projeto serve de base para estações meteorológicas IoT, automação residencial ou sistemas de monitoramento ambiental em estufas. A comunicação com o DHT22 é feita pelo pino GPIO 4 do ESP32.

4.8(38)
56
Medição de temperatura com NTC e display LCD 2x16
#44Iniciante
Premium

Medição de temperatura com NTC e display LCD 2x16

Meça a temperatura ao seu redor com um sensor que parece uma pequena conta. Esse componente, chamado NTC, deixa a eletricidade passar com mais facilidade à medida que aquece; o Arduino lê essa mudança

4.5(33)
44
Registrador de temperatura com ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
#144Avançado
Premium

Registrador de temperatura com ESP32 (DHT22 + DS1307 RTC + microSD + OLED)

Monte um registrador de temperatura com data e hora usando ESP32! Leia a temperatura e a umidade do DHT22 a cada minuto, obtenha a hora real do DS1307 RTC e grave os dados em CSV no cartão microSD. O OLED exibe a temperatura atual em letras grandes, a porcentagem de umidade, a data e a hora e o contador de registros. O arquivo /temp_log.csv no cartão SD pode ser aberto no Excel, Google Sheets ou pandas do Python para análise — ideal para monitorar estufas, acompanhar a temperatura de casa ou…

4.7(7)
12