nRF24L01+ — недорогой SPI модуль беспроводной связи

nRF24L01+ - недорогой SPI модуль беспроводной связиNRF24L01 — это одночиповый трансивер (приемопередатчик) выполнен на базе микросхемы nRF24L01+, работающий под общим диапазоном ISM 2.4-2.5 ГГц. Беспроводной приемопередатчик включает в себя частотный генератор, улучшенный контроллер режима SchockBurstTM, усилитель мощности, кристаллический усилитель, модулятор и демодулятор. Выбор выходного канала мощности и протокол могут быть установлены с помощью интерфейса SPI. Он имеет очень низкое потребление тока. В режиме передачи его передающая мощность составляет 6 дБм, а потребление тока составляет 9.0 мА. В режиме приема ток составляет 12.3 мА. Потребление еще ниже в режиме отключения питания и в режиме ожидания.

Модуль поддерживает работу со скоростью 250 Кбит/с, 1 Мбит/сек или 2 Мбит/с, и может работать на 126 независимых каналах, поэтому сразу несколько устройств могут общаться между собой не мешая друг другу. Для передачи данных используется собственный протокол.

Беспроводной модуль NRF24L01+ с усилителем и внешней антенной может работать на расстоянии до 1100 метров при скорости 250 кбит/c, при 1 Мбит/с — 750 метров, при скорости 2 Мбит/c — 520 метров.

nRF24L01+ позволяет передавать информацию в обоих направлениях и объединять несколько устройств в сети типа «звезда». Приёмник поддерживает получение данных по шести каналам, в зависимости от переданного адреса. Каналы 1-5 различаются только младшим байтом адреса. Адрес канала 0 может быть настроен независимо, но при передаче этот канал используется для получения подтверждений приёма.

nRF24L01+ - Работа модуля в сети топологии звезда (MultiCeiver)

Технические характеристики nRF24L01+

  • Напряжение питания: 1.9 В — 3.6 В;
  • Максимальное входное напряжение логической единицы: 5.0 В;
  • Выходное напряжение логической единицы: 3.3 В;
  • Потребляемый ток при мощности 0dBm: 11.3 мА;
  • Потребляемый ток при передачи 2 Мбит: 13.5 мА;
  • Частота: 2.4 ГГц;
  • Программируемая выходная мощность: 0, 6, 12 и 18 dBm;
  • Скорость передачи данных: 250 — 2000 Кбит/сек;
  • Дальность связи при прямой видимости: до 100 м;
  • Дальность связи в помещении: до 30 м;
  • Размеры: 29мм x 16мм x 11мм.

Назначение выводов/Распиновка nRF24L01+

NRF24L01+ - Распиновка

Пин Имя Описание
1 GND Земля (0V)
2 VCC Напряжение питания (1.9 — 3.6V)
3 CE Chip Enable — активирует режим RX или TX. Высокий уровень микросхемы.
4 CSN SPI Chip Select — выбор микросхемы, выбор ведомого SPI. Включение низкого уровня микросхемы. В этом случае устройство реагирует на SPI команды
5 SCK Такт SPI, максимальное значение 10 МГц
6 MOSI Master Out Slave In — вход данных.
7 MISO Master In Slave Out — выход данных.
8 IRQ Сигнал для аппаратного прерывания,чаще всего не используется. Необходим для немедленной реакции микроконтроллера при приеме нового пакета данных.

Назначение выводов - Распиновка nRF24L01+

Блок-схема nRF24L01+

Блок-схема nRF24L01+

Принципиальная схема

nRF24L01+(Pluss) - Принципиальная схема

Команды

Сеанс обмена начинается с установки низкого уровня на линии CSN. Первый переданный после этого от микроконтроллера байт является командой. Одновременно с байтом команды от микроконтроллера, к микроконтроллеру по линии MISO передаётся байт статуса.

Перечень команд:

