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 может быть настроен независимо, но при передаче этот канал используется для получения подтверждений приёма.
- 1 Технические характеристики nRF24L01+
- 2 Назначение выводов/Распиновка nRF24L01+
- 3 Блок-схема nRF24L01+
- 4 Принципиальная схема
- 5 Команды
- 6 Описание регистров nRF24L01+
- 6.1 0x00 CONFIG
- 6.2 0x01 EN_AA
- 6.3 0x02 EN_RXADDR
- 6.4 0x03 SETUP_AW
- 6.5 0x04 SETUP_RETR
- 6.6 0x05 RF_CH
- 6.7 0x06 RF_SETUP
- 6.8 0x07 STATUS
- 6.9 0x08 OBSERVE_TX
- 6.10 0x09 RPD
- 6.11 0x0A RX_ADDR_P0
- 6.12 0x0B RX_ADDR_P1
- 6.13 0x0C-0x0F RX_ADDR_P2 — RX_ADDR_P5
- 6.14 0x10 TX_ADDR
- 6.15 0x11-0x16 RX_PW_P0 — RX_PW_P5
- 6.16 0x17 FIFO_STATUS
- 6.17 0x1C DYNPD
- 6.18 0x1D FEATURE
- 7 Режимы работы nRF24L01+
- 8 Скорость передачи данных
- 9 Радиочастота несущей/номер радиоканала
- 10 Enhanced ShockBurst
- 11 Примечание
- 12 Материалы
- 13 Купить nRF24L01+ на AliExpress
- 14 Похожие записи
Технические характеристики 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+
Пин | Имя | Описание |
---|---|---|
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+
Принципиальная схема
Команды
Сеанс обмена начинается с установки низкого уровня на линии 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, опустошении буфера передачи и других событиях. В этом разделе подробно описываются эти режимы.
Диаграмма состояний
Диаграмма состояний на рисунке ниже показывает режимы работы и то, как они функционируют. На диаграмме состояний выделяются три типа отдельных состояний:
- Рекомендуемый режим работы (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. Адаптер имеет две колодки подписанных выводов: двухрядная (для подключения радио модуля) и однорядная (для подключения к arduino). Адаптер оснащен стабилизатором напряжения (Vin = 5 В, Vout = 3,3 В), для питания радио модуля, собранным на базе чипа AMS1117, а также светодиодом, который служит индикатором наличия питания.
Материалы
NRF24L01 Test with Arduino
nRF24L01 Datasheet
Подключение модулей связи 2,4ГГц на базе чипов nRF24L01 + к микроконтроллеру
ТЕХНИЧЕСКИЙ ОБЗОР МИКРОСХЕМЫ ПРИЕМОПЕРЕДАТЧИКА nRF24L01 +
Модуль приемопередатчика 2,4 ГГц NRF24L01
Блог о недвижимости — https://ctromm34.ru/
casino cometa зеркало cometaofficial online — https://kometa-cassino.xyz/
Best casino — https://7k-kazino-top.com/
Best casino — https://7k-kazinos-top.ru/