基于Wi-Fi的校园智能座位管理系统

更新时间Invalid dateliu chang

概况

本项目基于 STM32F103C8T6 单片机,通过串口与涂鸦三明治 Wi-Fi MCU 通信板(WB3S) 进行数据交互,通过单片机检测按键进行配网,通过单片机检测限位开关的电平变化来检测座位是否有人坐下。除此之外,还能通过称重传感器检测常规座位的压力变化,将其反馈到 IoT 云端。

物料清单

硬件 (2)
  • 涂鸦三明治 Wi-Fi MCU 通信板(WB3S)

    数量:1

    适用于涂鸦 IoT 自定义方案中,照明、台灯、灯丝灯、调光器、照明遥控器、排插、开关、家电、运动健康、传感类产品原型。

  • STM32duino 开发板

    数量:1

    能够与涂鸦三明治开发板进行良好的拼接,降低开发难度。

步骤

硬件设计

座位拓展板

  • 座位拓展板总图

  • 座位拓展板 PCB 3D 模型与实物图

  • 座位拓展板介绍

    座位拓展板将 STM32duino 中的引脚引出,方便连接限位开关,同时引出了两路 作为常规座位的压力传感器测量。本项目的座位拓展板为 DEMO 板,仍有较多引脚 未引出,在之后升级中仍可提供更多座位检测限位开关。

STM32duino 开发板

  • STM32duino 总图

  • STM32duinoPCB 3D 图与实物图

  • STM32duino 主控板介绍

    采用瑞士意法半导体的 STM32F103C8T6 作为主控芯片,同时兼容 GD32C8T6 芯片,板载 RTC 时钟电路和 Wi-Fi 状态指示灯。同时拥有 Arduino uno 的 外形,能够与涂鸦三明治开发板进行良好的拼接,降低开发难度。

软件设计和 SDK 移植

软件开发采用 KEIL5 进行,配合 涂鸦 IoT 平台 生成的 SDK 文件,大大简化了链接到 IoT 云端的速度。如何在涂鸦 IoT 平台获取嵌入式软件开发所需的 SDK,可以参考 硬件开发

  • 串口发送服务函数
    /**
    * @brief 串口发送数据
    * @param[in] {value} 串口要发送的 1 字节数据
    * @return Null
    */
    	void uart_transmit_output(unsigned char value)
    	{
    USART_SendData(USART1,(unsigned char)value);
    	while(USART_GetFlagStatus(USART1,USART_FLAG_TC) != SET);
    	}
    
  • 串口中断服务函数
    /**
    * @brief 串口 1 中断函数
    	* @param
    * @return Null
    */
    void USART1_IRQHandler(void)
    	{
    u8 Res;
    	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //涂鸦智能 串口中断
    	{
    Res =USART_ReceiveData(USART1); //读取接收到的数据
    uart_receive_input(Res);
    	}
    - 8 -
    -  }
    
  • 按键检测与配网函数 基本按照官方文档中的参考编写即可
    void key_scan(void)
    	{
    static char ap_ez_change = 0;
    
    if(KEY_Config_Read() == 0){
    	delay_ms(3000);
    	if (KEY_Config_Read() == 0) {
    	init_flag = 0;
    	switch (ap_ez_change) {
    	case 0 :
    	mcu_set_wifi_mode(SMART_CONFIG);
    break;
    	case 1 :
    	mcu_set_wifi_mode(AP_CONFIG);
    break;
    	default:
    break;
    	}
    	ap_ez_change = !ap_ez_change;
    	}
    }
    }
    
    void wifi_stat_led(int *cnt)
    {
    switch (mcu_get_wifi_work_state())
    {
    	case SMART_CONFIG_STATE://0x00
    	init_flag = 0;
    	if (*cnt == 2) {
    *cnt = 0;
    	}
    if (*cnt % 2 == 0)//LED 快闪
    	{
    	LED_WIFI_on();
    	}
    	else
    	{
    	LED_WIFI_off();
    	}
    	break;
    	case AP_STATE: //0x01
    	init_flag = 0;
    if (*cnt >= 30) {
    	*cnt = 0;
    	}
    	if (*cnt == 0)// LED 慢闪
    	{
    LED_WIFI_on();
    	}
    	else if (*cnt == 15)
    	{
    	LED_WIFI_off();
    	}
    break;
    
    case WIFI_NOT_CONNECTED:// 0x02
    	LED_WIFI_off();//LED 熄灭
    break;
    case WIFI_CONNECTED: // 0x03
    break;
    case WIFI_CONN_CLOUD:// 0x04
    if ( 0 == init_flag )
    	{
    LED_WIFI_on();// LED 常亮
    init_flag = 1; // Wi-Fi 连接上后该灯可控
    *cnt = 0;
    }
    	break;
    
    default:
    LED_WIFI_off();//LED 熄灭
    	break;
    }
    	}
    
  • 座位扫描函数(检测限位开关的状态)
    //座位扫描
    void CHAIR_SCAN(void)
    {
    //座椅二
    	if(CHAIR2_Read() == 1)//高电平 无人坐下 未触发
    	{
    if(chair_2 == 1)
    {
    chair_2 = 0;
    mcu_dp_bool_update(DPID_CHAIR_2,chair_2); //BOOL 型数据上报;
    }
    }
    	else if(CHAIR2_Read() == 0)//触发 有人坐下
    {
    if(chair_2 == 0)
    {
    chair_2 = 1;
    mcu_dp_bool_update(DPID_CHAIR_2,chair_2); //BOOL 型数据上报;
    	}
    }
    //...............多个座位类似
    	}
    

效果演示

限位开关效果展示

  • 组装后效果:
  • 加上限位开关效果
  • 当限位开关按下时 App 界面

小结

在智慧校园活动中,让我第一次接触到涂鸦智能的硬件设备,不仅在产品使用上有很大的便利性,活动支持也做的相当不错。这次的校园座位检测系统还可以基于涂鸦 IoT 平台继续丰富功能,进行产品迭代。

您正在浏览的内容为涂鸦开发者平台注册用户自主发布,版权归原作者所有,涂鸦开发者平台不拥有其著作权,亦不承担相应法律责任,涂鸦开发者平台不对该等内容作出不违反、不侵权的陈述与保证。您应知晓并了解您对于该等内容的复制、改编、转发传播等任何其他使用行为应当符合法律法规并应取得相关权利人的许可,您的该等行为所造成的全部相应后果(包括但不限于侵权、违约、受损、与第三方的纠纷等)均应由您个人承担。内容知识产权相关条款可查看涂鸦开发者平台用户协议。如果您发现有涉嫌侵权的内容,请立即通过平台上的联系方式联系平台进行举报并发送有关证据,一经查实,平台将立刻删除涉嫌侵权内容。

喜欢举报