特朗普按钮
组件和用品
| × | 1 |
应用和在线服务
| ||||
|
关于这个项目
简介
我们都听说过特朗普用来点健怡可乐的按钮吧? (http://time.com/4758059/donald-trump-coke-nuclear-button/)
好吧,我们认为我们可以使用 Sigfox 网络构建一个更好的版本。您只需要一个笨重的按钮、一个 Arduino MKRFox1200 开发板和一个 Twilio 帐户即可发送短信。
什么是 Sigfox?
Sigfox 为物联网提供了一个全球性、简单且节能的网络。 Sigfox 网络目前在 32 个国家/地区可用或正在推出。该网络通过提供经济的、低功率的、长距离少量数据的双向传输来补充现有的高带宽系统。 Sigfox 技术得到数百家硬件和解决方案合作伙伴的支持。
1. 硬件要求
- Arduino MKRFox1200
- 一个大按钮
- LiPo 电池或 2 节 AA/AAA 电池
- 一个按钮开关
- thethings.io 贴纸
- 当然还有特朗普面具
我们正在使用连接到 Arduino 引脚 7 和 GND 的按钮开关。在正常状态下,开关是闭合的。当按下按钮时,它会打开开关。开关状态可以很容易地在 Arduino 代码中反转。
图> 图> 图> 图> 图> 图>
2. Arduino代码
您可以在 GitHub 上检索 Arduino 代码:https://github.com/aureleq/TrumpButton
我们使用低功耗库让开发板进入深度睡眠。中断用于唤醒板并发送 Sigfox 消息:
// 连接开关管脚并启用电压上升事件中断 pinMode(SWITCH_PIN, INPUT_PULLUP); LowPower.attachInterruptWakeup(SWITCH_PIN, buttonPressed, RISING); // 开关默认关闭,按下按钮时打开void loop(){ // 休眠直到识别到事件 LowPower.sleep(); // 如果我们到达这里,则表示收到了一个事件 Serial.println("Button push!");延迟(100); sendString(payload);}
3. Twilio
- 在这里免费注册
- 在“已验证的来电显示”(接收通知的电话号码)中添加新号码
- 记下您生成的 Twilio 电话号码 , 帐户 SID 和授权令牌:
4.Sigfox回调配置
- 连接到您的 Sigfox 后端帐户。如果你还没有注册你的 Arduino 板,你可以在这里激活它:https://backend.sigfox.com/activate/
- 选择设备类型 您的 Arduino 设备。链接到设备类型 可在信息下找到 类别。
使用以下参数创建一个新的自定义回调:
- 类型:
数据上行
- 频道:
网址
- 网址格式:
https://[AccountSID]:[AuthToken]]@api.twilio.com/2010-04-01/Accounts/[AccountSID]/Messages.json
- 使用 HTTP 方法:
POST
- 内容类型:
application/x-www-form-urlencoded
- 正文:
From=[YourTwilioPhonenumber]]&To=[PhoneNumber]&Body=
covfefe!
短信 covfefe! 每次按下按钮时都会发送。
5. 验证
用力按下按钮,等管家给你端来一杯!
代码
- Arduino 源代码
Arduino 源代码Arduino
/* * @aureleq * * 描述:按下按钮时发送 Sigfox 消息 * 默认情况下,按钮需要连接到 GND 和引脚 7 之间 * 中断用于启用低功耗模式。 * 由于电路板大部分时间处于睡眠模式,因此需要执行电路板重置以上传新草图(双击重置按钮)*/#include#include const uint8_t SWITCH_PIN =7;const String payload ="COKE NOW!";const uint8_t debug =false;void setup() { if (debug ==true) { Serial.begin(9600); while (!Serial) {}; } if (!SigFox.begin()) { Serial.println("屏蔽错误或不存在!");返回; } // 启用调试指示灯并禁用自动深度睡眠 // 在交付项目时注释此行 :) //SigFox.debug(); Serial.println("检测到 Sigfox 屏蔽");字符串 ID =SigFox.ID(); Serial.println("ID =" + ID);延迟(100); // 发送模块到最深睡眠 SigFox.end(); // 连接开关引脚并启用电压上升事件中断 pinMode(SWITCH_PIN, INPUT_PULLUP); LowPower.attachInterruptWakeup(SWITCH_PIN, buttonPressed, RISING); // 默认关闭开关,按下按钮时打开}void loop(){ // 休眠直到识别到事件 LowPower.sleep(); // 如果我们到达这里,则表示收到了一个事件 Serial.println("Button push!");延迟(100); sendString(payload);}void sendString(String str) { // 启动模块 SigFox.begin(); // 第一次配置后至少等待 30 毫秒(之前 100 毫秒)延迟(100); // 清除所有挂起的中断 SigFox.status();延迟(1); SigFox.beginPacket(); SigFox.print(str); int ret =SigFox.endPacket(); // 将缓冲区发送到 SIGFOX 网络 if (ret> 0) { Serial.println("No Transmission"); } else { Serial.println("传输正常"); Serial.println(SigFox.status(SIGFOX)); Serial.println(SigFox.status(ATMEL)); SigFox.end();}void buttonPressed() {}
Github
https://github.com/aureleq/TrumpButton制造工艺