开发一款简单的咸味勺子原型

更新时间Invalid date

概况

2013年,新加坡国立大学实验室的研究人员公开了一款合成味觉的交互设备原型,它可以通过电流和温度来模拟人类几种原始味觉。人类在进食的时候,舌头味蕾会产生相应的生物电,并传到大脑,让大家食而知其味。而这款智能勺子原理与此相似,通过不同的低频电流刺激,让人产生原始的味道,感受不同的强度。对于不同的人类原始味觉,它们需要什么样“参数”来“欺骗”大脑呢?大致如下:

  • 酸味:60-180uA 的电流、舌头温度从20℃上升到30℃

  • 甜味:反向电流、舌头温度先升到35℃,再缓慢降低至20℃

  • 苦味:60-140uA 的反向电流

  • 咸味:20-50uA 的低频率电流

  • 薄荷味:温度从22℃下降至19℃

  • 辣味:温度从33℃加热至38℃

此次,我们设计了一款咸味勺子原型,大家可以参考参数来设计一款适合自己的多味勺子。

现在的我们越来越重视健康养生, 健康减肥、健康饮食等。为了能保持健康和身材,越来越多的人追求低盐低脂的生活,但现实中不尽如意,嘴巴会控制不住诱惑,去吃各种重口味,高热量的实物。又想健康饮食,同时能解决嘴馋,咸味勺子帮你实现愿望!!!!

步骤

  • 第 1 步:硬件设计

    硬件框图

    原理图和 PCB

    原理图

    PCB

    电路设计

    MCU 主控电路

    ​MCU 主控芯片选择 STC 的 STC8G 系列 的一款外围电路简单的低功耗单片机。

    电源管理电路

    ​充电管理电路采纳 XT2051。它是一款用于单芯锂离子电池的恒流/恒压充电电路。该器件包括一个内部功率晶体管,在应用中不需要外部电流检测电阻和阻塞二极管。XT2051需要最少的外部组件,并满足 USB 总线规范。而且低功耗,低成本,非常适合便携式,电池供电应用领域。

    升压控制电路

    输出电压计算:VOUT=1.233*(1+R5/R10) 约等于 8V。

    电感值的选取决定了变换器的最大开关频率,以及电感值应具有满足变换器最大峰值电流的饱和电流。

    Ipeak(typ)=400ma+Vin/L*100ns。电感器值越小,芯片开关频率越高,但效率越低。电感值对最大负载的可用电流影响较小,仅为二次级(由芯片手册中的计算公式可以看出)。电感值的范围为 2.2uH~47uH。

    需要通过反馈电阻R5的前馈电容为误差比较器提供足够的超速驱动。如果没有前馈电容或前馈电容太小, TPS61040 在开关节点(SW)上显示的是双脉冲或脉冲突发,而不是单脉冲,导致输出电压纹波更高。如果这个更高的输出电压纹波是可以接受的,前馈电容可以被排除。变频器的开关频率越低,所需的前馈电容值就越大。在工作点前馈电容所需的值也可以用下式计算:C3=1/(23.14(fs/20)*R5)

    完善线路监管的方法:

    • 使用较小的电感值来增加开关频率,这将降低输出电压纹波,以及反馈引脚上的电压纹波。
    • 从反馈管脚(FB)到地添加一个小电容,以减少反馈管脚上的电压纹波降到50mv。作为起点,可以使用与前馈电容C3相同的电容值。

    低频恒流源电路

    利用单片机 I/O 输出 PWM 波去控制电流的频率。

    利用 LDO模块稳压的作用以及输入电流等于输出电流的特性来做的恒流源。

    Iout=Vout/R11=3.3V/100K=33uA

    电流以及频率同时满足人体对咸味的感受。

    无线通信控制电路

    ​无线通信基于涂鸦智能的一款低功耗嵌入式BLE协议的 BTU 模组。

    外观结构设计

    ​电路分析完之后,来看看勺子的外形结构。勺子的外形结构也是一个至关重要的部分,怎么把勺子做的便携,精致,小巧,还需开发者发挥想象。结构中利用勺子和嵌入结构中的电极片以及人体舌头来形成回路,从而让电流流过人体到舌头。电极片和勺子需要是导电的材质。

  • 第 2 步:产品创建

    spoon

    1. 登录 涂鸦 IoT 平台

    2. 选择 创建产品

    3. 在页面左下角,选择 找不到品类?

    4. 自定义创建 区域内,填写参数后单击 创建产品

      • 产品名称、产品描述、产品型号:用户自定义填写。
      • 通讯协议:选择 蓝牙

    5. 功能定义 页签中,添加自定义功能。功能点可以根据需求自行增减,功能点名称以及属性也可根据需求自行修改。

      本方案中需要添加以下自定义功能点:低电量报警、味觉、电流、频率、温度。数据类型和参数值参考下图。

    6. 设备面板 页签中,按照界面提示选择 App 面板。调试阶段推荐选择开发调试面板便于测试。

    7. 硬件开发 页签中,选择 涂鸦标准模组MCU SDK开发

    8. 选择一款模组后,在下方 开发资料 区域单击 下载全部 下载所需资料,其中就包含了涂鸦 MCU SDK 文件。

      至此,产品创建阶段已经基本完成。

  • 第 3 步:软件开发

    搭建开发环境

    环境搭建请参考 蓝牙开发环境

    功能实现

    串口初始化及功能

    void UartInit()		//9600bps@11.0592MHz
    {
    	P_SW1 &= ~(3<<6);
    	P_SW1 |= 1<<6;			//RXD/P3.2, TXD/P3.3
    	P3M0 |= 1<<3;
    	P3M1 &= ~(1<<3); //TX推挽输出
    	SCON = 0x50;		//8位数据,可变波特率
    	AUXR |= 0x40;		//定时器时钟1T模式,不分频
    	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
    	TMOD &= 0x0F;		//设置定时器模式
    	TL1 = 0xE0;		//设置定时初始值
    	TH1 = 0xFE;		//设置定时初始值
    	ET1 = 0;		//禁止定时器1中断
    	ES=1;						//打开接收中断	
    	TR1 = 1;		//定时器1开始计时
    }
    
    void Uart_PutChar(unsigned char value)
    {
    	SBUF=value;//将接收到的数据放入到发送寄存器
    	while(!TI);			 //等待发送数据完成
    	TI=0;						 //清除发送完成标志位	
    }
    
    void Usart() interrupt 4
    {
    	u8 receiveData;
    	receiveData=SBUF;//出去接收到的数据
    	RI = 0;//清除接收中断标志位
    	uart_receive_input(receiveData);
    }
    

    定时器初始化及功能

    void Timer0Init()		//1000微秒@11.0592MHz
    {
    	P5M0 |=1<<4;
    	P5M1 &=~(1<<4);	//P54输出模式
    	AUXR |= 0x80;		//定时器0时钟1T模式
    	TMOD &= 0xF0;		//设置定时器模式
    	TL0 = 0xCD;		//设置定时初始值
    	TH0 = 0xD4;		//设置定时初始值
    	TF0 = 0;		//清除TF0标志
    	ET0=1;//打开定时器0中断允许
    	EA=1;//打开总中断
    	TR0 = 1;		//定时器0开始计时
    }
    
    void Timer0() interrupt 1
    {
    	static u16 i=0;
    	static u16 count=0;
    	if(fre_set>=100)//频率大于等于100Hz
    	{
    		TL0 = (65535-11059/fre_set*500)%256;
    		TH0 = (65535-11059/fre_set*500)/256;
    		i=0;
    		P54 =~P54;
    		count++;
    	}
    	else if(fre_set<100)//0.1ms
    	{
    		TL0 = 0xAE;		//设置定时初始值
    		TH0 = 0xFB;		//设置定时初始值
    		if(fre_set==0)
    		{
    			P54=1;
    		}
    		else
    		{
    			i++;		
    			if(i>(5000/fre_set))
    			{
    				P54 =~P54;
    				i=0;
    				count++;
    			}
    		}
    	}
    	if(count>(4*fre_set))
    	{
    		count=0;
    		f_task_ad=1;
    	}
    }
    

    ADC初始化及功能

    void ADCInit()
    {
        P5M0 &= ~(1<<5);                                //设置P5.5为ADC口
        P5M1 |= 1<<5;
        P_SW2 |= 0X80;
        ADCTIM=0X3F;
        P_SW2 &= 0X7F; 
        ADCCFG |= 0x0f;                              //设置ADC时钟为系统时钟/2/16/16
        ADC_CONTR |=5;  													//设置通道5
        ADC_CONTR |= 0x80;                           //使能ADC模块
    }
    
    void TASK_ADC()		//1000微秒@11.0592MHz
    {
    	ADC_CONTR |= 0x40;                      //启动AD转换
    	while (!(ADC_CONTR & 0x20)) ;           //查询ADC完成标志
        _nop_();
    	_nop_();
    	ADC_CONTR &= ~0x20;                     //清完成标志
    	voltage = ADC_RES*4+ADC_RESL/64;                           //读取ADC结果
    	voltage = voltage *32/5;
    	mcu_dp_value_update(DPID_VOLTAGE,voltage);//上报
    }
    

小结

大家带着手中的智能勺子,结合涂鸦智能 App,一起去探索那些未知的美味吧。涂鸦物联网开发平台为开发者提供了便捷的 IoT 开发工具与服务,助力开发者更高效的完成设备接入,并为开发者提供物联网应用开发及场景服务能力。

更进一步