Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino 101: Bouw een teller met DHT11 sensor & LCD display

Onderdelen en benodigdheden

Arduino 101 × 1
DHT11 Temperatuur- & Vochtigheidssensor (4 pinnen) × 1
Adafruit Standaard LCD - 16x2 Wit op Blauw × 1
Draaipotentiometer (standaard, voor LCD-contrast) × 1
Draadjes (standaard) × 1
9V batterij (standaard) × 1
9V Batterijclip × 1

Nodige tools en machines

3D-printer (standaard)

Apps en online diensten

Arduino IDE

Over dit project

Dit project was bedoeld om te voldoen aan de eisen van de wetenschapsbeurs in mijn stad vorig jaar, met als thema "Mijn lichaam, mijn wereld".

Het hoofddoel was een apparaat maken dat de fysieke prestaties van ieder meet: de teller telt bij elke beweging de afgelegde afstand, het aantal stappen, de verbrande calorieën, en meet de omgevingstemperatuur en vochtigheid.

De meeste data komt direct van het bord, omdat het een bibliotheek heeft voor staptelling. De rest bereken ik met wiskunde.

De behuizing is 3D-geprint. De teller wordt gevoed door een 9V-batterij.

Arduino 101: Bouw een teller met DHT11 sensor & LCD display Arduino 101: Bouw een teller met DHT11 sensor & LCD display

Waarom?

Een groot deel van de bevolking leeft sedentair, ver van fysieke activiteit en gezonde leefgewoontes.

Het is noodzakelijk om fysieke activiteit te erkennen als belangrijk element voor normale metabolische activiteiten en om de risico's op toekomstige ziekten te verminderen.

Met deze conclusie maakte ik een prototype-apparaat dat hierbij helpt, door data te verzamelen die gedetailleerd geanalyseerd kan worden.

Deze data, wanneer bekeken, stimuleren de oefening van fysieke activiteit, omdat de persoon zijn prestaties kan monitoren, zijn lichaam begrijpt en dag na dag kan verbeteren.

Heb je vragen over dit project? Laat dan een reactie achter.

Je kunt me ook een e-mail sturen.

Code

Code (C/C++)


// Frank, de levende dode, maakte deze code.
// Chapecó, Brazilië
// Dit was mijn eerste project in 2017, voor een wetenschapsbeurs.
// 2018
// Dank aan:
// 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;
int lastState = LOW;
const int ledPin = 13;
boolean stepEventsEnabled = true;
long lastStepCount = 0;
boolean blinkState = false;

float stapLengte;
float calories = 0;
float gewicht = 57;
float lengte = 168;
float caloriesPerKm;
float caloriesVerbrand;
float afstand;
float stappenPerMijl;
float snelheid;
char optie;
float t;

DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;

void setup() {
  lcd.begin(16, 2);
  dht.begin();
  stapLengte = 0.30 * lengte; // Lengte in cm
  caloriesPerKm = (0.57 * gewicht * 1.6) / 0.453; // Gewicht in kg
  stappenPerMijl = 160000.0 / stapLengte; // 160000 cm = 16 km
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Teller");
  lcd.setCursor(0, 1);
  lcd.print("Gemaakt door 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();
  }

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

  // Calorieën berekenen en tonen
  caloriesVerbrand = lastStepCount * (lastStepCount / stappenPerMijl);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Calorieën: ");
  lcd.setCursor(0, 1);
  lcd.print(caloriesVerbrand);
  lcd.print(" Kcal");
  delay(4000);

  // Afstand berekenen en tonen
  afstand = (stapLengte * lastStepCount) / 100; // Afstand in meters
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Afstand: ");
  lcd.setCursor(0, 1);
  lcd.print(afstand);
  lcd.print(" Meters");
  delay(4000);

  // Temperatuur en vochtigheid lezen (pin 8)
  delay(delayMS);
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  if (isnan(event.temperature)) {
    Serial.println("Fout - Temp");
  } else {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Temp: ");
    lcd.setCursor(0, 1);
    lcd.print(event.temperature);
    lcd.print(" C");
    delay(3000);
  }

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

  lastState = state;
  digitalWrite(13, blinkState);
  blinkState = !blinkState;
  delay(300);
}

Schema

De LCD is eenvoudig aan te sluiten.

Arduino 101: Bouw een teller met DHT11 sensor & LCD display

Productieproces

  1. Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
  2. Een Arduino Iron Man bouwen: onderdelen, sensoren en stapsgewijze handleiding
  3. Find Me: Slimme Item Locator met Arduino en Bluetooth
  4. Bouw een Functionele, Arduino-aangedreven 3D-geprinte Robotarm – Stap-voor-Stap Handleiding
  5. DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
  6. Contactloze temperatuurgate voor snelle, accurate screening
  7. PiBot: De Arduino-aangedreven pianorobot voor precisiemuziek
  8. NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
  9. Realtime Weerstation met Arduino & ThingSpeak IoT
  10. Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
  11. Bouw een krachtige FM-radio ontvanger met Arduino en TEA5767 module