Название или цель проекта. Должно вкратце отражать суть задания: что должна делать разрабатываемая программа или устройство на её основе.




Устройство должно измерять расстояние до объекта с помощью ультразвукового датчика HC-SR04 (до 4-х метров) и температуру с помощью цифрового датчика температуры DS18B20 и передавать на сотовый телефон владельца. Передача производится по запросу с сотового телефона владельца: отправляется СМС «R» - происходит передача расстояния в см, если «Т» - производится передача температуры. Управляется микроконтроллером PIC16F628. Для передачи данных по GSM каналу используется модуль Sim 900. По команде через СМС модуль Sim 900 уходит в режим сна. При этом отключается питание всех устройств по команде с микроконтроллера. Далее микроконтроллер переходит в режим низкого энергопотребления. Когда отправляется СМС с телефона владельца Sim 900 принимает принимает звонок и происходит переход микроконтроллерв в активный режим и он подает питание на датчики ультразвука и температуры. Происходит считывание данных с датчиков и высылается СМС с результатами расстояния в см и температуры в градусах.

 

 

Предмет разработки.

Мы хочем получить от вас в качестве результата:

Программу для микроконтроллера и схему устройства в электронном виде.

 

Чётко укажите границы разрабатываемой части системы:

Разработать полностью схему такого устройства на основе предложенной нами..

 

Язык программирования: микроСи

- микроконтроллер: PIC16F628A (если не хватает у него ресурсов то по согласованию с Вами другой из семейства PIC).

- Simмодуль: Sim 900

- измеритель дальности Ультразвуковой датчик HC-SR04

-Цифровой датчик температуры DS18B20

 

• Какие сигналы от каких устройств и в каком виде получает микроконтроллер или устройство (АЦП, датчики, другие контроллеры и т. п.).

1. Микроконтроллер PIC16F628A получает значения температуры от датчика

температуры DS18B20 в цифровом виде, согласно алгоритму работы DS18B20. Его уникальный номер мы можем определить и ввести в программу.

2. Микроконтроллер PIC16F628A вычисляет расстояния до объекта по сигналам с ультразвукового датчикаHC-SR04 (программа вычисления расстояния имеется в нашей программе).

 

• Какие сигналы формирует микроконтроллер или устройство (управляет какими-то другими устройствами и т. п.).

1. Микроконтроллер PIC16F628A передает полученные данные посредством АТ команд сим модулю (Sim 900). Simмодуль отправляет их в виде СМС на телефон владельца, записанный в его памяти.

• Связывается ли микроконтроллер (устройство) с ЭВМ. Если да, то каким образом (по какому протоколу) и какая программа будет с ним взаимодействовать.

1. Должно быть предусмотрена возможность замены прошивки микроконтроллера через интерфейс USB (бутлоудер).

2. Просмотр действий микроконтроллера (логов). По какой то причине устройство перестает функционировать: ошибка программы, ошибка датчиков и отказ в работе Sim 900.

 

• Характеристики питания микроконтроллера или устройства (напряжение питания контроллера, предельный потребляемый ток, нужен ли энергосберегающий режим, и т. п.).

Питание на микроконтроллер стандартное 5 В, Sim 900 3,8 В. Минимальный потребляемый ток в режиме сна сим модуля и контроллера. Все остальные потребители отключены командой микроконтроллера через транзисторные ключи. Ток в режиме ожидания звонка или СМС единицы мА (до 10 мА).

Режим энергосбережения: МК уходит в режим сна, Simмодуль также должен уходит в режим сна. Устройство рассчитано на долгосрочную работу (месяцы) от аккумулятора.

 

 

• Алгоритм работы программы или устройства (что конкретно в какой момент она должна делать и т. п.). Например, можно составить и приложить блок-схему, либо описать алгоритм словесно.

Ниже на рисунке представлен алгоритм работы программы без датчика температуры. Т.е. при входящем вызове микроконтроллер принимает сообщение «RING» от sim модуля и дает команду отклонить вызов и отправить СМС с результатом). (версия прошивки 1 есть в черновом варианте в папке «прошивка»)

Алгоритм работы программы

 

