Меню

сотовый телефон на ардуино

Мобильный телефон на базе Ардуино

Возможности микроконтроллеров и электроники безграничные и мы хотим расширять наши возможности в том, что можно сделать своими руками. Ребята из «Seeed Studio» выиграли конкурс любителей Ардуино с этим уроком по созданию мобильного телефона на базе микроконтроллера.

Объединяя Arduino и другие модули, мы сделаем мобильный телефон под названием Arduino Phone. Корпус для нашего аппарата будет напечатан с помощью 3D-принтера. Хотя получится телефон не таким хорошим как можно подумать, даже немного неуклюжим, но все равно очень крутым.

arduino phone 1 1

Шаг 1: Комплектующие

arduino phone 1 2

В самом начале, как всегда, мы готовим комплектующие. Конечно, большинство этих модулей можно приобрести напрямую, например: Arduino Uno, TFT Touch Shield и GPRS Shield.

Также мы понимаем, что мы хотим поместить наш телефон Arduino в корпус, напечатанный на 3D-принтере. Для того, чтобы адаптировать размер этого корпуса под наше устройство мы должны сделать печатную плату зарядки и разрядки (включая обе части) и плату расширения, которая сможет подключаться к гнезду для наушников GPRS Shield модуля.

Что нам нужно в итоге:

Шаг 2: Подключение оборудования

arduino phone 2 1

arduino phone 2 2

arduino phone 2 3

arduino phone 2 4

arduino phone 2 5

arduino phone 2 6

arduino phone 2 7

arduino phone 2 8

После подготовки деталей нам необходимо собрать вышеуказанные электронные компоненты вместе, чтобы заложить фундаментную функциональную часть Arduino Phone.

Хорошо, теперь мы займемся программным обеспечением.

Шаг 3: Программирование и тестирование

arduino phone 3 1

arduino phone 3 2

arduino phone 3 3

arduino phone 3 4

arduino phone 3 5

Этот телефон Arduino содержит следующие основные функции:

Непосредственно код для телефона:

Вам помогут изображения выше.

Однако гораздо более сложная проблема заключается в том, что у этого телефона Arduino нет физических кнопок (кроме кнопки сброса и GPRS). Таким образом, управление пользовательским интерфейсом будет сложной задачей. К счастью, TFT-дисплей не только предоставляет функцию отображения, но и функцию сенсорного экрана.

Таким образом, мы можем управлять пользовательским интерфейсом с помощью жестов, движений влево и вправо. На фото выше видно как работает ArduinoPhone.

В конце откройте ArduinoPhone.ino с помощью Arduino IDE, а затем загрузите исходный код в телефон.

Шаг 4: Сборка

arduino phone 4 1

arduino phone 4 2

arduino phone 4 3

Чтобы сделать наше устройство похожим на телефон, мы напечатали корпус на 3D-принтере, как показано выше. Затем аккуратно всё собираем. Это сложный, но интересный процесс. На самом деле, может быть, это будет даже более интересным, чем работа с кодом.

arduino phone 5 1

Источник

Самый простой способ как сделать своими руками настоящий сотовый телефон

По правде говоря, в настоящий момент нет логических целей для того, чтобы собирать мобильник своими руками. Особенно учитывая то, что самый простой покупной мобильник будет стоить дешевле. Но, тем не менее, изучение — это очень важный аспект процесса сборки. Более того, владение мобильником, который ты создал сам — это очень крутая идея для поделки.

FGDCSLZILV81AE4.LARGE

Большинство из нас владеют мобильными, как и я. И после нескольких успешных проектов я задумался над тем, что создание мобильника своими руками будет хорошим вызовом. Я прекрасно осознавал, что у меня не получится воссоздать весь функционал современного телефона, но осуществление звонков и, возможно, отправка смс, вполне меня устраивала.

Шаг 1: Планирование

F5IQ9D1ILTQH5KG.LARGE FEKZG2KILTQH5NJ.LARGE FPOIW4QILTQH5NK.LARGE

В качестве вдохновения я использовал проекты, найденные в интернете:

Модуль сотового GSM

Самый главный компонент телефона — модуль GSM. После сёрфинга по интернету, я обнаружил, что на Ибэй можно найти такой модуль (модели SIM800L) по очень неплохой цене и при этом почти не придётся ничего паять. Моей целью было не устранить пайку вообще, но уменьшить время на паяльные работы в целом. Как впоследствии оказалось, Adafruit использует такой же чип SIM800L и, к моему удивлению, их код заработал сразу и без каких-либо модификаций.

