Vyhledávání

#15 - Arduino a Ethernet shield

08.06.2014 20:00

Arduino a Ethernet shield

V dnešním článku si ukážeme, jak pracovat s Ethernet shieldem, což je zajímavé rozšíření pro Arduino, které nám přináší nové možnosti interakce Arduina se sítí i internetem.


Ethernet Shield

Ethernet shield si (stejně jako celé Arduino) prošel poměrně dlouhým vývojem, proto se setkáme hned s několika jeho verzemi. My budeme pracovat s jeho nejnovější verzí Arduino Ethernet Rev3 WITH PoE.

Ethernet shield
Obr. 1: Ethernet shield

Dominantním prvkem desky je RJ45 konektor pro připojení Ethernet kabelu. Mimo něj ale na shieldu nalezneme i slot na SD kartu, jejíž používání jsme si popsali v minulém dílu. Ovládání čipu (W5100) i SD karty probíhá přes SPI rozhraní. Rychlost síťové komunikace 10/100 MB není v dnešní době zrovna strhující, ale pro naše účely je zcela dostačující. Než shield připojíme k Arduinu, otočíme jej.

MAC adresa
Obr. 2: MAC adresa

Na jeho spodní straně nalezneme nálepku s MAC adresou (unikátní identifikační číslo síťového zařízení). Tu si někam poznamenáme pro pozdější použití. Když máme MAC adresu zapsanou, můžeme shield připojit na Arduino (v našem případě Arduino Mega).

Arduino Mega s Ethernet shieldem
Obr. 3: Arduino Mega s Ethernet shieldem

 


Funkce

Pro programování Ethernet shieldu se používá hned několik tříd. Třída Ethernet slouží k základnímu nastavení.

Název Zápis Funkce
Ethernet.begin(mac) Ethernet.begin(mac)
Ethernet.begin(mac, ip)
Ethernet.begin(mac, ip, dns)
Ethernet.begin(mac, ip, dns, gateway)
Ethernet.begin(mac, ip, dns, gateway, subnet)
Slouží k zahájení komunikace shieldu s okolím (většinou router či switch). Vlevo vidíte použití různých parametrů. Nejčastěji se používají pouze mac a ip. Když parametr ip nepoužijeme, je IP adresa přidělena automaticky DHCP serverem.
Ethernet.localIP() - Vrátí IP adresu shieldu. Tato funkce se nepoužívá, pokud IP adresu přiřazujeme manuálně, ale když ji necháme přes DHCP přidělit automaticky.
Ethernet.maintain() - Pokud má shield přiřazenou adresu automaticky, může touto funkcí požádat o její obnovení. Přidělená adresa může být v závislosti na nastavení routeru stejná i nová.

Jakousi pomocnou třídou je třída IPAddress. Ta slouží k uchování IP adresy.

Název Zápis Funkce
IPAddress() IPAddress jmeno(a,b,c,d) Tato funkce uloží IP adresu. Zápis adresy ve tvaru a.b.c.d (např. 10.0.0.1) se jménem mojeIP se provede vytvořením objektu IPAddress mojeIP(a,b,c,d).

Třída Server slouží k odesílání a přijímání dat mezi shieldem a připojenými klienty (programy na jiných zařízeních, které se připojují k serveru).

Název Zápis Funkce
Server() EthernetServer mujSvr = EthernetServer(port) Vytvoří server, který naslouchá příchozím připojením na vybraném portu (80 pro HTTP, 23 pro telnet...).
mujSvr.begin() - Spustí vybraný server.
mujSvr.available() EthernetClient client = server.available() Vrátí objekt Client, který je připojen k našemu serveru a odesílá data ke čtení.
mujSvr.write() mujSvr.write(val)
mujSvr.write(buf, len)
Pošle data všem klientům připojeným k serveru. Data mohou být typu char, byte, nebo pole těchto typů (buf je poté délka tohoto pole).
mujSvr.print() mujSvr.print(data)
mujSvr.print(data, BASE)
Stejné jako .write(), jen data převádí na text. Parametr BASE může nabývat hodnot: BIN (dvojková soustava), OCT (osmičková soustava), DEC (dekadická soustava), HEX (šestnáctková soustava).
mujSvr.println() mujSvr.println(data)
mujSvr.println(data, BASE)
Stejné jako .print(), jen na konec přidá zalomení řádku.

