亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 101 计步器:集成 DHT11 温湿度 + LCD 显示步数/距离/卡路里

项目背景

为参加科技展“My body, my world”主题制作。利用 Arduino 101 (Intel Curie) 内置六轴 IMU 硬件计步功能,结合 DHT11 温湿度传感器与 1602 LCD,打造一款佩戴式计步器,显示步数、距离、消耗卡路里、环境温湿度,3D 打印外壳,9V 电池供电。

硬件清单

核心算法

接线对照

模块Arduino 101 引脚
LCD RSD12
LCD END10
LCD D4-D7D5, D4, D3, D2
DHT11 DATAD8
电位器中间脚LCD V0 (对比度)
板载 LEDD13 (心跳指示)

完整固件代码


#include <DHT.h> #include <DHT_U.h> #include <LiquidCrystal.h> #include <CurieIMU.h>

#define DHTPIN 8
#define DHTTYPE DHT11

LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
DHT_Unified dht(DHTPIN, DHTTYPE);

float stepLen, kcalPerMile, stepsPerMile;
float weight = 57, height = 168;
long lastStepCount = 0;
uint32_t delayMS;

void setup() {
  lcd.begin(16, 2);
  dht.begin();
  stepLen = 0.30 * height;
  kcalPerMile = (0.57 * weight * 1.6) / 0.453;
  stepsPerMile = 160000.0 / stepLen;

  lcd.print("Pedometer"); lcd.setCursor(0,1); lcd.print("Made by Frank"); delay(3000);

  CurieIMU.begin();
  CurieIMU.setStepDetectionMode(CURIE_IMU_STEP_MODE_NORMAL);
  CurieIMU.setStepCountEnabled(true);
  CurieIMU.attachInterrupt(eventCallback);
  CurieIMU.interrupts(CURIE_IMU_STEP);

  sensors_event_t event;
  dht.temperature().getEvent(&event);
  delayMS = event.min_delay / 1000;
}

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

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

void loop() {
  // 1. 步数
  lcd.clear(); lcd.print("Steps:"); lcd.setCursor(0,1); lcd.print(lastStepCount); delay(4000);

  // 2. 卡路里
  float kcal = lastStepCount * (lastStepCount / stepsPerMile);
  lcd.clear(); lcd.print("Calories:"); lcd.setCursor(0,1); lcd.print(kcal); lcd.print(" Kcal"); delay(4000);

  // 3. 距离
  float dist = stepLen * lastStepCount / 100.0;
  lcd.clear(); lcd.print("Distance:"); lcd.setCursor(0,1); lcd.print(dist); lcd.print(" m"); delay(4000);

  // 4. 温度
  sensors_event_t ev;
  dht.temperature().getEvent(&ev);
  if (!isnan(ev.temperature)) {
    lcd.clear(); lcd.print("Temp:"); lcd.setCursor(0,1); lcd.print(ev.temperature); lcd.print(" C"); delay(3000);
  }

  // 5. 湿度
  dht.humidity().getEvent(&ev);
  if (!isnan(ev.relative_humidity)) {
    lcd.clear(); lcd.print("Humi:"); lcd.setCursor(0,1); lcd.print(ev.relative_humidity); lcd.print("%"); delay(3000);
  }

  digitalWrite(13, !digitalRead(13)); // 心跳灯
  delay(300);
}

3D 打印外壳

设计含 LCD 窗口、DHT11 通风孔、电池仓、背部夹扣,STL 文件可自行建模或下载作者源文件。打印材料建议 PLA,填充 20%,0.2 mm 层高。

改进方向

制造工艺

  1. Arduino 数字骰子:LCD 显示随机点数的电子骰子
  2. DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
  3. Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
  4. 打造功能完整的 Arduino 驱动 3D 打印机械臂:分步指南
  5. DIY Arduino 加湿器控制器:继电器安全控制高压电路
  6. 非接触体温筛查闸机:Arduino MKR1000 + 红外测温 + 舵机控制
  7. PiBot:Arduino驱动的88键钢琴机器人,精准演奏MIDI乐曲
  8. Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
  9. Arduino + ThingSpeak 实时气象监测站
  10. DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
  11. Arduino + TEA5767 打造 FM 收音机:Nokia 5110 显频谱/信号强度/立体声
  12. Arduino RGB 颜色混合器 – 分步制作教程