Adafruit FONA

Модуль работает на частотах 850/900/1800/1900MHz, позволяя ловить радио в диапазоне FM и много другое. Радио не было важным для меня, но, возможно, в будущем я добавлю этот функционал. Важными функциями являются осуществление звонков, получение и отправка СМС и этого вполне достаточно.

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

Провода динамика “+” (SpkP) и “-” (SpkN) соединяются напрямую с SIM800L. То же касается и микрофона. “Net” — для антенны, но так как она уже встроена в плату, место оставлено пустым. “Vbat2” для соединения с “+” батарейки. “GND” – для соединения с ground на Arduino и “-“ на батарейке. “RST_sim800”, “RXD” и “TXD” соединяются с Arduino. “DTR” — не знаю для чего, оставил открытым.

Экран

В одной из инструкций использовался экран Nokia, в то же время я не очень хотел использовать LED-экран, таким образом, я решил использовать экран от Nokia, но LCD.

После некоторых изысканий, я обнаружил, что экраны Nokia испытывают проблемы из-за слишком высокого напряжения. На Sparkfun я выяснил, что при напряжении 5 вольт, нужно использовать резисторы. Напряжение источника питания должно быть 3,3V.

Нужно использовать резистор на 10 кОм между пинами SCLK (CLK), DN (DIN), D/C (DC), и RST. А с пином SCE (CS) нужно использовать резистор на 1 кОм. Для подсветки рекомендуется минимум 330 Ом. Для одних и тех же пинов могут использоваться разные обозначения: SCLK=CLK; DN=DIN; D/C=DC; SCE=CS.

Для экрана нужно 3.3 Вольта, поэтому необходимо использовать конвертер DC-DC. Все пины соединяются с Ардуино, который работает от 5 Вольт. Для того чтобы увеличить срок жизни экрана, между пинами нужно включить резисторы (смотрите схему: “Hand1_R4 – R8”).

Кнопки

Расположение кнопок схоже с расположением на множестве старых телефонов. Эта схема очень разумна.

Клавиатура состоит из 16 кнопок. Для использования всех 16 кнопок понадобится большой микроконтроллер или слегка более продвинутая клавиатура.

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

Шаг 2: Макетная плата — Кнопки

FWF49VJILTQH5JR.LARGE FLJU15FILTQH5NV.LARGE

Создание клавиатуры с использованием разделителя напряжения достаточно просто и может быть очень легко рассчитано. Разделитель напряжения можно найти на схеме. Принцип очень прост, но фактические значения raw_data (напряжения), которые должны соответствовать нажатию разных кнопок слегка отличаются от теоритических вычислений.

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

Рассчитанные и измеренные значения raw_data показаны на приложенной таблице. Как можно заметить, выходит довольно большое отклонение, особенно на уровне низкого напряжения. Используемые резисторы имели погрешность до 5%, что и привело к такому результату.

Шаг 3: Макетная плата — Микроконтроллер

F6SY1UNILTQH5K3.LARGE

Мозг телефона планировалось собрать с использованием Arduino Pro-Micro. Плата дешевая, но достаточно мощная для наших нужд. У этой платы есть много преимуществ, и она может быть напрямую соединена с компьютером посредством USB. Это облегчает обновление кода и зарядку батареи (так как в ней есть готовый порт micro-USB).

Но в реальной жизни не всё так просто и она оказалась несовместимой с SIM800L. Я не знаю почему, но она не работала, хотя физически всё было соединено. Мне пришлось заменить Pro-Micro обычным Arduino UNO и всё заработало как надо.

Схема соединения Ардуино прикреплена выше. Также UNO использовался для окончательного дизайна соединения пинов, кроме D14-D16 (которые я всё равно не использовал)

Шаг 4: Макетная плата — Экран

FNQ0P7VILTQH5K2.LARGE

Как говорилось выше, я использовал экран Nokia 5110.

Пин 7 экрана управляет подсветкой. Подав на него напряжение 3.3V можно включить подсветку. Я купил на Ибэй несколько экранов от разных производителей и один из них отличался. Этот экран требовал заземления пина для того, чтобы подсветка заработала. У экрана уже были резисторы, поэтому отпала нужда в последовательных резисторах (Hand1_R3). На макетной плате такое было легко доработать, но я обнаружил эту особенность после заказа печатной платы, поэтому данный факт был слегка раздражающим.

Шаг 5: Макетная плата — Питание

Для питания устройства я использовал литий-полимерную батарейку, напряжение с батареи подавалось напрямую на сотовый модуль (SIM800L). Сотовый модуль мог требовать до 2A и работал при напряжении 3.7 — 4.2 Вольт, также как и батарейка.

Для печатной платы я не использовал сколь бы то ни было сложной системы зарядки батареи. Я использовал обычную батарейку 18650 LiPo и соединил её напрямую с SIM800L.

Ардуино УНО питался от USB кабеля.

3.3 Вольта на экран подавались напрямую с УНО, поэтому не было нужды в дополнительных элементах.

Шаг 6: Макетная плата — Софт

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

Для клавиатуры я нашел неплохой код от OtakuSanel. Я сильно модифицировал его код, но основа осталась та же, если сырые значения верны, то для проверки клавиатуры можно использовать приложенный файл (T-keyBoardTest1.ino).

Простую программу для коммуникации с SIM800L можно найти на adafruit (FONAtest в примерах). Вам может потребоваться лишь настроить пины. Также потребуется скачать библиотеки из Adafruit FONA. На этом шаге экран не нужен и вся коммуникация проходит через последовательный порт.

Простая программа для осуществления звонков также прилагается ниже (T-mobile_OnlyCalling.ino). Код был доработан для меня, так что он не слишком лёгкий для понимания.

Шаг 7: Мобильник на макетной плате

FS12GHKILTQH5BD.LARGE F006WN4ILTQH5B3.LARGE FDW5JM8ILTQH5BA.LARGE F8HO6VIILTQH5BB.LARGE

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

Шаг 8: Прототип печатной платы

FCJ5M28ILV819W1.LARGE FDED1PKILV819YR.LARGE F6SRYG7ILV819YW.LARGE FHOD242ILV81A1Y.LARGE FYUQCRSILV81A4U.LARGE F59T88YILV81AAT.LARGE

После того, как макетная плата была собрана и работала без ошибок, я сразу сделал дизайн для печатной платы. Несколько вещей, которые я не полностью испытал и не предполагал о них вначале, сделали результат не таким продуманным, как я надеялся, но в итоге я смог заставить свой мобильник работать. Далее я рассмотрю все трудности, возникшие после сборки печатной платы.

Микроконтроллер

Как говорилось выше, я собирался использовать в качестве контроллера Pro-Micro. В моих предыдущих проектах Pro-Micro и UNO были полностью совместимы, и с их заменой не было никаких проблем. Поэтому я не делал никаких специальных тестов с Pro-Micro перед тем, как заказал плату.

Когда печатная плата была доставлена, я был очень рад, припаял батарейку, Pro-Micro и SIM800L и попытался включить устройство. Но связи не было. Я поверил всё мультиметром, и всё выглядело так, будто должно работать. Я сделал отдельные тесты на макетной плате и получил тот же результат — нет связи…

Я решил, что просто использую UNO вместо Pro-Micro, и тогда не будет никаких проблем, тем не менее, мне пришлось спаять много проводов от слотов (расчитаных для Pro-Micro) к плате UNO.

Питание

Контроллер был не единственной проблемой.

Я планировал увеличить напряжение (с 3.7-4V до 5.0V) при помощи чипа RT9261A. Этот чип сам по себе не может держать большую силу тока. Поэтому он управляет небольшим переключателем BJT-NPN. Напряжение NPN фильтруется через резистор и конденсатор. Значения находятся непосредственно в таблице данных.

Конвертер работал хорошо без нагрузки, но, когда я подал на него минимум 0.1 мА, напряжение тут же упало до напряжения батарейки. Конвертер не был способен справиться с задачей. К счастью, я оставил небольшую площадку для подключения готового конвертера (купленного на Ибэй). Этот конвертер работал хорошо, но выходное напряжение было 5.2V. Это не очень серьёзная проблема, но я вернусь к ней в части о кнопках.

Конвертер вскрыл еще одну проблему, о которой я раньше не задумывался. Он издавал высокочастотный шум. Пока плата лежала на столе — это не было проблемой, но при совершении звонка я слышал этот звук.

Для питания экрана мне требовалось 3.3V. Это осуществлялось при помощи DC-DC конвертера PAM2305 (“Hand1_VoltReg1”). Опять же, это очень простое устройство и оно требует для работы только наличия индуктора (“Hand1_L2”). Конденсатор “Hand1_C3” нужен для стабилизации напряжения.

Кнопки

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

Я перенастроил сырые значения, в то время как UNO был подключен к компьютеру. С подключенным кабелем всё работало хорошо. После отключения кабеля кнопки тут же перестали работать. Почему? Я задал себе такой же вопрос.

