В данной статье пойдёт речь о том как сделать машинку на радиоуправлении своими руками на базе микроконтроллера ATtiny2313. Другими словами — изобретаем велосипед, ибо по интернетам есть тонны примеров на Arduino и без Arduino. Несмотря на это, я тоже решил внести свою лепту.
Я не очень люблю работать с Arduino, так как не чувствуется сама идея работы с микроконтроллерами, всё спрятано в библиотеках и, если что-то нужно, просто скачиваешь нужную либу, устанавливаешь её и используешь, а как и что там в большинстве случаев остаётся тайной.
- 1 Для изготовления машинки, нам понадобится
- 2 Почему микроконтроллер ATtiny2313
- 3 Принцип работы программы на МК ATtiny2313
- 4 Схема подключения компонентов
- 5 Программа для управления
- 6 Код программы для ATtiny2313
- 7 Исходники и Java приложение
- 8 Маленькое видео
- 9 Купить компоненты на AliExpress
- 10 Похожие записи
Для изготовления машинки, нам понадобится
- микроконтроллер ATtiny2313;
- готовое шасси вместе с двигателями (танк или двухколёсный кит);
- HC-11, HC-12, TB387 или любые доступные USART радио-модули — две штуки;
- L298 — модуль драйвера двигателей;
- Аккумуляторы 18650 Li-ion — две штуки;
- Коробка (бокс) под аккумуляторы 18650 (на 2 аккумулятора);
- Преобразователь USB-UART на базе CH340G или PL2303HX;
- USBasp v2.0 ISP программатор
Ссылки на Aliexpress на всё это добро вы найдёте в конце статьи.
Почему микроконтроллер ATtiny2313
Микроконтроллер ATTiny2313 улучшенный вариант старого микроконтроллера AT90S2313. Внутри у него 120 инструкций оптимизированных для программирования на языках высокого уровня, 32 регистра общего назначения, 2 килобайта флеш-памяти для программ, 128 байт EEPROM (энергонезависимая память) и 128 байт SRAM (оперативная память). Из периферии: один 8 битный таймер/счетчик, один 16 битный таймер/счетчик, четыре ШИМ канала, 2 из которых будут использованы для управления колёсами, аналоговый компаратор, Watchdog таймер, USI универсальный последовательный интерфейс и, самое главное для данного проекта, USART. Если фьюзы выставлены на работу от внешнего кварца, кварц должен быть установлен на частоту, не превышающей максимальную по даташиту, это 20МГц.
Все вышеперечисленные характеристики более чем достаточно для наших задач. К тому же ATTiny2313 не дорогой и доступный микроконтроллер, в отличии от Arduino.
Принцип работы программы на МК ATtiny2313
Сама программа состоит из 3-х классов (USART, Queue, CmdExecutor) и основного файла main.cpp, который содержит функцию main(). Класс USART отвечает за инициализацию протокола и получения данных, в нашем случае данные — это команды. После получения, команда добавляется, push(cmd), в очередь Queue. Класс Queue, он же очередь, имеет два метода push(cmd) и pop(cmd). С помощью первого метода, как мы уже сказали, добавляем команды в очередь, а вторым, соответственно берём первую команду из очереди. В функции main() и проверяется если в очереди есть команды. Если команда нашлась main() берёт её и передаёт классу CmdExecutor, он же исполнитель команд, выполняет её — execute(cmd).
Для чего нужна была очередь команд, нельзя было просто выполнять команды сразу после получения, а не тратить время и ресурсы не очень-то и мощного ATtiny2313? Да, можно было, можно было вообще сделать этот пример из двух функций: main() и ISR(USART_RX_vect), и гуляй Вася. Однако не так, во первых, если одна команда выполняется очень много времени, а другая уже на подходе, то как тут быть? Во вторых, если микроконтроллер помимо команд выполняет ещё и другую работу, тоже очень важную, а мы эту работу будем остановить очень часто, тогда может выйти так, что результат будет не тот, да и команды не правильно могут выполнятся, особенно тогда, когда и команда и работа используют те же ресурсы.
Схема подключения компонентов
P1 (COMPIM) — COM порт, на реальной машине его нужно заменить на USART радио модуля, к примеру: HC-11, HC-12, TB387 или на любого доступного.
U1 (ATTINY2313) — микроконтроллер
U2 (L298) — модуль драйвера двигателей
Программа для управления
Управлять «бэтмобиль» можно было и с помощью пульта. Однако написать программу на Джаве намного легче, чем взять паяльник в руки и пилить пульт, да и программу можно сделать с большим функционалом, что-то добавить, что-то отображать, другое сделать конфигурируемым и вообще — возможности почти безграничны.
В моём случае эта программа всего лишь отправляет команды по USART, т.е. делает необходимый минимум задач.
Как установить Rx Tx в Java смотрим здесь, а пример приложения здесь.
Список команд
private static final byte PWM1 = '1';
— 1-я скорость;private static final byte PWM2 = '2';
— 2-я скорость;private static final byte PWM3 = '3';
— 3-я скорость;private static final byte PWM4 = '4';
— 4-я скорость;private static final byte PWM5 = '5';
— максимальная скорость;private static final byte STOP = 'a';
— стоп машина;private static final byte START = 'b';
— старт машина, включаются периферия и ШИМ, команда выполняется при включении машины;private static final byte RIGHT_FORWARD = 'c';
— правая гусеница движется вперёд;private static final byte LEFT_FORWARD = 'd';
— левая гусеница движется вперёд;private static final byte RIGHT_BACK = 'e';
— правая гусеница движется назад;private static final byte LEFT_BACK = 'f';
— левая гусеница движется назад;private static final byte ALL_FORWARD = 'g';
— обе гусеницы движутся вперёд;private static final byte ALL_BACK = 'h';
— обе гусеницы движутся назад;private static final byte LEFT_STOP = 'i';
— левая гусеница остановлена;private static final byte RIGHT_STOP = 'j';
— правая гусеница остановлена;private static final byte STOP_ALL = 'k';
— обе гусеницы остановлены;
Управление
- 5 скоростных режимов (кнопки от 1 до 5);
- Движение вперёд — обе гусеницы движутся вперёд (↑↑), нажата стрелка вверх (↑);
- Движение назад — обе гусеницы движутся назад (↓↓), нажата стрелка вниз (↓);
- Движение вперёд и направо — правая гусеница остановлена, левая движется вперёд (↑■), нажаты стрелки вверх и направо(↑→);
- Движение вперёд и налево — левая гусеница остановлена, правая движется вперёд (■↑), нажаты стрелки вверх и налево (←↑);
- Движение назад и направо — правая гусеница остановлена, левая движется назад (↓■), нажаты стрелки вниз и направо (↓→);
- Движение назад и налево — левая гусеница остановлена, правая движется назад (■↓), нажаты стрелки вниз и налево (←↓);
- Движение по кругу по часовой — левая гусеница движется назад, правая движется вперёд (↓↑), нажата стрелка налево (←);
- Движение по кругу против часовой — правая гусеница движется назад, левая движется вперёд (↑↓), нажата стрелка направо (→);
Вывод на консоль
После нажатия стрелок в консоли появятся знаки, указывающие движение машины/танка:
↑↑
■■
↓↑
■■
↑↓
■■
↓↓
■■
↑↑
■↑
↑↑
↑■
↑↑
■■
↓↓
■↓
↓↓
↓■
↓↓
■■
Настройки программы
Выход из программы: USART->Exit или Alt-F4;
Подключение: USART->Connect или Ctrl+Alt-C и выбираем COM порт;
Настройка скорости: USART->Baud или Ctrl+Alt-B и выбираем скорость передачи данных, по умолчанию 9600, такаяже установлена и в прошивке. Настроить следует перед тем, как подключиться;Настроить можно число стоп битов и число битов данных, но в нашем случае их лучше оставить 1 и 8 соответственно.
Код программы для ATtiny2313
Программа для ATtiny2313 написана на C++, а проект сделал в Eclipse C++. Как настроить Eclipse C/C++ для программирования AVR микроконтроллеров смотрите здесь.
main.cpp
#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include "USART.h" #include "CmdExecutor.h" #include "Queue.h" void pushData(uint8_t data) { cmdQueue.push(data); } int main() { usart.init(9600); usart.setOnReceiveFunction(pushData); sei(); cmdExecutor.cmdStart(); uint8_t cmd; while (1) { if (cmdQueue.pop(cmd)) { cmdExecutor.execute(cmd); } _delay_ms(1); } return 1; }
Queue.h
#ifndef QUEUE_H_ #define QUEUE_H_ #define QUEUE_SIZE 4 class Queue { private: uint8_t queueSize; uint8_t data[QUEUE_SIZE]; public: Queue(); void push(uint8_t); uint8_t pop(uint8_t&); }; extern Queue cmdQueue; #endif /* QUEUE_H_ */
Queue.cpp
#include <avr/io.h> #include <stdlib.h> #include "Queue.h" Queue cmdQueue; Queue::Queue() : queueSize(0) { } void Queue::push(uint8_t cmd) { if (this->queueSize < QUEUE_SIZE) { this->data[this->queueSize] = cmd; this->queueSize++; } } uint8_t Queue::pop(uint8_t&cmd) { if (this->queueSize > 0) { this->queueSize--; cmd = this->data[0]; for (uint8_t i = 0; i < this->queueSize; i++) { this->data[i] = this->data[i + 1]; } return 1; } return 0; }
CmdExecutor.h
#ifndef CMDEXECUTOR_H_ #define CMDEXECUTOR_H_ #define LEFT_PWM_DDR DDRB #define RIGTH_PWM_DDR DDRB #define LEFT_PWM_PIN PINB3 #define RIGTH_PWM_PIN PINB4 #define LEFT_DDR_FORWARD DDRD #define RIGTH_DDR_FORWARD DDRD #define LEFT_DDR_BACK DDRD #define RIGTH_DDR_BACK DDRD #define LEFT_PORT_FORWARD PORTD #define RIGTH_PORT_FORWARD PORTD #define LEFT_PORT_BACK PORTD #define RIGTH_PORT_BACK PORTD #define LEFT_PIN_FORWARD PIND2 #define RIGTH_PIN_FORWARD PIND3 #define LEFT_PIN_BACK PIND4 #define RIGTH_PIN_BACK PIND5 #define PWM1 '1' #define PWM2 '2' #define PWM3 '3' #define PWM4 '4' #define PWM5 '5' #define STOP 'a' #define START 'b' #define RIGHT_FORWARD 'c' #define LEFT_FORWARD 'd' #define RIGHT_BACK 'e' #define LEFT_BACK 'f' #define ALL_FORWARD 'g' #define ALL_BACK 'h' #define LEFT_STOP 'i' #define RIGHT_STOP 'j' #define STOP_ALL 'k' class CmdExecutor { public: CmdExecutor(); void execute(uint8_t); void cmdStart(); void cmdStop(); void cmdRightForward(); void cmdLeftForward(); void cmdRightBack(); void cmdLeftBack(); void cmdAllForward(); void cmdAllBack(); void cmdStopAll(); void cmdStopLeft(); void cmdStopRight(); void cmdPwm1(); void cmdPwm2(); void cmdPwm3(); void cmdPwm4(); void cmdPwm5(); }; extern CmdExecutor cmdExecutor; #endif /* CMDEXECUTOR_H_ */
CmdExecutor.cpp
#include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> #include "USART.h" #include "CmdExecutor.h" CmdExecutor cmdExecutor; CmdExecutor::CmdExecutor() { } void CmdExecutor::execute(uint8_t cmd) { switch (cmd) { case STOP: cmdStop(); break; case START: cmdStart(); break; case RIGHT_FORWARD: cmdRightForward(); break; case LEFT_FORWARD: cmdLeftForward(); break; case RIGHT_BACK: cmdRightBack(); break; case LEFT_BACK: cmdLeftBack(); break; case ALL_FORWARD: cmdAllForward(); break; case ALL_BACK: cmdAllBack(); break; case LEFT_STOP: cmdStopLeft(); break; case RIGHT_STOP: cmdStopRight(); break; case PWM1: cmdPwm1(); break; case PWM2: cmdPwm2(); break; case PWM3: cmdPwm3(); break; case PWM4: cmdPwm4(); break; case PWM5: cmdPwm5(); break; case STOP_ALL: cmdStopAll(); break; default: break; } } void CmdExecutor::cmdStart() { LEFT_DDR_FORWARD |= 1 << LEFT_PIN_FORWARD; RIGTH_DDR_FORWARD |= 1 << RIGTH_PIN_FORWARD; LEFT_DDR_BACK |= 1 << LEFT_PIN_BACK; RIGTH_DDR_BACK |= 1 << RIGTH_PIN_BACK; LEFT_PWM_DDR |= 1 << LEFT_PWM_PIN; RIGTH_PWM_DDR |= 1 << RIGTH_PWM_PIN; cmdStopAll(); TCCR1A |= 1 << COM1A1 | 1 << COM1B1 | 1 << WGM11 | 1 << WGM10; TCCR1B |= 1 << WGM12 | 1 << CS11 | 1 << CS10; cmdPwm3(); cmdPwm3(); } void CmdExecutor::cmdStop() { cmdStopAll(); LEFT_PWM_DDR &= ~(1 << LEFT_PWM_PIN); RIGTH_PWM_DDR &= ~(1 << RIGTH_PWM_PIN); TCCR1A &= ~(1 << COM1A1 | 1 << COM1B1 | 1 << WGM11 | 1 << WGM10); TCCR1B &= ~(1 << WGM12 | 1 << CS11 | 1 << CS10); } void CmdExecutor::cmdRightForward() { cmdStopRight(); RIGTH_PORT_FORWARD |= (1 << RIGTH_PIN_FORWARD); } void CmdExecutor::cmdLeftForward() { cmdStopLeft(); LEFT_PORT_FORWARD |= (1 << LEFT_PIN_FORWARD); } void CmdExecutor::cmdRightBack() { cmdStopRight(); RIGTH_PORT_BACK |= (1 << RIGTH_PIN_BACK); } void CmdExecutor::cmdLeftBack() { cmdStopLeft(); LEFT_PORT_BACK |= (1 << LEFT_PIN_BACK); } void CmdExecutor::cmdAllForward() { cmdStopAll(); LEFT_PORT_FORWARD |= (1 << LEFT_PIN_FORWARD); RIGTH_PORT_FORWARD |= (1 << RIGTH_PIN_FORWARD); } void CmdExecutor::cmdAllBack() { cmdStopAll(); LEFT_PORT_BACK |= (1 << LEFT_PIN_BACK); RIGTH_PORT_BACK |= (1 << RIGTH_PIN_BACK); } void CmdExecutor::cmdStopAll() { LEFT_PORT_FORWARD &= ~(1 << LEFT_PIN_FORWARD); RIGTH_PORT_FORWARD &= ~(1 << RIGTH_PIN_FORWARD); LEFT_PORT_BACK &= ~(1 << LEFT_PIN_BACK); RIGTH_PORT_BACK &= ~(1 << RIGTH_PIN_BACK); } void CmdExecutor::cmdPwm1() { OCR1A = 204; OCR1B = 204; } void CmdExecutor::cmdPwm2() { OCR1A = 408; OCR1B = 408; } void CmdExecutor::cmdPwm3() { OCR1A = 612; OCR1B = 612; } void CmdExecutor::cmdPwm4() { OCR1A = 816; OCR1B = 816; } void CmdExecutor::cmdStopLeft() { LEFT_PORT_FORWARD &= ~(1 << LEFT_PIN_FORWARD); LEFT_PORT_BACK &= ~(1 << LEFT_PIN_BACK); } void CmdExecutor::cmdStopRight() { RIGTH_PORT_FORWARD &= ~(1 << RIGTH_PIN_FORWARD); RIGTH_PORT_BACK &= ~(1 << RIGTH_PIN_BACK); } void CmdExecutor::cmdPwm5() { OCR1A = 1023; OCR1B = 1023; }
USART.h
#ifndef USART_H_ #define USART_H_ class USART { private: typedef void (*OnReceiveFunction)(uint8_t); public: OnReceiveFunction onReceiveFunction; USART(); void init(uint16_t); void setOnReceiveFunction(OnReceiveFunction); // Отправка байта void transmitChar(char); // Отправка строки void transmitString(char*); // Отправка строки void transmitStringLn(char*); // Получение байта char receiveChar(); }; extern USART usart; #endif /* USART_H_ */
USART.cpp
#include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> #include "USART.h" USART usart; ISR(USART_RX_vect) { if (usart.onReceiveFunction) { usart.onReceiveFunction(UDR); } } USART::USART() : onReceiveFunction(0) { } void USART::init(uint16_t baud) { uint16_t ubrr = F_CPU / 16 / baud - 1; UBRRH = (unsigned char) (ubrr >> 8); UBRRL = (unsigned char) (ubrr); // RXC - завершение приёма // |TXC - завершение передачи // ||UDRE - отсутствие данных для отправки // |||FE - ошибка кадра // ||||DOR - ошибка переполнение буфера // |||||PE - ошибка чётности // ||||||U2X - Двойная скорость // |||||||MPCM - Многопроцессорный режим // |||||||| // 76543210 UCSRA = 0; // RXCIE - прерывание при приёме данных // |TXCIE - прерывание при завершение передачи // ||UDRIE - прерывание отсутствие данных для отправки // |||RXEN - разрешение приёма // ||||TXEN - разрешение передачи // |||||UCSZ2 - UCSZ0:2 размер кадра данных // ||||||RXB8 - 9 бит принятых данных // |||||||TXB8 - 9 бит переданных данных // |||||||| // 76543210 // разрешен приём и передача данных, прерывание при приёме данных UCSRB = 1 << RXEN | 1 << TXEN | 1 << RXCIE; // URSEL - всегда 1 // |UMSEL - режим: 1-синхронный 0-асинхронный // ||UPM1 - UPM0: 1 чётность // |||UPM0 - UPM0: 1 чётность // ||||USBS - стоп биты: 0-1, 1-2 // |||||UCSZ1 - UCSZ0: 2 размер кадра данных // ||||||UCSZ0 - UCSZ0: 2 размер кадра данных // |||||||UCPOL - в синхронном режиме - тактирование // |||||||| // 76543210 // 8-битовая посылка, 2 стоп бита UCSRC = 1 << USBS | 1 << UCSZ0 | 1 << UCSZ1; } void USART::setOnReceiveFunction(OnReceiveFunction onReceiveFunction) { this->onReceiveFunction = onReceiveFunction; } // Отправка байта void USART::transmitChar(char c) { // Устанавливается, когда регистр свободен while (!( UCSRA & (1 << UDRE))) { } UDR = c; } // Отправка строки void USART::transmitString(char str[]) { while (*str) { transmitChar(*str++); } } // Отправка строки void USART::transmitStringLn(char str[]) { transmitString(str); transmitChar((char) 13); transmitChar((char) 10); } // Получение байта char USART::receiveChar(void) { // Устанавливается, когда регистр свободен while (!(UCSRA & (1 << RXC))) { } return UDR; }
Исходники и Java приложение
Проект на C++: ATtiny2313_Car — C++.zip
Проект на Java : ATtiny2313_Car — Java.zip
Java приложение: ATiny2313_Car-1.0.0.jar.zip
Маленькое видео
Можно поподробнее как компилировать что для чего ато ничего ни понимаю что в микрокантролер что куда напишите пожалуйста
спасибо большое если возникнут вопросы напишу
подскажи пожалуйста а как в эклипс импортировать если можно по подробнее просто неочень разбираюсь
спасибо буду разбиратся
https://t.me/s/Portable_Jambo
здравствуй спасибо за помощь разобрался но возник вод такой вопрос как подключить в эту схему радио модуль nrf 24l01
Уважаемый автор у меня вопрос по вашему уникальному труду. У вас по данной схеме управление двумя приводами,а возможно ли сделать так чтобы было восемь приводов и каждый управлялся бы отдельной командой?Если да то как?
Здравствуйте немоглибы вы выложить схему управления которое подключается к компьютеру
играть в 1win
https://t.me/vavada_win_vavada/260
Подскажи модуль сс1101 получится использовать
подскажи как запустить програму управления в jar формати онаже скомпилированая 1 раз запустил сейчас немогу
извини запустил только он в конект невыходит
Программу запустил по модулювидно что что-то передаётся но команды не отображаются
И подскажи пожалуйста программу собрал а какой именно фаил писать в микроконтроллер
подкажи частоту которую надо у микроконтролера ставить
подскажи такое ощущение что с программой для микроконтролера чтото нето собираю компелирую ошибок нету зашиваю неработает беру собираю схему в протеуси записываю туда програмку на микроконтроллере мигают ena иenb ну и на com порте при нажатии на кнопки и всё больше ничего непроисходит мигают просто так с определенной частотой
Здравствуйте подскажите вы тему закрыли или как ато неодного ответа неполучил
выставил как ты написал тоже самое уже весь мозг сломал
Sheet music notes easy piano sheet music
магазин аккаунтов соц сетей купить аккаунт на бирже
магазин социальных аккаунтов маркетплейсы для покупки аккаунта
iphone 13 max iphone photo
Find the Perfect Clock https://clocks-top.com for Any Space! Looking for high-quality clocks? At Top Clocks, we offer a wide selection, from alarm clocks to wall clocks, mantel clocks, and more. Whether you prefer modern, vintage, or smart clocks, we have the best options to enhance your home. Explore our collection and find the perfect timepiece today!
уборка офисов вечером cleaning-top24.ru/
аренда машины в москве длительно прокат автомобилей в москве недорого
снять машину в аренду в санкт петербурге аренда машины санкт петербург цены
read comic sonic free comic reader PC
manga manhua manga 2025 updates HD
фильмы в качестве 2025 комедии 2025 онлайн в хорошем качестве
русские фильмы онлайн качество лучшие фильмы онлайн без смс
фильм драма испания боевики 2025 смотреть бесплатно HD
фильмы серии бесплатно лучшие фильмы онлайн без смс
фильмы на телефон ужасы 2025 смотреть онлайн HD
смотреть хороший фильм лучшие фильмы онлайн без смс
перепродажа аккаунтов заработок на аккаунтах
перепродажа аккаунтов маркетплейс аккаунтов
магазин аккаунтов безопасная сделка аккаунтов
Ворвавшись в подъезд, Иван Николаевич взлетел на второй этаж, немедленно нашел эту квартиру и позвонил нетерпеливо. продвинуть сайт самому – На все сто! – подтвердил тот, любя выражаться вычурно и фигурально.
мед клиника врачи мед клиника врачи
лечение варикоза отзывы лечение варикоза лазером цена
С легкой руки членов МАССОЛИТа никто не называл дом «Домом Грибоедова», а все говорили просто – «Грибоедов»: «Я вчера два часа протолкался у Грибоедова». создание сайтов ключ в москве Машина заехала за Желдыбиным и, первым долгом, вместе со следствием, отвезла его (около полуночи это было) на квартиру убитого, где было произведено опечатание его бумаг, а затем уж все поехали в морг.
– Заточили все-таки, – сказал он, зевнул еще раз, неожиданно прилег, голову положил на подушку, кулак по-детски под щеку, забормотал уже сонным голосом, без злобы: – Ну и очень хорошо… сами же за все и поплатитесь. Переделка окна из поворотного в поворотно откидное Своими глазами увидел он свой собственный высунутый язык и безжизненную голову, упавшую на плечо, и даже услыхал плеск волны за бортом.
покупка аккаунтов заработок на аккаунтах
лазерная эпиляция отзывы лазерная эпиляция
студия лазерной эпиляции процедура лазерной эпиляции
Тот помолчал, потом тихо спросил по-арамейски: – Так это ты подговаривал народ разрушить ершалаимский храм? Прокуратор при этом сидел как каменный, и только губы его шевелились чуть-чуть при произнесении слов. нотариус и бюро переводов с нотариальным заверением «Вот тебе все и объяснилось, – подумал Берлиоз в смятении, – приехал сумасшедший немец или только что спятил на Патриарших.
Светало, и свет еще не погашенных на шоссе фонарей был уже не нужен и неприятен. нотариус метро Юго-восточная В половине одиннадцатого часа того вечера, когда Берлиоз погиб на Патриарших, в Грибоедове наверху была освещена только одна комната, и в ней томились двенадцать литераторов, собравшихся на заседание и ожидавших Михаила Александровича.
купить аккаунт с прокачкой маркетплейс аккаунтов
В частности же, уверяю вас, вам он ни в каком случае не угрожает. нотариус Якименко Тут его стали беспокоить два соображения: первое, это то, что исчезло удостоверение МАССОЛИТа, с которым он никогда не расставался, и, второе, удастся ли ему в таком виде беспрепятственно пройти по Москве? Все-таки в кальсонах… Правда, кому какое дело, а все же не случилось бы какой-нибудь придирки или задержки.
маркетплейс аккаунтов соцсетей продать аккаунт
цифровая печать буклетов печать буклетов pdf
печать объемных наклеек pechat-nakleek2.ru
таблички из пластика на заказ уличная табличка из пвх
календарь на печать по месяцам печать настольных календарей
печать плакатов и постеров печать больших плакатов
изготовление стенда из пвх изготовление стенда из пвх
Marketplace for Ready-Made Accounts Database of Accounts for Sale
Accounts for Sale Online Account Store
Account marketplace Sell Account
Account Acquisition Account Trading
Gaming account marketplace Buy Account
Account Acquisition Account Store
Buy and Sell Accounts Account Buying Platform
social media account marketplace online account store
secure account sales gaming account marketplace
verified accounts for sale account selling service
ready-made accounts for sale social media account marketplace
регистрация компании в великобритании zaregistrirovat-kompaniyu-england.com/
account exchange account buying service
website for selling accounts secure account purchasing platform
открыть компанию в великобритании открыть компанию в англии
account marketplace account market
cloud server rental cost us cloud server
account sale accounts-buy.org
account selling service website for selling accounts
social media account marketplace accounts market
Современный и удобный сайт nhbr.ru на котором легко найти нужную информацию, товары или услуги. Простая навигация, понятный интерфейс и актуальное содержание подойдут как для новых пользователей, так и для постоянной аудитории. Работает быстро, доступен круглосуточно.
Онлайн проект pskovcity.ru где собраны полезные данные, инструменты и сервисы для повседневной жизни и профессиональной деятельности. Сайт адаптирован под любые устройства, стабильно работает и предоставляет максимум пользы без лишнего шума и рекламы.
account purchase account store
find accounts for sale buy accounts
Современный сайт chtpz-sale.ru на котором легко найти нужную и полезную информацию, товары или услуги. Простая навигация, понятный интерфейс и актуальное содержание подойдут как для новых пользователей, так и для постоянной аудитории. Работает быстро, доступен круглосуточно.
buy pre-made account secure account sales
ready-made accounts for sale ready-made accounts for sale
accounts market database of accounts for sale
курсовая дешево написать курсовую цена
account market account selling platform
social media account marketplace website for buying accounts
account market account buying platform
цена курсовая https://kursoviehelp.ru/
курсовые быстро аукцион курсовых работ
database of accounts for sale account acquisition
guaranteed accounts secure account purchasing platform
buy and sell accounts verified accounts for sale
buy pre-made account buy accounts
buy and sell accounts accounts market
ready-made accounts for sale https://accounts-marketplace.live/
account buying service https://social-accounts-marketplace.xyz/
buy pre-made account account marketplace
Вам требуется лечение? https://chemodantour.ru лечение хронических заболеваний, восстановление после операций, укрепление иммунитета. Включено всё — от клиники до трансфера и проживания.
ноутбук асер цена игровой ноутбук цена
gaming account marketplace https://buy-accounts-shop.pro
account selling platform accounts market
account catalog buy accounts
ready-made accounts for sale https://buy-accounts.live
каталог смартфонов с ценами смартфон 256gb купить
где купить ноутбук цена новых ноутбуков
account trading platform https://accounts-marketplace-best.pro
https://t.me/s/Wwwinwin1win
магазин аккаунтов https://akkaunt-magazin.online
ГГУ имени Ф.Скорины https://www.gsu.by/ крупный учебный и научно-исследовательский центр Республики Беларусь. Высшее образование в сфере гуманитарных и естественных наук на 12 факультетах по 35 специальностям первой ступени образования и 22 специальностям второй, 69 специализациям.
маркетплейс аккаунтов магазины аккаунтов
орехи с высоким урожаем черемуха с доставкой
клубника высокого качества черемуха от частного лица
биржа аккаунтов https://kupit-akkaunt.online/
Срочный выкуп квартир https://proday-kvarti.ru за сутки — решим ваш жилищный или финансовый вопрос быстро. Гарантия законности сделки, юридическое сопровождение, помощь на всех этапах. Оценка — бесплатно, оформление — за наш счёт. Обращайтесь — мы всегда на связи и готовы выкупить квартиру.
заказ цветов цветы с доставкой в спб
купить цветы живые цветы купить онлайн
играть в казино онлайн
buy ad account facebook buy old facebook account for ads
buy facebook old accounts buy facebook accounts for ads
cheap facebook account https://buy-ad-account.top
buy facebook advertising accounts https://buy-ads-account.click
cheap facebook account https://ad-account-buy.top/
facebook ad account for sale https://buy-ads-account.work
buy facebook old accounts buy aged fb account
google ads agency account buy https://buy-ads-accounts.click
cheap facebook advertising account https://buy-accounts.click
buy adwords account https://ads-account-for-sale.top
buy google ads invoice account https://ads-account-buy.work
https://t.me/vavada_win_vavada/623
где купить дипломную работу где заказать диплом
купить реферат цена сколько стоит реферат на заказ
buy aged google ads account https://buy-account-ads.work
buy google adwords accounts https://buy-ads-agency-account.top/
google ads reseller buy account google ads
verified business manager for sale https://buy-business-manager.org
buy google ad threshold account buy google adwords account
Твое. сео как продвинуть сайт самому – Да, – немного удивившись осведомленности прокуратора, продолжал Иешуа, – попросил меня высказать свой взгляд на государственную власть.
Экскурсии по Калининграду индивидуальные гид https://gid-po-kaliningradu.ru — только для вас.
facebook bm for sale https://buy-verified-business-manager-account.org/
verified bm https://buy-verified-business-manager.org
дипломная работа купить где заказать диплом
профиль для натяжного потолка натяжные потолки под ключ цена
Дач всего двадцать две, и строится еще только семь, а нас в МАССОЛИТе три тысячи. нотариальная контора с переводом документов на русский Повернув его, он уже собирался шагнуть на рельсы, как в лицо ему брызнул красный и белый свет: загорелась в стеклянном ящике надпись «Берегись трамвая!».
buy facebook business managers business-manager-for-sale.org
buy business manager account buy-bm.org
аренда машины сколько машину на день на прокат
И тогда спальня завертелась вокруг Степы, и он ударился о притолоку головой и, теряя сознание, подумал: «Я умираю…» Но он не умер. перевод паспорта иностранного гражданина нотариальный цены Вследствие этого смертный приговор Га-Ноцри, вынесенный Малым Синедрионом, прокуратор не утверждает.
verified business manager for sale unlimited bm facebook
– Ну давайте, давайте, давайте!. oneclickmoney как оплатить частично Мне пришли в голову кое-какие новые мысли, которые могли бы, полагаю, показаться тебе интересными, и я охотно поделился бы ими с тобой, тем более что ты производишь впечатление очень умного человека.
Да горе в том, что спросить-то было некому. chery tiggo 5 воздушный фильтр Выведя арестованного из-под колонн в сад, Крысобой вынул из рук у легионера, стоявшего у подножия бронзовой статуи, бич и, несильно размахнувшись, ударил арестованного по плечам.
verified bm https://buy-business-manager-accounts.org/
buy tiktok business account https://buy-tiktok-ads-account.org
Лишь только белый плащ с багряной подбивкой возник в высоте на каменном утесе над краем человеческого моря, незрячему Пилату в уши ударила звуковая волна: «Га-а-а…» Она началась негромко, зародившись где-то вдали у гипподрома, потом стала громоподобной и, продержавшись несколько секунд, начала спадать. chery tiggo 3 фильтр воздушный Тут у самого выхода на Бронную со скамейки навстречу редактору поднялся в точности тот самый гражданин, что тогда при свете солнца вылепился из жирного зноя.
Он тотчас постарался ее объяснить, и объяснение было странное: показалось смутно прокуратору, что он чего-то не договорил с осужденным, а может быть, чего-то не дослушал. как оплатить займ kredito24 Римская власть ничуть не покушается на право духовной местной власти, первосвященнику это хорошо известно, но в данном случае налицо явная ошибка.
tiktok agency account for sale https://tiktok-ads-account-for-sale.org
tiktok agency account for sale https://tiktok-agency-account-for-sale.org
buy tiktok ads https://buy-tiktok-ad-account.org
стоимость экскурсий в калининграде сколько стоят экскурсии в калининграде
tiktok ads agency account https://buy-tiktok-ads-accounts.org
Швейцар представил себя повешенным на фор-марса-рее. сколько стоит сетка на окна пластиковые москитная Вероятно, действия Банги должны были означать, что он утешает своего хозяина и несчастье готов встретить вместе с ним.
И мой отец не может переносить этого. монтаж москитной сетки на пластиковое окно своими руками видео Он падал! Камнем! Стремительно летел вниз! В темное никуда! Едва удерживая скопившийся в горле крик… Не так долго и падал, на самом-то деле.
buy tiktok business account https://buy-tiktok-ads.org
¡Saludos, usuarios de sitios de apuestas !
Las plataformas modernas ofrecen interfaces intuitivas y soporte tГ©cnico en espaГ±ol. AdemГЎs, puedes jugar tanto en tu ordenador como en dispositivos mГіviles.
Casinolab online Chile con bonos y atenciГіn personalizada — п»їhttps://www.youtube.com/watch?v=CRuk1wy6nA0
Los mejores casinos online chile ofrecen una experiencia premium, con juegos de alta calidad, atenciГіn personalizada y promociones frecuentes. Elegir una de estas plataformas es garantГa de diversiГіn y confianza. AdemГЎs, aceptan diferentes mГ©todos de pago para tu comodidad.
¡Que disfrutes de momentos llenos de suerte!
разработка сайта магазина разработка интернет магазина на laravel
бейджи под заказ изготовление металлических бейджев
Глава 5 Было дело в Грибоедове Старинный двухэтажный дом кремового цвета помещался на бульварном кольце в глубине чахлого сада, отделенного от тротуара кольца резною чугунною решеткой. «Увидели меня», – подумал прокуратор. – На.
https://t.me/s/Portable_Kingdom
https://t.me/s/Portable_BitRuby
продвижение сайта в поиске https://seoprocessoptimization.ru
металлические бейджи с гравировкой бейдж из латуни
https://t.me/sDragonMoney_Portable
изготовление металлических значков значки на заказ
заказать seo контекстная реклама заказать
https://t.me/s/DragonMoney_Portable
Восемь. Он застал Аркадия за письменным столом, с книгой в руках, в застегнутом доверху сюртуке. Он позвонил еще раз и еще раз и начал ворчать и тихонько ругаться.
дешевая типография печати типография спб
Хороши ваши стихи, скажите сами? — Чудовищны! — вдруг смело и откровенно произнес Иван. Граф, как в огромных тенетах, ходил в своих делах, стараясь не верить тому, что он запутался, и с каждым шагом все более и более запутываясь и чувствуя себя не в силах ни разорвать сети, опутавшие его, ни осторожно, терпеливо приняться распутывать их. Как жаль, что не исправить в нём ни единого слова, ни единого жеста.
Римский постарался изобразить на лице улыбку, от чего оно сделалось кислым и злым, и раскланялся с безмолвным магом, сидящим рядом с котом на диване. Ты же всё равно не веришь… На свежую обиду Тима наложились недоговорённости минувшего года: – Что ты мне, как придурку – говорил же, говорил же?! Я тебе кто? Друг или нет? – Чего завёлся-то? – А то! Говорил он! Только переспрашивал – ты мне веришь или нет? А сам лепил про волшебников, про чудеса! Срез времени, как же! Сейчас на Славку обижался не Тимур Ашкеров, просто себе одноклассник, а друг, который с прошлой осени ждал откровенности и не дождался. И если бы нестойкое трепетание небесного огня превратилось бы в постоянный свет, наблюдатель мог бы видеть, что лицо прокуратора с воспаленными последними бессонницами и вином глазами выражает нетерпение, что прокуратор не только глядит на две белые розы, утонувшие в красной луже, но постоянно поворачивает лицо к саду навстречу водяной пыли и песку, что он кого-то ждет, нетерпеливо ждет.
печать визиток быстро https://pechat-vizitok11.ru
Нужна https://pechat-nakleek1.ru? Закажите стикеры любых форм и размеров с доставкой. Яркие, прочные, влагостойкие наклейки на пленке и бумаге — для рекламы, декора, маркировки и упаковки.
Профессиональная адрес типографии. Изготовим любые печатные материалы — от визиток до каталогов. Качественно, быстро, с гарантией. Закажите онлайн или приезжайте в офис в СПб.
Изготовление и печать наклеек спб. Стикеры для бизнеса, сувениров, интерьера и упаковки. Печатаем тиражами от 1 штуки, любые материалы и формы. Качественно, недорого, с доставкой по СПб.
медицинский центр отзывы семейный медицинский центр
Избавьтесь от волос лазерная эпиляция волос навсегда — с помощью лазерной эпиляции. Эффективные процедуры на любом участке тела, минимальный дискомфорт, заметный результат уже после первого сеанса.
узи платно https://uzi-abakan11.ru
Славка испугался. Дешевый Нотариальный Перевод Документов – Я уверена, что мой муж будет согласен, – сказала графиня, – но ваш батюшка… – Мой отец, которому я сообщил свои планы, непременным условием согласия положил то, чтобы свадьба была не раньше года.
записаться к терапевту запись к терапевту абакан
Хромой тыкал дубинкой, не успевая поднять ту на уровень головы. Знакомства Для Секса Без Обязательств Бесплатно – Ненавистный город… – вдруг почему-то пробормотал прокуратор и передернул плечами, как будто озяб, а руки потер, как бы обмывая их, – если бы тебя зарезали перед твоим свиданием с Иудою из Кириафа, право, это было бы лучше.
Зрители за это время успели разойтись, остались Рема с Тимуром и Олен. Знакомства Для Секса Бесплатно В Ростове На Дону И еще как бывает! Рассуждение это ни в какой степени не удовлетворило председателя домоуправления.
https://pharmau24.shop/# Online drugstore Australia
Быстров-младший быстро оглянулся. Нотариальный Перевод Документов Чистые Пруды Национальность пришельца было бы трудно установить.
https://biotpharm.com/# cheapest antibiotics
Read the latest sports news today: football, hockey, basketball, MMA, tennis and more. Insiders, forecasts, reports from the scene. Everything that is important for sports fans to know — in one place.
https://t.me/s/RatingCasinoRu
https://pharmsansordonnance.shop/# Achat mГ©dicament en ligne fiable
https://kampascher.shop/# commander Kamagra en ligne
http://kampascher.com/# kamagra pas cher
http://viasansordonnance.com/# Acheter du Viagra sans ordonnance
https://ciasansordonnance.shop/# acheter Cialis sans ordonnance
https://ciasansordonnance.com/# Acheter Cialis 20 mg pas cher
https://pharmsansordonnance.shop/# Pharmacie Internationale en ligne
https://pharmsansordonnance.com/# pharmacie en ligne fiable
http://ciasansordonnance.com/# Cialis pas cher livraison rapide
https://viasansordonnance.com/# Viagra sans ordonnance 24h
Подчертай своя стил с рокли, вдъхновени от световните модни столици
дамски рокли https://www.rokli-damski.com .
Бъди уверена и модерна с дамски комплект от нашата нова колекция
дамски сетове дамски сетове .
http://confiapharma.com/# se puede comprar amoxicilina sin receta en espaГ±a
http://pharmacieexpress.com/# sildenafil pharmacie sans ordonnance
http://farmaciasubito.com/# slowmet 1000
Тениски за дами, които обичат качеството, удобството и стила
дамски тениски големи размери teniski-damski.com .
https://farmaciasubito.com/# farmacia consegna a domicilio
Услуги клининга по подписке — чистота на регулярной основе
сайт клининга сайт клининга .
Магазин шин с акцентом на безопасность и качество
интернет магазин шин и дисков https://www.kupit-shiny0-spb.ru .
https://confiapharma.shop/# se puede comprar sildenafil sin receta
http://pharmacieexpress.com/# pharmacie diarrhГ©e sans ordonnance
resume chemical engineer https://resumes-engineers.com
https://farmaciasubito.shop/# dermatar unguento
resume software engineer google https://resumes-engineers.com
https://pharmmex.com/# on line mexican pharmacy
¡Hola, estrategas de la suerte !
casino fuera de espaГ±a
Casino fuera de espaГ±a: juegos y apuestas sin lГmites — п»їhttps://casinofueradeespana.xyz/
Casinos internacionales permiten reintegros semanales por pГ©rdidas, algo poco comГєn en EspaГ±a. Esta funciГіn actГєa como seguro para jugadores frecuentes. MГЎs juego, menos riesgo.
¡Que disfrutes de giros exitosos !
Морская романтика и уединение: аренда яхты для пары
яхта аренда сочи https://arenda-yahty-sochi23.ru/ .
https://inpharm24.shop/# pharmacy website in india
http://pharmmex.com/# tirzepatide available in mexico
https://pharmexpress24.com/# differin online pharmacy
http://inpharm24.com/# e pharmacy india
https://pharmmex.com/# mexican vicodin
Jarvi корм с высоким содержанием белка и без ненужных добавок
корм jarvi состав https://www.ozon.ru/product/suhoy-korm-jarvi-polnoratsionnyy-dlya-vzroslyh-koshek-s-chuvstvitelnym-pishchevareniem-s-indeykoy-1-1173234324 .
https://vgrsources.com/# buy viagra with mastercard
https://vgrsources.com/# sildenafil 50 mg price
Курорт Гагры — идеальное место для пляжного отдыха и восстановления
отдых в гаграх 2024 otdyh-gagry.ru .
En yeni full hd film içerikleriyle eğlencenin merkezine yolculuk
türkçe dublaj full hd film izle https://www.filmizlehd.co/ .
https://vgrsources.com/# buy viagra over the counter usa
Кому доверить поверку — критерии выбора проверенной компании
Организация поверки средств измерений poverka-si-msk.ru .
https://vgrsources.com/# sildenafil 50 mg online uk
¡Hola, seguidores de las apuestas!
Casinoporfuera.xyz tambiГ©n incluye secciones con preguntas frecuentes y tutoriales sobre cГіmo jugar en un casino por fuera.Esto facilita el acceso a nuevos usuarios que no tienen experiencia previa.La curva de aprendizaje es baja.
Muchos jugadores en EspaГ±a buscan libertad para apostar sin restricciones nacionales.
GuГa rГЎpida para jugar en casinoporfuera.xyz — https://www.casinoporfuera.xyz/
¡Que disfrutes de rondas emocionantes
https://vgrsources.com/# buy real viagra online uk
how to ship a car vehicle shipping cost
Эффективное выведение из запоя с выездом нарколога на дом в любое время суток
заказать нарколога на дом http://www.clinic-narkolog24.ru/ .
Ваш любимый алкоголь теперь доступен с доставкой всего за несколько кликов
доставка алкоголя 24 часа москва заказать алкоголь с доставкой круглосуточно .
http://semaglupharm.com/# semaglutide b12
¡Hola, fanáticos de las apuestas!
En casinofueradeespanol puedes recibir bonos personalizados segГєn tu historial de apuestas. Esto te permite obtener beneficios mГЎs adaptados a tu estilo. Y es algo que no ofrecen todos los casinos.
п»їEl casino fuera de EspaГ±a se ha convertido en una alternativa ideal para quienes buscan mayor libertad al jugar. casinofueradeespanol.xyz Muchos jugadores optan por estas plataformas debido a su variedad de mГ©todos de pago. AdemГЎs, ofrecen bonos mГЎs atractivos que los casinos tradicionales.
Casinos fuera de EspaГ±a con mГ©todos de pago anГіnimos — п»їhttps://casinofueradeespanol.xyz/
¡Que experimentes triunfos excepcionales !
Профессиональное косметологическое оборудование аппараты для салонов красоты, клиник и частных мастеров. Аппараты для чистки, омоложения, лазерной эпиляции, лифтинга и ухода за кожей.
https://lipipharm.shop/# Lipi Pharm
Заказать набор бокалов для вина с доставкой на дом
бокалы для вина https://bokaly-dlya-vina.neocities.org/ .
http://prednipharm.com/# prednisone daily
https://lipipharm.shop/# Lipi Pharm
Оригинальный императорский фарфор из Санкт-Петербурга — проверенное качество
императорский фарфоровый завод каталог императорский фарфоровый завод каталог .
https://prednipharm.shop/# Predni Pharm
https://lipipharm.com/# No RX Lipitor online
https://semaglupharm.com/# Semaglu Pharm
rosuvastatin 5 mg effet secondaire: what is the generic form of crestor — Crestor Pharm
https://semaglupharm.com/# Rybelsus online pharmacy reviews
LipiPharm: lipitor dosage range — LipiPharm
SemagluPharm when should you take rybelsus SemagluPharm