Ke zpracování dat ze serveru slouží třída Client. Tato třída vytvoří ze shieldu klienta, který se může připojit k jiným serverům.

Název Zápis Funkce
EthernetClient ja - Vytvoří klienta s názvem ja.
ja while(!ja){delay(1)} Počká, dokud není klient připojen.
ja.connected() - Vrátí true, pokud klient odesílá data (v dobu zpracování už nemusí být přítomen, ale musí být od něj přijaty data).
ja.connect() ja.connect(ip, port)
ja.connect(URL, port)
Připojí se k vybrané ip, nebo URL přes zadaný port.
ja.write() ja.write(val)
ja.write(buf, len)
Pošle data serveru, ke kterému je shield připojen.
ja.print() ja.print(data)
ja.print(data, BASE)
Pošle data serveru jako text.
ja.println() ja.println(data)
ja.println(data, BASE)
Pošle data serveru jako text končící zalomením řádku.
ja.available() - Vrátí počet bytů přijatých klientem od serveru.
ja.read() - Přečte a vrátí hodnotu přijatého bytu.
ja.flush() - Vyprázdní frontu přijatých a nepřečtených dat.
ja.stop() - Odpojí se od serveru.

Poslední třída EthernetUDP slouží k přijímání a odesílání UDP zpráv. My se jí však nebudeme zabývat. Pro více informací navštivte dokumentaci.

 


Použití

Když už jsme si popsali všechny potřebné funkce, můžeme se pustit do programování.


Vytváříme server

Na úvod si naprogramujeme jednoduchý server. Než ale začneme, musíme pochopit, jak spolu komunikuje server s klientem. Komunikace zde probíhá na principu dotaz-odpověď. Tyto dotazy a odpovědi mají formát pouhého textu. Jakým způsobem musí být text zapsán, definuje HTTP protokol. Nejjednodušší bude si vše předvést na ukázce komunikace. Když se chce klient připojit na server, zašle mu požadavek přibližně v tomto tvaru:

GET / HTTP/1.1
Host: 10.0.0.15
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml, application/xml;q=0.9, image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Referer: https://10.0.0.15/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: cs,en;q=0.8,de;q=0.6,sk;q=0.4

Tato zpráva obsahuje vše potřebné pro server pro odeslání vodných dat klientovi. Obsahuje informaci o tom, s jakou verzí HTTP pracujeme, jaký je pro klienta přijatelný formát, o jakého klienta se jedná, jaké kódování používá a jaký jazyk očekává. Prázdný desátý řádek zde není z nepozornosti. Tímto způsobem se označuje, že je požadavek ukončen.

Server poté musí požadavek zpracovat a odeslat zpět odpověď v HTML tvaru s vhodnou HTTP hlavičkou. Hlavička obsahuje informace o verzi HTTP, o stavu připojení po ukončení přenosu, nebo o automatickém obnovování. Tyto informace nám nyní stačí. Existuje ale samozřejmě celá řada dalších HTTP příkazů, jejichž seznam nalezneme například na wikipedii. Hlavička odpovědi tedy vypadá takto (opět s volným řádkem).

HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Refresh: 1

Po hlavičce a volném řádku následuje kód stránky ve formátu HTML. Představme si nyní základní strukturu stránky.

<!DOCTYPE HTML> - říkáme prohlížeči, že pracujeme s HTML
<html>
	<head>
		mezi značky head se píší základní informace o stránce (kódování, CSS styly...)
		<title>Titulek stránky </title> - zobrazí se v záložce
	</head>
	<body>
		sem patří obsah stránky (ten, který vidíme v prohlížeči)
	</body>
</html>

Se všemi získanými informacemi už můžeme poskládat program jednoduchého serveru, který bude měnit barvu pozadí pomocí css stylů podle toho, jestli je nebo není stisknuto tlačítko připojené k Arduinu na pinu 45. Tlačítko budeme kontrolovat každou vteřinu. Mimo tlačítka budeme potřebovat ještě 10k resistor a několik vodičů.

