Решил поделиться тут разработкой под Android часы ZGPAX S5 и платой радио реле
MC3302. Она управляет по WIFI в локальной сети или по 2G из интернет радио-реле
MC3302 на 433Mhz, а также получает с него температуру.
Часы практически всегда с собой поэтому и решил использовать их в качестве пульта управления. Если кто не видел вот фото:
Так как планировалось использовать это для Умного Дома то была выбрана и реализована следующая схема. Имеем компьютер который подключен к интернет и домашней WIFI сети.Этот комп управляет всей домашней автоматикой.В его USB порт вставлен адаптер USB HOST
MC3101
По сути это мост между COM портом компьютера и радио-сетью на 433Mhz. Его задача все что придет в радио сеть отправить в компьютер. А что придет по WIFI сети или LAN в радио сеть.
В качестве радио-реле используется модуль
MC3302
На нем установлен радио-модуль RFM12-B, реле 220V/5A и датчик температуры DS18B20.
Каждое реле имеет свой адрес который можно изменить в конфигураторе. Управляется радио-реле простыми командами их всего три.Вот пример для реле с номером 5:
!SetR1_5 — включить реле — ответ !RELEON
!SetR0_5 — выключить реле — ответ !RELEOFF
!GetC_5 — получить температуру — !TEMP + 23
Эти команды можно подать через плату MC3101 любым терминалом для COM порта на скорости 9600 бод.
Для для того чтобы можно было с Aндроид часов подавать по WIFI или 2G команды на радио реле, был под PC написан редиректор. Его задача передавать данные которые пришли по LAN или WIFI на COM порт компа, а все что пришло по радио-сети 433MHz(ответы радио-реле) на часы. Все передается по UDP на порт 7777.
Тут все просто:
Вот прием данных в СОМ порт от радио-реле:
void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
{
//событие по приходу символа
ComPort1->ReadStr(sym,Count);
if (sym =="!")//признак начала сообщения
{ Buffer="";sym="";}
else
;
Buffer = Buffer + sym;
// пришла стандартная команда отправим в UDP
if (sym == "\r")
{
Buffer="!"+Buffer+"\r";
lblCom->Caption=Buffer;
NMUDP1->SendBuffer(Buffer.c_str(),Buffer.Length(),Buffer.Length());
}
}
Вот отправка в по UDP в сеть:
void __fastcall TForm1::NMUDP1DataReceived(TComponent *Sender,
int NumberBytes, AnsiString FromIP, int Port)
{//пришли данные по UDP отправим из в RS232 (433Mhz)
char* Buf=new char[NumberBytes];
//Выставляем порт и IP куда надо слать
NMUDP1->RemoteHost=IP;
NMUDP1->RemotePort=PORT;
NMUDP1->ReadBuffer(Buf,NumberBytes,NumberBytes);
IP=FromIP;
PORT=Port;
ComPort1->Write(Buf,NumberBytes);
}
Таким образом радио-реле (а их может быть много или другие радио датчики) получаются доступны по по сети. И могут управляться и получать данные как с других компьютеров так и по WIFI со смартфонов и др.
Вот внешний вид программы редиректора:
Если в качестве управляющего устройства использовать не компьютер, а например планшет с Андроид то система будет более компактной.Планирую написать вариант редиректора COM UDP под Андроид.
Далее делаем программу под Андроид часы.
Это обычный UDP клиент задача которого при нажатии кнопки отослать команду, а по приему ответа отобразить его и все.
Вот внешний вид программы на Андроид часах:
Вот как это на часах смотрится:
Ну и небольшое видио как работает. Сорри за качество снимал с телефона неудобно одной рукой держать его, а другой нажимать на кнопки.
Видео работы