Наименование Двоичный код 16-чный код Размер данных Описание
R_REGISTER 000n nnnn 0x00 + n 1-5 (приём) Прочитать регистр n
W_REGISTER 001n nnnn 0x20 + n 1-5 (передача) Записать регистр n
R_RX_PAYLOAD 0110 0001 0x61 1-32 (приём) Принять данные из верхнего слота очереди приёмника. После чтения данные из очереди удаляются
W_TX_PAYLOAD 1010 0000 0xA0 1-32 (передача) Записать в очередь передатчика данные для отправки
FLUSH_TX 1110 0001 0xE1 0 Сбросить очередь передатчика
FLUSH_RX 1110 0010 0xE2 0 Сбросить очередь приёмника
REUSE_TX_PL 1110 0011 0xE3 0 Использовать повторно последний переданный пакет
R_RX_PL_WID 0110 0000 0x60 1 (приём) Прочитать размер данных принятого пакета в начале очереди приёмника. Значение больше 32, означает ошибку приёма, в таком случае пакет должен быть удалён командой FLUSH_RX
W_ACK_PAYLOAD 1010 1ppp 0xA8 + p 1-32 (передача) Записать данные для отправки с пакетом подтверждения по каналу p. При этом бит EN_ACK_PAY в регистре FEATURE должен быть установлен
W_TX_PAYLOAD_NOACK 1011 0000 0xB0 1-32 (передача) Записать в очередь передатчика данные для отправки, для которых не требуется подтверждение приёма.
NOP 1111 1111 0xFF 0 Нет операции. Может быть использовано для чтения регистра статуса

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

Описание регистров nRF24L01+

0x00 CONFIG

Регистр настроек.

7 6 5 4 3 2 1 0
MASK_RX_DR MASK_TX_DS MASK_MAX_RT EN_CRC CRCO PWR_UP PRIM_RX

0x01 EN_AA

Включает автоподтверждение приёма.

7 6 5 4 3 2 1 0
ENAA_P5 ENAA_P4 ENAA_P3 ENAA_P2 ENAA_P1 ENAA_P0

0x02 EN_RXADDR

Выбирает активные каналы приёмника.

7 6 5 4 3 2 1 0
ERX_P5 ERX_P4 ERX_P3 ERX_P2 ERX_P1 ERX_P0

0x03 SETUP_AW

Задаёт длину поля адреса.

7 6 5 4 3 2 1 0
AW

0x04 SETUP_RETR

Настройка параметров автоматического повтора отправки.

7 6 5 4 3 2 1 0
ARD ARC

0x05 RF_CH

Регистр задаёт номер радиоканала — частоту несущей с шагом 1Мгц. Радиочастота несущей вычисляется по формуле 2400 + RF_CH МГц. Допустимые значения от 0 до 125. При обмене на скорости 2Мбит/с, частота должна отличатся от частоты используемой другими устройствами минимум на 2 МГц.

0x06 RF_SETUP

Задаёт настройки радиоканала.

7 6 5 4 3 2 1 0
CONT_WAVE RF_DR_LOW PLL_LOCK RF_DR_HIGH RF_PWR

0x07 STATUS

Регистр статуса. Его значение также передаётся на линии MISO одновременно с передачей байта команды по интерфейсу SPI.

7 6 5 4 3 2 1 0
RX_DR TX_DS MAX_RT RX_P_NO TX_FULL

0x08 OBSERVE_TX

Регистр контроля передатчика

7 6 5 4 3 2 1 0
PLOS_CNT ARC_CNT

0x09 RPD

Оценка мощности принимаемого сигнала

7 6 5 4 3 2 1 0
RPD

0x0A RX_ADDR_P0

40-битный (5 байт) регистр, используемый для указания адреса канала 0 приёмника. Этот канал используется для приёма автоподтверждений в режиме передатчика. Автоподтверждения высылаются принимающей стороной с указанием собственного адреса. Поэтому значение этого регистра должно соответствовать значению регистра TX_ADDR для корректной работы в режиме передатчика. Реальная используемая ширина адреса задаётся в регистре SETUP_AW. Значение регистра записывается и читается, начиная с младших байт. Если записано менее 5 байт, то старшие байты остаются неизменными. Значение регистра по умолчанию: 0xE7E7E7E7E7.

0x0B RX_ADDR_P1

40-битный (5 байт) регистр, используемый для указания адреса канала 1 приёмника. Старшие 4 байта этого регистра являются общими для адресов на каналах 1 — 5. Реальная используемая ширина адреса задаётся в регистре SETUP_AW. Значение регистра записывается и читается, начиная с младших байт. Если записано менее 5 байт, то старшие байты остаются неизменными. Значение регистра по умолчанию: 0xC2C2C2C2C2.

0x0C-0x0F RX_ADDR_P2 — RX_ADDR_P5

8-битные регистры, задающие значения младшего байта адреса для каналов 2-5. Значения старших 32 бит берутся из регистра RX_ADDR_P1.
Значение регистров по умолчанию: 0xC3, 0xC4, 0xC5, 0xC6, соответственно.

0x10 TX_ADDR

40-битный (5 байт) регистр, используемый в режиме передатчика в качестве адреса удалённого устройства. При включенном режиме автоподтверждения, удалённое устройство ответит подтверждением с указанием своего же адреса. Это подтверждение принимается на канале 0, поэтому для успешной передачи, значение регистра RX_ADDR_P0 должно быть идентично этому. Реальная используемая ширина адреса задаётся в регистре SETUP_AW. Значение регистра записывается и читается, начиная с младших байт. Если записано менее 5 байт, то старшие байты остаются неизменными. Значение регистра по умолчанию: 0xE7E7E7E7E7.

0x11-0x16 RX_PW_P0 — RX_PW_P5

8-битные регистры, задающие размер данных, принимаемых по каналам, соответственно 0-5, если не включена поддержка произвольной длины пакетов в регистрах DYNPD и FEATURE. Значение 0 указывает что канал не используется. Допустимы значения длины от 1 до 32.

0x17 FIFO_STATUS

Состояние очередей FIFO приёмника и передатчика

7 6 5 4 3 2 1 0
TX_REUSE TX_FULL TX_EMPTY RX_FULL RX_EMPTY

0x1C DYNPD

Разрешение использования пакетов произвольной длины.

7 6 5 4 3 2 1 0
DPL_P5 DPL_P4 DPL_P3 DPL_P2 DPL_P1 DPL_P0

0x1D FEATURE

Регистр опций

7 6 5 4 3 2 1 0
EN_DPL EN_ACK_PAY EN_DYN_ACK

Режимы работы nRF24L01+

nRF24L01+ может пребывать в одном из четырех состояний: выключенном (Power Down), режиме бездействия (Standby), приема (RX) или передачи (TX). Переход из одного состояния в другое может происходить при изменении уровня на выводе CE, опустошении буфера передачи и других событиях. В этом разделе подробно описываются эти режимы.

Диаграмма состояний

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

nRF24L01+(Pluss) - Диаграмма состояний

  • Рекомендуемый режим работы (Recommended operating mode): это рекомендуемое состояние, используемое при нормальной работе.
  • Возможный режим работы (Possible operating mode): это возможное рабочее состояние, но не используется во время нормальной работы.
  • Состояние перехода (Transition state): это состояние, ограниченное по времени, используемое при запуске генератора и оседании PLL.

Когда VDD достигает 1.9 В или выше, nRF24L01+ переходит в состояние сброса питания и остается в режиме сброса, до входа в режим энергосбережения.

Режим пониженного энергопотребления

В режиме отключения питания (пониженного энергопотребления) nRF24L01+ отключается и потребляет минимуму тока. Все значения регистров сохраняются, а SPI остается активным, что позволяет изменить конфигурации и выгрузить/загрузить данные регистров. Режим пониженного энергопотребления питания вводится путем сброса бита PWR_UP в регистре CONFIG.

Режимы ожидания

Режим ожидания-I

Установив бит PWR_UP в регистре CONFIG, устройство переходит в режим ожидания-I. Этот режим используется для минимизации среднего потребления тока при сохранении короткого времени пуска. В этом режиме активна только часть кварцевого генератора. Переход в активные режимы происходит только в том случае, если CE установлен в "1", а когда CE установлен в низком уровне, nRF24L01 возвращается в режим ожидания-I из режимов TX и RX.

Режим ожидания-II

В режиме ожидания-II активны дополнительные тактовые буферы и используется больший ток по сравнению с режимом ожидания-I. nRF24L01+ входит в режим ожидания II, если CE = 1, а буфер TX FIFO чист. Если новый пакет загружен в TX FIFO, PLL немедленно запускается, и пакет передается после обычной задержки установления PLL (130 мкс).

Режим RX/приёмника

Режим RX — это активный режим, в котором nRF24L01+ используется в качестве приемника. Чтобы войти в этот режим, нужно установить биты PWR_UP (включает питание), PRIM_RX (выбор режима: 0 — PTX (передатчик) 1 — PRX (приёмник)) и вывод CE в "1".

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

Приемопередатчик находится в режиме приема до тех пор, пока микроконтроллер не переведет его в режим Standby или Power Down. Однако, если используются функции Enhanced Shockburst, то может быть осуществлен автоматический переход в другие режимы.

Краткое описание алгоритма приёма

Соответствующие каналы приёма должны быть разрешены в регистрах EN_AA и EN_RXADDR, и их адреса настроены в регистрах RX_ADDR_Pх.

Прослушивание эфира начинается с появлением на линии CE высокого уровня. Приёмник анализирует эфир и пытается выделить адресованные ему пакеты с совпадающей контрольной суммой. Когда очередной такой пакет получен, выставляется бит RX_DR в регистре STATUS, и на линии прерывания появляется низкий уровень. Три бита начиная с RX_P_NO в регистре STATUS показывают номер канала, по которому пришёл пакет. Прочитать содержимое полученного пакета можно командой R_RX_PAYLOAD. Сбросить бит RX_DR в регистре STATUS можно путём записи в него единицы.

Режим TX/передатчика

Режим TX — активный режим передачи. Для перехода в него необходимо установить бит PWR_UP в "1", бит PRIM_RX в "0", наличие данных в буфере передатчика (TX FIFO) и подача высокого уровня на вывод CE не менее 10 мкс. В этом режиме микросхема будет находиться до тех пор, пока не окончится передача пакета данных. Затем в зависимости от состояния вывода CE она может перейти в режим Standby (если CE=o), либо продолжить передачу если приемный буфер не пуст.

Краткое описание алгоритма передачи

В регистры TX_ADDR и RX_ADDR_P0 должен быть загружен адрес удалённой стороны. После этого, данные для отправки помещаются в очередь передатчика командой W_TX_PAYLOAD. Начало передачи инициализируется кратким, но не менее 10мкс импульсом на линии CE.

Если пакет передан успешно и подтверждение получено, в регистре STATUS выставляется бит TX_DS, если превышено допустимое количество повторов, а подтверждение передачи не получено, выставляется бит MAX_RT. Обе ситуации приводят к выставлению на линии IRQ низкого уровня.

Если выставлен бит MAX_RT, то переданный пакет остаётся в очереди передатчика, удалить его можно командой FLUSH_TX. Сбросить биты TX_DS и MAX_RT в регистре STATUS можно путём записи в них единиц. Пока бит MAX_RT установлен, дальнейший радиообмен невозможен.

Настройка режимов работы

В следующей таблице описано, как настроить режимы работы.

Режим PWR_UP PRIM_RX CE входной контакт FIFO состояние
RX mode 1 1 1
TX mode 1 0 1 Данные в TX FIFO. Очистит все уровни в TX FIFO.
TX mode 1 0 Минимум 10 мкс высокого импульса Данные в TX FIFO. Очистит один уровень в TX FIFO.
Standby-II 1 0 1 TX FIFO пуст.
Standby-I 1 0 Нет пакетов для передачи.
Power Down 0

Скорость передачи данных

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

Скорость передачи данных в эфире устанавливается битом RF_DR в регистре RF_SETUP. Передатчик и приемник должны быть запрограммированы с одинаковой скоростью передачи данных для связи друг с другом.

nRF24L01+ полностью совместим с nRF24L01. Для совместимости с nRF2401A, nRF2402, nRF24E1 и nRF24E2 скорость передачи данных должна быть установлена на 250 Кбит/с или 1 Мбит/с.

Радиочастота несущей/номер радиоканала

