坐姿矫正器及智能台灯系统:基于Arduino Uno的DIY项目
在现代办公和学习环境中,正确的坐姿对于保护视力和预防颈椎、腰椎疾病至关重要。然而,长时间的工作和学习往往让人不自觉地忽略坐姿,导致各种健康问题。为了帮助用户保持正确的坐姿,同时提供智能的照明解决方案,我设计了一个基于Arduino Uno的坐姿矫正器及智能台灯系统。这个系统不仅能够监测用户的坐姿,还能根据环境光线自动调节台灯的亮度,确保用户在舒适的光线下工作或学习。
在现代办公和学习环境中,正确的坐姿对于保护视力和预防颈椎、腰椎疾病至关重要。然而,长时间的工作和学习往往让人不自觉地忽略坐姿,导致各种健康问题。为了帮助用户保持正确的坐姿,同时提供智能的照明解决方案,我设计了一个基于Arduino Uno的坐姿矫正器及智能台灯系统。这个系统不仅能够监测用户的坐姿,还能根据环境光线自动调节台灯的亮度,确保用户在舒适的光线下工作或学习。
硬件组件
-
Arduino Uno:作为项目的控制核心,负责协调各个元件的工作。
-
HC-SR04超声波传感器:用于测量用户与台灯的距离,检测坐姿是否正确。
-
光敏模块:检测环境光线强度,自动控制白色LED的亮灭,提供补光功能。
-
白色LED:在环境光线较暗时自动点亮,提供补光。
-
红色LED:当用户坐姿不正确时亮起,提醒用户调整坐姿。
-
DHT11温湿度传感器:监测环境的温度和湿度,确保舒适的工作环境。
-
0.96英寸OLED显示屏(I2C接口):显示温湿度、距离、光线强度和当前时间等信息。
-
DS3231实时时钟模块:提供准确的时间信息,确保系统的时间显示准确。
硬件连接
1. HC-SR04超声波传感器
-
VCC 连接到 Arduino Uno 的 5V 引脚
-
Trig 连接到 Arduino Uno 的数字引脚 11
-
Echo 连接到 Arduino Uno 的数字引脚 12
-
GND 连接到 Arduino Uno 的 GND 引脚
2. 光敏模块
-
VCC 连接到 Arduino Uno 的 5V 引脚
-
AO 连接到 Arduino Uno 的模拟引脚 A1
-
GND 连接到 Arduino Uno 的 GND 引脚
3. 白色LED
-
正极 连接到 Arduino Uno 的数字引脚 5
-
负极 通过一个220欧姆的电阻连接到 Arduino Uno 的 GND 引脚
4. 红色LED
-
正极 连接到 Arduino Uno 的数字引脚 9
-
负极 通过一个220欧姆的电阻连接到 Arduino Uno 的 GND 引脚
5. DHT11温湿度传感器
-
VCC 连接到 Arduino Uno 的 5V 引脚
-
DATA 连接到 Arduino Uno 的数字引脚 2
-
GND 连接到 Arduino Uno 的 GND 引脚
6. 0.96英寸OLED显示屏(I2C接口)
-
VCC 连接到 Arduino Uno 的 5V 引脚
-
GND 连接到 Arduino Uno 的 GND 引脚
-
SDA 连接到 Arduino Uno 的 A4 引脚
-
SCL 连接到 Arduino Uno 的 A5 引脚
7. DS3231实时时钟模块(I2C接口)
-
VCC 连接到 Arduino Uno 的 5V 引脚
-
GND 连接到 Arduino Uno 的 GND 引脚
-
SDA 连接到 Arduino Uno 的 A4 引脚
-
SCL 连接到 Arduino Uno 的 A5 引脚
#include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <DHT.h> #include <NewPing.h> #include <RTClib.h> #define SCREEN_WIDTH 128 // OLED显示屏幕的宽度,以像素为单位 #define SCREEN_HEIGHT 64 // OLED显示屏幕的高度,以像素为单位 #define OLED_RESET -1 // 重置引脚,如果不使用可以设置为 -1 #define DHTPIN 2 // DHT11的数据引脚连接到数字引脚2 #define DHTTYPE DHT11 // DHT 11 #define TRIG_PIN 11 #define ECHO_PIN 12 #define MAX_DISTANCE 200 NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); #define WHITE_LED_PIN 5 #define RED_LED_PIN 9 #define LIGHT_SENSOR_PIN A1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); DHT dht(DHTPIN, DHTTYPE); RTC_DS3231 rtc; void setup() { pinMode(WHITE_LED_PIN, OUTPUT); pinMode(RED_LED_PIN, OUTPUT); dht.begin(); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 这里的0x3C是OLED的I2C地址,根据实际情况调整 Serial.println(F("SSD1306 allocation failed")); for(;;); // 进入无限循环,无法初始化显示屏 } display.display(); // 显示启动画面 delay(2000); // 等待2秒 display.clearDisplay(); // 清除画面 if (!rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } if (rtc.lostPower()) { Serial.println("RTC lost power, let's set the time!"); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // 使用编译日期和时间 } } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println(F("Failed to read from DHT sensor!")); return; } int distance = sonar.ping_cm(); int lightValue = analogRead(LIGHT_SENSOR_PIN); DateTime now = rtc.now(); display.clearDisplay(); // 清除画面 display.setTextSize(1); // 设置文本大小 display.setTextColor(SSD1306_WHITE); // 设置文本颜色 display.setCursor(0,10); // 设置文本开始的坐标 display.cp437(true); // 使用扩展字符集 display.println(F("Sit Corrector & Smart Lamp")); // 显示标题 display.print(F("Temp: ")); display.print(t); display.print(F("*C Humidity: ")); display.print(h); display.println(F("%")); display.print(F("Distance: ")); display.print(distance); display.println(F("cm")); display.print(F("Light: ")); display.print(lightValue); display.println(F(" ")); display.print(F("Time: ")); display.print(now.hour(), DEC); display.print(':'); display.print(now.minute(), DEC); display.print(':'); display.print(now.second(), DEC); display.println(F(" ")); display.display(); // 将以上内容显示出来 // 控制白色LED if (lightValue < 500) { // 光线暗时点亮白色LED digitalWrite(WHITE_LED_PIN, HIGH); } else { digitalWrite(WHITE_LED_PIN, LOW); } // 控制红色LED if (distance < 30) { // 用户距离台灯过近时点亮红色LED digitalWrite(RED_LED_PIN, HIGH); } else { digitalWrite(RED_LED_PIN, LOW); } delay(1000); // 每秒更新一次 }项目功能
-
温湿度监测:通过DHT11传感器实时监测环境的温度和湿度,并将结果显示在OLED显示屏上。
-
距离监测:使用HC-SR04超声波传感器测量用户与台灯的距离,当用户距离台灯过近时(例如小于30厘米),红色LED会亮起,提醒用户调整坐姿。
-
光线监测:通过光敏模块检测环境光线强度,当光线较暗时(例如小于500),自动点亮白色LED,提供补光功能。
-
时间显示:DS3231实时时钟模块提供准确的时间信息,并将当前时间显示在OLED显示屏上。
-
OLED显示:OLED显示屏用于显示温湿度、距离、光线强度和当前时间的数据,方便用户实时查看环境状态
-

更多推荐



所有评论(0)