带拨号器的电话在其中接收电子设备以在移动网络上工作,并且可以按预期工作。
这是一个由三部分组成的项目描述,我必须把它写成项目本身的庄严完成,但是由于我把这一点拖延了太多,所以我决定将整个项目描述为一个连贯的展览。如果有人记得,我是一个非常生气的人。在电话上交谈时,我很容易生气,但是现在没有很好的方式表达我的烦恼。我想念过去的时光,那时您可以用力地翻转设备上的听筒以减轻压力,但手机却没有这样的机会。我着手创建带有拨号器的手机。因此,iRotary诞生了临时项目
美丽我首先购买了带旋转拨号器的老式老式电话-只是我小时候使用的电话。我选择了鲜艳的橙色,以使iRotary的美感不逊于该项目的雄心壮志。照片是在购买的第一天从同一部手机上拍摄的,带有电缆和其他所有物品。今天,它看起来很酷,尽管电线减少了50%-这对于手机来说是很好的。整个项目花了我150美元的零件成本和2000美元的开发时间-组装花了整整两天的时间,并且持续了几个月的各种动作,等待备件,使用备件,等待下一个零件,等等。当然,第一步是提取所有不必要的内容,然后将其替换为您需要的所有内容。步骤1:首先,哇!
想象一下制作这种草莓的感觉!当然,与旧拨号器接口的最佳人选是Arduino。他还将负责与GSM合作。非常适合从拨号器中读取脉冲并将其转换为整数,然后用于拨号。GSM屏蔽罩可轻松处理通信。这是一个连接到Arduino的外围设备(在大街上,我们称其为“屏蔽”)。它的编程非常简单,它带有一个具有大多数必需功能的库-读取SMS,发送和接收呼叫,发送DTMF等。下一步是编写将表盘转换为数字的代码。拨号器的工作方式如下:强制旋转后,它开始向后旋转,每个拨号号码触摸一次开关。这意味着如果您拨三个,则交换机将发送三个信号,因为三个数字将经过它。要确定拨打的号码,您只需要计算一下开关被打开和关闭的次数。使用以下代码很容易做到这一点,该代码在每次开关电压从低变高时就简单地增加变量:void readPulses() {
char pinPulse = digitalRead(PIN_PULSE);
if (pinPulse == HIGH && edge == 0) {
pulses++;
edge = 1;
} else if (pinPulse == LOW && edge == 1) {
edge = 0;
}
}
接下来要做的就是收集数字并在数字位数达到10时拨打电话。在希腊,所有数字都是十位数字,电话性别除外,我稍后将为其添加代码。依次向行中添加数字是一个简单的过程,可通过以下代码完成。void readDialing() {
char digit;
bool finalDigit = false;
char pinDialing = digitalRead(PIN_DIALING);
if (pinDialing == 1 && dialing == 0) {
digit = getDigit();
if (digit != -1) {
number += (int)digit;
showNumber(number);
if (number.length() == NUMBER_LENGTH) {
dialNumber(number);
}
}
}
dialing = pinDialing;
}
由于屏蔽尚未连接,他尚未发出呼叫-这是下一步。这是一个工作中的原型:即使使用我发现用于原型制作的旧旧机器,他也立即赚了很多钱。拨号器是一件非常准确的事情,应该是这样,否则您可能会走错地方,直到某个家伙回答了您,然后您打电话给女友,然后您决定她在欺骗你,才发现它。 ,并引发丑闻,但实际上这只是开关垃圾。这就是为什么在引入数字音频拨号器后离婚数量急剧下降的原因。此外,减少了对房间中有大量零的人的暴力行为。步骤2:谁不冒险,那不是GSM-it
成功识别号码后的下一步是增加拨打移动电话的功能。我将屏蔽层与Arduino连接,并添加了调用所需的代码:void dialNumber(String number) {
call.Call(numArray);
}
激动人心。尽管它非常简单,但是却非常酷,因为移动电话的大多数功能(拨号和呼叫)已经准备就绪。运作方式如下:在这一步,我遇到了一些困难。第一个是将带屏蔽罩的Arduino放置在手机上的位置,因为手机的组件几乎没有空间。为了解决这个几乎无法解决的问题,我不得不做出让步:我删除了该呼叫,该呼叫仍无法由电池供电(需要50 V),这降低了设备的可靠性。如果无法产生熟悉的dzzzzzzzzzzzzzzzzzzz声音,为什么需要带拨号器的电话?灵感就来了!解决方案很简单:让电话在安静的模式下工作,保持礼貌,以免打扰其他人,但美观。一口气解决了两个问题,我感到自己的快乐在增长。另一个问题是,必须以某种方式将屏蔽的输入和输出连接到听筒。这里的借口无济于事,因为没有任何自重的电话会充耳不闻,所以我首先决定购买一个小的麦克风和扬声器,并将其放入听筒中。当我突然决定时,我几乎订购了它:我将首先尝试现有的麦克风和扬声器。我迅速跳到Kuhlmann并勾勒出一个非常复杂的电路,其中包含大量组件:三根电线和两个连接器。放在一起,我将连接器插入到屏蔽的输入和输出中并进行了呼叫。-嗨! -我的声音说。-嗨!我高兴地回答。-我能听到你的声音!我告诉自己。-我就是你!-答案响了。测试取得了圆满成功。现有组件不仅适合屏蔽层,而且还产生了真实的沙沙声和反馈,而我设法将其遗忘了。移动电话与此类电话之间的区别在于,前者无需通过扬声器播放您的声音。因此,在您看来,您的声音比原来的声音更安静(因为您将耳朵插入扬声器),并且您大声喊叫-就像您在尝试与某人交谈时戴着耳机听音乐一样。而且在旧电话上,您可以在讲话时听到自己的声音,这很好,而且不需要您对对话者大喊大叫。这是我们失去的令人愉快的效果。这是最终产品的预告片:铃声是假的,但是是好莱坞。步骤3:进一步
音频,数字识别和GSM正常工作后,就该连接其余的控件了-操纵杆,按钮和奇怪的LED指示灯,下载指示器。最好通过事件来做到这一点。 Arduino不能那样工作,因为您经常要问:“是否按下了按钮?”每秒数千次,但事件架构很容易用少量代码伪造。如果电话响了,我想从拨杆上拿起电话来接听电话,然后将电话放回拨杆上会打断当前通话。我还希望在听筒处于拉杆状态时忽略所有控制信号。使用状态机很容易实现。这意味着存在一个包含电话当前状态的变量-单独,通话,振铃,拨号等。而且,如果发生任何事件(按下按钮),他们可以简单地检查手机处于什么状态并执行某种操作。大事记
事件的识别方法与数字相同。我们将检查按钮的状态是否发生更改,并仅在检测到更改后才开始事件(否则,当我们询问是否按下按钮时,我们将触发该事件数千次,而Arduino每秒将回答“是”数千次)。#define PIN_BUTTON_HALF 6
char buttonHalfEdge = 0;
void checkButtonHalfPressed() {
if (digitalRead(PIN_BUTTON_HALF) == LOW) {
if (buttonHalfEdge == 0) {
buttonHalfPressed();
}
buttonHalfEdge = 1;
} else {
if (buttonHalfEdge == 1) {
buttonHalfReleased();
}
buttonHalfEdge = 0;
}
}
此按钮有两种状态,即半按下和完全按下(如果您询问悲观主义者,则为半按下和完全按下)。该代码定义了两种状态,其他事件的处理方式几乎相同。您可以在下一个视频中观看系统的工作情况,其中包含组件,但仍然需要将其插入USB供电。美女!步骤4:电池电量
用于为电池充电的USB连接器当然,如果不移动,那会是什么样的手机?不会是手机!因此,携带电话的两个选项是5伏的小电池和USB充电电路,或者非常长的电缆。由于今天的铜比黄金贵,而且我不是靠钱赚钱,所以我选择了第一选择。它需要三个组件:- ( , ). , , , .
- , , – USB- «». USB-.
- ( ). , , . , , , Arduino 5, .
调节器和充电组件再次将电池和调节器连接到充电装置。充电有一个USB端口(我用一根延长线将其路由到电话线所在的地方),该端口将用于充电。控制器会进行所有调节,并为必要的组件提供必要的电压,以便您可以在操作过程中打开和关闭手机,并且电压不会下降。您也可以为随附的手机充电,这很方便。我不知道电池能使用多久,我已经用了几个小时了,但是也许几天之内您将无法通过手机写信给您的朋友(您需要连接打字机)。我有一天会尝试对其进行测试,但现在我只想说电池寿命为几个月,您可以聊几周,然后再卖掉它,或者至少在kickstarter上捡起所需的电量。步骤5:没有步骤5。
内部组装完毕,项目已经完成!拉动电线并将其推入非预期的位置后,您可以关闭所有合适的外壳-除非摇动它。您可以大致了解组件的位置。 Arduino在右上方,在它的下方是一个屏蔽层(您可以看到一个伸出的天线),蓝色USB电源线连接到与电池和充电器相连的调节器,而USB电缆则连接到左上方的母亲型连接器。您可以看到麦克风和扬声器的电缆(从右上方到左侧)。下面棕色板上的电路是电话的原始电路。没有使用它们,但是很难将它们卸下,如果没有它们,杠杆(左侧的透明塑料片)将无法工作,这是无法接受的。现在,正如最终承诺的那样,最终的商业广告将以其最终的美丽来呈现。多么有魅力!确保将其发送给您所有的朋友,包括您很久没有与之交谈的朋友。得益于希腊某人的疯狂互联网项目,有什么比和老朋友再次聊天更重要的呢?当然没事!如果它直接划伤您使用拨号器来制作自己的手机,并且您正在考虑从头开始编写代码,花很多时间不眠不休地对我的代码进行反向工程,那么我对您来说是个好消息。我是一个人,所以我在网上发布了所有代码。github.com/skorokithakis/iRotary在原始文章或Twitter上的评论中告诉我这个惊人的项目对您的生活有多大的改变!m!