nRF24L01 один из самых популярных беспроводных модулей для интернета вещей (IoT). Подключив модуль nRF24L01+ к Raspberry Pi, Orange Pi, Banana Pi и т.п можно организовать многоканальную защищенную связь между мини-компьютерами и/или, например, Arduino. Таким образом можно подключить на каждую плату Arduino по датчику и передать полученые данные на, к примеру, Raspberry Pi, а там обрабатывать эти данные и/или загрузить в БД.
Рассмотрим, как установить библиотеку RF24 и как наладить связь между Orange Pi PC (плату можно менять на любую другую типа Raspberry Pi, Orange Pi, Banana Pi и т.п. — будет также работать) и несколько плат Ардуино по радиоканалу.
Установка библиотеки RF24
Библиотека RF24 универсальная, её можно установить и использовать как на Arduino, так и на устройства под ОС Linux (Raspberry Pi, Orange Pi, Banana Pi и т.п) поддерживающие SPIDEV, MRAA, RPi BCM2835 или LittleWire. Опция SPIDEV должна работать с большинством систем Linux, поддерживающих SPI.
Описание методов класса RF24 можете найти на странице Подключение модуля nRF24L01+ к Arduino.
Установка библиотеки RF24 на Raspberry Pi
- Установите необходимые компоненты, если они есть (библиотеки MRAA, LittleWire, SPI и т. д.). На Raspberry Pi используется нативная библиотека BCM2835, по этому нужно её установить. Также не забудьте включить SPI на Raspberry Pi, это можно сделать с помощью утилиты
raspi-config; - Загрузите файл
install.shс http://tmrh20.github.io/RF24Installer/RPi/install.sh;wget http://tmrh20.github.io/RF24Installer/RPi/install.sh
- Сделайте это файл исполняемым
chmod +x install.sh
- Запустите его и выберите параметры
./install.sh
- Запустите пример из одной из библиотек
cd rf24libs/RF24/examples_linux
- Для проверки можете отредактировать пример gettingstarted, чтобы настроить конфигурацию выводов, и запустить его
nano gettingstarted.cpp make sudo ./gettingstarted
Установка библиотеки RF24 на Orange Pi, Banana Pi и др.
Этот метод подойдёт и для установки на Raspberry Pi, и на любой ОС Linux, что поддерживает SPI.
- Установите необходимые компоненты, если они есть (библиотеки MRAA, LittleWire, SPI и т. д.). Не забудьте включить SPI, это можно сделать с помощью утилиты
armbian-config, более подробно о том, как настроить SPI на Orange Pi, можете найти на странице Включение и настройка SPI (SPI0 и SPI1) на Orange Pi на ядрах 3.4 (Ubuntu 16.04) и 4.14 (Ubuntu 18.04). - Клонируете репозиторий RF24.
git clone https://github.com/tmrh20/RF24.git RF24
- Перейдите в новый каталог RF24.
cd RF24
- Настройте среду сборки, используя скрипт
./configure
Скрипт автоматически определяет устройство и среду сборки. Если хотите вручную настроить, смотрите на список возможностей скрипта:
./configure --help
- Соберите и установите библиотеку
sudo make install
- Для проверки можете отредактировать пример gettingstarted, чтобы настроить конфигурацию выводов, и запустить его
nano gettingstarted.cpp make sudo ./gettingstarted
Схема подключения nRF24L01+ к Raspberry Pi
Подключается nRF24L01+ к Raspberry Pi по шине SPI (можно использовать как аппаратную так и программную шину). Выводы модуля Vcc и GND подключаются к шине питания 3.3 В постоянного тока. Выводы модуля MISO, MOSI, SCK и подключаются к одноименным выводам шины SPI на плате Raspberry Pi.
Вывод CSN (Chip Select nRF24L01+) подключается к выводу CE (Raspberry Pi) шины SPI, CE (Chip Enable) назначается при объявлении объекта библиотеки RF24 и подключаются к любым назначенным выводам Raspberry Pi. Вывод IRQ на NRF24L01+ в данном случае не используется.
Конкретные имена портов интерфейса SPI могут различаться в зависимости от производителя аппаратных средств, при этом возможны следующие варианты:
- MOSI: SIMO, SDI (на устройстве), DO, DON, SI, MRSR;
- MISO: SOMI, SDO (на устройстве), DI, DIN, SO, MTST;
- SCLK: SCK, CLK;
- SS: nCS, CS, CSB, CSN, nSS, STE, SYNC.
Полное представление о выводах Raspberry Pi см. http://pinout.xyz/. Если установлена библиотека WiringPi, можете воспользоваться командой
gpio readall
для определения назначения всех выводов на плате.

Подключение nRF24L01+ к Raspberry Pi напрямую
| nRF24L01+ | Raspberry Pi |
|---|---|
| GND | 6 / GND |
| VCC | 1 / 3.3V |
| CE | 22 / GPIO25 |
| CSN | 24 / GPIO8 / SPI_CE0_N |
| SCK | 23 / GPIO11 / SPI0_CLK |
| MOSI | 19 / GPIO10 / SPI0_MOSI |
| MISO | 21 / GPIO9 / SPI0_MISO |
| IRQ | — |
Подключение nRF24L01+ к Raspberry Pi через адаптер
| nRF24L01+ | Raspberry Pi |
|---|---|
| GND | 6 / GND |
| VCC | 2 / 5.0V |
| CE | 22 / GPIO25 |
| CSN | 24 / GPIO8 / SPI_CE0_N |
| SCK | 23 / GPIO11 / SPI0_CLK |
| MO / MOSI | 19 / GPIO10 / SPI0_MOSI |
| MI / MISO | 21 / GPIO9 / SPI0_MISO |
| IRQ | — |
Схема подключения nRF24L01+ к Orange Pi, Banana Pi и др.
Как и в случае с Raspberry Pi, подключается nRF24L01+ к Orange Pi по шине SPI. Выводы модуля Vcc и GND подключаются к 3.3 В и GND соответственно. Тоже самое и с выводами MISO, MOSI, SCK и CSN. Единственное отличие в подключении вывода CE (Chip Enable) — номер вывода отличается от Raspberry Pi, так как контроллер другой. Если установлена библиотека WiringOP или BPI-WiringPI (для Banana Pi), можете воспользоваться командой
gpio readall
для определения назначения всех выводов на плате Orange Pi или Banana Pi.

