亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

带有 Arduino 的老式双向寻呼机

组件和用品

Hologram Global IoT SIM 卡
× 1
Arduino UNO
× 1
Arduino GSM shield V2
× 1
Adafruit LCD Shield Kit 带 16x2 字符显示器 - 只有 2 个引脚用过的! - 蓝白
× 1
Hammond Project Box 4.7 x 2.6 x 1.4 半透明蓝
× 1

应用和在线服务

全息数据路由器

关于这个项目

简介

为了重现 90 年代末和 2000 年代初的辉煌,我想我会尝试制作自己的双向寻呼机,就像 Jay-Z 以前使用的那样!但我发现这个想法比乍一看更有用——我设计它是为了让孩子们可以用它来代替真正的手机,或者它可以用作一个人在户外独自工作的“SOS”按钮甚至锻炼(如果它小一点)。在过去的几周里,这个设备一直在我的客厅里打开,我和妻子在那里给彼此留下愚蠢的信息。

摘要:该项目通过带有蜂窝调制解调器的 arduino 发送和接收文本 (SMS) 消息,该调制解调器内置于带有 LCD 显示屏和简单控制按钮的小型外壳中。

请注意,此项目的代码包括从串行接口运行系统的功能,因此即使您没有 LCD 防护罩,您也可以构建和使用此项目的一个版本!

硬件选择

我有一个 Arduino GSM Shield,我想与 Hologram 的 SIM 卡一起用于这个项目,因此与 Arduino UNO 结合我很有意义。 Adafruit 制作了一个内置按钮的 LCD 显示板,并且由于它使用 I2C 总线,因此它仅使用 Arduino 上的两个引脚用于显示和五个按钮,为未来的定制留出了很大的空间。

LCD 有漂亮的蓝色背景,所以我认为将它与半透明的蓝色外壳结合起来会很好看。将三块板堆叠在一起可以实现一些非常干净的连接,并且没有电气问题,因为两个屏蔽使用不同的引脚。

  • LCD 屏蔽:用于 I2C 总线的模拟 4 和 5 引脚(以及 +5V 电源和地 [但只有 Vin 引脚旁边的地,而不是 5V 引脚旁边的地])
  • GSM 屏蔽:第 2 和第 3 针用于软件串行,第 7 针用作电源复位(显然还有电源和接地,尽管我从未在文档中看到任何详细信息)

其他一切都可以自由扩展!其他设备甚至还可以添加到 I2C 总线。

在开发过程中,系统运行良好,仅使用笔记本电脑的 USB 电源来发送和接收短信,但我怀疑它需要更多电源才能可靠地使用 GPRS 蜂窝数据。

蜂窝通信

Hologram 提供蜂窝数据服务,适用于任何接受 SIM 卡的设备。为我的 SIM 卡注册服务后,只需单击一下,我就可以在我选择的区号中为它分配一个电话号码。例如,使这个项目成为儿童通讯器的另一个特点是,保持服务有效(0.40 美元/月)非常便宜,如果我停止使用该设备,我可以随时暂停它。与大多数手机计划一样,接收短信是免费的,发送短信的费用为每条 0.19 美元。将来,通过使用与 Hologram 云服务的数据连接,可以将消息自动路由到免费的 SMS 服务,从而进一步降低此成本。 1 兆字节数据 0.60 美元将为您提供大量的小短信。

无论出于何种原因,即使 GSM 屏蔽最终正常工作,它也无法正确运行 GSMScannerGSMModem getIMEI() 用于初始设置和故障排除的功能。相当误导! SMS 和 GPRS 数据功能运行良好,所以如果有人知道为什么调制解调器仍然不能告诉我它自己的 IMEI 号码,我很想听听你的想法。

代码和界面

Adafruit 有很好的说明来展示 LCD 屏蔽的运行情况,Arduino 有一个很好的 GSM 屏蔽入门指南,展示了重要的功能,所以我的大部分代码都是基于这两个函数体,加上我自己的用户界面。

在那之前,我从来没有编写过用户界面,不用键盘在命令行中输入字母,所以我想保持简单。我决定选择要发送的罐头消息,这些消息可以通过向上和向下键滚动——实际上比我想象的要容易!

