临时项目

带拨号器的电话在其中接收电子设备以在移动网络上工作,并且可以按预期工作。


这是一个由三部分组成的项目描述,我必须把它写成项目本身的庄严完成,但是由于我把这一点拖延了太多,所以我决定将整个项目描述为一个连贯的展览。

如果有人记得,我是一个非常生气的人。在电话上交谈时,我很容易生气,但是现在没有很好的方式表达我的烦恼。我想念过去的时光,那时您可以用力地翻转设备上的听筒以减轻压力,但手机却没有这样的机会。我着手创建带有拨号器的手机。

因此,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!

Source: https://habr.com/ru/post/zh-CN396653/


All Articles