Используем телефон вместо GSM-модуля для Ардуино

Многие часто занимаются проектами в области беспроводной связи, в основном, основанными на модуле Bluetooth. Но после того как в работе над проектами возникает необходимость использования SMS или телефонных звонков, то здесь помогает использование GSM-модулей. Однако, сразу возникает большая проблема... они довольно дорогие!

Хорошо что в такие моменты в голову приходят правильные мысли, а одна из них сообщала о том, что телефон - это всего лишь GSM-модуль с большим количеством функций. Наверняка у каждого есть несколько телефонов, которые просто лежат в ящике без какой-либо надобности. Таким образом, мы можем использовать один из них в качестве GSM-модуля и это то, что мы будем делать в этом уроке.

Шаг 1. В чем идея?

Фактически, спасти GSM-модуль от телефона очень сложно и потребуется много времени и навыков, поэтому в этом проекте мы будем придерживаться немного другого подхода.

Всякий раз, когда телефон получает SMS или телефонный звонок, он либо загорается, либо гудит/вибрирует, либо издает звук. Зная это, мы сможем воспользоваться этими функциями с помощью Arduino. Мы сделаем это, используя двигатель, который нужен для того, чтобы заставить телефон вибрировать.  Arduino прочитает данные и посмотрит, когда двигатель работает, что именно получает телефон - SMS или телефонный звонок.

Это, конечно, не так хорошо и идеально, как наличие реального GSM-модуля, благодаря которому вы можете видеть, какие данные поступают или можете отправлять данные, но это дешевый вариант, если у вас есть куча телефонов, просто лежащих в ящике стола.

Шаг 2. Список комплектующих

Это довольно простой проект, поэтому нам не нужно много деталей, все, что нам нужно, это следующее:

  • Arduino Uno
  • Любой старый телефон
  • Светодиоды
  • Сим-карта

Когда будут выполнены все шаги по настройке проекта мы заставим мигать светодиод, когда телефон получит SMS-сообщение.

Мы сделали это для того, чтобы понять суть. В будущем проекте мы используем данную схему для управления освещением в комнате.

Шаг 3. Использование телефона

Цель этого шага состоит в том, чтобы разобрать телефон до такой степени, которая позволит получить доступ к двигателю управляющего вибрацией.

Минус в том, что для каждого телефона своя схема и своя структура. Но по большей части вы можете просто найти номер детали конкретного телефона в Яндексе или Гугле, чтобы увидеть, где находится двигатель.

Как только вы его найдете, вам понадобится припаять два провода к каждой клемме двигателя. Это может быть сложной задачей, так как на большинстве телефонов используются крошечные компоненты для поверхностного монтажа, фишка состоит в том, чтобы использовать минимальное количество припоя и очень тонкие провода.

Как только провода припаяны, нужно подключить их к мультиметру по двум причинам:

  • во-первых, мы хотим узнать, какое напряжение дает телефон,
  • во-вторых, выяснить, какой провод отрицательный и какой положительный.

В нашем случае мы обнаружили, что телефон дает около 1,5 вольта на двигатель, с которыми отлично справится Arduino.

Шаг 4. Принципиальная схема

Схема соединения довольно простая. Всё что нам нужно сделать, - это соединить все, как показано на рисунке выше.

Вывод заземления на двигателе подключается к заземляющему контакту на Arduino, после чего положительный контакт на двигателе подключается к A0 на Arduino, а затем, наконец, катод (-) светодиода подключается к земле на Arduino и анод (+) подключается к контакту 7. Далее мы можем загрузить код.

Шаг 5. Код проекта

Код также очень прост и его довольно легко понять. Скачать или скопировать код можно ниже:

void setup() {
  Serial.begin(9600);
  pinMode(7, OUTPUT);
}

void loop() {
  int sensorValue = analogRead(A0);
  if (sensorValue > 50)
{
  digitalWrite(7, HIGH);
  Serial.println("Rumble on");
delay(1000);
}
else
{
  digitalWrite(7, LOW);
  Serial.println("Rumble off");
delay(100);
}
}

В настройке void мы говорим, что вывод 7 будет выступать в качестве выходного сигнала, так как это будет наш светодиодный вывод. Затем в цикле void, мы говорим, что sensorValue является аналоговым значением pin A0, которое затем используется в выражении if.

Оператор if утверждает, что если sensorValue больше 50, то включить контакт 7, который является светодиодным выводом, и отправить обратно «Rumble On» на последовательный монитор. Если значение sensorValue меньше 50, то выключить светодиод и отправить обратно «Rumble Off» на последовательный монитор.

Откройте код в IDE Arduino, загрузите его на свою плату и протестируйте.

Шаг 6. Результат

Итак, теперь когда мы собрали всё вместе давайте посмотрим как это работает.

Когда мы отправляем на телефон SMS, он посылает сигнал на двигатель, управляющий вибрацией, который затем посылает сигнал на Arduino. Далее включается светодиод и отправляется "Rumble On" на последовательный монитор.

Далее мы можем усложнять проекты. Так, например, мы можем включать свет в доме после того как мы направляем СМС на телефон. Такого рода проекты мы как правило публикуем в рубрике "Умный дом", где мы постепенно автоматизируем процессы управления различной техникой в доме.

Ардуино+