只需用一张有效的 SIM 卡(甚至是你自己的手机!)将三块板叠在一起,然后闪烁下面的代码,你就会得到一个这样的短信设备:

  • 打开电源,启动,并在连接网络后通知您
  • 左键:转到“主”屏幕
  • 右键:确认收到的消息,如果有下一条消息,则允许进入。如果没有当前消息,也会使屏幕变暗。
  • 向上/向下按钮:滚动选择要发送的预编程消息。我想您可以在代码中放入任意数量的内容;我从四个开始。
  • 选择按钮:发送当前选择的消息

而已!无论设备上的哪个菜单处于活动状态,收到的消息都会自动显示,如果背光关闭,它甚至会打开。

下一个合乎逻辑的步骤可能是为传出消息添加目标号码菜单,或者让它自动响应它收到的最后一条消息(使用 remoteNumber() 函数)。

最终构建

为了切割项目箱中的开口,我使用了普通孔的钻头,然后使用 Dremel 多用途切割钻头 (#561) 和导向器 (#565) 用于较大的切口。使用一些额外的板子和夹子来制作一个夹具来引导 Dremel 可以使线条更清晰,但我对我徒手画的东西很满意。那位肯定比我预期的更想闲逛!

项目中唯一的实际电线是用于添加 9V 电池和开关的电源——没有电池,它可以通过 USB 或墙上的插头供电,你就大功告成了!

一个 9V 电池和夹子非常适合靠近 Arduino 和 GSM 屏蔽板(与 Arduino Mega 大小相同)。我将电线焊接到一些插头引脚上,以便轻松连接电源连接。

幸运的是,GSM 屏蔽的引脚上有超长且可弯曲的引线。我能够稍微弯曲它们,这样它们就错过了 Arduino 上的插座,为我的电源接头留出这些连接。我怀疑这就是别针那样的原因!顶部的 LCD 屏蔽罩具有短而粗的针脚,正面没有母接头,因此弯曲针脚是我发现在此设置中连接屏蔽罩以外的东西的唯一方法。

剪下 Arduino 底部的 USB 端口焊锡引线和其他一些引线,使其可以平放在一些双面泡沫胶带上的外壳中。然后将电路板堆叠起来,使 LCD 和按钮几乎没有突出外壳顶部 - 完美!

结论

我会继续修改这个系统,甚至让我 4 岁的侄子稍微调整一下。我认为它作为一个信使工作得很好,但我很惊讶我更喜欢它作为我家里的一个小广告牌来显示消息。我对审美很满意,这对那里有帮助。

进一步的工作可能是它有第二个菜单来选择消息的收件人,自动调暗显示以节省电量,添加灯/蜂鸣器/寻呼机以通知通知,或任何其他您可能想要的首选用户界面行为!

该系统还可以从根本上进行更改,以显示来自 IFTTT 等服务的通知,例如您是否收到了包裹或某人的最新推文。你在建造什么?您将如何改进系统?

享受!

-迈克

你可以在我的博客上阅读更多关于我和我的项目的信息,包括关于这个项目的更多信息。

(这个项目是作为 的一部分实现的 全息图 Hacker-In-Residence 计划。如需更多信息,请联系 Hologram 的内容协调员 Sheena,网址为 [email protected])

代码

  • Arduino 系统代码
ArduinoArduino的系统代码
/** * 带有 Arduino 和 Hologram 蜂窝服务的双向寻呼机系统 * Mike Schaus * 2016 年 12 月 28 日 * 作为 Hologram Hacker-In-Residence 计划的一部分制作 * * 该项目发送和接收文本 (SMS)消息通过 * 带有蜂窝调制解调器的 arduino 内置于小外壳 * 带有 LCD 显示屏和简单的控制按钮。 * * 请注意,代码包含通过 LCD 屏蔽或 * 串行监视器运行,因此即使没有 * LCD 屏蔽,您也可以使用此代码。 */#include #define PINNUMBER ""// 包含 LCD 库代码:#include #include #include // 屏蔽使用I2C SCL 和 SDA 引脚。在经典的 Arduinos // 这是模拟 4 和 5,所以你不能再将它们用于analogRead() // 但是,你可以将其他 I2C 传感器连接到 I2C 总线并共享 // I2C 总线。Adafruit_RGBLCDShield lcd =Adafruit_RGBLCDShield( );// 这些#defines 可以轻松设置背光颜色#define OFF 0x0#define ON 0x1// 使 LCDconst 字节上的箭头特殊字符 arrow[8] ={ B00000, B00000, B01000, B01100, B01110, B01100, B01000, B00000};//初始化GSM库实例GSM gsmAccess(false); //包含一个'true'参数用于debug enabledGSM_SMS sms;//要发送短信的电话号码的char数组//将数字12125551212更改为一个数字//您可以访问char remoteNumber[20]="12125551212";//保存 SMS 号码的数组 fromchar senderNumber[20];// 从菜单中选择的可能的外发消息的字符数组char*响应[]={"Mike=Awesome!", "Yes", "No", "你好!"};//#define NUMRESPONSES 4 // 如果有人知道如何计算这个,我很听话#define NUMRESPONSES (sizeof(responses)/sizeof(char *)) // 感谢 Steve Kemp 的评论!int 位置=-1; // 这样第一个按钮按下将始终显示 menuint inByte =0; 的第一个选项// 键盘接口的传入串行字节布尔背光 =true; // 跟踪背光状态以切换 unsigned long previousMillis =0; // 将存储上次检查的消息#define CHECKINTERVAL 1500 // 检查文本消息的频率void setup() { // 将设置代码放在这里,运行一次: // 初始化串行通信 Serial.begin(9600); Serial.println(F("SMS Message Sender -- 正在启动...")); // 设置 LCD 的列数和行数:lcd.begin(16, 2); // 向 LCD 打印一条消息 lcd.print(F("Hello, Hologram!")); lcd.setCursor(0, 1); lcd.print(F("启动中...")); lcd.setBacklight(ON); // 设置显示的箭头字符 lcd.createChar(0, arrow); // 连接状态 boolean notConnected =true; // 启动 GSM 屏蔽 // 如果您的 SIM 卡有 PIN,则将其作为 begin() 的参数在引号中传递 while(notConnected) { if(gsmAccess.begin(PINNUMBER)==GSM_READY) { notConnected =false; Serial.println(F("GSM 已连接,因为你太棒了")); Serial.println(F("等待消息,或者用\"s\"")); Serial.println();液晶显示器(); lcd.setCursor(0,0);主屏幕(); } else { Serial.println(F("未连接"));液晶显示器(); lcd.setCursor(0,0); lcd.print(F("未连接"));延迟(1000); } }}// 这是菜单系统函数void showResponses() {// Serial.println(position); // 仅用于调试菜单系统 lcd.clear(); lcd.setCursor(0,0); // 确保光标位置合法 if (position<0) position=0;如果(位置>NUMRESPONSES-1)位置=NUMRESPONSES-1; // 如果有另一个选项,则写入当前选择和下一个选项 lcd.write(0); //箭头字符lcd.print(position+1); lcd.print("-"); lcd.print(响应[位置]);如果(位置  0) { inByte =Serial.read(); // 获取传入字节 if (inByte =='s') { printResponseOptions(); while (Serial.available()> 0) { // 清除键盘缓冲区以防万一 charjunk =Serial.read(); } while (Serial.available() ==0); // 在这里等待,直到输入缓冲区有一个字符 inByte =Serial.parseInt(); // 想要在这里检查有效的选择以更健壮 sendSMS(responses[inByte]); } } // 每隔几秒检查一次新消息以保持界面响应更快 unsigned long currentMillis =millis(); if (currentMillis - previousMillis>=CHECKINTERVAL) { previousMillis =currentMillis;接收短信(); // 当没有消息时大约需要 26ms }}

示意图

组装实际上比原理图所暗示的要简单得多——大多数连接都是通过将两个屏蔽堆叠在 Arduino 顶部来实现的!除此之外的任何东西都是可选的电池供电。

制造工艺

  1. 使用 K30 传感器监测二氧化碳
  2. 聋盲通信与 1Sheeld/Arduino
  3. 使用 Arduino 控制硬币接收器
  4. Arduino 带蓝牙控制 LED!
  5. 带有 Arduino 或 ESP8266 的电容式指纹传感器
  6. 玩 Nextion Display
  7. Nunchuk 控制机械臂(使用 Arduino)
  8. 使用 Arduino 测量太阳辐射
  9. 带 Arduino 的迷你雷达
  10. 如何用 Arduino 制作音乐
  11. 在 Arduino 上使用 TinyML 进行咳嗽检测
  12. 带 Arduino 的超声波测距仪