SMS мониторинг на теглото на три пчелни кошера за 30$

SMS мониторинг на теглото на три пчелни кошера за 30$

Не, това не е търговско предложение, а цената на компонентите на системата, която ще можете да съберете след прочитането на статията.

Малко предистория:

Няколко месеца по-рано реших да отглеждам пчели и те наистина се появиха... за един цял сезон, но не преживяха зимата.
И то въпреки че изглеждаше, че всичко правих правилно — есенна храна, изолация преди студа.
Улей е класическият дървен тип «Дадан» на 10 рамки от 40 мм дъска.
Но през тази зима заради температурните «качелки» дори опитни пчелари загубиха много повече от обикновено.

Така дойде идеята за система за мониторинг на състоянието на улей.
След публикуването на няколко статии в Хабр и комуникация на форума на пчеларите, реших да започна от простото към сложното.
Теглото е единственият безспорен параметър, но обикновено съществуващите системи наблюдават само един «стандартен» улей.
Ако нещо се случи с него (например излитане на роя, болест на пчелите), показателите стават неактуални.

Затова реших да следя промените в теглото на три улей с един микроконтролер, а други «плюшки» да добавя по-късно.
В крайна сметка получи се автономна система с продължителност на работа около месец на едно зареждане на батерия 18650 и изпращане на статистика веднъж дневно.
Опитвах се да опростя конструкцията максимално, за да може да бъде възпроизведена дори без схеми, само по снимки.

Логиката на работа е следната: при първо стартиране/нулиране се запомнят в EEPROM показанията на сензорите, поставени под улей.
След това всеки ден, след залез, системата «се събужда», прочита показанията и изпраща СМС с промяната в теглото за деня и от момента на включване.
Освен това се предава стойността на напрежението на батерията, а при спад до 3.5V се подава предупреждение за необходимост от зареждане, тъй като при спад под 3.4V модулът за свързване не се включва и показанията на теглото вече «плуват».

«Ти помниш как всичко започна. Всичко беше за първи път и отново.»
SMS мониторинг на теглото на три пчелни кошера за 30$
Да, точно такъв комплект «желязо» беше изначално, обаче до окончателния вариант оцелели само тензодатчиците и проводниците, но всичко по реда си.
Всъщност, кабелът не беше необходим, просто се оказа на една и съща цена като 30 м на парче.

Ако не те плаши демонтажът на 3 smd-светодиода и половин стотина точки за обикновен (изводен) пайпинг — то на път!

И така, ще ни е необходим следният набор от оборудване/материали:

  1. Arduino Pro Mini 3V
    Трябва да обърнете внимание на микросхемата на линейния преобразувател — тя трябва да е точно 3.3V — на чипа с обозначения KB 33/LB 33/DE A10 — при мен китайците нещо сбъркаха и цялата партида
    плати в магазина се оказа с 5-волтови регулатори и кварцове на 16MHz.
  2. USB-Ttl на чипа CH340 — може дори да е 5-волтов, но тогава по време на флашването на микроконтролера, Arduino трябва да се изключи от GSM модула, за да не се изгори последният.
    Платките на чипа PL2303 не работят под Windows 10.
  3. GSM модул за свързване Goouu Tech IOT GA-6-B или AI-THINKER A-6 Mini.
    Защо спрях на него? Neoway M590 — конструктор, който изисква отделни танци с бубни, GSM SIM800L — не ми хареса нестандартното ниво на логика от 2.8V, което изисква съгласуване дори с три-волтовото Arduino.
    Освен това, решението от AiThinker има минимално енергийно потребление (при изпращане на СМС не видях ток над 100mA).
  4. GSM GPRS антена 3DBI (на снимката по-горе — правоъгълна платка с «опашка», на 9 часа)
  5. Стартов пакет от оператор, който има добро покритие в района на вашата пчелина.
    Да, пакетът трябва предварително да се активира в обикновен телефон, ДА СЕ ИЗКЛЮЧИ ЗАПИТВАНЕТО ЗА PIN при влизане и да се попълни сметката.
    Сега има много опции с имена като «Сензор», «IoT» — при тях абонаментната такса е малко по-ниска.
  6. провод dupont 20см мама-мама — 3 бр. (за свързване на Arduino към USB-TTL)
  7. 3 бр. HX711 — АЦП за везни
  8. 6 тензодатчика с тегло до 50кг
  9. 15 метра 4-жилен телефонен кабел — за свързване на датчиците за тежест към ARDUINO.
  10. Фоторезистор GL5528 (важно е именно такъв, с тъмен съпротивление 1MΩ и светло 10-20kΩ) и два обикновени резистора от 20kΩ
  11. Парче двустранен «дебел» скоч 18х18мм — за закрепване на Arduino към модула за свързване.
  12. Държач за батерии 18650 и, собствено, самата батерия ~2600mAh.
  13. Малко восък или парафин (свещ за ароматерапия) — за влагозащита на HX711
  14. Парче дървен блок 25х50х300мм за основа на тензодатците.
  15. Дузина самореза с прес шпилка 4.2х19 мм за закрепване на датчиците към основата.