Это очень интересная проблема. Мой конвертер на выходе имел 5.2V, но UNO ссылался на значения до 5.0V. Таким образом, напряжение последних двух кнопок было уже за пределами шкалы измерения (у обеих сырые значения были 1023). Другие кнопки можно было перенастроить и они бы заработали заново, но у меня не было возможности использовать кнопки “*” и “#”. На самом деле это не очень большая проблема, но мне есть над чем задуматься в следующий раз.

Фильтр

На других схожих проектах на микрофоне и динамике всегда находились фильтры. Понимая, для чего могут быть полезны фильтры, я не слишком задумывался и просто скопировал всё как есть. Оба фильтра почти одинаковые.

После сборки печатной платы я тут же обнаружил, что с динамиком происходит что-то странное. Он в принципе не работал. После того, как я убрал фильтр — он заработал. Что-то в управлении было спроектировано неверно и вызвало эти трудности. По крайней мере, это было моей ошибкой, и я учёл это.

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

Основная программа осталась той же, но сырые данные для кнопок нужно поменять на каждом устройстве. Главная проблема в коде связана с его основным циклом. Я планировал, что при нажатии кнопки “A” всё будет отменяться — если идёт входящий звонок, или я звоню, или я набрал чей-то номер, всё должно вернуться в начальное состояние. Но в реальности так не происходит и, чтобы отменить или закончить разговор, нужно выключить питание. Небольшая проблема в коде.

Для измерения напряжения на кнопках есть еще один набросок, на этот раз значения отображаются на экране 5110 Nokia.

Шаг 9: итоги

FCH0IZ1ILV81ABD.LARGE

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

1

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Источник

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Arduino и GSM: делаем телефонный вызов

С помощью платы Arduino можно создавать порой удивительные проекты, особенно в сфере связи и беспроводной передачи информации. На основе Arduino можно даже собрать телефон! Хотя он будет достаточно простым, но он сможет выполнять основные функции, то есть в первую очередь он сможет звонить и принимать вызовы.

1492011589 gsm 1

Для такого проекта нужен модуль GSM. GSM-модуль является очень распространенным устройством в оборудовании связи. С помощью него можно реализовывать такие функции как отправка сообщений, голосовой вызов, чтение сообщений, попытка вызова (дозвон) и т.д.

GSM-модуль очень прост в эксплуатации благодаря тому, что общение с ним производится посредством специальных AT-команд через последовательный порт. Сегодня на рынке электронных компонентов представлено большое количество GSM-модулей, и в данном случае воспользуемся одним из самых распространенных и недорогих модулей SIM300. Но помимо модуля и управляющей платы Arduino необходимо также позаботиться об интерфейсе пользователя этого импровизированного телефона. Для этого к Arduino можно подключить LCD-дисплей 16×2 для вывода данных, а также матричную клавиатуру 3×4 для ввода данных (номера телефона). Для полноценного телефонного звонка нужны также микрофон и динамик, но поскольку данный проект является учебным, то в данном случае просто рассмотрим, как делать дозвон без возможности получения обратной связи. При желании всегда можно подключить средства приема и передачи голосовой информации. Итак, схема подключения Arduino и GSM, а также клавиатуры и дисплея представлены ниже.

1492011616 gsm 2

Далее приведен код (скетч) для взаимодействия Arduino и GSM-модуля. Во время работы программы пользователь должен ввести с клавиатуры номер абонента и нажать на кнопку со звездочкой для осуществления вызова. Не забудьте при этом вставить сим-карту с положительным балансом.

Источник

Ретро GSM телефон на Arduino 1958 года, с дисковым номеронабирателем

008177eb09122017a66aa013896158cf

В этом уроке мы дадим вторую жизнь телефонному аппарату с дисковым номеронабирателем, превратив его в мобильный (переносной) ретро-аппарат сотовой связи.

Есть стационарные телефонные аппараты у которых нет провода между трубкой и базой, но есть провод к розетке АТС. В нашем проекте у телефона останется провод между трубкой и базой, но пропадёт провод к розетке, так как связь будет осуществляться по сети GSM.

Описание работы ретро GSM телефона:

Нам понадобится:

Схема сборки:

Arduino / Piranha UNO:

Если Вы собираетесь разместить устройство в корпусе телефона, найдите место для установки Arduino / Piranha UNO и закрепите её.

0315ed01b5999ca411bd519297a6c878

Batery Shield:

Установите Battery Shield на Arduino / Piranha UNO:
Во время установки Battery Shield должен быть в выключенном состоянии.

