Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Arduino 101: Construye un Podómetro con Sensor DHT11 y Pantalla LCD

Componentes y materiales

Arduino 101 (con IMU Curie integrada) ×1
Sensor temperatura/humedad DHT11 (4 pines) ×1
Pantalla LCD 16x2 (blanco sobre azul, estándar Adafruit) ×1
Potenciómetro rotatorio (contraste LCD) ×1
Cables de conexión ×1
Batería 9V ×1
Conector batería 9V ×1

Herramientas necesarias

Aplicaciones y servicios online

Sobre el proyecto

Este proyecto cumplió los requisitos de la feria de ciencias de mi ciudad el año pasado: "Mi cuerpo, mi mundo".

La idea: un dispositivo que mida el rendimiento físico individual. El podómetro, en cada movimiento, calcula: distancia recorrida, número de pasos, calorías quemadas, temperatura y humedad ambiente.

La mayoría de datos vienen directamente de la placa (librería de conteo de pasos del CurieIMU); el resto se calcula con fórmulas matemáticas. La carcasa se imprimió en 3D. Alimentación: batería 9V.

¿Por qué?

Gran parte de la población vive sedentaria, alejada de actividad física y hábitos saludables. Es vital reconocer la actividad física como elemento clave para el metabolismo normal y reducción de riesgos de enfermedades futuras.

Con esta conclusión, creé un prototipo que ayuda en esto, recopilando datos analizables en detalle. Al verlos, la persona se motiva a practicar actividad física, monitoriza su rendimiento, entiende su cuerpo y mejora día a día.

¿Dudas? Deja un comentario o envíame un email.

Código

Pedometer.ino (C/C++)

// Frank, the living dead, made this code.
// Chapecó, Brazil - 2017 (ciencia fair) - 2018
// Thanks: Adafruit, Intel, Filipeflop, Keyes

#include <DHT.h>
#include <DHT_U.h>
#include <LiquidCrystal.h>
#include "CurieIMU.h"
#include <SoftwareSerial.h>
#include <Adafruit_Sensor.h>

#define DHTPIN 8
#define DHTTYPE DHT11

LiquidCrystal lcd(12, 10, 5, 4, 3, 2);

int state = LOW, lastState = LOW;
const int ledPin = 13;
boolean stepEventsEnabled = true;
long lastStepCount = 0;
boolean blinkState = false;

float paso_longitud;        // longitud de zancada (cm)
float calories = 0;
float peso = 57;            // kg
float altura = 168;         // cm
float cal_por_km;
float calories_burned;
float distance;
float pasos_por_milla;
float velocidad;
char option;
float t;

DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;

void setup() {
  lcd.begin(16, 2);
  dht.begin();

  paso_longitud = 0.30 * altura;           // estimación zancada
  cal_por_km = (0.57 * peso * 1.6) / 0.453; // kcal/km
  pasos_por_milla = 160000.0 / paso_longitud; // 16 km = 160,000 cm

  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Podometro");
  lcd.setCursor(0, 1); lcd.print("Hecho por Frank :P");
  delay(3000);

  CurieIMU.begin();
  CurieIMU.setStepDetectionMode(CURIE_IMU_STEP_MODE_NORMAL);
  CurieIMU.setStepCountEnabled(true);

  if (stepEventsEnabled) {
    CurieIMU.attachInterrupt(eventCallback);
    CurieIMU.interrupts(CURIE_IMU_STEP);
  }
}

static void updateStepCount() {
  int stepCount = CurieIMU.getStepCount();
  if (stepCount != lastStepCount) {
    lastStepCount = stepCount;
  }
}

static void eventCallback(void) {
  if (CurieIMU.stepsDetected()) updateStepCount();
}

void loop() {
  if (!stepEventsEnabled) updateStepCount();

  // 1. Pasos
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Pasos: ");
  lcd.setCursor(0, 1); lcd.print(lastStepCount);
  delay(4000);

  // 2. Calorías
  calories_burned = lastStepCount * (lastStepCount / pasos_por_milla) * cal_por_km;
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Calorias Q.: ");
  lcd.setCursor(0, 1); lcd.print(calories_burned); lcd.print(" Kcal");
  delay(4000);

  // 3. Distancia
  distance = (paso_longitud * lastStepCount) / 100.0; // metros
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Distancia: ");
  lcd.setCursor(0, 1); lcd.print(distance); lcd.print(" m");
  delay(4000);

  // 4. Temperatura
  delay(delayMS);
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  if (isnan(event.temperature)) {
    Serial.println("Error - Temp");
  } else {
    lcd.clear();
    lcd.setCursor(0, 0); lcd.print("Temperatura: ");
    lcd.setCursor(0, 1); lcd.print(event.temperature); lcd.print(" C");
    delay(3000);
  }

  // 5. Humedad
  dht.humidity().getEvent(&event);
  if (isnan(event.relative_humidity)) {
    Serial.println("Error - Humi");
  } else {
    lcd.clear();
    lcd.setCursor(0, 0); lcd.print("Humedad: ");
    lcd.setCursor(0, 1); lcd.print(event.relative_humidity); lcd.print("%");
    delay(3000);
  }

  // Parpadeo LED vida
  lastState = state;
  digitalWrite(13, blinkState);
  blinkState = !blinkState;
  delay(300);
}

Esquemáticos

El LCD es fácil de configurar.

Arduino 101: Construye un Podómetro con Sensor DHT11 y Pantalla LCD

Proceso de manufactura

  1. Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
  2. Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
  3. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  4. Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
  5. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  6. Puerta de control de temperatura sin contacto para detección rápida y precisa
  7. PiBot: Robot Pianista con Arduino para Interpretación Musical de Precisión
  8. Pong Neón en Matriz NeoPixel con Arduino Nano
  9. Monitorización Meteorológica en Tiempo Real con Arduino y ThingSpeak IoT
  10. Construye un volante joystick personalizado con Arduino para gaming
  11. Construye un Receptor FM Potente con Arduino y Módulo TEA5767