Главная » Статьи » Arduino

Мой первый проект на Arduino
 На самом деле, я уже давно так не считаю, так как натура у меня такая - всегда стараюсь не упускать возможность, стремлюсь узнать что-то новое. Тем более, прошло уже много лет с того момента, как я понял, что Си - чересчур сложен для меня. Все оказалось не так уж страшно.Век живи - век учись...
В общем, интересоваться платами arduino я начал относительно давно... Мне было интересно именно то, что для этих плат не нужно было рисовать схему, подбирая элементы из тех, что можно у нас достать, рисовать PCB, выпиливать, утюжить и травить плату, так как времени на это уходит очень много. А его как раз у меня, в последние года 2 категорически не хватает...
Останавливало лишь необходимость в неизбежном изучении языка Си, который с детства меня обошел стороной, так как учительница по информатике владела исключительно basic-ом. В институте же почему-то нам преподавали турбопаскаль. Но, как бы то ни было, это наложило серьезный отпечаток на мое дальнейшее развитие. :)

В общем, накупил я себе разных плат ардуино и начал шаманить. Самым первым тестовым проектом было установление связи с моим телефоном и управление светодиодом, в том числе и его яркостью по bluetooth. C восторгом я наблюдал, как буквально через пару часов разбирательств с arduino и Basic4Android, светодиод начал менять яркость по движению моего пальца по экрану! Это было круто! Самое интересное, что на написание кода для arduino leonardo ушло каких-то 5-10 минут! Впоследствии, надеюсь, мы сможем уделить время и среде разработки для Android. А пока статья о другом.
И вот, практически на прошлой неделе в нашу контору обратился представитель компании МТС в нашем регионе с просьбой решить следующую задачу - требуется следить за уровнем воды в емкости и сообщать менеджерам о необходимости пополнения, так как, как это часто бывает в России, за этим смотрел персонал, не имеющий к этому никакого отношения. Так,... как бы заодно... Естественно, это очень часто приводило к отсутствию воды на объекте и суточным, а то и более, ожиданиям приезда машины с водой.

Меня обрадовало это и я немедленно приступил к разработке.

Опыт отправки СМС с контроллера уже был, как вы помните :)

Мне пришлось немного задуматься о способе записи номеров в прибор, так как это влияло и на сложность разработки. Остановился на простом варианте с кнопками и светодиодами. Ниже поясню. В качестве управляющего контроллера был выбран малоногий контроллер Arduino Nano с разъемом USB для программирования. Он имеет PWM выходы, которые я использовал в проекте для плавного мигания светодиодами. Смотрится очень красиво.

Для работы с прибором требуется какой-либо GSM модем. Я взял промышленный модем ПМ01, так как он был под рукой. Дороговат для любительских разработок... Вообще подойдет любой. Помните историю с телефоном сименс C35? Здесь он тоже подойдет. Главное, согласовать уровни.

В общем была составлена такая схема:



Принцип работы прост. Есть вода - электроды замкнуты - на входе 0В, нет воды - разомкнуты - на входе +5В.

Я в программе анализирую это и при отсутствии воды отправляю СМС на три номера (таково было задание) о том, что вода заканчивается. После отправки смс я ставлю флаг, запрещающий повторную отправку до тех пор, пока вода снова не появится и после этого вновь не уйдет ниже уровня.

Принцип записи номеров в память контроллера такой - нажимаем одну из трех кнопок - входим таким образом в режим записи номера (при этом плавно мигает соответствующий светодиод). Звоним по номеру сим-карты прибора. Прибор вычисляет номер входящего звонка, сохраняет его в память и зажигает светодиод на постоянку. Таким образом, пользователь знает, что номер в эту ячейку уже записан. Так же с остальными ячейками. Стереть номер из ячейки можно, нажав соответствующую кнопку при включении прибора. После того, как светодиод мигнет, можно быть уверенным, что номер стерт. Все просто!

Белый светодиод показывает, есть ли вода в емкости или нет. Если горит постоянно - вода есть. Часто мигает - воды нет. 

После того, как прибор обнаружил отсутствие воды, если в памяти есть хоть один номер, он отправляет смс с текстом "Low water level", хотя текст может быть любой. Я не стал заморачиваться с PDU, как в прошлый раз, для русского текста.



Так прибор выглядит снаружи и внутри:



Ну в общем, как-то так.. Прибор уже эксплуатируется. Я разместил
на нашем сайте информацию. Так, для ознакомления smile Комментарии приветствуются.

В данном каталоге https://actualtraffic.ru представлено более 900 партнерских программ и сервисов для вебмастеров с отзывами пользователей и обзором функционала. Воспользуйтесь формой ниже для быстрого поиска нужной вам партнерской сети.



Категория: Arduino | Добавил: ADMIN (03.10.2014)
Просмотров: 12117 | Комментарии: 5 | Теги: отправка смс, контроль уровня, Программа, язык Си, Arduino Nano | Рейтинг: 3.2/20
Всего комментариев: 5
1 PINCOD   (03.10.2014 14:58) [Материал]
Браво Макс,отличный и профессиональный и познавательный проект wine

0
2 ADMIN   (03.10.2014 18:28) [Материал]
Спасибо. К сожалению, формат сайта не позволяет добавить больше букв. Хотелось больше написать. Теперь в другой раз.

3 Ramirez   (08.10.2014 16:42) [Материал]
Отличный проект, но причём тут PicBasic?

0
4 ADMIN   (09.10.2014 15:15) [Материал]
Да, собственно, ни при чём. Но почему бы и нет? Тем более, проект picbasic.ru уже давно перерос во что-то большее. Например, stm32 - это тоже не pic, но его можно программить на бейсике, как и atmel. Не так ли? Тем более, об этом просили сами пользователи. Просто название менять никто не будет. Все же basic для pic остаётся главной темой сайта.

0
5 ADMIN   (25.11.2014 08:23) [Материал]
По прошествии некоторого времени пришлось переработать и схему и программу. В данный момент программа новая. Дело было в том, что, как я выяснил, внутренние подтягивающие резисторы микроконтроллеров Atmel - 20 кОм. Вся проблема, таким образом, заключалась в наводках на электродах, так как 20 кОм - слишком много. Прибор ловил помехи и давал ложные срабатывания, отправляя ненужные смс. Вопрос решился внешней подтяжкой 7 кОм (был под рукой) и выкидыванием платы уровня, так как операционник усиливал сигнал помехи. Теперь 1 электрод - это 0В, а второй электрод - непосредственно вход контроллера, настроенный на вход и подтянутый к плюсу питания через 7 кОм. Работает отлично.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]