При объявлении объекта библиотеки RF24 нужно указывать номер пина из колонки BCM.
Подключение nRF24L01+ к Orange Pi напрямую
| nRF24L01+ | Orange Pi |
|---|---|
| GND | 6 / GND |
| VCC | 1 / 3.3V |
| CE | 29 / GPIO7 |
| CSN | 24 / GPIO67 / SPI_CE0_N |
| SCK | 23 / GPIO66 / SPI0_CLK |
| MOSI | 19 / GPIO64 / SPI0_MOSI |
| MISO | 21 / GPIO65 / SPI0_MISO |
| IRQ | — |
Подключение nRF24L01+ к Orange Pi через адаптер
| nRF24L01+ | Orange Pi |
|---|---|
| GND | 6 / GND |
| VCC | 2 / 5.0V |
| CE | 29 / GPIO7 |
| CSN | 24 / GPIO67 / SPI_CE0_N |
| SCK | 23 / GPIO66 / SPI0_CLK |
| MO / MOSI | 19 / GPIO64 / SPI0_MOSI |
| MI / MISO | 21 / GPIO65 / SPI0_MISO |
| IRQ | — |
Примеры
Пример 1: Сканер диапазона 2.4 ГГц на NRF24L01+
При создании проектов с передачей данных по радиочастотному каналу, нужно быть уверенным, что данный канал не занят другим устройством. Несколько устройств, находящихся в непосредственной близости, работающих на одной частоте, будут мешать друг другу, снижая скорость передачи данных, или вообще откажутся работать.
Ниже приведённый пример представляет собой сканер, с помощью которого можно определить свободные каналы в ISM (Industrial, Scientific, Medical) диапазоне частот от 2400 МГц до 2527 МГц. Данный сканер сможет определять такие устройства как: WiFi, Bluetooth, некоторые радио телефоны, другие модули nRF24L01.
#include <cstdlib>
#include <iostream>
/*
* Подключаем файл настроек из библиотеки RF24
*/
#include <RF24/nRF24L01.h>
/*
* Подключаем библиотеку для работы с nRF24L01+
*/
#include <RF24/RF24.h>
using namespace std;
/*
* Конфигурация оборудования
*/
#define BCM_PIN 7
#define SPI_DEV 0
#define NUM_CHANNELS 126
/*
* Информация о канале
*/
uint8_t values[NUM_CHANNELS];
const int numReps = 100;
int main() {
/*
* Создаём объект radio для работы с библиотекой RF24,
* указывая номера вывода CE и SPI порта
*/
RF24 radio(BCM_PIN, SPI_DEV);
/*
* Инициируем работу nRF24L01+
*/
radio.begin();
radio.setAutoAck(false);
/*
* Вход в режиме ожидания
*/
radio.startListening();
radio.stopListening();
/*
* Дамп конфигурации RF для отладки
*/
radio.printDetails();
/*
* Распечатка заголовка, верхний и нижний разряд
*/
for (int i = 0; i < NUM_CHANNELS; ++i) {
printf("%x", i >> 4);
}
cout << endl;
for (int i = 0; i < NUM_CHANNELS; ++i) {
printf("%x", i & 0xf);
}
cout << endl;
while (1) {
/*
* Очистка значений измерений
*/
memset(values, 0, sizeof(values));
/*
* Сканирование всех каналов numReps раз
*/
for (int k = 0; k < numReps; ++k) {
for (int i = 0; i < NUM_CHANNELS; ++i) {
/*
* Выбор канала
*/
radio.setChannel(i);
/*
* Послушать немного
*/
radio.startListening();
delayMicroseconds(128);
radio.stopListening();
/*
* Проверка наличия несущей частоты на выбранном канале (частоте).
*/
if (radio.testCarrier()) {
++values[i];
}
}
}
/*
* Распечатка измерения канала в одну шестнадцатеричную цифру
*/
for (int i = 0; i < NUM_CHANNELS; ++i) {
printf("%x", min(0xf, (values[i] & 0xf)));
}
cout << endl;
}
return 0;
}
Компиляция и сборка
g++ -Ofast -Wall RF24_scanner.cpp -lrf24 -o RF24_scanner
Результат

По полученным результатам мы можем сказать, что довольно много каналов заняты.
Пример 2: Получение данных от одного или нескольких передатчиков
В основном на Raspberry Pi, Orange Pi, Banana Pi и т.п. можно запустить любой рабочий пример для Arduino со страницы Подключение модуля nRF24L01+ к Arduino. Единственое, нужно будет поменять функции для вывода на консоль: Serial.print(); на аналогичные в C/C++: printf(); или cout;.
Приёмнику можно задать до 6 труб функцией openReadingPipe(номер, адрес):
for (int i = 0; i < 6; i++) {
radio.openReadingPipe(i, pipesAddress[i]);
}
с номерами труб от 0 до 5 и адресами труб совпадающими с адресами труб передатчиков.
/*
* номера труб
*/
uint8_t pipesAddress[6][5] = {
{ '0', 'P', 'I', 'P', 'E' },
{ '1', 'P', 'I', 'P', 'E' },
{ '2', 'P', 'I', 'P', 'E' },
{ '3', 'P', 'I', 'P', 'E' },
{ '4', 'P', 'I', 'P', 'E' },
{ '5', 'P', 'I', 'P', 'E' },
};
Методом available() осуществляется проверка получения данных. Метод возвращает true если в буфере есть принятые данные доступные для чтения. В качестве необязательного аргумента можно указать адрес переменной в которую будет помещён номер трубы по которой были приняты данные (в примере используется адрес переменной &pipeNumber), зная номер трубы мы знаем от какого передатчика пришли данные.
if (radio.available(&pipeNumber)) {
/*...*/
}
Чтобы была возможность получить/передать данные разной длины, нужно разрешить динамически изменяемый размер блока данных для всех труб на приёмнике и на передатчике.
radio.enableDynamicPayloads();
Получить размер блока данных в последнем принятом пакете можно с помощью метода getDynamicPayloadSize().
payloadSize = radio.getDynamicPayloadSize();
Читаем данные в массив receivedData и указываем сколько байт читать payloadSize.
radio.read(&receivedData, payloadSize);
Полный код приёмника:
/*
* Приемник
*/
#include <cstdlib>
#include <iostream>
#include <stdint.h>
/*
* Подключаем файл настроек из библиотеки RF24
*/
#include <RF24/nRF24L01.h>
/*
* Подключаем библиотеку для работы с nRF24L01+
*/
#include <RF24/RF24.h>
using namespace std;
#define BCM_PIN 7
#define SPI_DEV 0
#define MAX_LEN 32
/*
* Создаём массив для приёма данных
*/
uint8_t receivedData[MAX_LEN];
uint8_t pipeNumber;
uint8_t payloadSize;
/*
* номера труб
*/
uint8_t pipesAddress[6][5] = {
{ '0', 'P', 'I', 'P', 'E' },
{ '1', 'P', 'I', 'P', 'E' },
{ '2', 'P', 'I', 'P', 'E' },
{ '3', 'P', 'I', 'P', 'E' },
{ '4', 'P', 'I', 'P', 'E' },
{ '5', 'P', 'I', 'P', 'E' },
};
int main() {
/*
* Создаём объект radio для работы с библиотекой RF24,
* указывая номера вывода CE и SPI порта
*/
RF24 radio(BCM_PIN, SPI_DEV);
/*
* Инициируем работу nRF24L01+
*/
radio.begin();
/*
* режим подтверждения приёма, 1 вкл 0 выкл
*/
radio.setAutoAck(1);
/*
* время между попыткой достучаться, число попыток
*/
radio.setRetries(0, 15);
/*
* Разрешить динамически изменяемый размер блока данных для всех труб.
*/
radio.enableDynamicPayloads();
/*
* Открываем трубу с идентификатором 0x1111111111LL для приема данных
* (на одном канале может быть открыто до 6 разных труб, которые должны
* отличаться только последним байтом идентификатора)
*/
for (int i = 0; i < 6; i++) {
radio.openReadingPipe(i, pipesAddress[i]);
}
/*
* Указываем канал передачи данных (от 0 до 127),
* (на одном канале может быть только 1 приёмник и до 6 передатчиков)
* Выбираем канал в котором нет шумов!
*/
radio.setChannel(0x70);
/*
* Указываем мощность передатчика
* RF24_PA_MIN=-18dBm
* RF24_PA_LOW=-12dBm
* RF24_PA_HIGH=-6dBm
* RF24_PA_MAX=0dBm
*/
radio.setPALevel(RF24_PA_MAX);
/*
* Указываем скорость передачи данных
* RF24_250KBPS = 250Кбит/сек
* RF24_1MBPS = 1Мбит/сек
* RF24_2MBPS = 2Мбит/сек
*/
radio.setDataRate(RF24_1MBPS);
/*
* Включаем приемник, начинаем прослушивать открытую трубу
*/
radio.startListening();
radio.printDetails();
cout << "startListening" << endl;
while (true) {
/*
* Если в буфере имеются принятые данные
*/
if (radio.available(&pipeNumber)) {
payloadSize = radio.getDynamicPayloadSize();
/*
* Читаем данные в массив data и указываем сколько байт читать
*/
radio.read(&receivedData, payloadSize);
cout << "Pipe: " << (int) pipeNumber << "; ";
cout << "Size: ";
printf("%02d", (int) payloadSize);
cout << "; ";
cout << "Data: [";
for (uint8_t i = 0; i < payloadSize; ++i) {
if (i == 0) {
printf("%02X", receivedData[i]);
} else {
printf(", %02X", receivedData[i]);
}
}
cout << "]" << endl;
}
__msleep(10);
}
return 0;
}
Компиляция и сборка
g++ -Ofast -Wall RF24_receiver.cpp -lrf24 -o RF24_receiver
Результат
Пример 3: Передача данных — Arduino скетч
Ниже приведённый код нужно залить на Arduino, можно залить на 6 плат, но не забудьте менять адрес трубы radio.openWritingPipe(pipesAddress[0]); — от 0 до 5.
/*
Передатчик
*/
/*
Подключаем файл настроек из библиотеки RF24
*/
#include <nRF24L01.h>
/*
Подключаем библиотеку для работы с nRF24L01+
*/
#include <RF24.h>
#include <printf.h>
/*
Создаём объект radio для работы с библиотекой RF24,
указывая номера вывода CE и SPI порта
*/
RF24 radio(9, 10);
byte counter = 0;
uint8_t data[32];
uint8_t payloadSize;
uint8_t pipesAddress[6][5] = {
{ '0', 'P', 'I', 'P', 'E' },
{ '1', 'P', 'I', 'P', 'E' },
{ '2', 'P', 'I', 'P', 'E' },
{ '3', 'P', 'I', 'P', 'E' },
{ '4', 'P', 'I', 'P', 'E' },
{ '5', 'P', 'I', 'P', 'E' },
}; //возможные номера труб
void setup(void) {
Serial.begin(115200);
printf_begin();
/*
Инициируем работу nRF24L01+
*/
radio.begin();
/*
Режим подтверждения приёма, 1 вкл 0 выкл
*/
radio.setAutoAck(1);
/*
Размер пакета, в байтах
*/
radio.enableDynamicPayloads();
/*
Указываем канал передачи данных (от 0 до 127)
(на одном канале может быть только 1 приёмник и до 6 передатчиков).
Выбираем канал в котором нет шумов!
*/
radio.setChannel(0x70);
/*
Указываем скорость передачи данных
RF24_250KBPS = 250Кбит/сек
RF24_1MBPS = 1Мбит/сек
RF24_2MBPS = 2Мбит/сек
Скорость должна быть одинакова на приёмнике и передатчике.
При самой низкой скорости имеем самую высокую чувствительность и дальность.
*/
radio.setDataRate(RF24_1MBPS);
/*
Указываем мощность передатчика
RF24_PA_MIN=-18dBm
RF24_PA_LOW=-12dBm
RF24_PA_HIGH=-6dBm
RF24_PA_MAX=0dBm
*/
radio.setPALevel(RF24_PA_MAX);
/*
Открываем трубу для передачи данных (на одном канале
может быть открыто до 6 разных труб, которые должны
отличаться только последним байтом идентификатора)
*/
radio.openWritingPipe(pipesAddress[0]);
/*
Не слушаем радиоэфир, мы передатчик
*/
radio.stopListening();
/*
Дамп конфигурации RF для отладки
*/
radio.printDetails();
}
void loop(void) {
/*
Передаём счетчик
*/
payloadSize = random(1, 32);
for (uint8_t i = 0; i < payloadSize; i++) {
data[i] = i;
}
Serial.print("Передача:");
for (uint8_t i = 0; i < payloadSize; i++) {
Serial.print(" ");
Serial.print((int) data[i]);
}
Serial.print("; ");
if (radio.write(data, payloadSize)) {
Serial.println("Данные приняты приёмником.");
} else {
Serial.println("Данные не приняты приёмником.");
}
/*
Ждем 1000мс
*/
delay(1000);
}
Материалы
Serial Peripheral Interface
Optimized High Speed NRF24L01+ Driver Class Documenation



