博客专栏

EEPW首页 > 博客 > 校园图书馆爆棚?DIY一个占座神器,助你成功上岸!同班的都羡慕~

校园图书馆爆棚?DIY一个占座神器,助你成功上岸!同班的都羡慕~

发布人:智能物联研习社 时间:2021-03-16 来源:工程师 发布文章


考研考证压力大,埋头苦干的你是不是在烦恼每日图书馆的座位问题?


捧着一大堆书籍,大汗淋漓地跑到图书馆,没位置的时候真是晴天霹雳!


要是有个自动检测座位的智能设备,帮助哪些同学迅速地发现座位的空缺,会省去很多人力以及时间~


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


本教程内容均为涂鸦开发者 @刘畅 提供,经其授权编辑发布。


物料清单
硬件 (2)软件 (1
  • 涂鸦三明治 Wi-Fi MCU 通信板(WB3S)

    涂鸦三明治 Wi-Fi MCU 通信板(WB3S)数量:1

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

  • STM32duino 开发板

    STM32duino 开发板

    数量:1


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

步骤
  • 第 1 步:硬件设计

    座位拓展板

    STM32duino 开发板

    • STM32duino 总图

      image.png

    • STM32duinoPCB 3D 图与实物图

      image.png

      image.png

    • STM32duino 主控板介绍

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

    • 座位拓展板总图

      image.png

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

      image.png

      image.png

    • 座位拓展板介绍

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

  • 第 2 步:软件设计和 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 型数据上报;
      	}
      }
      //...............多个座位类似
      	}
  • 第 3 步:效果演示

    限位开关效果展示

    • 组装后效果:
      image.png

    • 加上限位开关效果
      image.png

    • 当限位开关按下时 App 界面

在智慧校园活动中,让我第一次接触到涂鸦智能的硬件设备,不仅在产品使用上有很大的便利性,活动支持也做的相当不错。

这次的校园座位检测系统还可以基于涂鸦 IoT 平台继续丰富功能,进行产品迭代。

快来DIY叭:

https://auth.tuya.com/?_source=7c8653b7bd61bf9239a1a6c12e52124d        




*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

接地电阻相关文章:接地电阻测试方法


光耦相关文章:光耦原理


模数转换器相关文章:模数转换器工作原理


光伏发电相关文章:光伏发电原理


关键词: 嵌入式 工程师

相关推荐

技术专区

关闭