Голосовое управление радиорозетками UNIEL

В статье описывается устройство для голосового управления розетками UNIEL на базе контроллера Arduino, трансмиттера 433 МГц и модуля распознавания голоса Voice Recognition Module V2 фирмы elechouse (сайт — http://www.elechouse.com).

Розетки UNIEL

Непосредственно устанавливаются в любую розетку и к ним уже подключается электроприбор, включением и выключением которого можно управлять с дистанционного пульта. Радиус действия на открытой местности до 25м, частота приемо-передачи команд 433.9 Мгц. В ассортименте есть разные для нагрузок 300Вт, 1000Вт, 3600 Вт. Весь ассортимент можно посмотреть на странице официального сайта http://www.uniel.ru/ru/catalog/1235.

arduino98-1

В пульте устанавливается код группы. В каждой розетке код группы = код группы пульта и код розетки

arduino98-2

Радиомодули

Наша задача — заменить пульт для управления розетками UNIEL. Нужны радиомодули, работающие на частоте 433 МГц. Я приобретал FS1000A

arduino98-3
В комплекте ресивер и трансмиттер. Цена на ebay меньше 100 руб.

Для Arduino имеются библиотеки для работы с разными управляемыми по 433/315 МГц исполнительными устройствами. Я использовал такую:
rc-switch — Arduino library to operate low cost 315 MHz / 433 MHz remote control devices — http://code.google.com/p/rc-switch/

Скачиваем, распаковываем в папку libraries

Для начала подключим приемник

Arduino—— модуль
+5V ———-VCC
GND ———-GND
DATA (любой)————2

запустим пример из библиотеки RCswitch пример ReceiveDemo_Advanced

Нажимаем на пульт и смотрим что выдает скетч в последовательный порт

arduino98-4

Запомним параметры 24Bit, PulseLength — 309 microseconds, Protocol 1

Они нам понадобятся при написании скетча. Коды запоминать НЕОБЯЗАТЕЛЬНО!!! Для отправки кодов достаточно знать код группы и код устройства!!!

Подключаем к Arduino проверки работы розеток

Arduino—— модуль
+5V ———-VCC
GND ———-GND
DATA ————10

Пишем скетч следующего содержания

include "RCSwitch.h"
RCSwitch mySwitch = RCSwitch();

void setup() {

Serial.begin(9600);
mySwitch.enableTransmit(10);
mySwitch.setPulseLength(309);
mySwitch.setProtocol(1);
// mySwitch.setRepeatTransmit(15);

}

void loop() {
// включение
// группа 11000 код розетки A
mySwitch.switchOn("11000", "10000");
Serial.print("A - on");
delay(5000);
// группа 11000 код розетки B
mySwitch.switchOn("11000", "01000");
Serial.print("B - on");
delay(5000);
// группа 11000 код розетки B
mySwitch.switchOn("11000", "00100");
Serial.print("C - on");
delay(5000);
// выключение
mySwitch.switchOff("11000", "10000");
Serial.print("A - off");
delay(5000);
mySwitch.switchOff("11000", "01000");
Serial.print("В - off");
delay(5000);
mySwitch.switchOff("11000", "00100");
Serial.print("C - off");
delay(5000);
}

Запускаем, и смотрим как розетки по кругу включаются, а затем выключаются.

Из контроллера при желание можно управлять 32×32 розетками

Модуль распознавания голоса Voice Recognition Module V2

Модуль распознавания голоса Voice Recognition Module V2 был куплен на ebay по очень приемлемой цене. При заказе не смотрел даташит и напрасно. Модуль не совсем оправдал ожидания:

1) Объявленная работа с 15 заранее записанными голосовыми командами одновременно невозможна (модуль распознает только по 5 команд каждого блока (блоков 3)).Можно подгрузить только 1 блок, затем другой и т.д. Поэтому было решено использовать цепочки слов (2-3) с паузами, необходимыми для загрузки следующего блока, например

Кафе — лампа — выключить

Фонтан — включить

2) Модуль не реагирует на голос другого человека, для двух человек придется дублировать команды

Сначала расскажу как работать с модулем, а потом как была решена задача

Вид модуля

arduino98-5

Для обучения модуля необходимо посылать модулю по последовательному порту команды и произносить фразы. Скачиваем на компьютер (Windows) рекомендуемую производителем программe работы с com-портом (AccessPort — страница загрузки), подключаем модуль к Arduino

Arduino—— модуль
+5V ———-VCC
GND ———-GND
TX ————3
RX ————2

Arduino подключаем к компьютеру. В Arduino загружаем скетч

#include "SoftwareSerial.h"

SoftwareSerial mySerial(2, 3); // RX, TX

void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}

void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}

В программе AccessPort выставляем следующие настройки

arduino98-6

Теперь все команды и ответы идут от компа к модулю

Смотрим даташит — прикреплен в конце

и посылаем команды

AABB — информация о модуле

V2.0
By ELECHOUSE
www.elechouse.com

Далее — обучение первого блока — AA11

arduino98-7

После команды START в окне терминала произносим в микрофон ПЕРВУЮ фразу, появляется надпись Again, ждем, молчим, снова появляется команда START. Второй раз произносим в микрофон ПЕРВУЮ фразу для подтверждения. В случае удачной записи появляется надпись Finish one, говорящая о том , что первая команда успешно записана. Надпись Different говорит о том, что вторая команда звучала не так, как первая и модуль ее не распознал. Надпись Too loud говорит о том, что вы слишком громко говорите в микрофон (> 1300 мс).
Аналогично записываем 4 оставшихся фразы. Надпись Group1 finished ! говорит о том, что первый блок успешно записан.

Для проверки распознавания вызываем блок 1 — командой AA21 и произносим фразы в микрофон. При распознавании выводится подтверждение в терминал

arduino98-8

Затем обучаем блоки 2 и 3 посылая команды AA12, AA13 соответственно. Для вызова из памяти блоков 2 и 3 команда в терминал AA22 и AA23 соответственно.

Еще один момент — если мы хотим получать ответ от голосового модуля в кратком виде (не «Result:15″ а 15) необходимо отправить модулю команду AA37

В блоки заносим следующие команды (участвуют 2 человека) для посиделок на кухне — чайник(электрический) + освещение (огни RGB, лампа возле кухонного стола, ночник)

блок 1 блок 2 блок 3
1 «Кафе» (1 голос) «Огни» (1 голос) «Включить» (1 голос)
2 «Фонтан» (1 голос) «Лента» (1 голос) «Выключить» (1 голос)
3 «Тест» (1 голос) «Ночник» (1 голос) «Огни» (2 голос)
4 «Кафе» (2 голос) «Включить» (2 голос) «Лента» (2 голос)
5 «Фонтан» (2 голос) «Выключить» (2 голос) «Ночник» (2 голос)
В соответствии с обученным командам и будем строим цепочки в программе

Вот примеры правильных цепочек

«Кафе» (1 голос) — «Ночник» (1 голос) — «Выключить» (1 голос)

«Фонтан» (2 голос) — «Включить» (2 голос)

«Кафе» (2 голос) — «Огни» (2 голос) — «Включить» (2 голос)

и т.д.

Для наглядности добавим индикацию 3 светодиода к пинам 7,8,9

(красный — загружен 1 блок

желтый — загружен 2 блок

зеленый — загружен 3 блок

горят 3 светодиода (1 сек) — комбинация слов верная)

Вот схема устройства

arduino98-9

А устройство выглядит так (будет позже украшено искусственными цветами)

http://cxem.net

И скетч для Arduino. К сказанному выше еще добавлю, что если

после загрузки второго или третьего блоков в течении FRAZA_TIME=2000 мс нет опознанного слова —

подгружается банк 1.

И весь скетч

#include "RCSwitch.h"
#include "SoftwareSerial.h"

SoftwareSerial mySerial(2, 3); // RX, TX
RCSwitch mySwitch = RCSwitch();
byte com = 0;
char* kod_group="11000";

unsigned long FRAZA_TIME=2000;
unsigned long millis1=0;

int fraza_poz=1;
int var1;
int offset[4]={0,1,10,100};
unsigned int kod=0;
int id_do=0;
// фразы
// 1 банк
// 11,12,13,14,15
// кафе(1),фонтан(1),тест(1),кафе(2),фонтан(2)
// 21,22,23,24,25
// огни(1),лента(1),ночник(1),включить(2),выключить(2)
// 31,32,33,34,35
// включить(1),выключить(1),огни(2),лента(2),ночник(2),
// все возможные комбинации
// 1,2,3 - выбор банка
// 4 - ok end
unsigned int var_ok[29][4]={
// 1 голос
{1,2,0,0},{2,2,0,0},
{11,3,0,0},{21,3,0,0},{31,3,0,0},{42,4,1,1},{52,4,2,2},
{111,4,3,1},{121,4,4,1},{131,4,5,1},{211,4,6,2},{221,4,7,2},{231,4,8,2},
// тест
{3,2,0,0},{43,3,0,0},{243,4,9,3},
// 2 голос
{4,3,0,0},{5,3,0,0},
{304,2,0,0},{404,2,0,0},{504,2,0,0},{105,4,10,1},{205,4,11,2},
{344,4,12,1},{354,4,13,1},{444,4,14,1},{454,4,15,2},{544,4,16,2},{554,4,17,2}
};
// коды отправки по RF
char kodModule[][6] = {"00000",
"00010","00010", // чайник вкл-выкл 1 голос
"10000","01000","00100","10000","01000","00100", // огни,лампа,ночник вкл-выкл 1 голос
"00000", // тест
"00010","00010", // чайник вкл-выкл 2 голос
"10000","01000","00100","10000","01000","00100" // огни,лампа,ночник вкл-выкл 2 голос
};

void setup() {

Serial.begin(9600);
mySerial.begin(9600);
pinMode(13, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
// радиомодуль
mySwitch.enableTransmit(10);
mySwitch.setPulseLength(309);
mySwitch.setProtocol(1);
// mySwitch.setRepeatTransmit(15);
// Voice Recognition Module V2
delay(2000);
mySerial.write(0xAA);//избавляемся от текста
mySerial.write(0x37);// и оставляем байты
delay(1000);
mySerial.write(0xAA); // вызываем из памяти
mySerial.write(0x21);// команды 1-ой группы
delay(2000);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
Serial.println("okey");

}

void loop() {

var1=fraza_poz;
if(get_word(fraza_poz)!=var1)
{
switch(fraza_poz)
{
case 0: Serial.print("false=");Serial.println(kod);
kod=0;fraza_poz=1;
break;
case 4: Serial.print("ok=");Serial.println(kod);
ledOn(7);ledOn(8);ledOn(9);
command_UNIEL(id_do);
kod=0;fraza_poz=1;id_do=0;
delay(1000);ledsOff();
break;
case 1: Serial.print("wait=");Serial.println(kod);
kod=0;
break;
default: Serial.print("wait=");Serial.println(kod);
break;
}
new_bank(fraza_poz);
}
if(millis()-millis1>FRAZA_TIME && fraza_poz>1)
{kod=0;fraza_poz=1;new_bank(fraza_poz);}
digitalWrite(13, LOW);
//Serial.print("fraza_poz====");Serial.println(fraza_poz);

}
// получить id слова из банка
int get_word(int bank)
{
while(mySerial.available())
{
com = mySerial.read();// читаем входящие байты и присваиваем значение переменной com
digitalWrite(13, HIGH);
Serial.print("word_id=");Serial.println(com,HEX);
if(com>0x10*bank && com<0x16*bank) { kod=kod+offset[bank]*(int(com & 7)); fraza_poz=0; for(int i=0;i<29;i++) {if(kod==var_ok[i][0]) {fraza_poz=var_ok[i][1]; if(fraza_poz==4) id_do=i+1; } } Serial.print("fraza_poz=");Serial.println(fraza_poz); } } return fraza_poz; } // выбор нового банка Voice Recognition Module V2 int new_bank(int bank) { Serial.print("NEW=");Serial.println(fraza_poz); mySerial.write(0xAA); // вызываем из памяти byte bank1=0x20+bank; mySerial.write(0x20+bank);// команды 1-ой группы delay(1000); mySerial.flush(); ledsOff(); ledOn(6+bank); millis1=millis(); } // отправка команды розетке UNIEL по rf void command_UNIEL(int id) { Serial.print("id=");Serial.print(id-1); Serial.print(" id[3]=");Serial.println(var_ok[id-1][3]); Serial.print(" kod=");Serial.println(var_ok[id-1][2]); if(var_ok[id-1][3]==1) mySwitch.switchOn(kod_group, kodModule[var_ok[id-1][2]]); else if(var_ok[id-1][3]==2) mySwitch.switchOff(kod_group, kodModule[var_ok[id-1][2]]); else if(var_ok[id-1][3]==3) { for(int i=3;i<6;i++) {mySwitch.switchOn(kod_group, kodModule[3]); delay(1000);} for(int i=3;i<6;i++) {mySwitch.switchOff(kod_group, kodModule[3]); delay(1000);} } else ; } // включить светодиод void ledOn(int pin) { digitalWrite(pin,HIGH); } // выключить светодиоды void ledsOff() { digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); }

И видео работы устройства

One comment

  1. I am very happy to get this post and comment here.UOG TADEOCDE MoodleWERI Professional Development CourseCariPac Summer Internship 2012PD894-Comprehensive School Health EducationIncreasing Physical Education at the Elementary Level, S. WardPD894-Infusing Methodology and Assessment into Health ContentCurriculum and Research in Physical EducationNo Real Winners: Preventing Harassment in Educational InstitutionsSection 504 of the Rehabilitation Act of 1973: Support for Students with Disabilitieshttp://www.crests.org/hermesoutlet.phphttp://www.acc.eu.org/hermesoutlet.asphttp://www.tessitura-gr.it/hermescinturereplicahttp://www.snakeseco.ithttp://www.animali.deagostinipassion.it/hermesoutletitaliahttp://www.uogonline.comhttp://www.uogonline.com/moodle/course/view.php?id=9http://www.uogonline.com/moodle/course/view.php?id=6http://www.uogonline.com/moodle/course/view.php?id=15http://www.uogonline.com/moodle/course/view.php?id=14http://www.uogonline.com/moodle/course/view.php?id=12http://www.uogonline.com/moodle/course/view.php?id=11http://www.uogonline.com/moodle/course/view.php?id=6http://www.uogonline.com/moodle/course/view.php?id=5http://www.crests.org/hermesoutlet.phphttp://www.acc.eu.org/hermesoutlet.asphttp://www.tessitura-gr.it/hermescinturereplicahttp://www.snakeseco.ithttp://www.animali.deagostinipassion.it/hermesoutletitaliahttp://www.uogonline.comhttp://www.uogonline.com/moodle/course/view.php?id=9http://www.uogonline.com/moodle/course/view.php?id=6http://www.uogonline.com/moodle/course/view.php?id=15http://www.uogonline.com/moodle/course/view.php?id=14http://www.uogonline.com/moodle/course/view.php?id=12http://www.uogonline.com/moodle/course/view.php?id=11http://www.uogonline.com/moodle/course/view.php?id=6http://www.uogonline.com/moodle/course/view.php?id=5Birkin Bag ReplicaHermes OutletHermes Bags OutletHermes Handbags OutletHermes Birkin OutletHermes Outlet StoreHermes Online OutletCheap Hermes BagsHermes Bags ReplicaHermes Birkin ReplicaHermes Birkin Bag OutletHermes HandbagsHermes KellyHermes WalletsHermes BeltsHermes EvelyneHermes Garden PartyBirkin Bag ReplicaHermes OutletHermes Bags OutletHermes Handbags OutletHermes Birkin OutletHermes Outlet StoreHermes Online OutletCheap Hermes BagsHermes Bags ReplicaHermes Birkin ReplicaHermes Birkin Bag OutletHermes HandbagsHermes KellyHermes WalletsHermes BeltsHermes EvelyneHermes Garden PartyBirkin Bag ReplicaHermes OutletHermes Bags OutletHermes Handbags OutletHermes Birkin OutletHermes Outlet StoreHermes Online OutletCheap Hermes BagsHermes Bags ReplicaHermes Birkin ReplicaHermes Birkin Bag OutletHermes HandbagsHermes KellyHermes WalletsHermes BeltsHermes EvelyneHermes Garden PartyHermes Birkin PrezzoHermes OutletBorse Hermes OutletHermes Outlet ItaliaHermes Handbags OutletHermes Outlet StoreHermes Birkin OutletHermes Kelly OutletHermes Outlet OnlineCheap Hermes BagsReplica Hermes BagsHermes Birkin ReplicaHermes Birkin PrezzoHermes Italia BorseHermes Borse KellyPortafoglio Hermes PrezzoHermes BeltsHermes Handbags OutletHermes OutletHermes Kelly 32 PriceBorse Hermes OutletHermes Borse BirkinHermes Birkin ReplicaHermes Outlet Online Italia[url=http://www.uogonline.com]UOG TADEO[/url][url=http://www.uogonline.com]CDE Moodle[/url][url=http://www.uogonline.com/moodle/course/view.php?id=9]WERI Professional Development Course[/url][url=http://www.uogonline.com/moodle/course/view.php?id=6]CariPac Summer Internship 2012[/url][url=http://www.uogonline.com/moodle/course/view.php?id=15]PD894-Comprehensive School Health Education[/url][url=http://www.uogonline.com/moodle/course/view.php?id=14]Increasing Physical Education at the Elementary Level, S. Ward[/url][url=http://www.uogonline.com/moodle/course/view.php?id=12]PD894-Infusing Methodology and Assessment into Health Content[/url][url=http://www.uogonline.com/moodle/course/view.php?id=11]Curriculum and Research in Physical Education[/url][url=http://www.uogonline.com/moodle/course/view.php?id=7]No Real Winners: Preventing Harassment in Educational Institutions[/url][url=http://www.uogonline.com/moodle/course/view.php?id=5]Section 504 of the Rehabilitation Act of 1973: Support for Students with Disabilities[/url][url=http://www.ayanaspa.com/offer]http://www.crests.org/hermesoutlet.php[/url][url=http://www.ayanaspa.com/offer]http://www.acc.eu.org/hermesoutlet.asp[/url][url=http://www.ayanaspa.com/offer]http://www.tessitura-gr.it/hermescinturereplica[/url][url=http://www.ayanaspa.com/offer]http://www.snakeseco.it[/url][url=http://www.ayanaspa.com/offer]http://www.animali.deagostinipassion.it/hermesoutletitalia[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com/moodle/course/view.php?id=9[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com/moodle/course/view.php?id=6[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com/moodle/course/view.php?id=15[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com/moodle/course/view.php?id=14[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com/moodle/course/view.php?id=12[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com/moodle/course/view.php?id=11[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com/moodle/course/view.php?id=6[/url][url=http://www.ayanaspa.com/offer]http://www.uogonline.com/moodle/course/view.php?id=5[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.crests.org/hermesoutlet.php[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.acc.eu.org/hermesoutlet.asp[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.tessitura-gr.it/hermescinturereplica[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.snakeseco.it[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.animali.deagostinipassion.it/hermesoutletitalia[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com/moodle/course/view.php?id=9[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com/moodle/course/view.php?id=6[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com/moodle/course/view.php?id=15[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com/moodle/course/view.php?id=14[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com/moodle/course/view.php?id=12[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com/moodle/course/view.php?id=11[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com/moodle/course/view.php?id=6[/url][url=http://www.cmhomestayagency.com/parents.html]http://www.uogonline.com/moodle/course/view.php?id=5[/url][url=http://www.crests.org/hermesoutlet.php]Birkin Bag Replica[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Outlet[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Bags Outlet[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Handbags Outlet[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Birkin Outlet[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Outlet Store[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Online Outlet[/url][url=http://www.crests.org/hermesoutlet.php]Cheap Hermes Bags[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Bags Replica[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Birkin Replica[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Birkin Bag Outlet[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Handbags[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Kelly[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Wallets[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Belts[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Evelyne[/url][url=http://www.crests.org/hermesoutlet.php]Hermes Garden Party[/url][url=http://snworks.com/hermesoutlet.asp]Birkin Bag Replica[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Outlet[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Bags Outlet[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Handbags Outlet[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Birkin Outlet[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Outlet Store[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Online Outlet[/url][url=http://snworks.com/hermesoutlet.asp]Cheap Hermes Bags[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Bags Replica[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Birkin Replica[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Birkin Bag Outlet[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Handbags[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Kelly[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Wallets[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Belts[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Evelyne[/url][url=http://snworks.com/hermesoutlet.asp]Hermes Garden Party[/url][url=http://snworks.com/products/hermesoutlet.php]Birkin Bag Replica[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Outlet[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Bags Outlet[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Handbags Outlet[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Birkin Outlet[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Outlet Store[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Online Outlet[/url][url=http://snworks.com/products/hermesoutlet.php]Cheap Hermes Bags[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Bags Replica[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Birkin Replica[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Birkin Bag Outlet[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Handbags[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Kelly[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Wallets[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Belts[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Evelyne[/url][url=http://snworks.com/products/hermesoutlet.php]Hermes Garden Party[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Birkin Prezzo[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Outlet[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Borse Hermes Outlet[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Outlet Italia[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Handbags Outlet[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Outlet Store[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Birkin Outlet[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Kelly Outlet[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Outlet Online[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Cheap Hermes Bags[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Replica Hermes Bags[/url][url=http://www.acc.eu.org/hermesoutlet.asp]Hermes Birkin Replica[/url][url=http://www.tessitura-gr.it/hermescinturereplica]Hermes Birkin Prezzo[/url][url=http://www.tessitura-gr.it/hermescinturereplica]Hermes Italia Borse[/url][url=http://www.tessitura-gr.it/hermescinturereplica]Hermes Borse Kelly[/url][url=http://www.tessitura-gr.it/hermescinturereplica]Portafoglio Hermes Prezzo[/url][url=http://www.snakeseco.it]Hermes Belts[/url][url=http://www.snakeseco.it]Hermes Handbags Outlet[/url][url=http://www.snakeseco.it]Hermes Outlet[/url][url=http://www.snakeseco.it]Hermes Kelly 32 Price[/url][url=http://www.animali.deagostinipassion.it/hermesoutletitalia]Borse Hermes Outlet[/url][url=http://www.animali.deagostinipassion.it/hermesoutletitalia]Hermes Borse Birkin[/url][url=http://www.animali.deagostinipassion.it/hermesoutletitalia]Hermes Birkin Replica[/url][url=http://www.animali.deagostinipassion.it/hermesoutletitalia]Hermes Outlet Online Italia[/url]
    http://www.uogonline.com/moodle/course/view.php?id=12 http://www.ayanaspa.com/offer

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>