А можно подобным образом создать подобие Walkie-Talkie для подключения к ip-камерам, построенным на базе MotionEYEOs?
Возможно, вопрос сформулирован коряво (заранее извиняюсь).
Нестыкуется
Указано в таблице CE пин 22 оранжа, а на картинке с выводом пинов указан пин 29.
Что куда?
подскажите, пожалуйста, как полученные данные передавать в php скрипт на raspberry?
^_^
Trang web của chúng tôi cung cấp những cập nhật mới nhất về tỷ lệ kèo malaysia mới nhất, giúp bạn đưa ra quyết định cá cược chính xác hơn.
sildenafil precautions
viagra pills shoppers
перепродажа аккаунтов гарантия при продаже аккаунтов
маркетплейс аккаунтов маркетплейс аккаунтов соцсетей
маркетплейс аккаунтов соцсетей аккаунты с балансом
Sell Pre-made Account Account trading platform
Accounts market Secure Account Sales
Account Trading Platform Profitable Account Sales
Account exchange Account Trading Service
Account Buying Service Account Acquisition
account exchange online account store
account market marketplace for ready-made accounts
account acquisition database of accounts for sale
account market account buying platform
social media account marketplace account market
guaranteed accounts profitable account sales
buy pre-made account find accounts for sale
secure account purchasing platform accounts market
buy and sell accounts buy and sell accounts
account buying platform account exchange
website for selling accounts sell pre-made account
account acquisition buy accounts
account trading service accounts marketplace
account trading platform account trading platform
accounts for sale social media account marketplace
buy account buy accounts
sell accounts https://accounts-marketplace.xyz
account marketplace https://buy-best-accounts.org
account marketplace https://social-accounts-marketplaces.live
account buying service https://social-accounts-marketplace.xyz
database of accounts for sale https://buy-accounts-shop.pro/
guaranteed accounts https://social-accounts-marketplace.live
account market https://accounts-marketplace.online
buy accounts https://accounts-marketplace-best.pro
покупка аккаунтов https://kupit-akkaunt.xyz/
покупка аккаунтов https://kupit-akkaunty-market.xyz
купить аккаунт akkaunty-optom.live
покупка аккаунтов https://kupit-akkaunt.online/
buy facebook ads manager buy facebook old accounts
buy facebook accounts for advertising buy fb ad account
buy fb ad account facebook ads account buy
facebook ad account for sale https://buy-ad-account.click
buy fb ad account https://ad-accounts-for-sale.work
buy google ads https://buy-ads-account.top
facebook ad account for sale fb accounts for sale
google ads agency accounts buy google ads
old google ads account for sale https://ads-account-buy.work
google ads agency accounts https://buy-ads-invoice-account.top
buy google ads threshold accounts google ads reseller
buy google ads verified account https://sell-ads-account.click/
buy verified business manager buy-business-manager.org
buy google agency account https://buy-verified-ads-account.work/
facebook bm for sale buy business manager account
buy facebook bm https://buy-business-manager-verified.org
buy verified facebook business manager account verified-business-manager-for-sale.org
buy facebook business managers https://buy-business-manager-accounts.org
buy tiktok ads https://buy-tiktok-ads-account.org
buy tiktok business account https://tiktok-ads-account-buy.org
tiktok ads account buy buy tiktok ad account
buy tiktok ads account https://tiktok-agency-account-for-sale.org
tiktok agency account for sale https://buy-tiktok-ad-account.org
buy tiktok ads accounts https://buy-tiktok-ads-accounts.org
buy tiktok ads https://buy-tiktok-business-account.org
buy tiktok ads account https://buy-tiktok-ads.org
tiktok ad accounts https://tiktok-ads-agency-account.org
натяжные потолки недорого натяжные потолки недорого .
натяжной потолок липецк http://www.potolkilipetsk.ru/ .
шкаф в паркинг москва шкаф в паркинг москва .
септик для частного цена установки септик для частного цена установки .
кредит на карту с плохой ки кредит на карту с плохой ки .
где можно взять займ без отказа http://www.zajm-bez-otkaza-1.ru .
accutane mexican pharmacy
клиника нижний новгород психолог стационар psihiatry-nn-1.ru .
prescription drugs
best online international pharmacies
buy facebook account for ads accounts market ready-made accounts for sale
online pharmacy
cocaine in prague buy cocaine prague
buy coke in telegram prague drugstore
Нужна презентация? генератор презентаций аи Создавайте убедительные презентации за минуты. Умный генератор формирует структуру, дизайн и иллюстрации из вашего текста. Библиотека шаблонов, фирстиль, графики, экспорт PPTX/PDF, совместная работа и комментарии — всё в одном сервисе.
изготовление значков метал металлические значки на заказ
железные значки печать значков москва
affordable Neurontin medication USA: Neurontin online without prescription USA — gabapentin capsules for nerve pain
Mediverm Online order Stromectol discreet shipping USA generic ivermectin online pharmacy
trusted Stromectol source online: low-cost ivermectin for Americans — trusted Stromectol source online
http://everlastrx.com/# safe online pharmacy for ED pills
generic gabapentin pharmacy USA: neuropathic pain relief treatment online — FDA-approved gabapentin alternative
stromectol online bestellen Mediverm Online Mediverm Online
http://predniwellonline.com/# online pharmacy Prednisone fast delivery
https://everlastrx.com/# Tadalafil tablets
Mediverm Online: doramectin vs ivermectin — ivermectin lice oral
order Stromectol discreet shipping USA: Mediverm Online — Stromectol ivermectin tablets for humans USA
gabapentin route of elimination: NeuroCare Direct — generic gabapentin pharmacy USA
http://predniwellonline.com/# Prednisone without prescription USA
https://neurocaredirect.com/# neuropathic pain relief treatment online
Tadalafil tablets discreet delivery for ED medication EverLastRx
how to get Prednisone legally online: how to get Prednisone legally online — how to get Prednisone legally online
neuropathic pain relief treatment online: neuropathic pain relief treatment online — gabapentin capsules for nerve pain
https://predniwellonline.com/# how to get Prednisone legally online
generic ivermectin online pharmacy: order Stromectol discreet shipping USA — low-cost ivermectin for Americans
http://medivermonline.com/# order Stromectol discreet shipping USA
how to order Cialis online legally: EverLastRx — safe online pharmacy for ED pills
https://medivermonline.com/# ivermectin for chickens
ivermectin sheep drench for goats
Prednisone tablets online USA how to get Prednisone legally online prednisone 5mg daily
EverLastRx: tadalafil 10mg coupon — buy generic tadalafil 20mg
how to get Prednisone legally online Prednisone without prescription USA ordering prednisone
https://medreliefuk.com/# order steroid medication safely online
https://medreliefuk.shop/# UK chemist Prednisolone delivery
viagra British online pharmacy Viagra viagra
viagra uk BritPharm Online buy viagra online
https://britmedsdirect.com/# order medication online legally in the UK
best UK online chemist for Prednisolone: best UK online chemist for Prednisolone — UK chemist Prednisolone delivery
best UK online chemist for Prednisolone buy prednisolone buy corticosteroids without prescription UK
buy sildenafil tablets UK: order ED pills online UK — buy sildenafil tablets UK
parier pour le foot 1xbet cameroun apk
pronostics du foot pariez sur le foot
British online pharmacy Viagra British online pharmacy Viagra Viagra online UK
UK online pharmacy without prescription: BritMeds Direct — pharmacy online UK
pharmacy online UK: UK online pharmacy without prescription — online pharmacy
https://amoxicareonline.shop/# buy penicillin alternative online
Viagra online UK: viagra — order ED pills online UK
generic amoxicillin: generic amoxicillin — generic amoxicillin
viagra: viagra uk — viagra
online pharmacy UK online pharmacy without prescription Brit Meds Direct
стоимость фитнес клуба адрес фитнес клуба
ZenCareMeds: ZenCare Meds com — buy Doxycycline
mexican pharmacy: mexico pharmacy — mexicanrxpharm
http://tadalifepharmacy.com/# generic Cialis online pharmacy
https://tadalifepharmacy.com/# buy cialis online
buy clomid: buy Doxycycline — order medicine discreetly USA
TadaLife Pharmacy discreet ED pills delivery in the US Cialis online USA
https://zencaremeds.com/# order medicine discreetly USA
trusted online pharmacy for ED meds: generic Cialis online pharmacy — TadaLife Pharmacy
MedicoSur: MedicoSur — mexican pharmacy that ships to the us
https://tadalifepharmacy.com/# safe online pharmacy for Cialis
order medicine discreetly USA: affordable online pharmacy for Americans — order medicine discreetly USA
https://tadalifepharmacy.com/# generic Cialis online pharmacy
Cialis online USA: affordable Cialis with fast delivery — generic Cialis online pharmacy
mexican pharmacy MedicoSur mexican pharmacy
trusted online pharmacy USA: affordable online pharmacy for Americans — ZenCareMeds
?Salud por cada cazador del jackpot !
Muchos confГan en casinos online internacionales por su reputaciГіn y variedad internacional. casinos extranjeros El catГЎlogo de casinos online internacionales incluye tragamonedas, ruletas y juegos en vivo. Los casinos online internacionales ofrecen experiencias Гєnicas con bonos exclusivos y juegos variados.
El catГЎlogo de casino fuera de EspaГ±a incluye tragamonedas, ruletas y juegos en vivo. Las plataformas de casino fuera de EspaГ±a admiten criptomonedas y ofrecen retiros instantГЎneos. En casino fuera de EspaГ±a puedes jugar sin restricciones y con atenciГіn al cliente en espaГ±ol.
Apuestas seguras y rГЎpidas en casinos online fuera de EspaГ±a — п»їhttps://casinosinternacionalesonline.space/
Que tengas la fortuna de disfrutar que la suerte te traiga emocionantes premios !
safe online pharmacy for Cialis Cialis online USA cialis
https://medicosur.com/# mexican pharmacy
mexican pharmacy: mail order pharmacy mexico — mexican pharmacy
mexican pharmacy: MedicoSur — mexican pharmacy that ships to the us
mexican pharmacy: mexican pharmacy — mexican pharmacy
https://intimisante.shop/# cialis 20 mg achat en ligne
cialis generika: potenzmittel cialis — Tadalafil 20mg Bestellung online
cialis generico tadalafil senza ricetta cialis
https://pilloleverdi.com/# dove comprare Cialis in Italia
https://tadalafiloexpress.shop/# Cialis generico economico
pharmacie qui vend du cialis sans ordonnance tadalafil sans ordonnance tadalafil sans ordonnance
pharmacie en ligne: Cialis générique pas cher — cialis sans ordonnance
http://potenzvital.com/# Potenz Vital
compresse per disfunzione erettile dove comprare Cialis in Italia compresse per disfunzione erettile
https://pilloleverdi.shop/# acquistare Cialis online Italia
vente de mГ©dicament en ligne: livraison rapide et confidentielle — Cialis générique pas cher
pharmacie qui vend du cialis sans ordonnance tadalafil sans ordonnance tadalafil sans ordonnance
tadalafil senza ricetta: cialis generico — cialis generico
http://pilloleverdi.com/# compresse per disfunzione erettile
farmacia online italiana Cialis: compresse per disfunzione erettile — cialis prezzo
PilloleVerdi acquistare Cialis online Italia Farmacie on line spedizione gratuita
http://intimisante.com/# cialis sans ordonnance
tadalafil sans ordonnance: achat discret de Cialis 20mg — livraison rapide et confidentielle
https://intimisante.com/# Cialis generique pas cher
cialis precio: tadalafilo 5 mg precio — comprar Cialis online España
cialis precio tadalafilo farmacia online fiable en España
п»їpharmacie en ligne france [url=https://intimisante.com/#]achat discret de Cialis 20mg[/url] vente de mГ©dicament en ligne
https://potenzvital.com/# potenzmittel cialis
Cialis genérico económico: comprar Cialis online España — tadalafilo 5 mg precio
http://tadalafiloexpress.com/# farmacias online seguras
cialis 20mg preis: online apotheke deutschland — tadalafil 20 mg preis
tadalafil 20 mg preis: online apotheke versandkostenfrei — Cialis Preisvergleich Deutschland
tadalafil sans ordonnance acheter Cialis en ligne France trouver un mГ©dicament en pharmacie
cialis generika: online apotheke rezept — europa apotheke
Intimi Santé Intimi Santé Cialis générique pas cher
tadalafil sans ordonnance: cialis 20 mg achat en ligne — livraison rapide et confidentielle
cialis 20mg preis: cialis kaufen ohne rezept — cialis generika
https://potenzvital.com/# online apotheke deutschland
Potenzmittel günstig online: Potenzmittel günstig online — Sildenafil ohne Rezept
Potenzmittel günstig online: Sildenafil 100mg online bestellen — sichere Online-Apotheke Deutschland
Medi Vertraut: MediVertraut — Sildenafil ohne Rezept
http://bluepeakmeds.com/# discreet shipping for ED medication
MediVertraut MediVertraut Sildenafil 100 mg bestellen
Sildenafil Wirkung und Dosierung: Potenzmittel rezeptfrei kaufen — Sildenafil ohne Rezept
Viagra rezeptfreie Schweiz bestellen: Potenzmittel günstig online — Sildenafil ohne Rezept
trusted British pharmacy trusted British pharmacy Viagra online UK
Viagra kaufen gГјnstig Deutschland: Sildenafil ohne Rezept — Potenzmittel rezeptfrei kaufen
Medi Vertraut: MediVertraut — MediVertraut
http://santehommefrance.com/# prix du Viagra generique en France
Sildenafil Wirkung und Dosierung MediVertraut MediVertraut
Blue Peak Meds: discreet shipping for ED medication — discreet shipping for ED medication
difference between Viagra and generic Sildenafil: Sildenafil online reviews — BluePeakMeds
Sildenafil ohne Rezept Sildenafil ohne Rezept Potenzmittel günstig online
BluePeakMeds: Sildenafil side effects and safe dosage — Sildenafil online reviews
https://herengezondheid.shop/# goedkope Viagra tabletten online
ConfiaFarmacia farmacia online para hombres farmacia con entrega rápida
diskret leverans i Sverige: apotek online utan recept — onlineapotek för män
betrouwbare online apotheek: ED-medicatie zonder voorschrift — betrouwbare online apotheek
https://herengezondheid.shop/# Heren Gezondheid
apotek online utan recept: onlineapotek för män — Sildenafil-tabletter pris
how much is steroids
References:
dmaa side effects (git.atomos.io)
Viagra online kopen Nederland: Viagra online kopen Nederland — erectiepillen discreet bestellen
apotek online utan recept: apotek online utan recept — köpa Viagra online Sverige
https://herengezondheid.com/# goedkope Viagra tabletten online
Viagra utan läkarbesök: mannens apotek — billig Viagra Sverige
http://herengezondheid.com/# online apotheek zonder recept
ConfiaFarmacia: farmacia con entrega rápida — Confia Farmacia
https://confiafarmacia.com/# farmacia online para hombres
Viagra generico con pagamento sicuro trattamento ED online Italia comprare Sildenafil senza ricetta
?Brindemos por cada leyenda de las apuestas !
Casinos sin licencia espaГ±ola pueden promocionar bonos sin condiciones de apuesta. [url=http://casinossinlicenciaespanola.net/][/url] Aunque suene tentador, esas ofertas pueden ocultar clГЎusulas engaГ±osas. Es vital leer siempre los tГ©rminos y condiciones antes de aceptar cualquier promociГіn.
Un casino sin registro puede ser una opciГіn temporal para probar juegos. Pero no debe sustituir a un sitio regulado si se busca seguridad. Las licencias existen para proteger los derechos de los consumidores.
Casinos sin registro con juegos instantГЎneos y retiros rГЎpidos — http://casinossinlicenciaespanola.net/
?Que la fortuna te sonria con que consigas asombrosos jackpots impresionantes !
Sildenafil utan recept: apotek online utan recept — apotek online utan recept
MannensApotek diskret leverans i Sverige billig Viagra Sverige
mannens apotek: Sildenafil-tabletter pris — onlineapotek för män
Viagra genérico online España: Viagra genérico online España — ConfiaFarmacia
billig Viagra Sverige billig Viagra Sverige diskret leverans i Sverige
comprar Sildenafilo sin receta: farmacia con entrega rápida — farmacia confiable en España
http://herengezondheid.com/# online apotheek zonder recept
Viagra generico online Italia: comprare Sildenafil senza ricetta — farmaci per potenza maschile
köpa Viagra online Sverige: mannens apotek — diskret leverans i Sverige
prescription drug price check
https://vitalpharma24.com/# Kamagra online kaufen
diskrete Lieferung per DHL: vitalpharma24 — diskrete Lieferung per DHL
comprare medicinali online legali farmacia viva farmacia viva
comprare medicinali online legali: pillole per disfunzione erettile — comprare medicinali online legali
http://farmaciavivait.com/# farmacia viva
Kamagra 100mg bestellen: diskrete Lieferung per DHL — Potenzmittel ohne ärztliches Rezept
Kamagra online kaufen: Kamagra Wirkung und Nebenwirkungen — vitalpharma24
VitaHomme: Kamagra pas cher France — acheter Kamagra en ligne
Erfahrungen mit Kamagra 100mg: Erfahrungen mit Kamagra 100mg — Erfahrungen mit Kamagra 100mg
farmacia viva: Avanafil senza ricetta — Spedra
vitalpharma24: Erfahrungen mit Kamagra 100mg — Potenzmittel ohne ärztliches Rezept
http://farmaciavivait.com/# Spedra
pillole per disfunzione erettile: differenza tra Spedra e Viagra — Spedra prezzo basso Italia
acheter Kamagra en ligne: Kamagra oral jelly France — Kamagra sans ordonnance
Spedra: comprare medicinali online legali — acquistare Spedra online
comprare medicinali online legali: Spedra prezzo basso Italia — pillole per disfunzione erettile
Kamagra pas cher France: acheter Kamagra en ligne — Kamagra oral jelly France
Sildenafil tabletter pris: nettapotek for menn — viagra reseptfri
steroid names bodybuilding
References:
vcs.int.feuerwehr-ziemetshausen.de
farmacia viva: differenza tra Spedra e Viagra — Spedra
http://mannvital.com/# Viagra reseptfritt Norge
vital pharma 24: diskrete Lieferung per DHL — Erfahrungen mit Kamagra 100mg
Avanafil senza ricetta: FarmaciaViva — Avanafil senza ricetta
Spedra prezzo basso Italia: FarmaciaViva — farmacia viva
vitalpharma24: Kamagra Wirkung und Nebenwirkungen — vital pharma 24
Kamagra sans ordonnance: kamagra oral jelly — kamagra oral jelly
kamagra oral jelly: kamagra oral jelly — VitaHomme
Sildenafil tabletter pris: MannVital — generisk Viagra 50mg / 100mg
Kamagra livraison rapide en France: kamagra — kamagra
Kamagra pas cher France: kamagra oral jelly — kamagra
Kamagra sans ordonnance: Kamagra 100mg prix France — Kamagra 100mg prix France
Kamagra Wirkung und Nebenwirkungen: diskrete Lieferung per DHL — Kamagra online kaufen
acheter Kamagra en ligne: acheter Kamagra en ligne — Kamagra livraison rapide en France
differenza tra Spedra e Viagra: comprare medicinali online legali — Avanafil senza ricetta
Sildenafil uten resept: billig Viagra Norge — billig Viagra Norge
differenza tra Spedra e Viagra: pillole per disfunzione erettile — farmacia viva
Kamagra Oral Jelly Deutschland: Potenzmittel ohne ärztliches Rezept — vitalpharma24
vital pharma 24: Kamagra Oral Jelly Deutschland — Potenzmittel ohne ärztliches Rezept
pillole per disfunzione erettile: Spedra — FarmaciaViva
comprare medicinali online legali: Avanafil senza ricetta — Spedra prezzo basso Italia
chery официальный дилер chery tiggo 5
Uk Meds Guide: UK online pharmacies list — cheap medicines online UK
non-prescription medicines UK: non-prescription medicines UK — cheap medicines online UK
Aussie Meds Hub Australia: online pharmacy australia — Aussie Meds Hub Australia
trusted online pharmacy UK UK online pharmacies list safe place to order meds UK
cheap medicines online Australia: verified pharmacy coupon sites Australia — Aussie Meds Hub
top rated online pharmacies: online pharmacy — compare online pharmacy prices
Irish Pharma Finder
promo codes for online drugstores trusted online pharmacy USA buy medications online safely
trusted online pharmacy Australia: cheap medicines online Australia — verified online chemists in Australia
https://ukmedsguide.shop/# online pharmacy
trusted online pharmacy USA promo codes for online drugstores compare online pharmacy prices
discount pharmacies in Ireland: pharmacy delivery Ireland — irishpharmafinder
trusted online pharmacy USA: buy medications online safely — Safe Meds Guide
Irish Pharma Finder
http://safemedsguide.com/# online pharmacy
online pharmacy: pharmacy delivery Ireland — online pharmacy ireland
affordable medication Ireland
compare pharmacy websites: verified pharmacy coupon sites Australia — best Australian pharmacies
https://irishpharmafinder.com/# best Irish pharmacy websites
Uk Meds Guide non-prescription medicines UK Uk Meds Guide
trusted online pharmacy Australia: Australian pharmacy reviews — Aussie Meds Hub Australia
affordable medications UK: affordable medications UK — trusted online pharmacy UK
online pharmacy reviews and ratings SafeMedsGuide promo codes for online drugstores
online pharmacy australia: online pharmacy australia — Australian pharmacy reviews
top rated online pharmacies: best pharmacy sites with discounts — trusted online pharmacy USA
top-rated pharmacies in Ireland
AussieMedsHubAu: Aussie Meds Hub Australia — Aussie Meds Hub
pharmacy delivery Ireland Irish Pharma Finder irishpharmafinder
Australian pharmacy reviews: Aussie Meds Hub — Aussie Meds Hub Australia
safe place to order meds UK: affordable medications UK — cheap medicines online UK
online pharmacy australia: online pharmacy australia — AussieMedsHubAu
best UK pharmacy websites legitimate pharmacy sites UK legitimate pharmacy sites UK
online pharmacy: best online pharmacy — promo codes for online drugstores
pharmacy delivery Ireland
trusted online pharmacy UK: affordable medications UK — UkMedsGuide
Irish online pharmacy reviews
Safe Meds Guide Safe Meds Guide best online pharmacy
affordable medications UK best UK pharmacy websites non-prescription medicines UK
online pharmacy: irishpharmafinder — pharmacy delivery Ireland
pharmacy delivery Ireland
best UK pharmacy websites UkMedsGuide online pharmacy
UK online pharmacies list safe place to order meds UK safe place to order meds UK
https://ukmedsguide.shop/# cheap medicines online UK
cheapest pharmacies in the USA: SafeMedsGuide — buy medications online safely
non-prescription medicines UK: cheap medicines online UK — non-prescription medicines UK
pharmacy delivery Ireland
cheap medicines online Australia pharmacy online verified pharmacy coupon sites Australia
online pharmacy: Uk Meds Guide — UkMedsGuide
best online pharmacy compare online pharmacy prices online pharmacy reviews and ratings
http://irishpharmafinder.com/# online pharmacy ireland
pharmacy delivery Ireland: best Irish pharmacy websites — Irish Pharma Finder
affordable medication Ireland: pharmacy delivery Ireland — trusted online pharmacy Ireland
https://safemedsguide.com/# Safe Meds Guide
pharmacy delivery Ireland
online pharmacy ireland: top-rated pharmacies in Ireland — online pharmacy ireland
cheap medicines online Australia: verified pharmacy coupon sites Australia — Australian pharmacy reviews
Aussie Meds Hub: Aussie Meds Hub Australia — AussieMedsHubAu
irishpharmafinder
irishpharmafinder: discount pharmacies in Ireland — discount pharmacies in Ireland
UK online pharmacies list affordable medications UK non-prescription medicines UK
Safe Meds Guide: Safe Meds Guide — best online pharmacy
https://aussiemedshubau.com/# cheap medicines online Australia
Irish online pharmacy reviews
Aussie Meds Hub: AussieMedsHubAu — Aussie Meds Hub Australia
Aussie Meds Hub verified pharmacy coupon sites Australia verified online chemists in Australia
best Irish pharmacy websites: pharmacy delivery Ireland — top-rated pharmacies in Ireland
Aussie Meds Hub: compare pharmacy websites — Aussie Meds Hub Australia
Irish Pharma Finder
online pharmacy reviews and ratings: buy medications online safely — online pharmacy
cheapest pharmacies in the USA trusted online pharmacy USA promo codes for online drugstores
best pharmacy sites with discounts: Safe Meds Guide — buy medications online safely
https://irishpharmafinder.shop/# buy medicine online legally Ireland
discount pharmacies in Ireland
best Irish pharmacy websites: buy medicine online legally Ireland — irishpharmafinder
Aussie Meds Hub Australia: Aussie Meds Hub — verified pharmacy coupon sites Australia
online pharmacy australia pharmacy online Aussie Meds Hub
trusted online pharmacy UK: non-prescription medicines UK — UK online pharmacies list
discount pharmacies in Ireland
cheap medicines online Australia verified online chemists in Australia compare pharmacy websites
http://irishpharmafinder.com/# online pharmacy
non-prescription medicines UK non-prescription medicines UK trusted online pharmacy UK
Australian pharmacy reviews: Aussie Meds Hub Australia — verified online chemists in Australia
discount pharmacies in Ireland
verified pharmacy coupon sites Australia pharmacy discount codes AU compare pharmacy websites
pharmacy discount codes AU: Aussie Meds Hub — best Australian pharmacies
best pharmacy sites with discounts: cheapest pharmacies in the USA — Safe Meds Guide
cheapest pharmacies in the USA: buy medications online safely — online pharmacy reviews and ratings
irishpharmafinder
https://ukmedsguide.com/# UK online pharmacies list
online pharmacy ireland: online pharmacy ireland — affordable medication Ireland
trusted online pharmacy Ireland
affordable medication Ireland discount pharmacies in Ireland best Irish pharmacy websites
Irish online pharmacy reviews
promo codes for online drugstores online pharmacy cheapest pharmacies in the USA
Aussie Meds Hub: trusted online pharmacy Australia — best Australian pharmacies
comprar medicamentos online sin receta: farmacias legales en Espana — mejores farmacias en linea
farmacia barata online: farmacia con cupones descuento — mejores farmacias en línea