Алгоритм работы программы

1. Начальная настройка: Включается питание на устройство. Микроконтроллер (МК) включает simмодуль (можно включить вручную нажатием кнопки PowerKey).

Simмодуль находит сеть и ждет звонка. Запоминает номер телефона, с которого пришел звонок и записывает в память микроконтроллера.

На этот номер в дальнейшем устройство будет отправлять СМС с результатами измерений дальности и температуры при получении вызова или СМС на номер сим - карты устройства.

Если придет СМС с телефона владельца «sleep»МК должен отправитьSIMмодуль в режим энергосбережения.

Через 1 мин МК должен перейти в режим энергосбережения.

Действия устройства при получении с телефона владельца:

1. При входящем звонке Sim 900 просыпается и по ТХ отправляет сигнал микроконтроллеру и он переходит в активный режим и дает команду Simмодулю отклонить вызов. Затем происходит измерение расстояния и температуры и их передача в виде СМС на телефон владельца.

2. При приходе СМС «Т » МК опрашивает датчик температуры и отправляет СМС с результатом в виде «Т=ххх град», если не пришел ответ с датчика, отправить смс «ET» (ErrorTошибка датчика)

3. При приходе СМС «R »«r »МК замеряет расстояние и отправляет СМС с результатом в виде «R=хххсм »если не пришел ответ с датчика, отправить СМС«ER»(ErrorRошибка датчика)

МК должен cпрашивать у Sim 900 каждые 60 мин о статусе сети. Если сеть отсутствует то сделать перезагрузку (файл «Sim900.pdf» 34стр)или по UART.

Сделать возможность записывать в память МК последние 50 действий. Просмотр действий с помощью интерфейса USB.

Записать:

- приход СМС T и R. Отправлен ли СМС с результатом(да/нет)

- опрос о статусе сети

- опрос получен ли ответ с датчиков.

Блок схема устройства.

Схему(diptrace)приложена. В схеме отсутствуют цепи по powerkey иnreset

 


 

Письма от Кумакова

 

1. 4 апреля 2017

 

Мы переставили в ТЗ пункты (отмечены голубым): сначала происходит прием трехзначного числа затем вычисляется обратное расстояние.

Пример: заданная глубина емкости (трехзначное число пусть 200 см) минус измеренное расстояние датчиком НС-SR-04 до поверхности воды. Значит обратное расстояние это толщина слоя воды. Это значение мы обозначили "obratnoe R". Оно должно передаваться на записанный номер телефона в виде смс obratnoeR = *** sm».

 

Полученное в виде смс трехзначное число надо записать в энергонезависимую память. Если емкость с другой глубиной можно повторно отправить трехзначное число и опять оно обновится в той же ячейке. Чтобы выполнять затем вычитание и найти толщину воды, т.е. обратное расстояние.

 

Так используется это трехзначное число. Вместо Inver мы обозначили - obratnoe - чтобы было понятно и нам и вам.

 

Номер телефона пусть сохраняется в энергонезависимой памяти и каждый раз при входящем звонке обновляется как есть в ТЗ.

 

На вопрос если после включения питания номер ещё не сохранён, а пришла смс с запросом?

 

Пусть отправляет на сохраненный до этого номер (он же энергонезависим).

 

Пусть пока будет трехзначное число, ведь мы потом сами сможем при необходимости поменять в программе на четырехзначное число (например ввести 12м (1200 см).

 

 

2. 19 июня 2017

 

В нашем техническом задании обозначена цель - насколько возможно низкое энергопотребление в ждущем режиме (пункт 2 "з").

 

В прототипе схемы, который Вы присылали, используются два линейных регулятора напряжения (U2 и U3). Каждый такой регулятор потребляет ток сам по себе, что является неэкономичным.

 

Модуль SIM900D требует напряжение питания 3.2 до 4.8 Вольт.

Датчик HC-SR04, хотя по документации требует 5 Вольт, на практике нормально работает при напряжении от 3.4 Вольт, при этом его показания не искажаются (проверили экспериментально на двух образцах).

Датчик DS18B20 требует от 3.0 до 5.5 Вольт.

Микроконтроллер PIC16F628A требует от 3.0 до 5.5 Вольт.

 

Таким образом, всю схему можно запитать от одного регулятора с выходным напряжением 4.8 Вольт. Во избежание случайного перенапряжения вследствие разброса параметров лучше взять 4.6 Вольт. Однако дальнейшее снижение не рекомендуется, так как SIM900D в моменты передачи может создавать просадки напряжения.

 

Мы проработали схему узла питания с выходным напряжением 4.6 Вольта, которая потребляет на собственную работу всего 1.5 мА. Дополнительно SIM900D в ждущем режиме ест около 1 мА. Остальное можно не учитывать. Таким образом, в ждущем режиме потребление всей схемы будет около 2.5 мА.

Однако особенностью схемы является то, что на входе она требует не менее 8 Вольт.

Вы можете использовать, например, стандартные 9-Вольтовые или 12-Вольтовые батареи или аккумуляторы. При токе поторебления 2.5 мА одного ампер-часа заряда аккумулятора должно хватать на 400 часов работы. Аккумулятор с реальной ёмкостью 60 А*ч проработает 24000 часов, то есть 1000 дней (следует учесть, что на практике это недостижимо, так как фактическая их ёмкость ниже, а также имеет место саморазряд).

 

Поэтому мы предлагаем скорректировать ТЗ (пункт 2 "з") в той части, что должен использоваться аккумулятор с фактическим напряжением не менее 8 Вольт.

 

Если это сделать невозможно и должен использоваться аккумулятор именно 5 Вольт, мы можем использовать другой регулятор напряжения с малым падением (разностью входного и выходного напряжений). Однако ток потребления таких стабилизаторов обычно составляет 20-30 мА, то есть разряд батареи будет идти в 10 раз быстрее - так, что все остальные меры по экономии заряда теряют смысл. При этом входное напряжение всё равно должно быть не менее 4.5-5 Вольт, работа при 3.5 Вольт всё равно будет невозможной.

 

Ждём Вашего решения - готовы Вы скорректировать ТЗ и обеспечить питание не менее 8 Вольт?

 

3. 6 октября 2017

 

Программирование идёт успешно, модуль принимает и отправляет смс при управлении через COM-порт.

 

У меня предложение.

 

Сейчас в ТЗ указано, что номер, на который отправляются смс с результатом, запоминается, когда с него звонят. При этом вызов отклоняется, а номер запоминается.

В сети всякое бывает периодически: ошиблись номером, или этот номер ранее был у другого человека. В последнем случае на него будут, вероятно, названивать многократно, пытаясь дозвониться. При таких случайных звонках настройки прибора будут сбиваться.

Я предлагаю сделать иначе: все звонки прибором игнорируются, а выбор номера, на который будут отправляться смс с результатом, производится отправкой с него смс с текстом "SetThisNumber".

Тогда сбить настройки случайно будет невозможно.

 

 

4. 9 октября 2017

 

Всё железо работает с программой, но есть пара замечаний.

 

1. Датчики расстояния HC-SR04 оказались ненадёжными. Очевидно, это штучка для радиолюбителей, а не для промышленного применения. Хотя расстояние он измеряет довольно точно (когда ему это удаётся), но постоянно при измерении он произвольно показывает то расстояние 5-6 см, хотя перед ним ничего нет, то, наоборот, бесконечность, хотя перед ним объект. В первом случае, как мне кажется, приёмник ловит звук передатчика по плате, а не по воздуху. Во втором случае это явный дефект, выходные сигналы не работают так как заявлено в документации.

После дня танцев с бубнами над ним я написал алгоритм, который делает несколько попыток и отсеивает все эти недостоверные измерения. Работает сейчас достаточно стабильно. Однако Вам на Вашем объекте придётся обеспечить, чтобы этот датчик никогда не находился ближе чем в 10-12 см от контролируемой поверхности (как я понимаю, это уровень жидкости). Иначе МК будет показывать ошибку.

 

5. В схеме, которую Вы прислали, на сигнале STATUS модуля SIM900D был нарисован светодиод. Поэтому я сделал также. Однако в ходе программирования выяснилось, что он горит постоянно, даже когда SIM900D находится в спящем режиме. То есть, он совершенно неинформативен (даже как индикатор питания он не нужен, так как у модуля мигает вторая лампочка - NETLIGHT).

В принципе, он никому не мешает, но он ест ток, а у нас стоит задача максимального энергосбережения. Так что я предлагаю его выпаять

 

 

6. 19 октября 2017

 

Я занимаюсь сейчас только Вашим проектом, просто возникли сложности, а именно то, что у МК кончилась память, и мне приходится сильно оптимизировать программу для того чтобы её туда втиснуть. И я не уверен, что втиснуть получится всё. Однако все датчики и смс-функции работают, так что дело уже под конец.

 

По поводу некоторых изменений. У нас предусмотрено при получении смс с числом задавать глубину для вычисления обратного расстояния. Однако вскрылся один момент. Если смс набрано русскими буквами (а это как правило так), то при получении в текстовом виде оно перекодируется в цифры. И так как подобные смс приходят с произвольного номера и имеют произвольное содержимое (например, реклама от оператора связи, сообщения о пропущенных вызовах и пр.), это может приводить к спонтанному перезаданию глубины, о котором даже никуда не придёт никакого оповещения. Я поэтому сделал немного иначе. Для задания глубины отправить прибору следует не просто число (например, "200"), а команду "Glubina 200". А после корректного перезадания глубины прибор отправляет на сохранённый номер сообщение "Glubina = 200 sm". Оно служит не только как оповещение, но и как возможность убедиться, что новое значение глубины корректно сохранилось в память.

Я настоятельно рекомендую не отказываться от этого изменения. Если же Вы категорически против, сообщите.

 

Указанный текст с глубиной можно также добавить в смс, отправляемое по команде "SetThisNumber". Это позволило бы узнавать установки глубины без их изменения.

Сделать это несложно и практически нисколько ресурсов МК не отнимет. Так что жду Вашего мнения на этот счёт.

 

 

7. 23 октября 2017

 

Программа в целом завершена, всё втиснулось и работает.

 

По изменениям в ТЗ касательно программы:

 

Уже сообщал:

 

1. Пункт 3 "а": звонок заменён на смс-сообщение "SetThisNumber". В ответной смс выдаются текущие температура, расстояние, глубина, обратное расстояние, а при наличии сигнала тревоги также и сообщение "Svetanet".

Добавлю, что звонок на прибор можно использовать для контроля его нахождения в сети. Прибор никак не реагирует на звонок, не отвечает и не сбрасывает. Поэтому гудки будут свидетельствовать, что прибор в сети и готов принимать смс.

 

2. Пункт 3 "б": смс с трёхзначным числом заменено на смс "Glubina NNN".

 

Новые изменения:

 

3. Пункт 3 "в": введён минимальный период отправки смс "Svetanet", чтобы если сигнал на входе "тревога" дёргается, смс не отправлялись непрерывно. Период задаётся в программе константой и может меняться от 1 до 20 минут. Сейчас стоит 5 минут. Если лучше установить другое значение периода, сообщите какое.

Стоит заметить, что прибор реагирует на любой обратный фронт сигнала "Тревога". Антидребезговой защиты нет, минимальная длительность сигнала "Тревога" не контролируется.

 

4. Пункт 3 "г": всё реализовано иначе ввиду аппаратных особенностей. Оба датчика полностью отключаются сразу после измерений. Модуль SIM900 переходит в спящий режим автоматически через 5 секунд после отсутствия связи с МК (Sleepmode 2, ток потребления модуля в этом режиме порядка 1 мА). МК не переходит в спящий режим совсем, так как иначе он не сможет принимать сообщения от SIM900D без потерь (ток потребления МК порядка 1 мА).

 

5. Пункт 3 "д": контроль за регистрацией в сети замечательно выполняет сам SIM900D, если сеть пропадает, он сам регистрируется в ней повторно. Однако замечено, что иногда у МК пропадает связь с модулем. В таком случае МК не сможет принять и отправить смс. Поэтому вместо опроса статуса сети МК проверяет наличие связи с модулем и при её отсутствии перезагружает модуль. Период такой проверки задаётся в программе константой и может меняться от 1 до 20 минут. С точки зрения энергосбережения выгодно делать его больше (так как на время проверки и следующие 5 секунд модуль "просыпается"), однако с точки зрения надёжности лучше делать его меньше (иначе возрастает вероятность утратить входящую смс). Я за надёжность, так что сейчас стоит 1 минута. Если лучше установить другое значение периода, сообщите какое.

Сказанное относится к случаям, если SIM900D был выключен кнопкой PowerKey. Программа обнаружит отсутствие связи и перезагрузит модуль.

Также в программе введена защита от зависания: если программа зависает, МК перезапускается и перезапускает также SIM900D.

 

6. Пункт 3 "е": МК хранит не 50, а 107 последних событий. Журнал циклический, то есть при переполнении начинают удаляться самые старые записи, чтобы сохранились новые. Сохраняются события получения всех смс, измерений, отправки смс, пропадания связи с модулем и перезагрузки модуля.

 

7. Некоторые ограничения. Ресурсов указанного МК не хватает для того, чтобы принимать и полноценно обрабатывать все сообщения модуля SIM900D (да и стоимость договора не та). Поэтому обработка его сообщений несколько упрощена, если не сказать "урезана". В основном сейчас это проявляется в том, что не допускается отправка на прибор сразу нескольких смс. То есть отправлять следующую следует только дождавшись ответа на предыдущую. Иначе обе смс могут быть утрачены.

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

Перед отправкой любой смс можно проверять, что прибор в сети, позвонив на него (описано выше). Либо делать так: отправляете на прибор необходимую смс. Обычно ответ прибора приходит в течение нескольких секунд. Если ответа нет долгое время, то можно позвонить на прибор и проверить, что он в сети. Если не в сети, то подождать пока появится. Если в сети, то через некоторое время повторить отправку смс. Но не следует отправлять новые смс, если прибор не в сети.

 

По железу:

 

1. Как уже писал, датчик HC-SR04 должен находиться минимум в 10-12 см от контролируемой поверхности.

 

2. Минимальное входное напряжение питания, при котором обеспечивается нормальное функционирование прибора - 6.1-6.2 Вольта. Меньше нельзя, побольше можно. На плате прибора есть контрольная точка "Vdd", напряжение в ней относительно "Земли" должно быть ровно 4.6 Вольт.

 

 

8. 25 октября 2017

 

К данному электронному письму приложены:

1. Схема, разводка плат и список комплектующих с внесёнными изменениями (список изменений есть в архиве в txt-файле).

2. ПОмикроконтроллера (исходники и файл прошивки).

3. Протокол связи с прибором.

4. Дополнительно - скриншот обмена смс-сообщениями с прибором (для примера).

 

Пояснения к прибору:

1. Прибор корпусирован, в корпусе я сделал вырез под разъём USB. Остальные отверстия, в соответствии с ТЗ, Вам нужно сделать самим в соответствии с пространственной конфигурацией размещения прибора у Вас на объекте. Рекомендую размещать прибор разъёмом USB вниз во избежание попадания влаги.

2. Прибор успешно прошёл испытания, на протяжении примерно 12 часов ответил на все смс, при этом, согласно журналу событий, не произошло ни одного сбоя (перезапуска), также ни одного отказа датчиков.

3. В приборе были сделаны некоторые доработки в аппаратной части: уменьшена ширина платы и добавлен резистор. В мой экземпляр прибора также добавлен диагностический разъём, в Вашем приборе его нет за ненадобностью. Все изменения внесены в схему, которая приложена к письму.

4. Прибор имеет недостаток: выбранный держатель SIM-карты оказался неудачным (не было возможности "пощупать" его перед заказом). Для вставки/извлечения SIM-карты придётся вынимать плату. Если впоследствии будем менять прибор, держатель SIM-карты можно будет сменить.

 

В посылке кроме самого прибора содержатся датчики температуры и расстояния с припаянными разъёмами, а также светодиод, который не был впаян согласно нашей переписке ("STATUS"). Захотите - впаяете сами.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: