В данной статье пойдёт речь о том как сделать машинку на радиоуправлении своими руками на базе микроконтроллера 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
1 win
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
https://maxviagramd.shop/# buy generic Viagra online
buy pre-made account buy accounts
buy and sell accounts accounts market
verified Modafinil vendors: modafinil 2025 — legal Modafinil purchase
fast Viagra delivery same-day Viagra shipping same-day Viagra shipping
fast Viagra delivery safe online pharmacy buy generic Viagra online
cheap Viagra online: discreet shipping — same-day Viagra shipping
ready-made accounts for sale https://accounts-marketplace.live/
account buying service https://social-accounts-marketplace.xyz/
buy pre-made account account marketplace
Профессиональный сервисный центр по ремонту техники в Санкт-Петербурге.
Мы предлагаем: Ремонт кофемашин Privileg недорого
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
Вам требуется лечение? https://chemodantour.ru лечение хронических заболеваний, восстановление после операций, укрепление иммунитета. Включено всё — от клиники до трансфера и проживания.
legal Modafinil purchase: buy modafinil online — modafinil legality
ноутбук асер цена игровой ноутбук цена
Профессиональный сервисный центр по ремонту техники в Краснодаре.
Мы предлагаем: Ремонт объективов Samsung стоимость
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
http://maxviagramd.com/# Viagra without prescription
gaming account marketplace https://buy-accounts-shop.pro
account selling platform accounts market
account catalog buy accounts
discreet shipping ED pills: cheap Cialis online — secure checkout ED drugs
ready-made accounts for sale https://buy-accounts.live
каталог смартфонов с ценами смартфон 256gb купить
https://zipgenericmd.shop/# online Cialis pharmacy
modafinil 2025: modafinil pharmacy — purchase Modafinil without prescription
safe online pharmacy: buy generic Viagra online — safe online pharmacy
legit Viagra online: fast Viagra delivery — generic sildenafil 100mg
http://modafinilmd.store/# doctor-reviewed advice
order Cialis online no prescription: cheap Cialis online — secure checkout ED drugs
где купить ноутбук цена новых ноутбуков
https://zipgenericmd.com/# reliable online pharmacy Cialis
account trading platform https://accounts-marketplace-best.pro
doctor-reviewed advice doctor-reviewed advice modafinil legality
https://t.me/s/Wwwinwin1win
online Cialis pharmacy: buy generic Cialis online — online Cialis pharmacy
Профессиональный сервисный центр по ремонту техники.
Мы предлагаем: Ремонт духовых шкафов срочно
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
fast Viagra delivery: order Viagra discreetly — same-day Viagra shipping
reliable online pharmacy Cialis: buy generic Cialis online — online Cialis pharmacy
trusted Viagra suppliers no doctor visit required buy generic Viagra online
http://modafinilmd.store/# modafinil legality
https://zipgenericmd.shop/# cheap Cialis online
prednisone 2.5 mg cost: prednisone best prices — PredniHealth
prednisone 10 mg: PredniHealth — 50mg prednisone tablet
order amoxicillin 500mg Amo Health Care Amo Health Care
магазин аккаунтов https://akkaunt-magazin.online
60 mg prednisone daily: PredniHealth — prednisone without a prescription
https://clomhealth.shop/# buy cheap clomid prices
can i order clomid online: Clom Health — can i get generic clomid pill
buying generic clomid tablets: Clom Health — can i get generic clomid without a prescription
http://clomhealth.com/# where to buy cheap clomid without rx
ГГУ имени Ф.Скорины https://www.gsu.by/ крупный учебный и научно-исследовательский центр Республики Беларусь. Высшее образование в сфере гуманитарных и естественных наук на 12 факультетах по 35 специальностям первой ступени образования и 22 специальностям второй, 69 специализациям.
маркетплейс аккаунтов магазины аккаунтов
орехи с высоким урожаем черемуха с доставкой
клубника высокого качества черемуха от частного лица
https://amohealthcare.store/# amoxicillin 500mg for sale uk
биржа аккаунтов https://kupit-akkaunt.online/
Amo Health Care: Amo Health Care — generic amoxicillin 500mg
Срочный выкуп квартир https://proday-kvarti.ru за сутки — решим ваш жилищный или финансовый вопрос быстро. Гарантия законности сделки, юридическое сопровождение, помощь на всех этапах. Оценка — бесплатно, оформление — за наш счёт. Обращайтесь — мы всегда на связи и готовы выкупить квартиру.
blue sky peptide tadalafil review: cialis 20 mg tablets and prices — sunrise remedies tadalafil
заказ цветов цветы с доставкой в спб
купить цветы живые цветы купить онлайн
играть в казино онлайн
order cialis from canada cialis coupon code tadalafil daily use
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
1win
what possible side effect should a patient taking tadalafil report to a physician quizlet: no prescription female cialis — cialis price costco
https://tadalaccess.com/# cialis manufacturer coupon
tadalafil generic reviews: TadalAccess — what is cialis used for
cialis super active plus paypal cialis payment is generic cialis available in canada
cheap facebook account https://ad-account-buy.top/
cialis for pulmonary hypertension: Tadal Access — tadalafil medication
facebook ad account for sale https://buy-ads-account.work
https://tadalaccess.com/# cialis patent expiration
cialis pill: Tadal Access — cialis price canada
buy aged facebook ads accounts https://buy-ad-account.click/
tadalafil soft tabs: TadalAccess — tadalafil canada is it safe
https://tadalaccess.com/# cialis paypal
best time to take cialis 5mg: TadalAccess — tadalafil cheapest online
cheap t jet 60 cialis online: generic tadalafil tablet or pill photo or shape — sildenafil and tadalafil
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
side effects of cialis daily: how long does cialis take to work 10mg — cialis same as tadalafil
buy adwords account https://ads-account-for-sale.top
buy google ads invoice account https://ads-account-buy.work
cialis online delivery overnight: cialis for daily use side effects — canadian pharmacy cialis 40 mg
https://t.me/vavada_win_vavada/623
what is the generic for cialis: TadalAccess — buy cialis online canada
где купить дипломную работу где заказать диплом
купить реферат цена сколько стоит реферат на заказ
https://tadalaccess.com/# tadalafil dapoxetine tablets india
buy aged google ads account https://buy-account-ads.work
buy google adwords accounts https://buy-ads-agency-account.top/
https://tadalaccess.com/# buy cialis online free shipping
google ads account for sale https://sell-ads-account.click
Профессиональный сервисный центр по ремонту техники в Краснодаре.
Мы предлагаем: Сколько стоит ремонт посудомоечных машин Kuppersbusch
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
cialis medicine Tadal Access cialis black 800 to buy in the uk one pill
Профессиональный сервисный центр по ремонту техники в Краснодаре.
Мы предлагаем: Сколько стоит ремонт телефонов Nokia
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
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
stendra vs cialis: TadalAccess — prescription for cialis
buy tadalafil powder TadalAccess generic cialis 20 mg from india
Твое. сео как продвинуть сайт самому – Да, – немного удивившись осведомленности прокуратора, продолжал Иешуа, – попросил меня высказать свой взгляд на государственную власть.
Экскурсии по Калининграду индивидуальные гид 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 liquid tadalafil online: no prescription cialis — cialis as generic
buy facebook business managers business-manager-for-sale.org
buy business manager account buy-bm.org
аренда машины сколько машину на день на прокат
purchase cialis: over the counter drug that works like cialis — buy tadalafil online canada
И тогда спальня завертелась вокруг Степы, и он ударился о притолоку головой и, теряя сознание, подумал: «Я умираю…» Но он не умер. перевод паспорта иностранного гражданина нотариальный цены Вследствие этого смертный приговор Га-Ноцри, вынесенный Малым Синедрионом, прокуратор не утверждает.
verified business manager for sale unlimited bm facebook
tadalafil citrate: india pharmacy cialis — cialis milligrams
– Ну давайте, давайте, давайте!. 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 фильтр воздушный Тут у самого выхода на Бронную со скамейки навстречу редактору поднялся в точности тот самый гражданин, что тогда при свете солнца вылепился из жирного зноя.
best time to take cialis 5mg: buy generic tadalafil online cheap — cialis price cvs
Он тотчас постарался ее объяснить, и объяснение было странное: показалось смутно прокуратору, что он чего-то не договорил с осужденным, а может быть, чего-то не дослушал. как оплатить займ 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
order cialis soft tabs: cialis paypal canada — can cialis cause high blood pressure
buying cialis internet: Tadal Access — cialis tubs
¡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
where to buy liquid cialis: cialis daily dosage — what is cialis tadalafil used for
https://t.me/s/Portable_BitRuby
cialis online no prescription generic tadalafil 40 mg cialis genetic
продвижение сайта в поиске https://seoprocessoptimization.ru
металлические бейджи с гравировкой бейдж из латуни
https://t.me/sDragonMoney_Portable
изготовление металлических значков значки на заказ
заказать seo контекстная реклама заказать
https://t.me/s/DragonMoney_Portable
Восемь. Он застал Аркадия за письменным столом, с книгой в руках, в застегнутом доверху сюртуке. Он позвонил еще раз и еще раз и начал ворчать и тихонько ругаться.
дешевая типография печати типография спб
Хороши ваши стихи, скажите сами? — Чудовищны! — вдруг смело и откровенно произнес Иван. Граф, как в огромных тенетах, ходил в своих делах, стараясь не верить тому, что он запутался, и с каждым шагом все более и более запутываясь и чувствуя себя не в силах ни разорвать сети, опутавшие его, ни осторожно, терпеливо приняться распутывать их. Как жаль, что не исправить в нём ни единого слова, ни единого жеста.
Римский постарался изобразить на лице улыбку, от чего оно сделалось кислым и злым, и раскланялся с безмолвным магом, сидящим рядом с котом на диване. Ты же всё равно не веришь… На свежую обиду Тима наложились недоговорённости минувшего года: – Что ты мне, как придурку – говорил же, говорил же?! Я тебе кто? Друг или нет? – Чего завёлся-то? – А то! Говорил он! Только переспрашивал – ты мне веришь или нет? А сам лепил про волшебников, про чудеса! Срез времени, как же! Сейчас на Славку обижался не Тимур Ашкеров, просто себе одноклассник, а друг, который с прошлой осени ждал откровенности и не дождался. И если бы нестойкое трепетание небесного огня превратилось бы в постоянный свет, наблюдатель мог бы видеть, что лицо прокуратора с воспаленными последними бессонницами и вином глазами выражает нетерпение, что прокуратор не только глядит на две белые розы, утонувшие в красной луже, но постоянно поворачивает лицо к саду навстречу водяной пыли и песку, что он кого-то ждет, нетерпеливо ждет.
печать визиток быстро https://pechat-vizitok11.ru
Нужна https://pechat-nakleek1.ru? Закажите стикеры любых форм и размеров с доставкой. Яркие, прочные, влагостойкие наклейки на пленке и бумаге — для рекламы, декора, маркировки и упаковки.
Профессиональная адрес типографии. Изготовим любые печатные материалы — от визиток до каталогов. Качественно, быстро, с гарантией. Закажите онлайн или приезжайте в офис в СПб.
Изготовление и печать наклеек спб. Стикеры для бизнеса, сувениров, интерьера и упаковки. Печатаем тиражами от 1 штуки, любые материалы и формы. Качественно, недорого, с доставкой по СПб.
Discount pharmacy Australia: Pharm Au24 — online pharmacy australia
antibiotic without presription: BiotPharm — get antibiotics quickly
best online doctor for antibiotics buy antibiotics online buy antibiotics
buy antibiotics for uti: get antibiotics without seeing a doctor — Over the counter antibiotics for infection
медицинский центр отзывы семейный медицинский центр
Избавьтесь от волос лазерная эпиляция волос навсегда — с помощью лазерной эпиляции. Эффективные процедуры на любом участке тела, минимальный дискомфорт, заметный результат уже после первого сеанса.
узи платно https://uzi-abakan11.ru
buy erectile dysfunction treatment: Ero Pharm Fast — Ero Pharm Fast
Славка испугался. Дешевый Нотариальный Перевод Документов – Я уверена, что мой муж будет согласен, – сказала графиня, – но ваш батюшка… – Мой отец, которому я сообщил свои планы, непременным условием согласия положил то, чтобы свадьба была не раньше года.
записаться к терапевту запись к терапевту абакан
Хромой тыкал дубинкой, не успевая поднять ту на уровень головы. Знакомства Для Секса Без Обязательств Бесплатно – Ненавистный город… – вдруг почему-то пробормотал прокуратор и передернул плечами, как будто озяб, а руки потер, как бы обмывая их, – если бы тебя зарезали перед твоим свиданием с Иудою из Кириафа, право, это было бы лучше.
Over the counter antibiotics pills: get antibiotics quickly — buy antibiotics over the counter
over the counter antibiotics: BiotPharm — over the counter antibiotics
Зрители за это время успели разойтись, остались Рема с Тимуром и Олен. Знакомства Для Секса Бесплатно В Ростове На Дону И еще как бывает! Рассуждение это ни в какой степени не удовлетворило председателя домоуправления.
buy ed pills: online erectile dysfunction prescription — erectile dysfunction medicine online
https://pharmau24.shop/# Online drugstore Australia
Быстров-младший быстро оглянулся. Нотариальный Перевод Документов Чистые Пруды Национальность пришельца было бы трудно установить.
get antibiotics without seeing a doctor BiotPharm get antibiotics quickly
over the counter antibiotics: BiotPharm — buy antibiotics for uti
get antibiotics quickly: buy antibiotics online — Over the counter antibiotics for infection
https://biotpharm.com/# cheapest antibiotics