智能硬件DIY 基于STM32F103C8T6的占座神器

发布者:csZhou最新更新时间:2023-10-12 来源: elecfans关键字:STM32F103C8T6 手机看文章 扫描二维码
随时随地手机看文章

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


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


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


基于 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字节数据

    *@returnNull

    */

    voiduart_transmit_output(unsignedcharvalue)

    {

    USART_SendData(USART1,(unsignedchar)value);

    while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);

    }

    串口中断服务函数

    /**

    *@brief串口1中断函数

    *@param

    *@returnNull

    */

    voidUSART1_IRQHandler(void)

    {

    u8Res;

    if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//涂鸦智能串口中断

    {

    Res=USART_ReceiveData(USART1);//读取接收到的数据

    uart_receive_input(Res);

    }

    -8-

    -}

    按键检测与配网函数 基本按照官方文档中的参考编写即可

    voidkey_scan(void)

    {

    staticcharap_ez_change=0;

    if(KEY_Config_Read()==0){

    delay_ms(3000);

    if(KEY_Config_Read()==0){

    init_flag=0;

    switch(ap_ez_change){

    case0:

    mcu_set_wifi_mode(SMART_CONFIG);

    break;

    case1:

    mcu_set_wifi_mode(AP_CONFIG);

    break;

    default:

    break;

    }

    ap_ez_change=!ap_ez_change;

    }

    }

    }

    voidwifi_stat_led(int*cnt)

    {

    switch(mcu_get_wifi_work_state())

    {

    caseSMART_CONFIG_STATE://0x00

    init_flag=0;

    if(*cnt==2){

    *cnt=0;

    }

    if(*cnt%2==0)//LED快闪

    {

    LED_WIFI_on();

    }

    else

    {

    LED_WIFI_off();

    }

    break;

    caseAP_STATE://0x01

    init_flag=0;

    if(*cnt》=30){

    *cnt=0;

    }

    if(*cnt==0)//LED慢闪

    {

    LED_WIFI_on();

    }

    elseif(*cnt==15)

    {

    LED_WIFI_off();

    }

    break;

    caseWIFI_NOT_CONNECTED://0x02

    LED_WIFI_off();//LED熄灭

    break;

    caseWIFI_CONNECTED://0x03

    break;

    caseWIFI_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;

    }

    }

    座位扫描函数(检测限位开关的状态)

    //座位扫描

    voidCHAIR_SCAN(void)

    {

    //座椅二

    if(CHAIR2_Read()==1)//高电平无人坐下未触发

    {

    if(chair_2==1)

    {

    chair_2=0;

    mcu_dp_bool_update(DPID_CHAIR_2,chair_2);//BOOL型数据上报;

    }

    }

    elseif(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 界面
      pIYBAGBQlFaAPtQmAAIQsDJuDmo954.png

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

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


关键字:STM32F103C8T6 引用地址:智能硬件DIY 基于STM32F103C8T6的占座神器

上一篇:基于 STM32和机智云物联网平台的农作物需水量统计系统
下一篇:基于STM32F107VCT6微控制器的控制系统解决方案

推荐阅读最新更新时间:2024-11-11 16:16

STM32F103C8T6在线升级 IAP
stm32程序每次执行都会从基地址0x800 0000开始执行。IAP程序升级的执行是在bootloader引导文件执行后,进行加载、跳转APP程序。所以每次上电后进入BootLoader判断是否需要升级,如果升级则接受bin文件,如果不升级则直接跳转app程序。 BootLoader和app程序的FLASH大小需要根据自己的程序情况自由的分配大小就可以了。 代码:根据正点原子的例程进行修改的 1、由于BootLoader引导程序比较小,我设置的flash大小为0x1800 2、iap函数:由于STM32F103C8T6程序存储容量是64KB,每页的大小为1K字节即1024,所以iapbuf数组设置为512。
[单片机]
<font color='red'>STM32F103C8T6</font>在线升级 IAP
基于STM32F103C8T6单片机的计步器设计
一.系统设计 由 STM32F103C8T6 单片机 最小系统 + AD XL345 + L CD1602 显示屏。通过ADXL345 检测 震动和移动并完成计数。累加的步数会传输到LCD1602上进行显示,可以直观的观察自己的步数。 图1 系统框图 二. 硬件 设计 系统内的主要电路有单片机最小系统电路,步数采集电路、显示电路,系统的内的电路并不复杂,只实现的步数的采集累加以及显示的功能。对于计步器而言,本系统的步数采集能力较为不错,有较高的灵敏度。 图2 硬件电路 三.软件设计 系统的软件逻辑清晰,首先先进行一次系统初始化,此时就开始进行计步检测。当完成计步后会将采集到的步数 信息 在显示屏上进行显示,判断是否完成
[单片机]
基于<font color='red'>STM32F103C8T6</font>单片机的计步器设计
STM32F103C8T6在Arduino IDE里编程
前言 时代在进步,极客们手上的单片机也从古老的51、PIC变成了AVR、STM32,也出现了各种便捷的开发工具,例如盛极一时的Arduino;不过Atmega328所属的AVR单片机,终究还是老点了,算起来差不多是20年前的主流了,现在流行的是ARM,今天我们就来玩下Arduino与STM32的结合。 经过半天的努力,终于可以让Arduino IDE支持我的32小板子了,STM32的芯片性价比普遍高于arduino里avr的单片机,所以好处就不用多说了。在这分享下这个有趣的玩法,将会使得STM32的编程更加简单,而不会像KEIL里那么的麻烦(不需了解底层的运作),使得新手更加容易上手,话不多说,走起。。。 板子+USB转T
[单片机]
<font color='red'>STM32F103C8T6</font>在Arduino IDE里编程
如何将I2C LCD与STM32F103C8T6连接?
在本教程中,我将向您展示如何将I2C LCD与基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口。如果您还记得“将16X2 LCD与STM32F103C8T6接口”的教程,我已经向您展示了将LCD与STM32连接并显示一些信息有多么简单。该项目将非常有趣,因为我将利用I2C通讯与16×2 LCD进行通讯。 介绍 小型的字母数字字符显示器(如非常流行的16×2 LCD显示器)是非常有用的小组件,因为您可以使用它们来显示与项目相关的一些重要信息。LCD上显示的信息可以与项目本身相关,如从温度传感器读取的信息或特殊数据(如调试消息或错误代码)。 我在很多项目中都使用了16×2 LCD显示模块,其中
[单片机]
如何将I2C LCD与<font color='red'>STM32F103C8T6</font>连接?
基于STM32F103C8T6的点灯设计
根据STM32F103C8T6的原理图,可知LED2与CPU的PC13相连,当PC13=1(高电平)时,LED2呈熄灭状态;当PC13=0(低电平)时,LED2呈点亮状态。 参考代码如下: //main.c #include stm32f10x.h #include led.h #include delay.h int main(void) { LED_Init(); while(1) { GPIO_ResetBits(GPIOC,GPIO_Pin_13); delay(200); GPIO_SetBits(GPIOC,GPIO_Pin_13); delay(200); } } //led.c #i
[单片机]
基于<font color='red'>STM32F103C8T6</font>的点灯设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved