可进入原文获取百味勺子软硬件完整开源资料包百味勺子-开源方案
随着美食类节目越来越得到大众的认可,越来越多的爱好者也纷纷开始加入美食博主之类的行列。看着屏幕里色泽诱人,香气氤氲的美食,屏幕前的大家直流口水,恨不得马上飞到旁边试吃。当收看这类节目,大家时常感叹,为什么吃不到这些美食,好痛苦啊!!!
不要急,机会来啦,现在有一款智能设备——百味勺子,从电流,温度等方面刺激舌头,让大脑模拟出对应的味觉,使在家就能品尝到世界各地的美食。
当然,通过百味勺子,可以在不吃到食物的情况下,体验到巧克力、蛋糕等高热量食品的味道,实属减肥利器。
另外,对于一些被高血压,糖尿病所困,无法摄入特定食物的病人,百味勺子也可以从另一方面提高他们的生活质量。
当病人要服用非常难吃的药的时候,可以通过百味勺子来进行味觉欺骗。
怎么样,是否有点心动?让我们来看看这样一款勺子是怎么做出来的。
一.硬件设计
1.主控单元
主控芯片选择涂鸦智能开发的嵌入式蓝牙模组。
2.电源管理系统
百味勺子为了做到整体小巧精致,方便携带,因此在电源方面,建议选择能量比高,自放电率低的锂电池供电。
3.电流调制系统
百味勺子的核心就是产生一定大小和频率的电流,刺激人体舌头,模拟产生味觉,因此可靠稳定的电流调制系统非常重要。
电流调制主要有两部分组成,一个是电流频率的调制,一个是电流大小的调制。涂鸦工程师经过反复测试验证,设计出了下面这款电路:
4.温度控制系统
温度控制系统主要分为加热部分和温度检测部分。原理图如下:
二、外观结构
电路完之后,开发者还需要发挥创意,给勺子设计一个好看的外形结构。
三.味道实现
对于不同的人原始味觉,它们需要什么样“参数”来“欺骗”大脑呢?大致如下:
| 味道 | 电流&温度参数 |
|---|---|
| 咸 | 20-50uA的低频率电流 |
| 酸 | 60-180uA的电流、舌头温度从20℃上升到30℃ |
| 甜 | 反向电流、舌头温度先升到35℃,再缓慢降低至20℃ |
| 苦 | 60-140uA的反向电流 |
| 辣 | 温度从33℃加热至38℃ |
| 薄荷 | 温度从22℃下降至19℃ |
上面已经提到了味觉的产生是通过不同电流和温度的刺激来产生一些味觉的,那么具体在代码中的实现原理如下:APP端下发味觉的相应命令,通过控制模组的几个引脚,外加加热电路,控制输出微电流刺激舌头产生这几种味觉。微电流的产生是通过X9C104电位器调节阻值大小实现的。
用户自定义功能是开放电流、频率、温度三个参数让用户调节去探索一些神奇的味道~
void app_dp_handle(uint8_t *dp_data) { TUYA_APP_LOG_INFO("dp_data:%d %d %d %d", dp_data[0], dp_data[1], dp_data[2], dp_data[3]); switch (dp_data[0]) { // 味觉 酸、甜、苦、咸 case 0x66: switch (dp_data[3]) { case sour: spoon_state.temp = sour_temp; blt_soft_timer_delete(&sweet_temp_contorl); blt_soft_timer_delete(&bitter_temp_contorl); gpio_write(TONGUE_PIN, 1); x9c104s_set(_140uA); break; case sweet: spoon_state.temp = heat_off; blt_soft_timer_delete(&bitter_temp_contorl); gpio_write(TONGUE_PIN, 1); x9c104s_set(_80uA); blt_soft_timer_add(&sweet_temp_contorl, 200*TIME_MS); break; case bitter: spoon_state.temp = heat_off; blt_soft_timer_delete(&sweet_temp_contorl); gpio_write(TONGUE_PIN, 1); x9c104s_set(_100uA); blt_soft_timer_add(&bitter_temp_contorl, 200*TIME_MS); break; case salty: spoon_state.temp = heat_off; blt_soft_timer_delete(&sweet_temp_contorl); blt_soft_timer_delete(&bitter_temp_contorl); x9c104s_set(_60uA); blt_soft_timer_add(&set_tongue_Hz, _hz100); break; case user_defined: blt_soft_timer_delete(&sweet_temp_contorl); blt_soft_timer_delete(&bitter_temp_contorl); x9c104s_set(_60uA); blt_soft_timer_add(&set_tongue_Hz, _hz100); break; default: break; } break; // 电流调节 自定义模式下使用 case 0x67: switch (dp_data[3]) { case uA_20: x9c104s_set(_20uA); break; case uA_40: x9c104s_set(_40uA); break; case uA_60: x9c104s_set(_60uA); break; case uA_80: x9c104s_set(_80uA); break; case uA_100: x9c104s_set(_100uA); break; case uA_120: x9c104s_set(_120uA); break; case uA_140: x9c104s_set(_140uA); break; case uA_180: x9c104s_set(_180uA); break; case uA_200: x9c104s_set(_200uA); break; default: break; } break; // 频率调节 自定义模式下使用 case 0x68: switch (dp_data[3]) { case hz_50: blt_soft_timer_add(&set_tongue_Hz, _hz50); break; case hz_100: blt_soft_timer_add(&set_tongue_Hz, _hz100); break; case hz_200: blt_soft_timer_add(&set_tongue_Hz, _hz200); break; case hz_400: blt_soft_timer_add(&set_tongue_Hz, _hz400); break; case hz_600: blt_soft_timer_add(&set_tongue_Hz, _hz600); break; case hz_800: blt_soft_timer_add(&set_tongue_Hz, _hz800); break; case hz_1000: blt_soft_timer_add(&set_tongue_Hz, _hz1000); break; case hz_0: blt_soft_timer_delete(&set_tongue_Hz); gpio_write(TONGUE_PIN, 1); break; default: break; } break; // 温度调节 自定义模式下使用 case 0x69: switch (dp_data[3]) { case T_30: break; case T_31: spoon_state.temp = temp_31; break; case T_32: spoon_state.temp = temp_32; break; case T_33: spoon_state.temp = temp_33; break; case T_34: spoon_state.temp = temp_34; break; case T_35: spoon_state.temp = temp_35; break; case T_36: spoon_state.temp = temp_36; break; case T_37: spoon_state.temp = temp_37; break; case T_38: spoon_state.temp = temp_38; break; case T_39: spoon_state.temp = temp_39; break; case T_40: spoon_state.temp = temp_40; break; default: break; } break; default: break; } }\
三明治开发玩转物联网智能产品,如果你也对百味勺子感兴趣可以一起动手试试,也可以进入原文获取百味勺子完整软硬件开源资料包
上期精彩回顾:如何利用Wi-Fi&[BluetoothLE模组实现家庭环境安全检测](如何利用 Wi-Fi+Bluetooth LE模组实现家庭环境安全智能监测 - 掘金 (juejin.cn))