V programu použijeme také jednoduché css stylování. My budeme chtít, aby pozadí celé stránky bylo zelené nebo červené. To se v html provede tak, že se k elementu <body> připojí style="background: red/green". Dvojité uvozovky by ale program Arduina mohly mást, proto se používá tzv. escapování, kdy se před vybraný znak dá zpětné lomítko. Ten se poté projeví až při zpracování prohlížečem. Výsledný element body tedy bude vypadat třeba takto: <body style=\"background: green\">

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x9C, 0xB7 };
IPAddress ip(10,0,0,15); //ip serveru je 10.0.0.15

EthernetServer mujSvr(80); //vytvoříme server na portu 80

void setup(){
    Ethernet.begin(mac);

    mujSvr.begin(); //spustíme server

    pinMode(45, INPUT);
}


void loop(){
    EthernetClient client = mujSvr.available();
    if (client){
        boolean prazdnyRadek = true;
        while (client.connected() && client.available()){ 
            //dokud klient něco odesílá (HTTP požadavek)
            char c = client.read(); //přečti byte od klienta
            
            if(c == '\n' && prazdnyRadek){
                client.println("HTTP/1.1 200 OK");
                client.println("Content-Type: text/html");
                client.println("Connection: close");
                client.println("Refresh: 1");
                client.println();
                client.println("<!DOCTYPE HTML>");
                client.println("<html>");
                client.println("<head>");    
                client.println("<title>Zkoumame HTML a HTTP</title>");
                client.println("</head>");
                
                if(digitalRead(45) == HIGH){
                    client.println("<body style=\"background:green\">");
                }
                else{
                    client.println("<body style=\"background:red\">");
                }

                client.println("</body>");
                client.println("</html>");
            }
            
            if(c == '\n'){
                prazdnyRadek = true;
            } 
            else if(c != '\r'){
                prazdnyRadek = false;
                /*dokud klient nepošle dvakrát za sebou \r a \n
				znamená to, že stále odesílá data*/
            }
        }
        delay(1); //dáme klientovi čas na zpracování
        client.stop(); //komunikace je u konce
    }
}
Zapojení
Obr. 4: Zapojení

 


Sosáme data

V druhém příkladu se připojíme k serveru a budeme po něm požadovat nějaká data, která si vypíšeme po sériové lince. Konkrétně to bude server ahwk.ic.cz, po kterém budeme chtít soubor ahoj.txt. Ten je uložen v kořenovém adresáři serveru, tedy přímo na adrese ahwk.ic.cz/ahoj.txt. Na začátek si sestavíme HTTP požadavek.

GET /ahoj.txt HTTP/1.1
Host: ahwk.ic.cz
Connection: close

Slovy: Dej mi soubor ahoj.txt přes protokol HTTP verze 1.1 z ahwk.ic.cz a potom ukonči spojení.

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x9C, 0xB7};

char server[] = "ahwk.ic.cz"; //server, kam se připojujeme

EthernetClient client;

void setup(){
    Serial.begin(9600);
    Ethernet.begin(mac);
    delay(1000);

    Serial.println("Spojuji...");

    if(client.connect(server, 80)){ //připojí se k serveru
        Serial.println("Pripojeno!");
        
        client.println("GET /ahoj.txt HTTP/1.1");
        client.println("Host: ahwk.ic.cz");
        client.println("Connection: close");
        client.println();
    } 
    else {
        Serial.println("Spojeni se nepovedlo.");
    }
}

void loop(){
    if(client.available()) {
        char c = client.read();
        Serial.print(c); //vypíše přijatá data
    }

    if(!client.connected()) {
        Serial.println();
        Serial.println("Odpojuji.");
        client.stop();
        while(true){} //zastaví činnost shieldu
    }
}

 


Ovládání přes síť

V posledním příkladu si ukážeme, jak Arduino ovládat pomocí prohlížeče, či jiného síťového zařízení. Budeme ovládat čtyři LED připojené na pinech 3, 4, 5 a 6. Informaci o tom, která LED bude svítit, předáme shieldu pomocí parametru v URL (to co píšeme do adresního řádku). Parametr se píše za ?. My tedy budeme v HTTP požadavku klienta hledat ? a poté čísla za ním následující. Náš program poté rozsvítí postupně LED diody daných čísel. Pokud napíšeme do prohlížeče: 10.0.0.15/?3456, HTTP požadavek odeslaný na server vypadá nějak takto.

GET /?3456 HTTP/1.1
Host: 10.0.0.15
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml, application/xml;q=0.9, image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: cs,en;q=0.8,de;q=0.6,sk;q=0.4

Jediná věc, která nás teď zajímá je první řádek, a to až za otazníkem. Poté už nás další informace nezajímají. Data, která chceme, tedy začínají otazníkem a končí mezerou. Pozor na to, že jsou tu i číslice kódovány jako ASCII.

#include <Ethernet.h>
#include <SPI.h>

boolean zacatekCteni = false;

byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x9C, 0xB7 };
IPAddress ip(10,0,0,15);

EthernetServer mujSvr = EthernetServer(80);

void setup(){
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);

  Ethernet.begin(mac, ip);

  mujSvr.begin();
}

void loop(){
    EthernetClient client = mujSvr.available();
    
    if(client){
        boolean prazdnyRadek = true;
        boolean hlavickaPoslana = false;
        
        while(client.connected() && client.available()){
            if(!hlavickaPoslana){ //jednou pošleme hlavičku
                client.println("HTTP/1.1 200 OK");
                client.println("Content-Type: text/html");
                client.println();
                hlavickaPoslana = true;
            }
            
            char c = client.read();
            
            if(zacatekCteni && c == ' '){ //ukončí čtení
                zacatekCteni = false;
            }
            
            if(c == '?'){ //začne čtení
                zacatekCteni = true;
            }
            
            if(zacatekCteni){                
                if(c == '3'){
                    blikni(3, client);
                }
                else if(c == '4'){
                    blikni(4, client);
                }
                else if(c == '5'){
                    blikni(5, client);
                }
                else if(c == '6'){
                    blikni(6, client);
                }
            }
            
            if (c == '\n') {
                prazdnyRadek = true;
            }
            
            else if (c != '\r'){
                prazdnyRadek = false;
            }
        }
        delay(1);
        client.stop();
    } 
}

void blikni(int pin, EthernetClient client){
    client.print("Sviti LED na pinu ");
    client.print(pin);
    client.print("<br>"); //zalomení řádku
    
    digitalWrite(pin, HIGH);
    delay(250);
    digitalWrite(pin, LOW);
    delay(250);
}
Ovládáme LED po síti
Obr. 5: Ovládáme LED po síti

Tímto jsme získali základní přehled o tom, co Ethernet shield umí. To ale samozřejmě není vše. Můžeme ho například naučit komunikovat s Twitterem, zjišťovat čas podle atomových hodin a další. Několik zajímavých příkladů nalezneme v oficiální dokumentaci.

 


V případě jakýchkoliv dotazů či nejasností se na mě neváhejte obrátit v komentářích.

 

Kam pokračovat?


<-- #14 - ARDUINO PROJEKT: 2048||#16 - Náš první klon Arduina-->
Zpět

Diskusní téma: #15 - Arduino a Ethernet shield

Datum
Vložil
Titulek

Ремонт квартир в Балашихе +7 (965) 127-60-35

<b>Ремонт квартир в Балашихе +7 (965) 127-60-35</b>

Ремонт квартир от косметического до капитального. Ремонт новостроек. Ремонт частных домов, коттеджей и дачных домиков.
Сантехника, электромонтаж, штукатурно-малярные работы, утепление, шумо- и гидроизоляция квартиры. Наш телефон +7 (965) 127-60-35.
Установка входных и межкомнатных дверей, установка пластиковых окон. Потолки натяжные, окрашенные, гипсокартон любой сложности.
Ремонт, сборка и изготовление мебели. Составление сметы, договора. Фиксированная цена,которая не увеличивается в ходе ремонта.
Помощь в закупке стройматериала. Местные мастера, без посредников и накруток. Гарантия на выполненные работы. Умеренные цены.

<b>Звоните! +7 (965) 127-60-35</b>


Строгание стены сруба (одна сторона) - 300 за кв.м
Строгание стены брусовой с фаской (одна сторона) - 300 за кв.м
Шлифовка (сруб) - 500 за кв.м
Шлифовка (брус) - 400 за кв.пог.мдготовка к конопатке - 10 за пог.м
Конопатка паклей (сруб) - 80 за пог.м
Конопатка паклей 2-го этажа и фронтонов - 90 за пог.м
Конопатка паклей под отделку - 70 за пог.м
Пропитка шва конопатки защитным слоем - 20 за пог.м
Покраска (отбеливание, антисептирование и лак) - 80 за пог.м
Двойная лакировка пола - 220 за кв.пог.мдготовка стен к обшивке (сруб) - 120 за кв.м
Обшивка стен вагонкой - 400 за кв.м
Обшивка стен блокхаусом - 450 за кв.м
Устройство перегородок - 400 за кв.м
Обшивка брусовых стен - 400 за кв.пог.мдшивка вагонкой потолка - 400 за кв.м
Обшивка мансарды - 400 за кв.м
Выравнивание половых и потолочных балок - 250 за пог.м
Настил чернового пола - 120 за пог.м
Утепление пола и потолка - 50 за кв.м
Утепление мансарды 2-го этажа - 120 за кв.м
Настил чистового пола - 300 за кв.м
Оборудование чернового потолка - 150 за кв.м
Выравнивание торцов угла сруба - 2500 за шт.
Установка дверной коробки с выпиливанием - 5000 за шт.
Установка дверного косяка - 4500 за шт.
Установка оконной коробки с выпиливаниепог.моема - 4000 за шт.
Установка оконного косяка - 3000 за шт.
Установка обноски и наличников - 380 за пог.м
Установка дверей в перегородки - 900 за шт.
Установка стеклопакета (от сложности и размера) - цена договорная
Установка дверного полотна и врезка замка - 2500 за шт.
Оборудование каркаса стен и террас - 450 за кв.м
Изготовление лестниц - от 35000 за шт.
Установка плинтусов - 70 за пог.м
Установка банной печи - от 20000 за шт.
Обшивка сайдингом - 400 за кв.м
Установка крыльца - цена договорная
Монтаж стропильной системы - 350 за кв.м
Устройство обрешетки под металлочерепицу - 300 за кв.м
Обшивка вагонкой фронтонов, подлетов и карнизов (с лесами) - 550 за пог.м
Укладка металлочерепицы - 450 за кв.м
Укладка гофрлиста - 400 за кв.м
Укладка ондулина - 300 за кв.м
Кровля рубероидом - 100 за кв.м
Установка водостоков - 800 за пог.м
Установка безымянных бревен - 800 за пог.м
Установка сантехники, электрики - цена договорная
Отделка фундамента декоративныпог.мастиком (под кирпич, под камень) - 600 за пог.м
Установка ложного карниза - 500 за пог.м

Косметический ремонт фасада от 150 р/кв.м
Ремонт оштукатуренного фасада от 300 р/кв.м
Устройство вентилируемого фасада от 450 р/кв.м
Устройство мокрого фасада от 400 р/кв.м

Демонтаж обоев (за слой) - от 50 р/кв.м
Поклейка бумажных, виниловых обоев - от 200 р/кв.м
Поклейка обоев на флизелиновой основе - от 220 р/кв.м
Поклейка обоев в два уровня - от 270 р/кв.м
Поклейка бордюра - 100 р/пог.м
Поклейка стеклообоев - от 200 р/кв.м
Монтаж плинтуса потолочного - от 120 р/пог.м
Штукатурка - от 250 р/кв.м
Штукатурка по сетке, маякам - от 450 р/кв.м
Шпатлевка стен (один слой) - от 150 р/кв.м
Ошкуривание стен - от 60 р/кв.м
Грунтовка (один слой) - 70 р/кв.м
Покраска (один слой) - от 100 р/кв.м
Оклейка панелями - от 250 р/кв.м
Штукатурка рустов - 150 р/пог.м
Нанесение декоративной штукатурки - от 500 р/кв.м
Обшивка вагонкой - 550 р/кв.м
Обшивка вагонкой на готовую обрешетку - от 350 р/кв.м
Размывка, зачистка потолка - 100 р/кв.м
Сухая стяжка пола - от 450 р/кв.м
Стажка пола по маякам - от 500 р/кв.м
Гидроизоляция пола - от 150 р/кв.м
Подсыпка керамзитом - от 100 р/кв.м
Демонтаж кафельной плитки - 150 р/кв.м
Облицовка кафельной плиткой пол, стены - от 700 р/кв.м
Облицовка мозаикой - от 1200 р/кв.м
Облицовка керамогранитом - от 900 р/кв.м
Установка бордюра плиточного - 200 р/пог.м
Запил торцов на наружный угол - 600 р/пог.м
Сверление отверстий под трубы в кафеле - от 200 р/шт
Монтаж углового профиля и окончаний - 200 р/пог.м
Затирка швов - 100 р/кв.м

<b>На все остальные неперечисленные работы - договорная цена, звоните: +7 (965) 127-60-35</b>

Datum
Vložil
Titulek

Многоканальные SIP GSM номера с круглосуточной поддержкой оформляйте в предприятии "Мегатрон Трейд"

Для того, чтобы сделать производство очень эффективным и доходным, нужно идти в ногу с инновационными технологиями. При поддержке современных разработок можно отлично оптимизировать бизнес даже при наличии небольшого бюджета. В последние годы очень затребованными являются смс и e-mail рассылки, какие извещают клиентов об актуальных и проходящих акциях предприятия. При поддержке такой рассылки, компании благополучно привлекают целевых потребителей и наращивают доход.

Предприятиям работающим на Украине необходимо направить взгляд на фирму "Мегатрон Трейд". Фирма в течении четырнадцати лет активно развивает и предлагает клиентам ПО, какое отвечает за постоянную информационную рассылку. Применение услуг фирмы "Мегатрон Трейд", гарантирует следующие преимущества: 1. Бесперебойную и оперативную рассылку; 2. Защиту от вредоносных атак; 3. Автоматический мониторинг каналов; 4. Конфиденциальность и защиту данных; 5. Оперативную поддержку клиентов. Сотрудники предприятия "Мегатрон Трейд" выяснив все требования потребителя, скоро предоставят более уместный вид информационной рассылки, какой поможет добиться автоматизации бизнеса.

Познакомиться с расценками на услуги компании "Мегатрон Трейд", клиенты смогут на официальном сайте в вебе. Здесь просто можно оформить SMS-РЕКЛАМУ МЕГАФОН и не только. Оформить сервисы фирмы "Мегатрон Трейд" могут бизнесмены не только из разных уголков Украины, но и иных государств. Организация ручается за отличное качество предоставляемых услуг и своевременную поддержку в случае необходимости.

Оформляйте mms рассылку и прочее у специалистов "Мегатрон Трейд". Очень скоро Вы увидите насколько увеличилась эффективность фирмы после использования услуг "Мегатрон Трейд".

Datum
Vložil
Titulek

Losing gravamen is no helical upwards mastery

Some albatross hiccup synbe.suvit.online/handliche-artikel/stoffwechsel-plakat.html creams are formulated to hold up hegemony loss. But entertain do convoke to keep an eye on backva.kremmen.amsterdam/dokters-advies/erythrodermic-psoriasis-treatment-20910.html that the specify up decay achieved not later than using such creams is contrariwise temporary. The matter comes repayment as in the incessantly as you continually bridnel.richtig.amsterdam/schoenheit/fettverdauung-anregen-71294.html using these creams.

Datum
Vložil
Titulek

Звонки с любого номера с подменой голоса!

Вы сможете звонить абсолютно с любого номера, друга, жены или +77777777777

Предлагаю абсолютно анонимный сервис для звонков со всего мира и по всему миру.
Наши плюсы:
1) Неограниченая бесплатная подмена номера, хоть 1000 раз в день
2) Подмена голоса 6 режимов
3) Абсолютная анонимность, невозможность прослушки и определения местонахождения звонящего.
4) Детализация звонков выдает тот номер, который вы использовали для подмены.
5) Возможность работать через приложение или через специальную сим карту, которую мы вам доставим.
6) Наша сим карта работает по всему миру без роуминга
7) Тарифы на звонки по всему миру от 2 до 20 рублей за минуту
8) Работает на всех платформах и телефонах (Windows, Linux, android, iphone, простая звонилка типа nokia 1100)
На любой компьютерной ос или смартфоне/планшете можно настроить наш сервис через приложение.
На любом аппарате, где есть слот под sim карту можно пользоваться сервисом с помощью нее.

Цены: Настройка, установка, подключение - 5000 руб
Сим карта - 3000 руб + доставка
Звонки 2-20 руб/мин
Пополнение счета - 5-10% от суммы, зависит от метода пополнения

Пройдем любые проверки, сделаем Вам тестовые звонки. Согласны на оплату через гаранта любого авторитетного форума.

Контакты: Почта - vipsecurecall@gmail.com
Телеграм - @Vip_Security
Jabber - VipSecurity@xmpp.jp
Icq - 723882584
Время работы: 10:00-23:00 по МСК

Datum
Vložil
Titulek

matchlessness adversarial readies current extermination interpose that has helped countless women

In favouritism to weddtu.wahl.amsterdam/informationen/stress-gewichtsverlust-89953.html choosing any postscript, it is benevolent pressu.wahl.amsterdam/anweisungen/punkte-diaet-weight-watchers-42227.html to discern what the to can do in occur of you. After all, not every smashing diminution appendage operates the like and as a consequence, you should find fasten on that is compatible with your needs and heaviness negation goals. In this dupe, here are the greatest reasons recompense afrac.hadmo.amsterdam/online-consultatie/schimmelinfectie-oor-behandeling.html choosing Autochthon Choco.

Datum
Vložil
Titulek

Шкафы купе с рисунком.






Datum
Vložil
Titulek

Ripple - ракета 2018 года, Visa и Крупные банки инвестируют капитал уже в январе

Инсайты крупных игроков криптовалют!
Скоро мы можем попасть в "рай" - Курс Биткоина должен упасть до 4500-5500 $ - идеальное время для его закупа в 2018 году и разумеется для покупки альткоинов, самым перспективным из которых может стать RIPPLE.
Ripple: дорасти до $6.8 — и побить биткоин уже в январе.
рипл (XRP) — криптовалюта, которая уже совсем скоро будет сетями VISA, MasterCard, а также центральных банков. По сути это крипто-фиат. Потому цена риппл может достигнуть совсем скоро 100 USD, так как волна должна быть подхвачена той же VISA в начале 2018 года. Транзакции проходят безопаснее и быстрее, чем в Bitcoin.
Для смещения Bitcoin (BTC) с лидирующей позиции альтернативной цифровой валютой Ripple (XRP) осталось достичь отметки 6.8 USD, что и планируется крупными игроками в январе. Спекулятивные настроения превалируют на рынке криптовалют, но крупные фонды, банки и инвесторы дадут Ripple рост до 100$ уже совсем скоро.
Такой показатель казался бы недостижимым, если бы в прошлом году риппл не продемонстрировал рост на 35 000%.
Ripple откроет новые перспективы криптовалют, способствую их внедрению в массы, их популярности и анонимности транзакций.
В преддверии новостей по Ripple в Январе: есть рекомендации к покупке именно сейчас - курс XRP достиг минимальных значений коррекции.
Крупные игроки и трейдеры криптобирж начинают "закуп на низах" в ближайшее время, когда Курс битка упадет до 5000-7000 $.
Начните зарабатывать от 1000% в год уже сейчас!

Datum
Vložil
Titulek

it,s intereting

AminoBoosters are 4 times more affordable as Laminine by LPGN To learn how to get a product: tel.: +1(248)730-4178

Datum
Vložil
Titulek

Мобильный, выездной шиномонтаж в Москве круглосуточно!

Мобильный, выездной шиномонтаж в Москве круглосуточно!
Мегафон: +7(495)908-97-71
Мтс: +7(915)448-25-25
Хранение шин.
1. Шиномонтажные работы.
2. Снятие секреток.
3. Переобувка шин.
4. Ремонт проколов и порезов.
Выездной шиномонтаж 24 часа в Москве и МО.
Звоните!

Datum
Vložil
Titulek

delete xinput9_1_0 dll gossip girl s02e13 watch 3 the script album lyrics tpb

This screen saver shows the beautiful views of the vegetable life: single flowers, flowers fields, fruits, trees, an juicy green herb. Download Direct Street Cricket Pro v4. 0 Final By bobiras2009. leather thunderbird patch boat sole

1 | 2 | 3 >>

© 2015 Všechna práva vyhrazena.

www.hwkitchen.com