你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Ada制作:糖果分配器

[复制链接]
木木&点点 发布时间:2019-1-28 20:50
应该赚糖果,所以我们在Ada中攻击了一台点胶机,让人们回答有关Ada编程语言和AdaCore的问题!
1.jpg
介绍
几个月前,我的同事丽贝卡在我们位于AdaCore的厨房里安装了糖果分配器。我不记得究竟是怎么回事,但我受到了挑战,让它变得更有趣......
所以我的想法是添加一个触摸屏,人们必须回答有关Ada或AdaCore技术的问题,并修改分配器,以便人们只有在给出正确答案时才会获得糖果。(邪恶,不是吗?)
为此,我将使用配备800x600 LCD和电容式触摸屏的STM32F469发现板。但在此之前,我必须破解糖果机....
黑客分配器
首先要做的是破解糖果分配器,以便能够控制糖果输送系统。
糖果分配器由以下材料制成:
糖果的容器
一个转动蜗轮的马达将糖果推出机器
红外接近传感器,用于检测用户的手
我的目标是找到命令电机的信号并将我的系统插入其中间。当分配器试图打开电机时,意味着检测到手,我可以决定是否真的要打开电机。
2.jpg
为了找到控制电机的信号,我开始查看连接电机的电线及其落在电路板上的位置。它连接到“大”晶体管的中心支路。晶体管的另一条腿接地,所以第三条必须是我正在寻找的信号。通过跟踪迹线,我看到该信号连接到8引脚IC:它必须是驱动机器的微控制器。
在这一点上,我有足够的信息来破解分配器,但我想了解检测是如何工作的,看看信号会是什么样子。所以我将逻辑分析仪连接到IC的每个引脚并开始记录。
以下是3个有趣的信号:红外LED,红外传感器和电机控制。
3.jpg
发现
检测分三个阶段进行:
等待:微控制器每100ms仅打开红外LED(信号01)0.2毫秒。这是为了节省电力,因为机器设计为电池供电。
检测:当检测到某些东西时,MCU将打开红外LED 10次以确认传感器前面确实存在某些东西。
交付:电机开启最长300ms。在此期间,MCU每20ms检查一次,看看手是否仍在传感器前面(信号03)。
这证实控制电机的信号是我要插入项目的地方。这样我让分配器的MCU处理检测和误报。
4.jpg
我刮了焊接掩模,切断了迹线并将电线焊接到每一侧。绿线现在是我的检测信号(当检测到手时为高),白线是我的电机命令。
我将这两根电线用额外的地线向下延伸到分配器的底部,然后在外面将它们连接到STM32F469发现板。
软件
软件方面并不复杂:我使用GNAT的GPL版本和STM32F469上ARM Cortex-M的Ravenscar运行时。来自分配器的绿线连接到将触发中断的GPIO,因此无论何时软件获得中断,都意味着传感器前面有一只手。使用另一台GPIO,我可以打开或关闭点胶机电机。
5.jpg
对于GUI,我使用了一个名为Giza的玩具项目:它是一个用于基本触摸屏用户界面的简单图形工具包。接口有两个窗口。第一个窗口显示问题,每个可能的答案都有一个按钮。当玩家点击错误的答案时,几秒钟后会显示另一个问题; 当它是正确答案时,会显示交货窗口。在发送窗口,玩家可以通过使用“不,谢谢”按钮中止或将手放在传感器下并获得他的糖果!
这些代码可以在GitHub上找到:https ://github.com/Fabien-Chouteau/AMCQ
代码--- AMCQ-master.zip (39.83 KB, 下载次数: 1)
收藏 评论0 发布时间:2019-1-28 20:50

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版