收藏官网首页
查看: 86|回复: 0

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

664

主题

721

帖子

3万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
35806
跳转到指定楼层
楼主
 楼主| 发表于 6 天前 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发



引言

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


痛点


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


功能

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

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


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


硬件
  • 机智云Gokit2.0开发板


项目开发
硬件开发





软件开发
  • 1、首先申明引用的头文件


  1. #include <Gizwits.h>
  2. #include <Wire.h>
  3. #include <SoftwareSerial.h>
  4. #include <DHT.h>
  5. #include <ChainableLED.h>
  6. #include <MsTimer2.h>
复制代码


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


  1. #define Infrared_PIN 2 ///< 红外IO管脚
  2. #define DHTPIN 3 ///< 温湿度IO管脚
  3. #define MOTOR_PINA 4 ///< 电机IO管脚
  4. #define MOTOR_PINB 5 ///< 电机IO管脚
  5. #define KEY1 6 ///< 按键IO管脚
  6. #define KEY2 7 ///< 按键IO管脚
  7. //温湿度功能值定义
  8. #define DHTTYPE DHT11
  9. //电机功能值定义
  10. #define MOTOR_MAX 100
  11. #define MOTOR_MAX1 -100
  12. #define MOTOR_MIN 0
  13. #define MOTOR_16

  14. DHT dht(DHTPIN, DHTTYPE);
  15. ChainableLED leds(A5, A4, 1);

  16. SoftwareSerial mySerial(0, 1); // A2 -> RX, A3 -> TX
复制代码


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


  1. void DHT11_Read_Data(unsigned char * temperature, unsigned char * humidity)
  2. {
  3. *temperature = (unsigned char)dht.readTemperature();
  4. *humidity = (unsigned char)dht.readHumidity();
  5. return;
  6. }
复制代码


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


  1. void Motor_status(long motor_speed)
  2. {
  3. unsigned char Temp_motor_speed = 0;
  4.   if (motor_speed == 0) //停止
  5.   {
  6. digitalWrite(MOTOR_PINA, LOW);
  7. }
  8.   if (motor_speed > 0) //正转
  9. {
  10. Temp_motor_speed = (motor_speed - 0) * 51;
  11. if (Temp_motor_speed > 255) Temp_motor_speed = 255;
  12. digitalWrite(MOTOR_PINA, LOW);
  13. analogWrite( MOTOR_PINB, Temp_motor_speed);
  14. }
  15. if (motor_speed < 0) //反转
  16. {
  17. Temp_motor_speed = 255 - (0 - motor_speed) * 51; //Temp_motor_speed = (255 ‐ (5 + motor_speed))* 51;
  18. if (Temp_motor_speed > 255) Temp_motor_speed = 255;
  19. digitalWrite(MOTOR_PINA, HIGH);
  20. analogWrite( MOTOR_PINB, Temp_motor_speed );
  21. }
  22. }
复制代码


5、编写RGB灯功能程序
  1. void LED_RGB_Control(byte red, byte green, byte blue)
  2. {
  3. leds.setColorRGB(0, red, green, blue);
  4. }
复制代码


6、**温湿度暂存变量
  1. unsigned char temperature_buf=0;
  2.   unsigned char humidity_buf=0;
复制代码


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


  1. mySerial.begin(115200);
  2. leds.init();
  3. digitalWrite(A0, HIGH);//使能RGB LED
  4. pinMode(KEY1, INPUT_PULLUP); //KEY1 上拉输入
  5. pinMode(KEY2, INPUT_PULLUP); //KEY2 上拉输入
  6. LED_RGB_Control(0,0,0);<span style="background-color: rgb(255, 255, 255);"> </span>
复制代码


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


  1. DHT11_Read_Data(&temperature_buf, &humidity_buf);
  2.   if(temperature_buf>20)
  3.   {
  4.     Motor_status(1);
  5.   }
  6.   else   if(temperature_buf>30)
  7.   {
  8.     Motor_status(2);
  9.   }
  10.   else
  11.   {
  12.     Motor_status(0);
  13.   }
  14.   mySerial.println("temperature:");
  15.   mySerial.println(temperature_buf, DEC);
  16.   mySerial.println("humidity:");
  17.   mySerial.println(humidity_buf, DEC);
复制代码


9、按下按键一,打开白灯;按下按键二,打开风扇。
  1. if(digitalRead(KEY1) == LOW)
  2.   {
  3.   LED_RGB_Control(255,255,255);
  4.   mySerial.println("open led!");
  5.   }
  6.   else  if(digitalRead(KEY2) == LOW)
  7.   {
  8.     Motor_status(1);
  9.   mySerial.println("open fan!");
  10.   }
  11.   
复制代码


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


  1. if (digitalRead(Infrared_PIN))
  2. {
  3.   mySerial.println("No one appears and disappears!");
  4. LED_RGB_Control(0,0,0);
  5. }
  6. else
  7. {
  8.     LED_RGB_Control(255,255,255);
  9. mySerial.println("Someone is appearing!");
  10. }
复制代码


功能演示




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表