Батерията може да се вземе от разборка на лаптопи — в пъти по-евтино от нова, а капацитетът ще е далеч по-голям, отколкото при китайската UltraFire — аз получих 1500 срещу 450 (това е при фаера 6800 😉

Освен това, ще са ви нужни прави ръце, запояващ апарат EPSN-25, флюс и спойка POS-60.

SMS мониторинг на теглото на три пчелни кошера за 30$

Преди 5 години използвах съветски запоявачи с медна накрайник (взех на тест паялни станции, но не бяха за мен — завършвах схемите с ЕПСН).
Но след като се повредих и след няколко китайски, ужасни имитации, последната беше с името Sparta — нещо толкова сурово, колкото и името, спрях.
на изделието с терморегулатор.

Така че, да започнем!

SMS мониторинг на теглото на три пчелни кошера за 30$

Първо, отпояваме от GSM модула два светодиода (мястото, където се намираха, е обведено с оранжев овал).
Вмъкваме SIM картата с контактните площадки към печатната платка, скосяваният ъгъл на снимката е обозначен със стрелка.

SMS мониторинг на теглото на три пчелни кошера за 30$

След това провеждаме аналогична процедура със светодиода на платката Arduino (овалът е вляво от квадратния чип).
Запояваме гребенката на четирите контакта (1).
Вземаме два резистора по 20k, усукваме изводите от едната страна, запояваме усукването в дупката на контакт A5, а оставащите изводи в RAW и GND на ардуиното (2).
Нафотосъпротивлението съкращаваме краката до 10мм и го запояваме към изводите GND и D2 на платката (3).

Сега е време за син ленти с двустранно лепило — залепваме го за държача на SIM картата на комуникационния модул, а отгоре — ардуиното — червеният (сребрист) бутон е обърнат към нас и е над SIM-картата.

Запояваме захранването: положителният от конденсатора на комуникационния модул (4) към контакт RAW на ардуиното.
Струва си да се отбележи, че самият комуникационен модул изисква захранване 3.4-4.2V, а контактът PWR е свързан към понижаващ преобразувател, така че за работа от литиево-йонно напрежение трябва да подавате напрежение, минавайки през тази част от веригата.

На противоположната страна, в ардуиното, захранваме напрежението през линейния преобразувател — при малки токове на потребление, падането на напрежението drop-out е 0.1V.
Затова, като подаваме стабилизирано напрежение на модулите HX711, се освобождаваме от необходимостта да ги адаптираме за по-ниско напрежение (и също така от повишените шумове в резултат на тази операция).

След това запояваме джъмпери (5) между контактите PWR-A1, URX-D4 и UTX-D5, «земята» GND-G (6) и накрая захранването от държача за батерии 18650 (7), свързваме антената (8).
Сега взимаме USB-TTL преобразувател и свързваме с Dupont кабели с ARDUINO (гребенка 1) контактите RXD-TXD и TXD-RXD, GND-GND:

SMS мониторинг на теглото на три пчелни кошера за 30$

На снимката по-горе — първата версия (от три) на системата, която се използваше за отстраняване на проблеми.

А сега за известно време да се отклоним от запояването и да преминем към софтуерната част.
Ще опиша последователността на действията за Windows:
Първо, необходимо да изтеглите и инсталирате/разархивирате програмата Arduino IDE — текущата версия е 1.8.9, но аз използвам 1.6.4

За удобство разархивирайте архива в папка C:arduino-«номер_Вашата_версия», вътре ще имаме папки /dist, drivers, examples, hardware, java, lib, libraries, reference, tools, а също и изпълним файл arduino (освен други).

Сега ни е необходима библиотека за работа с АЦП HX711 — зелен бутон «clone or download» — download ZIP.
Съдържанието (папка HX711-master) се поставя в директория C:arduino-«номер_Вашата_версия»libraries

И разбира се драйвер за USB-TTL от същия github — от разархивирания архив просто стартирайте инсталационния файл SETUP.

Ок, стартираме и настройваме програмата C:arduino-«номер_Вашата_версия»arduino

SMS мониторинг на теглото на три пчелни кошера за 30$

Влизаме в раздела «Инструменти» - избираме платка «Arduino Pro или Pro Mini», процесор Atmega 328 3.3V 8 MHz, порт — номер различен от системния COM1 (той се появява след инсталирането на драйвера CH340 при свързан USB-TTL адаптер)

Ок, копираме долния sketch (програмата) и я поставяме в прозореца на Arduino IDE

char phone_no[]="+123456789012"; // Your phone number that receive SMS with counry code 
#include <avr/sleep.h>  // ARDUINO sleep mode library
#include <SoftwareSerial.h> // Sofrware serial library
#include "HX711.h" // HX711 lib. https://github.com/bogde/HX711
#include <EEPROM.h> // EEPROM lib.
HX711 scale0(10, 14);
HX711 scale1(11, 14);
HX711 scale2(12, 14);
#define SENSORCNT 3
HX711 *scale[SENSORCNT];

SoftwareSerial mySerial(5, 4); // Set I/O-port TXD, RXD of GSM-shield  
byte pin2sleep=15; //  Set powerON/OFF pin

float delta00; // delta weight from start
float delta10;
float delta20;
float delta01; // delta weight from yesterday
float delta11;
float delta21;

float raw00; //raw data from sensors on first start
float raw10;
float raw20;
float raw01; //raw data from sensors on yesterday
float raw11;
float raw21;
float raw02; //actual raw data from sensors
float raw12;
float raw22;

word calibrate0=20880; //calibration factor for each sensor
word calibrate1=20880;
word calibrate2=20880;

word daynum=0; //numbers of day after start

int notsunset=0;

boolean setZero=false;

float readVcc() { // Read battery voltage function
  long result1000;
  float rvcc;  
  result1000 = analogRead(A5);
  rvcc=result1000;
  rvcc=6.6*rvcc/1023;
  return rvcc;
}

void setup() { // Setup part run once, at start

  pinMode(13, OUTPUT);  // Led pin init
  pinMode(2, INPUT_PULLUP); // Set pullup voltage
  Serial.begin(9600);
  mySerial.begin(115200); // Open Software Serial port to work with GSM-shield
  pinMode(pin2sleep, OUTPUT);// Itit ON/OFF pin for GSM
  digitalWrite(pin2sleep, LOW); // Turn ON modem
  delay(16000); // Wait for its boot 

scale[0] = &scale0; //init scale
scale[1] = &scale1;
scale[2] = &scale2;

scale0.set_scale();
scale1.set_scale();
scale2.set_scale();

delay(200);

setZero=digitalRead(2);

if (EEPROM.read(500)==EEPROM.read(501) || setZero) // first boot/reset with hiding photoresistor
//if (setZero)
{
raw00=scale0.get_units(16); //read data from scales
raw10=scale1.get_units(16);
raw20=scale2.get_units(16);
EEPROM.put(500, raw00); //write data to eeprom
EEPROM.put(504, raw10);
EEPROM.put(508, raw20);
for (int i = 0; i <= 24; i++) { //blinking LED13 on reset/first boot
    digitalWrite(13, HIGH);
    delay(500);
    digitalWrite(13, LOW);
    delay(500);
  }
}
else {
EEPROM.get(500, raw00); // read data from eeprom after battery change
EEPROM.get(504, raw10);
EEPROM.get(508, raw20);
digitalWrite(13, HIGH); // turn on LED 13 on 12sec. 
    delay(12000);
digitalWrite(13, LOW);
}

delay(200); // Test SMS at initial boot

//
  mySerial.println("AT+CMGF=1");    //  Send SMS part
  delay(2000);
  mySerial.print("AT+CMGS="");
  mySerial.print(phone_no); 
  mySerial.write(0x22);
  mySerial.write(0x0D);  // hex equivalent of Carraige return    
  mySerial.write(0x0A);  // hex equivalent of newline
  delay(2000);
  mySerial.println("INITIAL BOOT OK");
  mySerial.print("V Bat= ");
  mySerial.println(readVcc());
 if (readVcc()<3.5) {mySerial.print("!!! CHARGE BATTERY !!!");}
  delay(500);
  mySerial.println (char(26));//the ASCII code of the ctrl+z is 26
  delay(3000);

//  

raw02=raw00;
raw12=raw10;
raw22=raw20;

//scale0.power_down(); //power down all scales 
//scale1.power_down();
//scale2.power_down();

}

void loop() {

  attachInterrupt(0, NULL , RISING); // Interrupt on high lewel
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); //Set ARDUINO sleep mode
  digitalWrite(pin2sleep, HIGH); // Turn OFF GSM-shield
  delay(2200);
  digitalWrite(pin2sleep, LOW); // Turn OFF GSM-shield
  delay(2200);
  digitalWrite(pin2sleep, HIGH);
  digitalWrite(13, LOW);
  scale0.power_down(); //power down all scales 
  scale1.power_down();
  scale2.power_down();
  delay(90000);
  sleep_mode(); // Go to sleep
  detachInterrupt(digitalPinToInterrupt(0)); // turn off external interrupt

  notsunset=0;
 for (int i=0; i <= 250; i++){
      if ( !digitalRead(2) ){ notsunset++; } //is a really sunset now? you shure?
      delay(360);
   }
  if ( notsunset==0 )
  { 
  digitalWrite(13, HIGH);
  digitalWrite(pin2sleep, LOW); // Turn-ON GSM-shield
  scale0.power_up(); //power up all scales 
  scale1.power_up();
  scale2.power_up();
  raw01=raw02;
  raw11=raw12;
  raw21=raw22;
  raw02=scale0.get_units(16); //read data from scales
  raw12=scale1.get_units(16);
  raw22=scale2.get_units(16);

  daynum++; 
  delta00=(raw02-raw00)/calibrate0; // calculate weight changes 
  delta01=(raw02-raw01)/calibrate0;
  delta10=(raw12-raw10)/calibrate1;
  delta11=(raw12-raw11)/calibrate1; 
  delta20=(raw22-raw20)/calibrate2;
  delta21=(raw22-raw21)/calibrate2;

  delay(16000);
  mySerial.println("AT+CMGF=1");    //  Send SMS part
  delay(2000);
  mySerial.print("AT+CMGS="");
  mySerial.print(phone_no); 
  mySerial.write(0x22);
  mySerial.write(0x0D);  // hex equivalent of Carraige return    
  mySerial.write(0x0A);  // hex equivalent of newline
  delay(2000);
  mySerial.print("Turn ");
  mySerial.println(daynum);
  mySerial.print("Hive1  ");
  mySerial.print(delta01);
  mySerial.print("   ");
  mySerial.println(delta00);
  mySerial.print("Hive2  ");
  mySerial.print(delta11);
  mySerial.print("   ");
  mySerial.println(delta10);
  mySerial.print("Hive3 ");
  mySerial.print(delta21);
  mySerial.print("   ");
  mySerial.println(delta20);

  mySerial.print("V Bat= ");
  mySerial.println(readVcc());
  if (readVcc()<3.5) {mySerial.print("!!! CHARGE BATTERY !!!");}
  delay(500);
  mySerial.println (char(26));//the ASCII code of the ctrl+z is 26
  delay(3000);

  }

}

В първия ред, в кавички char phone_no[]=»+123456789012″; — вместо 123456789012 поставяме собствения си номер с код на страната, на който ще получаваме СМС.

Сега натискаме бутона за проверка (над числото едно в скрийншота по-горе) — ако в долната част (под тройката на скриншота) пише «Компилация завършена» — можем да запишем микроконтролера.

И така, USB-TTL е свързан към ARDUINO и компютъра, поставяме заредена батерия в държача (обикновено на новата ардуинка започва да мига светодиодът с честота веднъж в секунда).

Сега за флашването — тренираме да натискаме червения (сребърен) бутон на микроконтролера — това трябва да се направи точно в определен момент!!!
Има ли? Натискаме бутона «Качване» (над двоечката на скрийншота), и внимателно следим линията в долната част на интерфейса (под тройката на скрина).
Веднага щом надписът «компилация» се смени с «качване» — натискаме червения бутон (ресет) — ако всичко е ок — на USB-TTL адаптера радостно ще за мига светлинките, а в долната част на интерфейса написано «Качили сме»

Сега, докато чакаме тестов СМС на телефона, ще обясня как работи програмата:

SMS мониторинг на теглото на три пчелни кошера за 30$

На снимката — втора версия на тестовия стенд.

При първоначалното включване системата сравнява байтовете номер 500 и 501 в EEPROM, ако те са равни, значи калибровъчните данни не са записани, и алгоритъмът преминава към раздела настройка.
Същото се случва, ако по време на включване фоторезисторът е затенен (с капачката на химикалката) — активира се режимът за нулиране на параметрите.

Тензодатчиците трябва вече да бъдат инсталирани под кошерите, тъй като ние просто фиксираме началното ниво на нула и след това измерваме промяната в теглото (в момента просто ще дойдат нули, тъй като все още нищо не сме свързали).
На Ардуино в този случай ще започне да мига вграденият светодиод на пин 13.
Ако нулирането не се случи, светодиодът ще свети в продължение на 12 секунди.
След това се изпраща тестово СМС със съобщение "INITIAL BOOT OK" и напрежението на батерията.
Модулът за свързване се изключва и след 3 минути платката Ардуино поставя платките АЦП HX711 в режим на сън и сама заспива.
Такава забавяне е направено, за да не улавяме наводки от работещия GSM модул (след изключване, той известно време „фонгира“).

Нататък, имаме работа с прекъсване по фотодатчика на втория пин (включена е подтегляне на плюса с функцията pullup).
При това след сработване, още 3 минути се проверява състоянието на фоторезистора — за изключване на повторни/фалшиви сработвания.
Както е характерно, без никакава настройка системата се сработва след 10 минути след астрономическия залез в облачно време и след 20 в ясно.
Да, за да не прави сброс при всяко включване, трябва да бъде свързан поне първият модул HX711 (пинове DT-D10, SCK-А0).

След това се взимат показанията на тензодатчиците, изчислява се промяната в теглото от последното сработване (първото число в реда след Hive) и от първото включване, проверява се напрежението на батерията и тази информация се изпраща под формата на СМС:

SMS мониторинг на теглото на три пчелни кошера за 30$

Между другото, получихте ли СМС? Поздравления! Ние сме по средата на пътя! Батерията може да се извади от държача, компютърът вече не ни е нужен.

За информация, центърът за управление на полетите е станал толкова компактен, че може да се побере в бурканче от майонеза, в моя случай прекрасно подхожда полупрозрачната кутия с размери 30х60х100мм (от визитки).

Да, спящата система консумира ~2.3мА — на 90% благодарение на модула за свързване — той не се изключва напълно, а преминава в режим на изчакване.

SMS мониторинг на теглото на три пчелни кошера за 30$

Пристъпваме към изработката на датчиците, за начало ще се докоснем до схемата на разположение на сензорите:

SMS мониторинг на теглото на три пчелни кошера за 30$

Това е план на кошера — изглед отгоре.

Класически, се инсталират 4 сензора по ъглите (1,2,3,4)

Ние ще измерим по различен начин. По-точно, даже по трети. Понеже по различен начин работят момчетата от BroodMinder:

SMS мониторинг на теглото на три пчелни кошера за 30$

В тази конструкция сензорите са инсталирани на позиции 1 и 2, а точките 3 и 4 се опират на гредата.
Тогава на сензорите се пада само половината от теглото.
Да, този метод има по-ниска точност, но наистина е трудно да си представим, че пчелите ще запълнят рамките с "езици" от восъчни пчели по дължината на една стена на кошера.

Така че, предлагам да съберем сензорите в точка 5 — тогава отпадна нуждата от екраниране на системата, а при използване на леки кошери може да се мине с един сензор.

SMS мониторинг на теглото на три пчелни кошера за 30$

Общо взето, бяха проверени два вида модули на HX711, два вида сензори и два варианта на тяхното свързване — с пълен мост на Уитстън (2 сензора) и с половина, когато втората част се допълва с резистори от 1к с допуск 0.1%.
Но последният метод е нежелателен и не се препоръчва дори от производителите на сензори, така че ще опиша само първия.

И така, на един кошер ще инсталираме два тензометрични сензора и един модул HX711, схемата на свързването е следната:

SMS мониторинг на теглото на три пчелни кошера за 30$

От платката на АЦП до ардуиното има 5 метра 4-жилен телефонен кабел — все пак помним, как пчелите не обичат GSM устройства в кошера..

Общо взето, на сензорите оставяме "опашки" по 8 см, почистваме усукания кабел и всичко свързваме както на снимката по-горе.

Преди да започнем дърводелската част, поставете восък/парафин в подходящ съд да се разтопи на водна баня.

Сега взимаме нашата греда и я делим на три парчета по 100 мм.

След това маркираме надлъжната жлеба с ширина 25 мм, дълбочина 7-8 мм, като с помощта на трион и стамеска отстраняваме излишното — трябва да излезе п-образен профил.

Разтопи ли се восъкът? — потапяме там нашите платки АЦП — това ще ги предпази от влага/мъгла:

SMS мониторинг на теглото на три пчелни кошера за 30$

Разполагаме всичко това на дървена основа (необходимо е да се обработи с антисептик против гниене):

SMS мониторинг на теглото на три пчелни кошера за 30$

И накрая, фиксираме сензорите с саморези:

SMS мониторинг на теглото на три пчелни кошера за 30$

Имаше и вариант със синя изолираща лента, но от съображения за хуманност, няма да го приведем 😉

От страна на Ардуино правим следното:

Чистим нашите телефонни кабели, цветните жилки усукваме помежду си и запояваме.

След това, запояваме контактите на платката както на снимката:

SMS мониторинг на теглото на три пчелни кошера за 30$

Всичко - сега за финалната проверка, поставяме сензорите по секторите на кръга, отгоре — парче фанера, нулираме контролера (поставяме батерия с капачка от химикалка на фотодатчика).

При това светодиодът на Arduino трябва да мига и да получите тестова СМС.

След това сваляме капачката от фотоелемента и отиваме да налеем вода в 1.5-литрова пластмасова бутилка.
Слагаме бутилката върху фанера и ако са минали няколко минути от включването, слагаме капачката обратно на фоторезистора (имитирайки залязване).

След три минути светодиодът на Arduino ще се включи и ще получите СМС със стойности на теглото около 1 кг на всички позиции.

Честито! Системата е успешно сглобена!

Ако сега накарате системата да заработи отново, в първата колона на теглото ще има нули.

Да, в реални условия е желателно фоторезисторът да бъде ориентиран вертикално нагоре.

Сега ще ви дам кратко ръководство за ползване:

  1. Поставете тензодатчиците под задните стени на кошерите (под предните поставете греда/дъска с дебелина ~30 мм)
  2. Засенчете фоторезистора и поставете акумулатора — светодиодът трябва да мига и да получите тестова СМС с текста «INITIAL BOOT OK»
  3. Разположете централния блок на максимално разстояние от кошерите, така че проводниците да не пречат при работа с пчелите.
    Всеки вечер, след залез, ще получавате СМС с промяната в теглото за денонощие и от момента на стартиране.
    При достигане на напрежение на батерията от 3.5 В, СМС ще завършва с текста «!!! ЗАРЕДЕТЕ БАТЕРИЯТА !!!»
    Времето за работа от една батерия с капацитет 2600 мАч е около месец.
    В случай на смяна на батерията, дневните изменения в теглото на кошерите не се запомнят.

UPD ПРЕДУПРЕЖДЕНИЕ!

В УСЛОВИЯТА НА СЛАБ СИГНАЛ, GSM модулът увеличава мощността, което води до РЕЗЕТИРАНЕ НА СИСТЕМАТА.

Това беше установено по време на «полевите» изпитания (не е ясно защо потребителите на GSM платки не споделят за такива проблеми).

В момента подготвям нова схема:
SMS мониторинг на теглото на три пчелни кошера за 30$

След успешна проверка, това публикуване ще бъде обновено.

Електропчеловод Андрей.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster