Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread学习营
星火1号_spark_星火一号_开发板
夏令营
[RT-Thread x 大学生夏令营] 智能家居照明系统
发布于 2023-07-26 02:25:04 浏览:522
订阅该版
[tocm] # 项目视频展示: ![3322.png](https://oss-club.rt-thread.org/uploads/20230726/6c00c07746c365de3c584eaa5d5ed17a.png.webp) [基于STM32的智能家居照明系统展示](https://www.bilibili.com/video/BV1cu411G7yr/ "基于STM32的智能家居照明系统展示") # 项目开发背景 随着全球人口老龄化趋势日益明显,老年人的生活需求成为社会关注的焦点之一。在晚年,老年人在夜间的照明需求更为重要,因为他们在夜晚的活动较为频繁,可能需要多次起夜、进出卧室或浴室等。 老年人在夜间面临一系列独特的挑战,包括视力下降、平衡问题和容易产生夜间惊恐等。这些问题增加了老年人在黑暗中移动的风险,可能导致摔倒和其他意外事故。因此,为老年人设计一套安全、智能的夜间灯光照明系统,成为了提高老年人生活质量、增强其安全感的重要举措。 夜间灯光照明系统的开发背景还源于现代科技的进步。随着智能家居、物联网等技术的迅速发展,人们越来越能够实现智能化、个性化的生活方式。对于老年群体,智能照明系统可以根据其活动习惯和需求,自动调节光线亮度和颜色,提供更为舒适、安全的环境。 此外,节能环保也是夜间灯光照明系统开发背景中的一个重要考虑因素。传统照明设备可能在老年人不需要时继续工作,造成能源浪费。而智能夜间灯光系统可以通过传感器检测老年人的活动,根据需求自动开关或调整光线,达到节能的目的。 综上所述,针对老年群体的夜间灯光照明系统是为了解决老年人在夜间活动中的安全和舒适问题,提高其生活质量,适应老龄化社会的需求,并兼顾节能环保的要求。这样的照明系统在为老年人提供更好的生活体验的同时,也体现了科技进步为社会带来的实际益处。 # 项目硬件选择 - 采用stm32f407zgt6芯片进行运算处理; - 采用ap3216c传感器检测光强和距离; - 采用rw007 wifi模块进行通信处理。 # 项目主要功能 1. 通过接近与光强传感器感测人体靠近并开启灯光照明系统 2. 统计老人夜间的如厕次数并将数据上传云端进行身体健康监测 # 项目具体实现 ## 1、程序流程图 ![ong.jpg](https://oss-club.rt-thread.org/uploads/20230726/2a1341612f79364f88be962e2c847834.jpg.webp) **2、光强和距离数据的采集(判断是否有人接近,检测到人体后开启照明系统):** ```c while (1) { rt_pin_write(PIN_LED3, PIN_LOW); rt_uint16_t ps_data; float brightness; /* 读 接 近 感 应 值 */ ps_data = ap3216c_read_ps_data(dev); /* 读 光 照 强 度 值 */ brightness = ap3216c_read_ambient_light(dev); if (brightness <= 0.5 && ps_data <= 20) { rt_pin_write(PIN_LED1, PIN_HIGH); rt_pin_write(PIN_LED2, PIN_HIGH); } else if (brightness <= 0.5 && ps_data > 20) { //LOG_D("ps:%d", ps_data); rt_pin_write(PIN_LED1, PIN_LOW); rt_pin_write(PIN_LED2, PIN_LOW); add(); rt_thread_mdelay(10000); } else { rt_pin_write(PIN_LED1, PIN_HIGH); rt_pin_write(PIN_LED2, PIN_HIGH); } rt_thread_mdelay(399); rt_pin_write(PIN_LED3, PIN_HIGH); rt_thread_mdelay(399); } ``` ## 3、自动联网功能: ```c #define WLAN_SSID "test" #define WLAN_PASSWORD "12345678" #define NET_READY_TIME_OUT (rt_tick_from_millisecond(15 * 1000)) static void print_wlan_information(struct rt_wlan_info *info,int index); static int wifi_autoconnect(void); static struct rt_semaphore net_ready; static struct rt_semaphore scan_done; const char * ssid="test"; const char * key="12345678"; int main(void) { static int i = 0; int result = RT_EOK; struct rt_wlan_info info; rt_wlan_connect(ssid, key); /* 等待 500 ms 以便 wifi 完成初始化 */ rt_thread_mdelay(500); /* 扫描热点 */ LOG_D("start to scan ap ..."); /* 执行扫描 */ rt_sem_init(&scan_done,"scan_done",0,RT_IPC_FLAG_FIFO); rt_wlan_register_event_handler(RT_WLAN_EVT_SCAN_REPORT, wlan_scan_report_hander,&i); rt_wlan_register_event_handler(RT_WLAN_EVT_SCAN_DONE, wlan_scan_done_hander,RT_NULL); if(rt_wlan_scan() == RT_EOK) { LOG_D("the scan is started... "); }else { LOG_E("scan failed"); } /*等待扫描完毕 */ rt_sem_take(&scan_done,RT_WAITING_FOREVER); /* 热点连接 */ LOG_D("start to connect ap ..."); rt_sem_init(&net_ready, "net_ready", 0, RT_IPC_FLAG_FIFO); /* 注册 wlan ready 回调函数 */ rt_wlan_register_event_handler(RT_WLAN_EVT_READY, wlan_ready_handler, RT_NULL); /* 注册 wlan 断开回调函数 */ rt_wlan_register_event_handler(RT_WLAN_EVT_STA_DISCONNECTED, wlan_station_disconnect_handler, RT_NULL); /* 同步连接热点 */ result = rt_wlan_connect(WLAN_SSID, WLAN_PASSWORD); if (result == RT_EOK) { rt_memset(&info, 0, sizeof(struct rt_wlan_info)); /* 获取当前连接热点信息 */ rt_wlan_get_info(&info); LOG_D("station information:"); print_wlan_information(&info,0); /* 等待成功获取 IP */ result = rt_sem_take(&net_ready, NET_READY_TIME_OUT); if (result == RT_EOK) { LOG_D("networking ready!"); msh_exec("ifconfig", rt_strlen("ifconfig")); } else { LOG_D("wait ip got timeout!"); } /* 回收资源 */ rt_wlan_unregister_event_handler(RT_WLAN_EVT_READY); rt_sem_detach(&net_ready); } else { LOG_E("The AP(%s) is connect failed!", WLAN_SSID); } rt_thread_mdelay(5000); //LOG_D("ready to disconect from ap ..."); //rt_wlan_disconnect(); /* 自动连接 */ LOG_D("start to autoconnect ..."); wifi_autoconnect(); return 0; } ``` ## 4、云平台的自动初始化与数据上传: ```c static void onenet_upload_entry(void *parameter) { while(1) { if (onenet_mqtt_upload_digit("Toilet Frequency", value) < 0) { LOG_E("upload has an error, stop uploading"); break; } else { LOG_D("buffer : {\"Toilet Frequency\":%d}", value); } rt_thread_delay(rt_tick_from_millisecond(30 * 1000)); } } int onenet_upload_cycle(void) { rt_thread_t tid; tid = rt_thread_create("onenet_send", onenet_upload_entry, RT_NULL, 2 * 1024, RT_THREAD_PRIORITY_MAX / 3 - 1, 5); if (tid) { rt_thread_startup(tid); } return 0; } ``` # 项目成品展示 ## 1、夜间照明系统工作示意图 ![2233.jpg](https://oss-club.rt-thread.org/uploads/20230726/9975d8e3bc9a1cd46d5266afc061df0c.jpg.webp) ## 2、如厕频率数据实时上传onenet: ![2333.jpg](https://oss-club.rt-thread.org/uploads/20230726/a65dd7aee85ea4c1887d5f76da353f68.jpg.webp) # 未来规划 - 完善底层算法,增强设备灵敏度和可靠性。 - 集成核心部件,保留最小系统使能耗降低。 - 接入全屋智能家居wifi系统,实现家居间的智能互联。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Anakin
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
stm32f407+lan8720 lwip2.0 作业提交
2
玩溜GD32303E-EVAL BSP系列(五)----设备连接网络
3
onenet应用连不上云端
4
【文件系统】晴天文件匹配
5
rtt semc sdram 基于操作系统怎么初始化驱动设备
6
RT-Thread移植笔记
7
RT-Thread内核移植+LoIIs+STM32F103C8+StdLib
8
EVN编译报错,求助大神
9
【内核和外设学习营】十里 简单LED闪亮测试
10
【内核和外设学习营】 十里 串口指令控制RGB灯点亮的颜色
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
7
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
6
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部