彭彭123 发表于 2024-10-12 17:12:42

【机智云Gokit2.0开发板】+智能卧室睡眠环境装置

引言
本项目使用机智云gokit2.0开发板,实现智能睡眠环境装置,解决目前大多数人对卧室睡眠要求逐渐增高的痛点。

痛点


[*]环境数据可检测
[*]温湿度可智能调控
[*]人起床自动开灯
[*]按下开关调控屋内设备

[*]

功能


[*]当温度超过20°C后,风扇打开一档;当温度超过30°C后,风扇打开二档。温度低于20°C,风扇自动关闭。
[*]实时检测温湿度传感器、红外人体检测传感器等数据,并通过串口发送出来进行数据显示。
[*]红外人体检测传感器实时检测是否有人起床,有人则打开白灯。
[*]

[*]按下按键一,打开白灯;按下按键二,打开风扇。

[*]

前期准备软件
[*]arduino IED
[*]机智云
[*]串口调试助手

[*]

硬件
[*]机智云Gokit2.0开发板


项目开发硬件开发

https://club.gizwits.com/data/attachment/forum/202410/10/175433u9n9kil338n9tmln.png.thumb.jpg


软件开发

[*]1、首先申明引用的头文件



[*]#include <Gizwits.h>
[*]#include <Wire.h>
[*]#include <SoftwareSerial.h>
[*]#include <DHT.h>
[*]#include <ChainableLED.h>
[*]#include <MsTimer2.h>

复制代码


2、根据电路图,定义温湿度传感器、按键1、按键2、RGB灯、红外传感器和电机的管脚。



[*]#define Infrared_PIN 2 ///< 红外IO管脚
[*]#define DHTPIN 3 ///< 温湿度IO管脚
[*]#define MOTOR_PINA 4 ///< 电机IO管脚
[*]#define MOTOR_PINB 5 ///< 电机IO管脚
[*]#define KEY1 6 ///< 按键IO管脚
[*]#define KEY2 7 ///< 按键IO管脚
[*]//温湿度功能值定义
[*]#define DHTTYPE DHT11
[*]//电机功能值定义
[*]#define MOTOR_MAX 100
[*]#define MOTOR_MAX1 -100
[*]#define MOTOR_MIN 0
[*]#define MOTOR_16
[*]
[*]DHT dht(DHTPIN, DHTTYPE);
[*]ChainableLED leds(A5, A4, 1);
[*]
[*]SoftwareSerial mySerial(0, 1); // A2 -> RX, A3 -> TX

复制代码


3、编写温湿度读取功能函数



[*]void DHT11_Read_Data(unsigned char * temperature, unsigned char * humidity)
[*]{
[*]*temperature = (unsigned char)dht.readTemperature();
[*]*humidity = (unsigned char)dht.readHumidity();
[*]return;
[*]}
[*]

复制代码


4、编写电机控制功能程序



[*]void Motor_status(long motor_speed)
[*]{
[*]unsigned char Temp_motor_speed = 0;
[*]if (motor_speed == 0) //停止
[*]{
[*]digitalWrite(MOTOR_PINA, LOW);
[*]}
[*]if (motor_speed > 0) //正转
[*]{
[*]Temp_motor_speed = (motor_speed - 0) * 51;
[*]if (Temp_motor_speed > 255) Temp_motor_speed = 255;
[*]digitalWrite(MOTOR_PINA, LOW);
[*]analogWrite( MOTOR_PINB, Temp_motor_speed);
[*]}
[*]if (motor_speed < 0) //反转
[*]{
[*]Temp_motor_speed = 255 - (0 - motor_speed) * 51; //Temp_motor_speed = (255 ‐ (5 + motor_speed))* 51;
[*]if (Temp_motor_speed > 255) Temp_motor_speed = 255;
[*]digitalWrite(MOTOR_PINA, HIGH);
[*]analogWrite( MOTOR_PINB, Temp_motor_speed );
[*]}
[*]}

复制代码


5、编写RGB灯功能程序

[*]void LED_RGB_Control(byte red, byte green, byte blue)
[*]{
[*]leds.setColorRGB(0, red, green, blue);
[*]}

复制代码


6、**温湿度暂存变量

[*]unsigned char temperature_buf=0;
[*]unsigned char humidity_buf=0;

复制代码


7、在初始化程序中,定义串口波特率,初始化RGB,定义GPIO。



[*]mySerial.begin(115200);
[*]leds.init();
[*]digitalWrite(A0, HIGH);//使能RGB LED
[*]pinMode(KEY1, INPUT_PULLUP); //KEY1 上拉输入
[*]pinMode(KEY2, INPUT_PULLUP); //KEY2 上拉输入
[*]LED_RGB_Control(0,0,0);<span style="background-color: rgb(255, 255, 255);"> </span>

复制代码


8、在主循环中,首先检测温湿度值,并将温湿度传感器的值进行显示。当温度超过20°C后,风扇打开一档;当温度超过30°C后,风扇打开二档。温度低于20°C,风扇自动关闭。



[*]DHT11_Read_Data(&temperature_buf, &humidity_buf);
[*]if(temperature_buf>20)
[*]{
[*]    Motor_status(1);
[*]}
[*]else   if(temperature_buf>30)
[*]{
[*]    Motor_status(2);
[*]}
[*]else
[*]{
[*]    Motor_status(0);
[*]}
[*]mySerial.println("temperature:");
[*]mySerial.println(temperature_buf, DEC);
[*]mySerial.println("humidity:");
[*]mySerial.println(humidity_buf, DEC);

复制代码


9、按下按键一,打开白灯;按下按键二,打开风扇。

[*]if(digitalRead(KEY1) == LOW)
[*]{
[*]LED_RGB_Control(255,255,255);
[*]mySerial.println("open led!");
[*]}
[*]elseif(digitalRead(KEY2) == LOW)
[*]{
[*]    Motor_status(1);
[*]mySerial.println("open fan!");
[*]}
[*]

复制代码


10、检测红外人体检测传感器是否有人,有人则打开白灯,没人则关闭。并通过串口发送出来。



[*]if (digitalRead(Infrared_PIN))
[*]{
[*]mySerial.println("No one appears and disappears!");
[*]LED_RGB_Control(0,0,0);
[*]}
[*]else
[*]{
[*]    LED_RGB_Control(255,255,255);
[*]mySerial.println("Someone is appearing!");
[*]}

复制代码


功能演示

https://club.gizwits.com/data/attachment/forum/202410/10/175950pz4p6s8kst6864dm.png.thumb.jpg

页: [1]
查看完整版本: 【机智云Gokit2.0开发板】+智能卧室睡眠环境装置