60a10501f7376a14fc370c07b37d6be7

GSM/GPRS Shield:

37834c42c90675fb763c4e2a3d649388

На плате GSM/GPRS Shield A6 имеется слот для SIM-карт и переключатель UART. Установите SIM-карту в слот, выберите положение переключателя RX-7/TX-8.

Trema Shield:

0d5b87e2e713c09bd88759cc26467aef

Номеронабиратель:

Подключите номеронабиратель к выводам GND, D5, D6 и Трема кнопку к выводу D4:

454ed24bf76a75e1a0e2279e6c1bb749

Если Вы собираете устройство в корпусе телефона, то вместо Trema кнопки подключите кнопку фиксации опускания трубки, между выводами GND и D4).

Колокольный звонок:

Подключите модули управления колокольным звонком:

b7ab0e8067e5a05d83b50a252d801415

Напряжение питания 5В подводится на вход повышающего DC-DC преобразователя, а напряжение с его выхода (уровень напряжения регулируется потенциометром преобразователя) подводится к соленоиду или родной катушке звонка телефона, через Trema силовой ключ, управление которым осуществляется через вывод D2.

Колокольный звонок можно собрать не на соленоиде, а на сервоприводе, подключив его к выводу D2:

dd90c622de7ebe7d454350ec1246968f

Преимуществом данной схемы является меньшее число деталей. Но в скетче нужно присвоить переменной modeBEEL значение 2 (разкомментировать строку в начале скетча), а так же указать углы сервопривода при которых боёк касается колокола и удаляется от него (углы указываются в функции funcBELL в конце скетча).

Устройство ввода/вывода звука:

Если Вы собираетесь разместить динамик, микрофон и зуммер в трубке телефона, то подключите их согласно схеме: (трубка соединяется с аппаратом четырехпроводным кабелем).

2c4c389b5a633868c858e0044c30b1d2

В телефонной трубке, рядом с динамиком, необходимо разместить и зуммер. Он подключается к выводу D3 и нужен для подачи сигналов «готов к набору» (гудок при снятой трубке) и «занято» (прерывистые гудки после разрыва голосового соединения).

Если Вы не собираетесь размещать элементы ввода/вывода звука в телефонной трубке, то более простым вариантом является использование гарнитуры, которая подключается к соответствующему разъёму на плате GSM/GPRS Shield A6, а сигналы «готов к набору» и «занято» будут выводиться отдельно, через Trema зуммер, так же подключённый к выводу D3.

535070da9e21698d39b515d3cf222d8e

Если Вы не собираетесь размещать элементы ввода/вывода звука в телефонной трубке, но и не желаете использовать гарнитуру, то реализуйте вот такую схему:

20953d8dc738c9137b2dd15524d5a184

Полная схема устройства:

Пример схемы с использованием гарнитуры и колокольного звонка на базе соленоида:

d686566b8ca45f5dd6009dc65b9b0c0e

Код программы (скетч):

В скетче предусмотрена возможность выбора типа колокольного звонка modeBEEL =0,1,2 и алгоритма работы кнопки фиксирующей опускание телефонной трубки flgHANG =0,1. Для выбора необходимого значения закомментируёте существующее и разкомментируйте требуемое.

В скетче используются библиотеки iarduino_GSM, SoftwareSerial и Servo (две последние входят в стандартный набор Arduino IDE).

В разделе функции funcBELL отвечающем за управление сервоприводом указаны углы 50° и 60° (три последние строки). Если Вы используете колокольный звонок на сервоприводе, измените угол 50° на тот при котором сервопривод ударяет бойком по колоколу, а угол 60° на тот при котором боёк удаляется от него.

Алгоритм работы скетча:

До кода Setup() определяются номера выводов, тип колокольного звонка, алгоритм работы кнопки фиксирующей опускание трубки, объявляются переменные и функции, подключаются библиотеки, и создаются объекты для работы с ними.

В коде setup() конфигурируются выбранные выводы, инициируется работа GSM/GPRS Shield, звук переводится на разъём гарнитуры, выполняется цикл ожидания готовности GSM/GPRS Shield к работе (регистрация в сети оператора). И после выполнения всех указанных действий выполняется оповещение о готовности к работе, путем включения колокольного звонка на 1 секунду.

Код цикла loop() разделён на две основные части: совершение исходящих звонков (данная часть выполняется если телефонная трубка снята) и приём входящих вызовов (данная часть выполняется если трубка лежит на телефоне).

Совершение исходящих звонков состоит из следующих действий:

Приём входящих вызовов состоит из следующих действий:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *