Паяльник

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Паяльник » Электроника - Hand Made » Сигнализация с оповещением по GSM-каналу c отправкой СМС


Сигнализация с оповещением по GSM-каналу c отправкой СМС

Сообщений 1 страница 21 из 21

1

Продолжение серии GSM сигнализаций, в этот раз оповещение идет по SMS. Контролируется состояние 3-х каналов, при изменении состояний приходит SMS сообщение с индексами от 1 до 3. Используется телефон SIEMENS ME45. Конструкция та же. Изменена программа микроконтроллера под этот телефон.

http://s2.uploads.ru/t/7THD6.jpg

Схема Протеус (обновленная)

http://s8.uploads.ru/t/jcm5p.jpg http://sa.uploads.ru/t/rRscV.jpg

Плата

http://s3.uploads.ru/t/fA6vY.jpg   http://s3.uploads.ru/t/avJi4.jpg

0

2

Хотелось бы узнать, что там за платка такая с компьютерным разъемом на первой фотографии вверху слева ?

Отредактировано SergeyS (2013-07-26 14:53:27)

0

3

Это самодельный Data-кабель для телефона, пришлось сделать, так как в наше время заводских кабелей на Сom-порт найти уже не удалось. Дата-кабель понадобился для проверки AT-комманд телефона с компьютера через программу SiMoCo - Siemens Mobile Control 2.2.8

0

4

SyrBrandonА можешь скинуть свою схемку в протеусе и исходники кода,если есть?

0

5

Вячеслав написал(а):

SyrBrandonА можешь скинуть свою схемку в протеусе и исходники кода,если есть?

// ПРОЕКТ СОЗДАВАЛСЯ ДЛЯ РАБОТЫ С ТЕЛЕФОНОМ SIEMENS ME45
// Основа PIC16F628
// обновление: 16.04.2014
// Описание
// 3 входа (Датчики: 1-двери, 2,3-влажности или прочее), в зависимости от состояние входа с учетом задержки, приходит СМС с текстом Trevoga 1-3
// RA2, RA3, RA4
// RB0 выход на светодиод 5 Гц, контроль работы охраны, классика жанра
// RB3 выход LED SMS, индикация отправки SMS
// RB4 выход на светодиод LED BEEP или цепляем ПЪЕЗИК BEEP на 5в, пикает при активности входа
// RA0 вход сброс всех входов и счетчиков, от внешней платы считывателя I-Button (Домофоновский ключ)
// RX, TX, GND выход к телефону SIEMENS ME45
// текст набран второпях, просьба сильно не пинать, устройство выполняет свою функцию
// Основан на статье "PIC мк. Эксперимент №14. Модуль USART"(http://diymicro.ru/pic-mk-eksperiment-1 … usart.html)
// все 100% рабочее
// Программирование проводилось с помощью программы IC-Prog 1.05D и JDM программатора, описанного в журнале Радио,2004, №2, с.51 (А. Долгий - Программаторы и программирование микроконтроллеров).
// Осцилятор: HS Конфигурация: 3F0Ah

#include <stdio.h>

#include <htc.h>

#define _XTAL_FREQ 4000000

#include "usart.h"
#include <delay.c>

// __CONFIG(LVPDIS & WDTDIS & MCLREN & UNPROTECT & HS);

unsigned int CR;
unsigned int EN;
void pausesec(unsigned int pause_val){
unsigned int v;
// Цикл паузы (pause_val) сек
for ( v = 0; v < pause_val; v++) {
  // Подпрограмма задержки
DelayMs(1000);            }
}
void
MySMS(unsigned int sms_num)
{
RB3=1;    // Индикация LED SMS
printf("AT+CMGS=21"); // Набор команды SMS-send
// Из мануала по AT-командам Siemens
// If PDU mode (+CMGF=0)
// AT+CMGS=<length><CR>PDU is given<ctrl-Z/ESC>
// <length> - Length of PDU

EN=0x1A; // Код <ctrl-Z>
CR=0x0D; // Код CR
putch(CR);
DelayMs(100);
printf("07919730071111F111000B8198***80879F6000000085479D9FE3E876"); //57 символов Набор содержимого SMS-send в PDU

// Изменяем под себя http://twit88.com/home/utility/sms-pdu-encode-decode

// Закодирован мой номер телефона 7906******* + фраза Trevoga
// Далее добавляем к фразе индекс
if (sms_num==1) { printf("3"); } // send 1  SMS:Trevoga1 //58 символов
if (sms_num==2) { printf("5"); } // send 2  SMS:Trevoga2
if (sms_num==3) { printf("7"); } // send 3  SMS:Trevoga3
putch(EN);
putch(CR);
DelayMs(100);
}

