Raspberry Pi и Pi4J. Урок 9. Работа с Аналого-Цифровым Преобразователем/АЦП ADS1115

Чтобы считать напряжение и преобразовать его к осязаемому цифровому значению используется аналого-цифровой преобразователь (AЦП). В мини-компьютерах Raspberry Pi, Banana Pi, Orange Pi, Nano Pi и др. отсутствуют встроенные АЦП, поэтому для чтения аналоговых сигналов потребуется внешний АЦП. Один из них — это Аналого-Цифровой Преобразователь/АЦП ADS1115.

ADS1115 — это 4-х канальный 16-битный аналого-цифровой преобразователь (АЦП). Преобразователь разработан для обеспечения точности, энергоэффективности, простоты в реализации, выполняет преобразование с программируемыми скоростями обработки данных. Встроенный усилитель с программируемым коэффициентом усиления (PGA), что позволяет проводить точные измерения больших и малых напряжений. ADS1115 имеет входной мультиплексор (MUX), который позволяет выполнять два дифференциальных или четыре несимметричных входных измерения.

В Pi4J есть библиотека для работы с АЦП ADS1115 по I2C/TWI из Java на Raspberry Pi, Banana Pi, Orange Pi, Nano Pi и Odroid. Все классы и интерфейсы находятся в пакете com.pi4j.gpio.extension.ads.*;.

Пока не все возможности АЦП модулей ADS1x15 реализованы, например, нельзя дифференциально измерять напряжение между входами модуля, доступно только измерение относительно земли (GND). Также не реализована возможность использования пина ALERT/READY, используя GPIO для уведомления о событиях. Это было бы более эффективно, чем постоянный опрос доступности данных.

Класс ADS1x15GpioProvider

Это абстрактный класс, что реализует общие методы аналого-цифровых преобразователей серии ADS1x15, ADS1015 и ADS1113/ADS1114/ADS1115.

ADS1x15GpioProvider(int, int)

Конструктор класса.

public ADS1x15GpioProvider(int busNumber, int address) throws UnsupportedBusNumberException, IOException

Параметры
busNumber — номер шины.
address — I2C адрес устройства.
Возвращает
новый экземпляр ADS1x15GpioProvider
Бросает
UnsupportedBusNumberException — если данный номер шины не поддерживается базовой системой.
IOException — если сообщение с шиной I2C не работает.

ADS1x15GpioProvider(I2CBus, int)

Конструктор класса.

public ADS1x15GpioProvider(I2CBus bus, int address) throws IOException

Параметры
bus — I2C шина.
address — I2C адрес устройства.
Возвращает
новый экземпляр ADS1x15GpioProvider
Бросает
IOException — если сообщение с шиной I2C не работает.

getProgrammableGainAmplifier(Pin)

Возвращает коэффициент усиления внутреннего усилителя (PGA).

public ProgrammableGainAmplifierValue getProgrammableGainAmplifier(Pin pin)

Параметры
pin — номер пина АЦП.
Возвращает
экземпляр ProgrammableGainAmplifierValue — Коэффициент усиления внутреннего усилителя (PGA).

setProgrammableGainAmplifier(ProgrammableGainAmplifierValue, Pin…)

Настройка коэффициента усиления внутреннего усилителя (PGA).

public void setProgrammableGainAmplifier(ProgrammableGainAmplifierValue pga, Pin...pin)

Параметры
pga — коэффициент усиления внутреннего усилителя (PGA).
pin — номер пина/пинов АЦП.

getEventThreshold(Pin)

Возвращает заданный пину порог события.

public double getEventThreshold(Pin pin)

Параметры
pin — номер пина АЦП.
Возвращает
порог события

setEventThreshold(double, Pin…)

Задаёт минимальное значение порога срабатывания события/й. Другими словами, событие срабатывает, если разница между предыдущим и текущим измерением больше заданного значения.

public void setEventThreshold(double threshold, Pin...pin)

Параметры
threshold — минимальное значение порога срабатывания события/й.
pin — пин АЦП.

getMonitorInterval()

Метод возвращает интервал обновления потока мониторинга (в миллисекундах).

public int getMonitorInterval()

setMonitorInterval(int)

Метод задаёт интервал обновления потока мониторинга (в миллисекундах). Это определяет скорость, с которой контрольный поток будет считывать входные значения из чипа АЦП (значение менее 50 мс не разрешено, по умолчанию — 100 мс).

public void setMonitorInterval(int monitorInterval)

Параметры
monitorInterval — интервал обновления потока мониторинга (в миллисекундах).

getImmediateValue(Pin)

Метод используется «монитором» (ADCMonitor), чтобы получить текущее напряжение с указанного пина АЦП. Напряжение измеряется между одним из входов и общим проводом (GND), а дифференциальное измерение библиотека не поддерживает.

public double getImmediateValue(Pin pin) throws IOException

Параметры
pin — пин АЦП.
Возвращает
текущее значение от АЦП.
Бросает
IOException — если сообщение с шиной I2C не работает.

ADCMonitor

Этот класс/поток используется для активного мониторинга прерываний GPIO. Монитор запускается при создании экземпляра класса ADS1x15GpioProvider.

private class ADCMonitor extends Thread {}

Класс ADS1115GpioProvider

Этот GPIO провайдер расширяет абстрактный класс ADS1x15GpioProvider и реализует интерфейс GpioProvider, для работы с пинами АЦП ADS1115, как с родными пинами Pi4J.

ADS1115GpioProvider(int, int)

Конструктор класса.

public ADS1115GpioProvider(int busNumber, int address) throws UnsupportedBusNumberException, IOException

Параметры
busNumber — номер шины.
address — I2C адрес устройства.
Возвращает
новый экземпляр ADS1115GpioProvider
Бросает
UnsupportedBusNumberException — если данный номер шины не поддерживается базовой системой.
IOException — если сообщение с шиной I2C не работает.

ADS1115GpioProvider(I2CBus, int)

Конструктор класса.

public ADS1115GpioProvider(I2CBus bus, int address) throws IOException

Параметры
bus — I2C шина.
address — I2C адрес устройства.
Возвращает
новый экземпляр ADS1115GpioProvider
Бросает
IOException — если сообщение с шиной I2C не работает.

Класс ADS1115Pin

Класс ADS1115Pin содержит 4 экземпляра пинов АЦП ADS1115: INPUT_A0, INPUT_A1, INPUT_A2 и INPUT_A3.

createAnalogInputPin(int, String)

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

private static Pin createAnalogInputPin(int address, String name)

Параметры
address — номер пина (0-3).
name — имя пина.
Возвращает
новый экземпляр Pin

Подключение АЦП ADS1115 к Orange Pi PC

Поскольку эта библиотека не поддерживает дифференциальное измерение, я привёл только один пример, напряжение измеряется между одним из входов и общим проводом (GND).

Схема подключения ADS1115 к Orange Pi

Можно подключить по одному переменному резистору на каждый вход датчика, если хотите проверить все входы. АЦП ADS1115 подключён к порту номер 1, так как адрес 0x48 на порту 0 резервирован. Но можно менять адрес АЦП с помощью пина ADDR и подключить устройство на порт 0.

Схема подключения АЦП ADS1115 к Orange Pi

Пример программы

Приведённая ниже программа считывает данные с датчика и выводит результаты в терминал. Обратите внимание на следующую строку:

gpioProvider.setEventThreshold(500, ADS1115Pin.ALL);

я установил порог в 500 (макс.: ‭32767‬). Если вам нужно, чтобы событие сработало при любом изменении значений с датчика, тогда установите 0 вместо 500:

gpioProvider.setEventThreshold(0, ADS1115Pin.ALL);

Пример кода:

import java.io.IOException;
import java.text.DecimalFormat;

import com.pi4j.gpio.extension.ads.ADS1115GpioProvider;
import com.pi4j.gpio.extension.ads.ADS1115Pin;
import com.pi4j.gpio.extension.ads.ADS1x15GpioProvider.ProgrammableGainAmplifierValue;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinAnalogInput;
import com.pi4j.io.gpio.event.GpioPinAnalogValueChangeEvent;
import com.pi4j.io.gpio.event.GpioPinListenerAnalog;
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.io.i2c.I2CFactory.UnsupportedBusNumberException;

public class ADS1115Example {

  /**
   * @param args
   */
  public static void main(String[] args) {
    try {
      System.out.println("<--Pi4J--> ADS1115 GPIO Example ... started.");

      /*
       * формат чисел для вывода данных
       */
      final DecimalFormat df = new DecimalFormat("#.##");
      final DecimalFormat pdf = new DecimalFormat("###.#");
      /*
       * создаем gpio контроллер
       */
      GpioController gpio = GpioFactory.getInstance();
      /*
       * создаем пользовательский provider GPIO ADS1115
       */
      final ADS1115GpioProvider gpioProvider = new ADS1115GpioProvider(I2CBus.BUS_1, ADS1115GpioProvider.ADS1115_ADDRESS_0x48);
      /*
       * создаём аналоговые входные пины от ADS1115
       */
      GpioPinAnalogInput analogInputPin0 = gpio.provisionAnalogInputPin(gpioProvider, ADS1115Pin.INPUT_A0, "MyAnalogInput-A0");
      GpioPinAnalogInput analogInputPin1 = gpio.provisionAnalogInputPin(gpioProvider, ADS1115Pin.INPUT_A1, "MyAnalogInput-A1");
      GpioPinAnalogInput analogInputPin2 = gpio.provisionAnalogInputPin(gpioProvider, ADS1115Pin.INPUT_A2, "MyAnalogInput-A2");
      GpioPinAnalogInput analogInputPin3 = gpio.provisionAnalogInputPin(gpioProvider, ADS1115Pin.INPUT_A3, "MyAnalogInput-A3");
      /*
       * ВНИМАНИЕ !! Для всех аналоговых входных контактов важно установить PGA
       * (программируемый коэффициент усиления внутреннего усилителя). (Вы
       * можете опционально установить каждый вход на другое значение).
       * Измеренное входное напряжение никогда не должно превышать это значение!
       */
      gpioProvider.setProgrammableGainAmplifier(ProgrammableGainAmplifierValue.PGA_4_096V, ADS1115Pin.ALL);
      /*
       * Определяем пороговое значение для каждого вывода для событий изменения
       * аналогового значения. Важно установить этот порог достаточно высоким,
       * чтобы программа не захлебнулась событиями изменения для незначительных
       * изменений
       */
      gpioProvider.setEventThreshold(500, ADS1115Pin.ALL);
      /*
       * Определите интервал обновления потока мониторинга (в миллисекундах).
       * Это определяет скорость, с которой контрольный поток будет считывать
       * входные значения из чипа АЦП (значение менее 50 мс не разрешено)
       */
      gpioProvider.setMonitorInterval(300);
      /*
       * создаем слушатель изменения значения входного напряжения
       */
      GpioPinListenerAnalog listener = new GpioPinListenerAnalog() {
        @Override
        public void handleGpioPinAnalogValueChangeEvent(GpioPinAnalogValueChangeEvent event) {
          /* необработанное значение */
          double value = event.getValue();

          /* в процентах */
          double percent = ((value * 100) / ADS1115GpioProvider.ADS1115_RANGE_MAX_VALUE);

          /*
           * приблизительное напряжение (* масштабируется на основе настройки
           * PGA)
           */
          double voltage = gpioProvider.getProgrammableGainAmplifier(event.getPin()).getVoltage() * (percent / 100);

          /* выводим данные */
          System.out.println(" (" + event.getPin().getName() + ") : VOLTS=" + df.format(voltage) + "  | PERCENT=" + pdf.format(percent) + "% | RAW=" + value + "       ");
        }
      };
      analogInputPin0.addListener(listener);
      analogInputPin1.addListener(listener);
      analogInputPin2.addListener(listener);
      analogInputPin3.addListener(listener);
      /*
       * Оставляем программу работать 5 минут
       */
      Thread.sleep(5 * 60 * 1000);

      /*
       * останавливаем все действия / потоки GPIO, отключая контроллер GPIO
       * (этот метод принудительно завершает работу всех потоков мониторинга
       * GPIO и запланированных задач)
       */
      gpio.shutdown();

      System.out.println("Exiting ADS1115GpioExample");
    } catch (UnsupportedBusNumberException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Проверяем код:

  1. создаём java файл и вставляем код:
    nano ADS1115Example.java
  2. компилируем файл:
    javac -classpath .:classes:/opt/pi4j/lib/'*' ADS1115Example.java
  3. запускаем программу:
    sudo java -classpath .:classes:/opt/pi4j/lib/'*' ADS1115Example

Результат

Подключение АЦП ADS1115 к Orange Pi PC - Результат

Материалы

ADS1115 — 16-битный Аналого-Цифровой Преобразователь с I2C интерфейсом. Модуль RI038
Pi4J/pi4j · GitHub
Скачать документацию Datasheet ADS1115.pdf

Похожие записи

Комментарии 55

  • Группа Компаний ФИННЛАК, осуществляя свою деятельность на протяжении более 20 лет, сумела стать одним из самых успешных дистрибьюторов концерна Tikkurila Oyj в России Группа Компаний ФИННЛАК, осуществляя свою деятельность на протяжении более 20 лет, сумела стать одним из самых успешных дистрибьюторов концерна Tikkurila Oyj в России https://finnlak.ru/.

  • В Карачаево-Черкесской республике, поселке Домбай, ул. Карачаевская, 72. Спортивно-оздоровительная база “Домбай” https://robocupdombay-otbor4.ru/.

  • Уважаемые родители и учащиеся! По настоятельной рекомендации Роспотребнадзора классы ,в которых хотя бы один ученик имеет подтвержденный Ковид, выводятся на 7 дней, организация обучения происходит с использованием дистанционных образовательных технологий https://sch11-33.ru/.

  • Всё началось в конце 60-х годов в нью-йоркском Гарлеме, районе, который ассоциируется в нашем сознании с негритянской музыкой и джазом https://sibsalsa.ru/.

  • Но при том вам нет необходимости думать об ангаре для воздушного судна, его техническом обслуживании https://blogstreetdog.ru/.

  • Ассортимент продукции концерна Тиккурила включает лакокрасочные материалы для широкого круга потребителей. Многообразная палитра красок, большой выбор лаков, грунтовок, текстурных покрытий, антисептиков, шпатлевки и других продуктов – все это дает возможность выбрать полный спектр материалов, необходимых для декоративного оформления строительных конструкций, зданий, помещений и их защиты от коррозии или других дефектов Ассортимент продукции концерна Тиккурила включает лакокрасочные материалы для широкого круга потребителей. Многообразная палитра красок, большой выбор лаков, грунтовок, текстурных покрытий, антисептиков, шпатлевки и других продуктов – все это дает возможность выбрать полный спектр материалов, необходимых для декоративного оформления строительных конструкций, зданий, помещений и их защиты от коррозии или других дефектов https://finnlak.ru/.

  • Установка и обслуживание газовых котлов, газификация, газовое оборудование, отопление и водопровод в Ростове-на-Дону https://strgaz.ru/.

  • Мы собрали самые достойные решения и с радостью поделимся с Вами https://skbbank-kredit.ru/.

  • Квалифицированные инженеры-проектировщики и монтажники https://techair-as.ru/.

  • Дверь, оборудованная защелкой такого типа, оснащена снаружи и изнутри неподвижной ручкой, никак не связанной с замком и всегда открывается ключом https://adamsrite.ru/.

  • Целью Академии является содействие членам в осуществлении деятельности в области жилищно-коммунального хозяйства, бытового обслуживания и экологии, объединение усилий в создании мультипликативного эффекта выраженного в развитии и модернизации жилищного фонда, эффективном использовании коммунальных ресурсов, создании благоприятного инвестиционного климата и совершенствования институциональной среды ЖКХ. https://www.acgkh.ru/

  • Профессиональная гигиена полости рта + профессиональное кабинетное отбеливание https://dr-dent63.ru/.

  • Полный технологический цикл от сырья до готовой продукции https://highmet.ru/

  • Цвета черный,оранжевый,белый,серый.Логотип общего значения, то есть будет использоваться на вывеске,визитках,меню и тд https://ogologo.ru/.

  • Boho coffee у Гиперболы, ТРЦ Гринвич, 8 марта, 46, 0 этаж, напротив Гиперболы https://bohoekb.ru/.

  • Сегодня ресторан «Токио» располагается в самом историческом центре Москвы, вблизи Арбата, в уютном особняке https://ron-tokyo.ru/.

  • В целях активизации работы по профилактике детского дорожно-транспортного травматизма, обеспечения безопасности несовершеннолетних, а также адаптации детей к транспортной среде в местах постоянного жительства, в МБДОУ «Центр развития ребенка — детский сад №53» в период с 18 мая по 18 июня 2022 года https://detskiisad53.ru/.

  • Но гораздо удобней использовать функцию электрического открывания электромеханической защелки https://adamsrite.ru/.

  • Место, где продуманы, учтены и вручную сконструированы тончайшие нюансы, из которых складываются комфорт и счастье https://lucky-savills.ru/.

  • Во время бронирования вы считаетесь хозяином своего авиатранспорта https://blogstreetdog.ru/.

  • Если вы путешествуете частным авиасудном редко, то бронировать его рентабельнее, чем обслуживать https://blogstreetdog.ru/.

  • Поддерживая проект, вы вносите вклад в увеличение количества грантовых мест на курсы школы для того, чтобы финансовые ограничения не становились препятствием на пути личной трансформации для людей, готовых к изменениям https://perfectyear.ru/.

  • Ресторан «Токио» сочетает в себе гармонию духа Японии и самобытную японскую культуру, так как можно с уверенностью сказать, что именно этот старейший ресторан более 25 лет назад познакомил Москву с истинной японской кухней https://ron-tokyo.ru/.

  • Арктическая зона имеет стратегическое значение для рыбохозяйственного комплекса России https://ryba29.ru/.

  • Автозимник в Северном районе НСО до озера Тенис с деревни Алёшинка готов для проезда легковых автомашин, первые машины вчера пошли https://fishing55.ru/.

  • На сегодняшний день, наша компания не самая крупная по московским меркам, полностью обеспечивает свои объекты финансированием, материалами, высококвалифицированным персоналом и имеет репутацию крепкой и надежной компании https://vesta2.ru/.

  • Здравствуйте, расскажите, пожалуйста, почему такая низкая цена на эти наушники https://applewatches.ru/?

  • Привезем товары и бренды в любой город России. Дешевле и быстрее других компаний https://box-send.ru/.

  • Криминалистика — прикладная юридическая наука, исследующая закономерности приготовления, совершения и раскрытия преступлений, возникновения и существования его следов, собирания, исследования, оценки и использования доказательств https://criminalistics-ed.ru/.

  • Я пытался устроиться на хорошую работу, но оказалось, что туда не берут курящих людей https://brositkuritlegko.ru/.

  • Мы работаем на Итальянском кофе Danesi. Неповторимый заветный купаж, в котором сочетаются зерна арабики высшего качества со сложным ароматомhttps://bohoekb.ru/.

  • Центр исследований в области образовательной политики «Эврика» проводит онлайн-лагерь для детей и молодежи, изучающих русский язык в странах СНГ и Евросоюза https://centereureka.ru/.

  • В ноябре будет проходить бесплатный онлайн-лагерь для детей и взрослых, изучающих русский язык https://centereureka.ru/.

  • Экопоселение Радость на территории прилегающей к озерам Ежозеро и Надречозеро https://eco-joy.ru/

  • Криминалистика — прикладная юридическая наука, исследующая закономерности приготовления, совершения и раскрытия преступлений, возникновения и существования его следов, собирания, исследования, оценки и использования доказательств, а также разрабатывающая систему основанных на познании этих закономерностей специальных приёмов, методов и средств применяемых в ходе предварительного расследования для предупреждения, раскрытия и расследования преступлений, а также при рассмотрении уголовных дел в судах https://criminalistics-ed.ru/.

  • Группа Компаний ФИННЛАК, являясь официальным дилером концерна Tikkurila Oyj, предлагает строительно-бытовые и промышленные лакокрасочные материалы торговой марки Тиккурила оптом. Вся реализуемая продукция изготовлена с учетом климатических особенностей России, что обеспечивает длительные сроки эксплуатации на протяжении 15 – 20 лет https://finnlak.ru/.

  • Разрабатываем идей контента и создания увлекательных текстов для оптимизации под поисковые системы https://digitalrush.ru/.

  • Здравствуйте, сегодня рыбачили в Барабаново на спиннинг с лодки. Народу много, насчитали около 40 лодок https://fishing55.ru/.

  • 1 апреля открывается запись детей в первый класс. Напомним, прием детей в первый класс сейчас проходит в два этапа https://sch11-33.ru/.

  • Заказывала наушники monster beats wireless неделю назад, хотела именно беспроодные https://applewatches.ru/.

  • Индивидуальный подход в решении технических задач https://techair-as.ru/.

  • Разработка и реализация мероприятий, программ и проектов, включая социально-значимые, направленных на развитие и обеспечение благоприятных условий осуществления в сфере жилищно-коммунального хозяйства, бытового обслуживания и экологии https://www.acgkh.ru/

  • Начну с терминов, чтобы не было путаницы. Если, к примеру, находясь за обеденным столом, разговариваешь с белочкой, а на столе сидит кот, ну или…https://fishing55.ru/

  • Добро пожаловать на сайт Омских рыбаков — крупнейшее интернет-сообщество рыбаков в Сибири https://fishing55.ru/.

  • Выполнение инжиниринговых услуг по оформлению разрешительной документации https://techair-as.ru/.

  • Power Transmission® — это инновационный подход к работе, который позволяет решать все задачи в максимально короткие сроки https://akpp-moscow.ru/.

  • Этот метод сервисного обслуживания мы переняли у американских партнёров, система CORE/Обмен у них существует уже не первый десяток лет, американцы не тратят время на ремонт – они покупают готовый продукт https://akpp-moscow.ru/.

  • Представьте себе сайт, который не только привлекает внимание, но и обеспечивает эффективность. В PSS-Studio мы разрабатываем сайты, которые сочетают в себе непревзойденный стиль и превосходную эффективность, гарантируя, что ваш бренд будет оставаться незабываемым в Интернете.

    Почему стоит выбрать нас?

    — Индивидуальный дизайн: Выделите особенности вашего бренда.
    — Отзывчивый дизайн: Безупречный вид на любом устройстве.
    — Повышение видимости в поиске: Расширьте ваше присутствие в результатах поиска.
    — Всегда на связи: Мы постоянно доступны помочь вам на любой стадии.

    Специальное предложение: Используйте возможность бесплатной консультации и эксклюзивную скидку на наши услуги по разработке сайтов, если ответите в течение следующих 48 часов.

    Обновите ваше цифровое присутствие сейчас. Зайдите на наш сайт на https://pss-studio.ru/, чтобы пройти путь к впечатляющему сайту.

    С теплыми пожеланиями, PSS.

  • Представьте себе сайт, который вызывает интерес, но и гарантирует успех. В PSS-Studio мы построим сайты, которые сочетают в себе уникальное оформление и надежную работу, гарантируя, что ваш бренд будет бросаться в глаза в Интернете.

    Почему стоит выбрать нас?

    — Особенный дизайн: Усилите индивидуальность вашего бренда.
    — Гибкость отображения: Оптимальный просмотр на любом устройстве.
    — Оптимизация под поисковики: Заставьте заметить ваш бренд в результатах поиска.
    — Круглосуточная поддержка: Мы постоянно доступны помочь вам на каждой ступени.

    Специальное предложение: Запишитесь на бесплатную консультацию и дополнительную скидку на наши услуги по разработке сайтов, если откликнитесь в течение следующих 48 часов.

    Трансформируйте ваше цифровое присутствие сегодня. Зайдите на наш сайт на https://pss-studio.ru/, чтобы выступить на путь к выдающемуся сайту.

    С сердечными пожеланиями, PSS.

  • Представьте себе сайт, который притягивает взгляды, но и гарантирует успех. В PSS-Studio мы построим сайты, которые сочетают в себе непревзойденный стиль и высокую производительность, гарантируя, что ваш бренд будет привлекать внимание в Интернете.

    Почему стоит обратиться к нам?

    — Уникальный дизайн: Подчеркните уникальность вашего бренда.
    — Отзывчивый дизайн: Превосходное отображение на любом устройстве.
    — Оптимизация под поисковики: Повысьте ваш рейтинг в результатах поиска.
    — Готовность помочь в любой момент: Мы постоянно доступны помочь вам на каждой ступени.

    Специальное предложение: Получите бесплатную консультацию и дополнительную скидку на наши услуги по разработке сайтов, если напишете нам в течение следующих 48 часов.

    Трансформируйте ваше цифровое присутствие сегодня. Ознакомьтесь с нашим предложением на https://pss-studio.ru/, чтобы пройти путь к замечательному сайту.

    С наилучшими пожеланиями, PSS.

  • Представьте себе сайт, который вызывает интерес, но и обеспечивает эффективность. В PSS-Studio мы разрабатываем сайты, которые гармонично соединяют привлекательный внешний вид и превосходную эффективность, гарантируя, что ваш бренд будет выделяться в Интернете.

    Почему стоит рассмотреть наше предложение?

    — Эксклюзивный дизайн: Подкрепите идентичность вашего бренда.
    — Отзывчивый дизайн: Превосходное отображение на любом устройстве.
    — SEO-оптимизация: Повысьте ваш рейтинг в результатах поиска.
    — Непрерывная помощь: Мы всегда к вашим услугам помочь вам на каждой ступени.

    Специальное предложение: Запишитесь на бесплатную консультацию и уникальную скидку на наши услуги по разработке сайтов, если дадите обратную связь в течение следующих 48 часов.

    Преобразите ваше цифровое присутствие сегодня. Ознакомьтесь с нашим предложением на https://pss-studio.ru/, чтобы выступить на путь к замечательному сайту.

    С наилучшими пожеланиями, PSS.

  • Представьте себе сайт, который захватывает дух, но и приносит результаты. В PSS-Studio мы построим сайты, которые объединяют изысканный дизайн и высокую производительность, гарантируя, что ваш бренд будет бросаться в глаза в Интернете.

    Почему стоит предпочесть нас?

    — Персонализированный дизайн: Подчеркните уникальность вашего бренда.
    — Гибкость отображения: Оптимальный просмотр на любом устройстве.
    — Улучшение позиций в поисковых системах: Повысьте ваш рейтинг в результатах поиска.
    — Круглосуточная поддержка: Мы всегда на связи помочь вам на всех этапах.

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

    Трансформируйте ваше цифровое присутствие немедленно. Приглашаем вас на наш сайт на https://pss-studio.ru/, чтобы выступить на путь к впечатляющему сайту.

    С искренними пожеланиями, PSS.

  • Представьте себе сайт, который сразу же запоминается, но и гарантирует успех. В PSS-Studio мы создаем сайты, которые совмещают элегантный дизайн и безупречную функциональность, гарантируя, что ваш бренд будет выделяться в Интернете.

    Почему стоит довериться нам?

    — Индивидуальный дизайн: Подкрепите идентичность вашего бренда.
    — Отзывчивый дизайн: Превосходное отображение на любом устройстве.
    — Оптимизация под поисковики: Укрепите вашу позицию в результатах поиска.
    — Всегда на связи: Мы всегда рады помочь вам на каждой ступени.

    Специальное предложение: Получите бесплатную консультацию и эксклюзивную скидку на наши услуги по разработке сайтов, если напишете нам в течение следующих 48 часов.

    Измените ваше цифровое присутствие сейчас. Приходите к нам на https://pss-studio.ru/, чтобы начать ваше путешествие к замечательному сайту.

    С теплыми пожеланиями, PSS.

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

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