Для передачи используется 126 частотных каналов, каждый канал занимает полосу частот менее 1 МГц при скорости передачи 250 кБит/с и 1 МГц на скорости передачи 1 МГц. Для исключения взаимовлияния каналов расстояние между центральными частотами должно составлять не менее 2 МГц. Также существует возможность настройки коэффициента усиления выходного усилителя мощности.

Частота канала РЧ устанавливается регистром RF_CH по следующей формуле:

F0= 2400 + RF_CH [MHz]

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

Enhanced ShockBurst

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

Preamble Address Packet Control Field Payload CRC
1 байт 3-5 байт 9 бит 0-32 байта 1-2 байта

Структура пакета Enhanced ShockBurst

Заголовок (Preamble) представляет собой последовательность битов, сгенерированную автоматически на основе адреса абонента, необходимую для синхронизации приемника с передатчиком.

Поле адреса (Address) может иметь длину три, четыре или пять байт.

Поле управления пакетом (Packet Control Field) содержит 9 бит. Первые шесть бит определяют количество битов, содержащихся в поле полезной нагрузки (Payload). Следующие 2 бита нужны для того, чтобы определить новый ли пакет получил приемник или отправленный повторно. Последний бит говорит о том, надо ли высылать подтверждение получения пакета.

Если одновременно будут передавать несколько передатчиков, или возникнут другие препятствия, произойдет коллизия. Приемник не сможет получить пакет. Поэтому nRF24L01+ имеет настройку автоматической повторной отправки пакета (Aoto Retransmission (ART)). Эти настройки указывают с каким интервалом и сколько раз пытаться отправить пакет.

Контрольная сумма (CRC) рассчитывается по полю адреса, управляющему полю и полю данных. Если при приёме пакета контрольная сумма не совпала, то пакет игнорируется, никаких действий не предпринимается.

Получив пакет данных, приемник распознает адрес этого пакета и тем самым идентифицирует, какой передатчик его ему отправил. Далее приемник высылает пакет подтверждения приёма с таким же адресом, как и принятый пакет. Если это сделать ему не удалось, то он посылает его еще раз, при этом количество таких попыток можно задать программно. Если же отправить данные в итоге не получилось, то генерируется прерывание.

Управляющее поле/Packet Control Field

Управляющее поле имеет следующую структуру:

Длина данных PID NO_ACK
6 бит 2 бита 1 бит

Длина данных — размер поля «Данные» в пакете. Если опция данных произвольной длины отключена, принимает значение 33 (100001), в этом случае длина данных на принимающей стороне определяется значением соответствующего регистра RX_PW_Px. Значения в диапазоне 1-32 кодируют размер данных в режиме произвольной длины, значение 0 указывает на отсутствие данных и используется в пакетах подтверждения. Режим произвольной длины должен быть включен у передающей стороны для канала 0, чтобы принимать пакеты подтверждения.

PID — двухбитное поле, значение которого циклически увеличивается на 1 при отправке нового пакета. В случае если принимающая сторона приняла пакет, но отправленное подтверждение о приёме не дошло до отправляющей стороны, может быть предпринята повторная отправка с таким же значением PID, как при первой попытке. Если приёмник получает пакет, где поле PID равно полученному в предыдущий раз и значение поля CRC также идентично последнему полученному, то автоматически отправляется подтверждение о получении, но полученные данные считаются повтором и игнорируются, не помещаются в очередь FIFO приёмника, и прерывание TX_DS в этом случае не появляется.

NO_ACK — флаг указывающий получателю на то, что подтверждение получения пакета высылать не требуется. Сами пакеты подтверждения маркируются этим флагам. Также можно отправить пакет не требующий подтверждения командой W_TX_PAYLOAD_NOACK, если в регистре FEATURE установлен бит EN_DYN_ACK.

Примечание

Перед первым включением следует смонтировать на модуле 2 конденсатора. Между выводами VCC и GND припать конденсатор в SMD корпусе (планарный) емкостью 0.1 мкФ со стороны пайки к монтажным площадкам на плате, затем к ним припаять электролитический конденсатор емкостью 100 мкФ на напряжение 10 В. Питать лучше не от Arduino, а от отдельного стабилизатора напряжения 3.3 В, способного обеспечить ток нагрузки 200 мА.

nRF24L01+ - электролитический конденсатор емкостью 100 мкФ

Также можно использовать плату питания для nrf24l01. Адаптер имеет две колодки подписанных выводов: двухрядная (для подключения радио модуля) и однорядная (для подключения к arduino). Адаптер оснащен стабилизатором напряжения (Vin = 5 В, Vout = 3,3 В), для питания радио модуля, собранным на базе чипа AMS1117, а также светодиодом, который служит индикатором наличия питания.

Адаптер (плата) питания для nrf24l01+

Материалы

NRF24L01 Test with Arduino
nRF24L01 Datasheet
Подключение модулей связи 2,4ГГц на базе чипов nRF24L01 + к микроконтроллеру
ТЕХНИЧЕСКИЙ ОБЗОР МИКРОСХЕМЫ ПРИЕМОПЕРЕДАТЧИКА nRF24L01 +
Модуль приемопередатчика 2,4 ГГц NRF24L01

Купить nRF24L01+ на AliExpress

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

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

  • Здравствуйте дамы и господа!
    Более подробная информация размещена https://drive.google.com/file/d/1dvAKJyEOOME6UOwkqlaXD570mM28fJWy/view?usp=sharing
    Предлагаем Вашему вниманию изделия из стекла для дома и офиса.Наша организация ООО «СТЕКЛОЭЛИТ» работает 10 лет на рынке этой продукции в Беларуси.На сегодняшний день межкомнатные двери из стекла быстро набирают популярность и спрос у покупателей. Причина этого понятна, ведь стеклянные двери защищают от посторонних глаз и звуков, а также пропускают свет, визуально расширяют пространство помещения и отлично вписываются в любой интерьер, который может быть выполнен как в классическом варианте, так и в стиле модерн или хай-тек.
    Увидимся!

  • real money slots online myvegas slots facebook super
    high limit slots best slot machines to play

  • Добрый день товарищи!
    https://drive.google.com/file/d/1zAyNo7EsOmhmlRWSMBRtfxA4dC07_ffp/view?usp=sharing
    Предлагаем Вашему вниманию сервис оргтехники и продажу расходников для дома и офиса.Наша организация «КОПИМЕДИАГРУПП» работает 10 лет на рынке этой продукции в Беларуси.Что мы можем предложить.Заправка лазерных картриджей для черно-белых и цветных принтеров и МФУ. Наш опыт позволяет заправлять картриджи практически любого производителя, наиболее популярные из них HP, Canon, Samsung, Xerox, Ricoh, Brother, Panasonic, Kyocera. При появлении дефектов печати может потребоваться ремонт картриджа, мы также можем выполнить его на выезде. Стоимость весьма демократична, при этом качество отличное.Качество.При заправке картриджей используем тонер только премиального уровня IMEX, TOMOEGAWA (ЯПОНИЯ), StaticControl (США) позволит реже производить ремонт картриджа, а в дальнейшем – отсутствие проблем с принтером, которые очень часто встречаются при использовании некачественного, дешевого тонера.Заправка картриджей с выездом.Наша работа построена таким образом, чтобы максимально освободить ваше время, а ваше участие в данном процессе было минимальным.Заправляем картриджи для принтера с выездом на дом или в офис, вам не придется ехать через весь город и тратить свое время – это мы сделаем за вас. Выезжаем со специальным пылесосом, что позволяет заправить картридж на месте без грязи и пыли и с соблюдением технологического процесса.Доставка картриджей и техники.Курьерская доставка, мы приезжаем к вам, забираем картриджи, заправляем их у себя в мастерской, после чего доставляем заправленные картриджи обратно.Так же и с техникой — заберем ваш принтер в ремонт и привезем обратно исправным.Дисконтная программа.
    Мы ориентированы на долгосрочное сотрудничество и поэтому регулярно дарим скидки. При заправке картриджей более двух единиц — Вы уже экономите.

  • buy academic papers write my english paper help with writing a
    paper for college https://writepapersformoney.com/

  • buying college papers online find someone to write my college
    paper pay for a paper write my paper for me cheap

  • help with filing divorce papers custom paper writing services professional paper writer where can you buy resume paper

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

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