void main(void){

unsigned char input;
unsigned char i;
unsigned char time;
unsigned int TR1,TR2,TR3;
unsigned char activ2,activ3;

TRISB0 = 0b00000000;  // Настройка RB0 на вывод данных
TRISB3 = 0b00000000;  // Настройка RB3 на вывод данных
TRISB4 = 0b00000000;  // Настройка RB4 на вывод данных

TRISA = 0b00111111;   // Настройка (RA0-RA4)+ и (RA5)- на ввод данных

// использование ножки 4 контроллера (RA5) не получилось по причине
// что она же является MCLR, сброс

PORTA = 0b11000000 ;

CMCON = 0x07; // отключение компараторов
CR=0x0D; // Код CR

INTCON=0;       //выключаем прерывания

init_comms(); // инициализируем usart
DelayMs(50);
                // инициализируем модем телефона взято из лога пакетов SiMoCo
printf("ATE0"); // Вывод строки на UART
putch(CR);      // Вывод байт на UART
DelayMs(50);
printf("ATE0");
putch(CR);
DelayMs(100);
printf("ATE0");
putch(CR);
DelayMs(100);

// Mycall();

// Бесконечный цикл

while(1){
// Сброс Индикатора LED Отправка SMS
RB3=0;
//Канал 1 активен
// Конечник входной двери
if(RA2==1){TR1=TR1+1;RB4=1;}      // beep ON пикаем пока активен 1 канал
  if(TR1>7){TR1=0;MySMS(1);}       // Проверка на ложность срабатывания для 1 канала
                                   // Если 7 тактов активен, то SMS
//Канал 2 активен
// Датчик влажности
if((RA3==1)&&(activ2==0)){TR2=TR2+1;}
  if(TR2==5){TR2=TR2+1;MySMS(2);}       // Проверка на ложность срабатывания для 2 канала
                                        // Если 5 тактов активен, то SMS
  if(TR2==20){activ2=1;TR2=0;MySMS(2);} // Если 20 тактов активен, то SMS и вход блокируется до сброса

//Канал 3 активен
// Датчик влажности
if((RA4==1)&&(activ3==0)){TR3=TR3+1;}
  if(TR3==5){TR3=TR3+1;MySMS(3);}       // Проверка на ложность срабатывания для 3 канала
                                        // Если 5 тактов активен, то SMS
  if(TR3==20){activ3=1;TR3=0;MySMS(3);} // Если 20 тактов активен, то SMS и вход блокируется до сброса

//Канал сброс активен, от внешнего блока I-Button ключа
if(RA0==1){TR1=0;TR2=0;TR3=0;activ2=0;activ3=0;RB4=0;pausesec(20);} // Сброс счетчиков проверки на ложность для всех каналов
                                          // Все каналы в исходное состояние
                                          // Длинная пауза 20 сек, для открывания двери без сигнала

// Мигаем светодиодом LED Контроль работы
RB0=0;
// Подпрограмма задержки
DelayMs(100);
RB4=0;  // beep OFF
RB0=1;
// Цикл паузы 200 мс
for ( i = 0; i < 2; i++) {
  // Подпрограмма задержки
DelayMs(100);

}
}
}

протеус выложу как доберусь до файла

0

6

Протеус+hex

http://f-bit.ru/363850

0

7

Хорошая сигнализация, как раз для гаража пойдет. А можно что то подобное на Arduino сделать, а то с пиками не охота разбираться ?

0

8

В какой программе можно откомпилировать этот код ? Какой лучше использовать компилятор. Где взять эти библиотеки:
#include <stdio.h>
#include <htc.h>
#include "usart.h"
#include <delay.c>

0

9

Добрый день.

Итак:

Для компиляции необходимо установить
1. MPLAB Tools v7.42 MPASM (версии могут отличаться, пишу ту которая у меня)
2. HI-TECH_PICC_v9.50_PL2 offline
Открыть как проект
Настроить в MPLAB:
Project -> Select language Toolsuite...
Выбрать
HI-TECH PICC Toolsuite
C:\Program Files\HI-TECH Software\PICC\9.50\BIN\PICC.EXE

На потребуются файлы библиотек: usart.h, usart.c, delay.c, delay.h

Скачиваем здесь, это основа с которой все началось: http://diymicro.ru/pic-mk-eksperiment-1 … usart.html

В файле usart.h изменить строку:
#define BAUD 19200 // для нашего телефона

Библиотеки уже присутсвуют в компиляторе: stdio.h, htc.h

0

10

Umnik написал(а):

Хорошая сигнализация, как раз для гаража пойдет. А можно что то подобное на Arduino сделать, а то с пиками не охота разбираться ?

Код:
/* ПРОЕКТ СИГНАЛИЗИЦИИ ПЕРЕЛОЖЕННЫЙ НА ARDUINO UNO R3
/* 1 вход на DIGITAL 8 ARDUINO
/* 1 выход кабель телефона COM порт TX,RX ARDUINO
/* При наличии высокого уровня на входе1, загорается светодиод LED13
/* и производится отправка SMS сообщения, затем светодиод гаснет

ТЕЛЕФОН SIEMENS ME45
pin
1 GND
2 
3 (+5V зарядка от 7805) не обязательно
4 
5 к TX Data *1K + 0pin RX Arduino
6 к RX Data *GND+3K+*+3K + 1pin TX Arduino
7
8
9
10
11
12

*/
int ledPin = 13; // Светодиод LED13 Arduino
int buttonPin1 = 8; // Вход1 8 ARDUINO * 10K резистор подключен к GND
int buttonState1 = 0; // Состояние входа1

void setup () {        // Функция setup () вызывается при старте программы.
  Serial.begin(19200);// Открыть порт (19200)-это скорость работы порта телефона 19200 бит (бод)  
  Serial.println("ATE0");
  Serial.write(0x0D); //CR
  delay(100);
  Serial.println("ATE0");
  Serial.write(0x0D); //CR
  delay(100);
  Serial.println("ATE0");
  Serial.write(0x0D); //CR
  delay(100); 
  pinMode(buttonPin1, INPUT); // Инициализация входа1 8 ARDUINO  
  pinMode(ledPin, OUTPUT); // Инициализация выхода LED13
}

void send_sms()
{ 
  Serial.println("AT+CMGS=21");
  delay(2000);
  Serial.print("07919730071111F111000B8198***80879F6000000085479D9FE3E8763"); // Замазал звездочками *** чтобы СМС больше не приходили на мой номер =)))
  // SMS с текстом Trevoga1
  Serial.write(0x1A); // Ctrl+Z
  Serial.write(0x0D); //CR
  Serial.write(0x0A); //LF
  delay(1500);
  }
 
void loop(){ 
 
   buttonState1 = digitalRead(buttonPin1);
  if (buttonState1 == HIGH) {    // Если активен вход1   
    digitalWrite(ledPin, HIGH); // Зажигаем светодиод
    send_sms();      // Отправка SMS
  } else { digitalWrite(ledPin, LOW); } // Гасим светодиод
  
  delay(1000); // Задержка  1 секунда
}

http://s8.uploads.ru/t/RToeq.jpg

0

11

SyrBrandon, выложи пожалуйста все библиотеки, необходимые для проекта на PIC

Отредактировано autostar (2014-02-16 22:08:05)

0

12

Ответил в личку.

0

13

SyrBrandon, а какая схема подключения к телефону ?

0

14

SyrBrandon
А можно и мне все библиотеки для PIC ? А то чет я тоже не могу найти все  :(

Отредактировано sepbiy (2014-08-10 22:13:57)

0

15

sepbiy написал(а):

SyrBrandon
А можно и мне все библиотеки для PIC ? А то чет я тоже не могу найти все 

Отредактировано sepbiy (2014-08-10 22:13:57)

Здесь все библиотеки необходимые для компиляции проекта http://f-bit.ru/495838

Umnik, Схему разместил в первом посте

0

16

Как можно проверить, проходят AT команды в телефон или нет ?

Отредактировано Umnik (2014-09-11 17:11:30)

0

17

Можно конечно, для этого подключаем телефон к COM-порту компьютера через преобразователь (на фотках в первом посте, платка с компьютерным разъемом):

Скорее всего преобразователь придется собрать самому потому как такое уже наверно не найти, разьве что в музее ))

http://se.uploads.ru/t/sqYox.jpg

Питание преобразователя осуществляется по линиям COM-порта

Устанавливаем и запускаем программу Siemens Mobile Control 2.2.9 на компьютере

Соединяемся... Ждем...

Если все нормально с портами на компе, то программа коннектится к телефону

переходим на вкладку AT Term

здесь мы видим логи общения телефона с компом

http://se.uploads.ru/t/TIGmu.jpg

Задаем AT-команды, жмем Send, телефон на них отвечает (здесь для Siemens ME45) и выполняет различные действия
Например:
ATE0   -> OK
AT+CGMM    -> ME45
AT+CGSN      -> 350000531300--8

Чтобы узнать как будет выглядеть ваше сообщение в виде AT команд, переходим на вкладку Sent SMS

Пишем номер и текст сообщения, жмем Send

http://se.uploads.ru/t/mwSV9.jpg

Sms-ка отправится адресату, а вы можете посмотреть как она выглядит в виде AT команд на вкладке AT Term.

Списываем команду отправки из логов
Например, у нас получилось так:

Sent: AT+CMGS=21
Sent: 07919730071111F111000B8198608---79F6000000085479D9FE3E8763[]
+CMGS: 17
OK

Символ «квадратик» в конце строки, означает ввод строки. Код символа 13.
Эта закодированная PDU строка содержит информацию о номере адресата, номер СМС центра, и текст СМС. Для сим-карты другого оператора строка будет другой.

Можно раскодировать и закодировать здесь
http://twit88.com/home/utility/sms-pdu-encode-decode

SMSC#+79037011111
Sender:89068*80***
TP_PID:00
TP_DCS:00
TP_DCS-popis:Uncompressed Text
class:0
Alphabet:Default

Trevoga1
Length:8

Вообщем то и все по этому вопросу. Ничего сложного.

P.S.
Можно воспользоваться готовым USB-TTL адаптером, перемычку ставим на 3.3в

http://s3.uploads.ru/t/WMNfR.jpg

0

18

Спасибо большущее за развернутый ответ, кажется вот типерь разобрался че к чему... )))

0

19

.....//Канал сброс активен
if(RA0==1){TR1=0;TR2=0;TR3=0;activ2=0;activ3=0;DelayMs(5000);} // Сброс счетчиков проверки на ложность для всех каналов, от внешнего блока I-Button ключа

Я так понимаю, это просто пауза, чтобы на время отключить сигнализацию ? По-моему она маловата, даже чтобы выйти и закрыть за собой дверь. Подскажите, что за модуль I-Button ?

Отредактировано autostar (2014-11-05 19:26:39)

0

20

Да по-сути это кнопка "Пауза"... Время добавил, код подправил:

Код:
while(1){
// Сброс Индикатора LED Отправка SMS
RB3=0;

if (pausec==0) {


//Канал 1 активен
// Конечник входной двери
 if(RA2==1){TR1=TR1+1;RB4=1;}      // beep ON пикаем пока активен 1 канал
  if(TR1>7){TR1=0;MySMS(1);}       // Проверка на ложность срабатывания для 1 канала
                                   // Если 7 тактов активен, то SMS
//Канал 2 активен
// Датчик влажности 
 if((RA3==1)&&(activ2==0)){TR2=TR2+1;RB4=1;}  // beep ON пикаем пока активен 2 канал
  if(TR2==5){TR2=TR2+1;MySMS(2);}       // Проверка на ложность срабатывания для 2 канала
                                        // Если 5 тактов активен, то SMS
  if(TR2==20){activ2=1;TR2=0;MySMS(2);} // Если 20 тактов активен, то SMS и вход блокируется до сброса

//Канал 3 активен
// Датчик влажности 
 if((RA4==1)&&(activ3==0)){TR3=TR3+1;RB4=1;}  // beep ON пикаем пока активен 3 канал
  if(TR3==5){TR3=TR3+1;MySMS(3);}       // Проверка на ложность срабатывания для 3 канала
                                        // Если 5 тактов активен, то SMS
  if(TR3==20){activ3=1;TR3=0;MySMS(3);} // Если 20 тактов активен, то SMS и вход блокируется до сброса

//Канал сброс активен, от внешнего блока I-Button ключа
 if(RA0==1){TR1=0;TR2=0;TR3=0;activ2=0;activ3=0;RB4=0; pausec=1;TR4=0; }
                                                                 // Сброс счетчиков проверки на ложность для всех каналов
                                                                 // Все каналы в исходное состояние
                                                                 // Длинная пауза для открывания двери без сигнала
                                                                 // Чтобы писк не раздражал для проведения различных работ
                                                                 // Например, сходить списать показания счетчика в подъезде
                                                                 // Сходить до почтового ящика
                                                                 // Или же вы замешкались при открывании второй двери
                   }
 
if(pausec==1){TR4=TR4+1;RB3=1;} // Индикация LED SMS - как пауза
   if(TR4>10){pausec=0;TR4=0;RB3=0; }  // Сброс счетчика паузы, Тушим LED SMS
// Мигаем светодиодом LED Контроль работы
RB0=0;  // выключаем LED контр.
// Подпрограмма задержки
 DelayMs(100);
RB4=0;  // beep OFF
RB0=1;  // включаем LED контр.
// Цикл паузы 200 мс
for ( i = 0; i < 2; i++) {
  // Подпрограмма задержки
 DelayMs(100);

}
}
}

I-Button это отдельный блок, считывателя домофоновского ключа. При совпадении вашего кода ключа записанным в память блока, включается реле на определенное время и коммутирует цепь "ПАУЗЫ"  блока сигнализации. Информация о блоке http://icdevelop.narod.ru/project1/index.htm

0

21

I-Button это хорошо, но для меня пока это сложно, временно сделаю скрытый геркон, а включать буду магнитиком ))

0


Вы здесь » Паяльник » Электроника - Hand Made » Сигнализация с оповещением по GSM-каналу c отправкой СМС


создать форум