Продавцом предоставляются следующие гарантии:
1. Для легковых и внедорожных автомобилей BMW – гарантию на два года на весь автомобиль без ограничения по пробегу, согласно стандартам производителя Автомобиля BMW AG с момента первой регистрации Автомобиля;
Срок гарантии на дополнительное оборудование, которое не было произведено и/или установлено BMW AG, определяется согласно гарантийными условиями производителя и/или фирмы, выполняющей установку соответствующего оборудования;
· Смена владельца автомобиля не влияет на гарантийные обязательства Продавца в отношении Автомобиля, перейдите ремонт бмв.
2. Гарантия недействительна, если:
· Продавец своевременно не сообщает о дефекте или не предоставляет возможность незамедлительно устранить дефект, о котором сообщил;
· Автомобиль был перегружен, неправильно эксплуатировался или использовался для участия в соревнованиях или ралли;
· Автомобиль видоизменен таким образом, который не принимается BMW AG;
· Продавцом не были приняты во внимание инструкции и правила по эксплуатации и обслуживанию Автомобиля.
3. Гарантия недействительна и расходы не покрываются в случае естественного износа Автомобиля, а также при замене комплектующих в случае их естественного износа (шины, свечи, стеклоочистители, тормозные колодки, диски, и т. д. ). Гарантией не покрываются расходы, связанные с периодическим обслуживанием Автомобиля, регулировкой и проверками, а также с затратами или ущербом, возникшим в результате простоя Автомобиля.
4. Гарантия становится недействительной по истечении срока, указанного в 1-м пункте.
*BMW AG сохраняет за собой право вносить изменения в некоторые пункты гарантийных условий. Более подробную информацию Вы можете получить у наших специалистов по вопросам гарантии.
Продавцом предоставляются следующие гарантии:
1. Для легковых и внедорожных автомобилей BMW – гарантию на два года на весь автомобиль без ограничения по пробегу, согласно стандартам производителя Автомобиля BMW AG с момента первой регистрации Автомобиля;
Срок гарантии на дополнительное оборудование, которое не было произведено и/или установлено BMW AG, определяется согласно гарантийными условиями производителя и/или фирмы, выполняющей установку соответствующего оборудования;
· Смена владельца автомобиля не влияет на гарантийные обязательства Продавца в отношении Автомобиля, на сайте ремонт бмв.
2. Гарантия недействительна, если:
· Продавец своевременно не сообщает о дефекте или не предоставляет возможность незамедлительно устранить дефект, о котором сообщил;
· Автомобиль был перегружен, неправильно эксплуатировался или использовался для участия в соревнованиях или ралли;
· Автомобиль видоизменен таким образом, который не принимается BMW AG;
· Продавцом не были приняты во внимание инструкции и правила по эксплуатации и обслуживанию Автомобиля.
3. Гарантия недействительна и расходы не покрываются в случае естественного износа Автомобиля, а также при замене комплектующих в случае их естественного износа (шины, свечи, стеклоочистители, тормозные колодки, диски, и т. д. ). Гарантией не покрываются расходы, связанные с периодическим обслуживанием Автомобиля, регулировкой и проверками, а также с затратами или ущербом, возникшим в результате простоя Автомобиля.
4. Гарантия становится недействительной по истечении срока, указанного в 1-м пункте.
*BMW AG сохраняет за собой право вносить изменения в некоторые пункты гарантийных условий. Более подробную информацию Вы можете получить у наших специалистов по вопросам гарантии.
Наконец-то мне удалось заняться изучением, пожалуй самого популярного в DIY среде GSM модуля — GSM900. Что такое GSM модуль? Это устройство, которое реализует функции сотового телефона. Другими словами, GSM900 позволяет звонить другим абонентам сотовой сети, принимать звонки, отправлять и принимать SMS-сообщения. А еще, разумеется, передавать данные по протоколу GPRS.
Мне этот модуль понадобился для вполне конкретной цели: появился проект системы освещения, управляемой дистанционно. Проще всего эта задача решается SMS-сообщениями: отправил одну sms — свет включился, отправил другую — выключился. Никаких пультов не надо, а телефон есть у всех (даже у бомжей). Собственно, в этой статье я рассмотрю именно этот вариант использования модуля GSM900.
1. Прошивка
Волею судеб, у меня в руках оказался модуль GSM900A. Прочитав первый попавшийся форум про оживление этой штуки, выяснилось, что буква A в названии означает принадлежность модуля к азиатскому региону. А следовательно, работать с нашими операторами он не станет. Уныние ????
Благо, в следующих постах на том же форуме содержалась успокаивающая информация:) Оказалось, что не всё так плохо, и чтобы модуль заработал в нашем регионе, его нужно попросту перепрошить. Этот процесс хорошо описан в блоге нашего соратника Alex-EXE: прошивка «all in one» sim900
Попробую сделать то же самое, но еще более подробно, и с учетом особенностей моего модуля.
Если у вас правильный модуль и прошивка не требуется, можно сразу прыгать на раздел №2.
Инструменты
Итак, для начала подготовим все необходимые инструменты. Во-первых, непосредственно для прошивки потребуется приложение SIM900 Series download Tools Develop, которое можно легко найти в интернете ( хотя бы тут ).
Во-вторых, пригодится и сам файл прошивки 1137B02SIM900M64_ST_ENHANCE, который тоже легко добывается ( я брал тут ).
Наконец, в-третьих, нам нужен будет хороший терминал для экспериментов с модулем. Обычно я использую TeraTerm, но в этот раз его возможностей нехватило (или я не разобрался). Пришлось установить монстра с гениальным названием Terminal .
Подключение к USB-UART мосту
Теперь подключаем линии RX и TX к мосту. В качестве последнего я использовал CP2102. В моем случае, вопреки логике, RX и TX моста соединялись с RX и TX GSM-модуля симметрично (а не крест-накрест, как принято).
Также следует запитать модуль от стабильного и мощного источника, так как пиковый ток на модуле может достигать 2А (якобы). Подойдут 4 аккумулятора типоразмера AA. Полная схема включения выглядит так:
SIM900 | |
CP2102 Gnd | Gnd |
CP2102 +5V | VCC_MCU |
CP2102 RX | SIMR |
CP2102 TX | SIMT |
Внешний источник +5В | VCC5 |
Внешний источник Gnd | Gnd |
RST |
У данной модели нет кнопки сброса, так что для прошивки нам потребуется на пару секунд кинуть контакт RST на землю. Для этого мы пока оставим его висеть в воздухе.
Предварительная настройка модуля
Перед тем, как приступить к прошивке, мы соединимся с модулем, и изменим ему скорость UART. Для этого запустим терминал Terminal, выберем правильный порт, и установим скорость обмена — 9600. После этого жмем «Connect».
Всё общение с модулем происходит посредством AT-команд.
Первое что мы скажем модулю будет самая примитивная AT-команда: «AT». Это такой своеобразный ping, на который модуль должен ответить словом «OK».
AT
Если все прошло успешно, и модуль действительно ответил нам «OK», отправляем команду настройки скорости:
AT+IPR=115200
В конце команды должен стоять служебный символ возврата каретки — CR. В ASCII таблице он имеет код 13 (или 0x0D в шестнадцатеричной системе). Символ подставится автоматически, если вы поставите галку «+CR» напротив строки ввода в нашем терминале. В других терминалах тоже есть подобные настройки.
В ответ на введенную команду снова получим — «OK».
Данная настройка понадобится нам для ускорения процедуры прошивки. В противном случае, как указал в своем блоге Alex-EXE, прошивка займет около часа.
Настройка программы
После того, как все провода воткнуты в нужные места, и модуль подготовлен к прошивке, запускаем приложение SIM900 Series download Tools Develop. Настройка программы состоит всего из нескольких пунктов:
в поле Target указываем целевой чип. Почему-то у меня не вышло залить прошивку на SIM900A, так что я выбрал «SIM900»;
выбираем правильный порт в поле Port;
Baud Rate ставим в 115200;
наконец, указываем файл прошивки в поле Core File (файл с расширением cla).
С настройкой всё.
Прошивка
Теперь выполняем строго и последовательно шесть важных шагов.
Подключаем к модулю питание (наши 4 аккумулятора). Должна загореться красная лампа питания, а лампа статуса должна начать мигать.
Подключаем USB-UART к компьютеру.
Замыкаем провод RST на землю (помним, что все это время он болтался в воздухе).
Нажимаем в программе кнопку Start Download.
Считаем в уме до трех, и отрываем RST от земли.
Ждем 6 минут до завершения прошивки.
Что мы имеем после прошивки
Во-первых, модуль теперь умеет работать с нашими операторами. Во-вторых, мы поставили расширенную прошивку, среди особенностей которой, к примеру, получение координат модуля по сотовым вышкам, работа с электронной почтой и доступ к дополнительным 2.5 Мб памяти.
2. Эксперименты с GSM модулем
Попробуем теперь выполнить разные полезные операции с модулем. Для начала, введем ПИН-код (если он есть):
AT+CPIN=8899
Ответ модуля будет таким:
+CPIN: READY.
После этого получим от модуля немного информации.
AT+GMR – идентификатор прошивки.
AT+GSN – IMEI.
AT+CPAS – состояние (0 – готов к работе, 2 – неизвестно, 3 – входящий звонок, 4 – голосовое соединение).
AT+COPS? – информация об операторе.
Телефонные вызовы
Теперь наберем какой-нибудь номер. Делается это с помощью команды:
ATD+790XXXXXXXX;
Точка с запятой в конце команды очень важна, на забудьте про неё!
Если во время UART сеанса на устройство кто-нибудь позвонит, вернется сообщение:
RING
Ответить на звонок (взять трубку) можно командой:
ATA
Если к модулю подключены наушники и микрофон, то можно пообщаться с удаленным абонентом как по обычному сотовому телефону.
Завершает вызов команда:
ATH0
Отправка SMS
Сначала включим текстовый режим сообщений:
AT+CMGF=1
и установим кодировку:
AT+CSCS= “GSM”
Модуль поддерживает и другие кодировки, более удобные для автоматических систем. Но нам для экспериментов удобнее всего использовать именно GSM режим, в котором телефон задается цифрами, а текст сообщений пишется в ASCII кодировке. Теперь отправим кому-нибудь сообщение:
AT+CMGS=”+79123456789″
А конце команды необходимо добавить сразу два служебных символа: CR и LF. В Terminal это можно сделать галочкой CR=CR+LF, либо вручную добавив в конце строки: AT+CMGS=»+79123456789″&0D&0A
После ввода этой команды, в ответ будет получен символ «>», означающий начало ввода сообщения. Пишем какой-нибудь текст:
Hello World!
В конце сообщения нам нужно будет передать один из двух специальных символов. Чтобы отправить сообщение введем символ из ASCII таблицы с номером 26. Чтобы отменить отправку — символ с номером 27.
В используемом нами терминале для отправки символа по коду можно использовать одно из двух выражений: в шестнадцатеричном формате: $1A, и в десятеричном: #026
Прием SMS
Если во время сеанса на устройство придет SMS, вернется сообщение формата:
+CMTI: “SM”,4
здесь 4 — это номер входящего непрочитанного сообщения.
Чтобы прочитать текст этого сообщения, введем:
AT+CMGR=4
В ответ получим:
+CMGR: “REC READ”,”+790XXXXXXXX”,””,”13/09/21,11:57:46+24″
Hello World!
OK
В общем, все просто. Этого нам вполне достаточно для реализации задуманного. Для более глубокого изучения возможностей GFM900 рекомендую почитать еще одну статью Alex-EXE: at-команды gsm модема sim900
3. Взаимодействие с микроконтроллерами
Вообще, чтобы управлять внешними устройствами вовсе не обязательно спаривать модуль GSM900 с другим микроконтроллером. В этот модуль можно зашить свою программу, которая будет делать всё что угодно со свободными GPIO выводами. Однако, в большинстве готовых плат GPIO не разведены, поэтому для создания прототипа задуманного устройства воспользуемся самой простой Arduino Uno/Nano.
Общаться Arduino и GSM900 будут всё по тому же UART интерфейсу. Для этого соединим эти два устройства по следующей схеме:
GSM900 | GND | VCC_MCU | SIMT | SIMR |
Ардуино Уно | GND | +5V | RX | TX |
Теперь составим программу, которая будет ловить СМС-ки, и зажигать светодиод на ноге №13 на пару секунд. Этим мы имитируем управление неким внешним устройством.
const String spin = “1234”;
const int rel_pin = 13;
String ss = “”;
// Отправка пин-кода
void sendPin(){
String cmd = “AT+CPIN=”+spin+char(0x0D);
Serial.print(cmd);
}
// Включение светодиода на 2 секунды
void receiveSMS(String s){
digitalWrite(rel_pin, HIGH);
delay(2000);
digitalWrite(rel_pin, LOW);
}
// Разбор строки, пришедшей из модуля
void parseString(String src){
bool collect = false;
String s = “”;
for( byte i=0; i<src.length(); i++ ){
if( src[i] == ‘+’ ){
collect = true;
}
else if( src[i] == ‘:’ ){
if( s == “CMTI” )
receiveSMS(s.substring(i+1));
collect = false;
}
else if(collect){
s += src[i];
}
}
}
// Получение строки, пришедшей из модуля
void receiveString(){
static byte b;
if( Serial.available() ){
b = Serial.read();
if( b == 0x0D ){
parseString(ss);
ss = “”;
}
else{
ss += char(b);
}
}
}
void setup() {
pinMode(rel_pin, OUTPUT);
delay(4000); // Дадим время на запуск модуля
Serial.begin(115200);
delay(500);
sendPin();
delay(1000);
}
void loop() {
receiveString();
}
Загружаем программу на Arduino, и тестируем систему. Если всё сделано правильно, отправка SMS сообщения на устройство приведет к включению светодиода на 2 секунды. Разумеется, вместо светодиода можно включать/выключать мощное реле, к которому подключен котел отопления в загородном доме.