Сообщество - Arduino & Pi

Arduino & Pi

1 493 поста 20 825 подписчиков

Популярные теги в сообществе:

358

Проект GSM/GPRS сигнализации на Arduino

Предлагаю вашему вниманию проект охранно-пожарной GSM/GPRS сигнализации на ардуино с резервным питанием от батареи. Мною ставилась цель создать простую в изготовлении сигнализацию для дома, состоящую из недорогих ардуиновских модулей и датчиков, управляемую с телефона. При этом затраты на обслуживание должны быть минимальными. А лучше чтобы их вообще не было! И мне удалось этого добиться.

Для вожделенной халявы пришлось отказаться от традиционных смс оповещений, и освоить отправку писем на электронную почту. При правильно подобранном тарифе, сигнализация не тратит денег с баланса. При этом мы получаем по e-mail всю информацию о работе сигнализации, сработавших датчиках, действиях пользователей. Такой роскоши не добиться с помощью платных смс. Управление сигнализацией реализовано на основе DTMF команд. Если у вас один оператор связи на основном телефоне и на сигнализации, с бесплатными звонками внутри сети, или имеется пакет бесплатных минут, то управление сигнализацией тоже будет бесплатным. В противном случае всегда можно отправить команду в течении первых 3-х секунд. И так же не платить. Заинтриговал? Тогда прошу под кат.

Первым делом составим техническое задание:

1) Оповещение звонком Админа при срабатывании датчика.

2) Отправка e-mail с подробностями.

3) Отправка e-mail о действиях пользователей.

3) Наличие резервного питания на случай отключения основного.

4) Управление сигнализацией при помощи DTMF команд и смс.


Для этого нам понадобится плата ардуино и недорогой, но функциональный GSM-модем SIM800L. Любой литиевый аккумулятор с модулем заряда. Датчики по вкусу.

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

В данном реализации были применены следующие сенсоры и модули:

1. Геркон NC типа, как датчик открытия двери.

2. Пироэлектрический инфракрасный датчик движения HC-SR501.

3. Датчик газа и дыма MQ-2.

4. Микроволновый датчик движения RCWL-0516. Видит сквозь препятствия и стены. Хорош для охраны дачи или частного дома. В квартире будут частые ложные срабатывания на соседей за стенкой или бегающих собачек и котиков.

5. Датчик пламени.

6. Датчик температуры и влажности DHT11.

7. Для подачи звуковых сигналов при выполнении команд использована пищалка (зуммер). В готовом изделии не обязателен.

8. Плата контроля заряда-разряда лития на основе микросхемы TP4056 с защитой от перезаряда и разряда.

9. Ардуино Nano V3. Можно заменить 5 вольтовой Ардуино pro mini.

10. В качестве GPRS GSM модема выбран недорогой, но хороший модуль SIM800L. Он имеет небольшие размеры. Умеет работать с DTMF командами, звонить, отправлять смс и e-mail. Смс дороги, а вот электронные письма можно слать практически бесплатно. Чем мы в дальнейшем и воспользуемся!


Датчиком открытия двери (окна) у нас служит нормально закрытый (NC тип) геркон. В случае отсутствия электричества наша ардуина будет отправлена в сон, и разбудить её смогут три вещи: сработавший геркон, появление внешнего питания (сеть), или сигнал RING с модема в случае звонка. Но это мы уже забежали вперёд.


Схема соединения.

Допустим мы всё собрали как надо. Чтобы сигнализация заработала, первым делом надо заполнить файл настроек, находящийся по следующему пути libraries/main_type/settings.h


В строке

за место 115200 необходимо указать скорость, на которой работает ваш модем. Как определить скорость работы модема, можно найти в интернете. Не буду на этом заострять внимание.


Далее перечисляются используемые датчики. Вам нужно оставить только те, которые вы используете. Остальные строчки сделать комментариями при помощи двойного слеша //

Можно оставить всё как есть. Не подключенные датчики на работу не повлияют.

Далее перечисляются пины, на которых висят наши модули. Первым у нас будет пин RING модема. Он соответствует пину 2 ардуино. Т.к. это обычное перечисление, номер следующего пина будет на один больше предыдущего, т. е. 2, 3, 4 и т. д. Если вы закомментировали какие-то модули выше, то их пины не будут учитываться в перечислении.

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

Далее нам надо настроить отправку e-mail.

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

Для яндекса у нас такие параметры сервера и порта:

Далее за место слов login и password впишите логин и пароль от вашей почты

Затем укажите полное название вашей почты и имя отправителя. В данном случае у нас указан отправитель SIM800L. Можете написать что-то своё.

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

Если вы хотите отправлять письма сразу на два или три ящика , раскомментируйте вот эти дефайны, и впишите имя почты

Поздравляю! На этом настройки закончены. Можно прошивать ардуину.


Как работает сигнализация.

Внимание! Сигнализация управляется только с номеров, записанных в телефонную книгу симкарты.

Если на симкарте уже есть номера, то их владельцы являются пользователями, которые могут включать и отключать сигнализацию. Перед использованием удалите ненужные номера. Администратором считается номер с именем ADMIN. Если на симкарте нет такого номера, то первый позвонивший незарегистрированный пользователь станет Администратором. Его номер будет занесён в телефонную книгу.

Администратор — единственный пользователь, который может отправлять DTMF и смс команды.

Для удалённого добавления пользователя в телефонную книгу Администратор должен отправить смс вида

AT+CPBW=,"+xxxxxxxxxxx",145,"USER"
где +xxxxxxxxxxx - номер телефона
USER - имя абонента

Модем настроен на поднятие трубки при звонке с номера Админа. Это сделано для возможности использовать DTMF команды. Звонки с других номеров будут сбрасываться.

Администратор может отправлять DTMF команды из списка ниже. Если команда принята, сигнализация сбросит звонок. Отчёт о выполнении команды придёт на почту. Любая команда представляет собой цифру и знак #, который означает завершение ввода. После этого модем завершит звонок и выполнит полученную команду.

Команды, не вошедшие в список, считаются USSD запросами. Например, мы хотим узнать баланс телефона. USSD запрос баланса нашего оператора *xxx#

где xxx — цифры.

Отправляем DTMF команду xxx#. Она будет подставлена в USSD запрос. Ответ оператора будет переслан на почту.


Порядок включения.

Подать питание на сигнализацию.

Дождаться прихода e-mail. Сигнализация загрузилась.

По умолчанию режим охраны выключен. При звонке любого зарегистрированного номера (кроме админа) сигнализация будет ставить/снимать с охраны и отправлять отчёт на почту. Звонок будет сброшен. При звонке с номера Администратора модем поднимает трубку и ждёт DTMF команду. Админ может поставить/снять с охраны сигнализацию командой 1# и 2# соответственно. После ввода команды звонок завершится сам.


Режимы работы:

Тревога.

При срабатывании одного из датчиков включится режим тревоги. На телефон Админа поступит звонок. Его надо сбросить. На почту будут отправлены показания сработавшего датчика. Продолжительность режима тревоги задана в файле настроек дефайном ALARM_MAX_TIME. По умолчанию 60 секунд. В течение этого времени идёт сбор статистики о сработавших датчиках. Когда время истечёт, информация будет отправлена на почту, а счётчики срабатываний обнулятся. Если датчики снова сработают, всё повторится.


Выключение сетевого питания. Режим низкого энергопотребления.

При пропадании электричества на 3 пине ардуины появится низкий уровень. Сигнализация переключится на питание от батареи. На почту придёт сообщение, что свет пропал Svet OFF. После этого, для экономии энергии батареи, ардуина уйдёт в сон, модем будет переведён в режим низкого энергопотребления.

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

При появлении электричества ардуина проснётся, переведёт модем в обычный режим работы, и отправит сообщение на почту Svet ON.


Поддерживаемые операторы.

Прошивка поддерживает основных российских операторов:

МТС, Билайн, Мегафон, Теле2. Если у вас другой оператор, и не отправляется e-mail, пишите в комментариях. Будем добавлять.


На этом всё. Скачать прошивку можно здесь https://github.com/wisenheimer/Arduino

Вопросы пишите в комментариях :)

Показать полностью 12
2

Копилка на ARDUINO, которая не получилась.

И врят-ли получится, ну может случайно у того же Alexa Gyvera и получилась, но у большинства, собравших такие копилки затык происходит с калибровкой. Хотя нет, про Gyvera это я зря. Это очень талантливый человек и любые его самоделки хорошо продуманные и интересные, и срабатывают не случайно. Он тщательно их продумывает, чтоб они заработали. Ну хоть копилка не состоялась, за-то смотрите, что получилось

2948

Делаем гирлянду-дисплей. Такого нет даже у китайцев =)

В видео показан процесс сборки, настройки и монтажа гирлянды-дисплея на окно, а также все её возможности: вывод бегущего текста с разными эффектами, просто эффекты (снег, звездопад, радуга и т.д), и конечно же на ней можно поиграть в змейку, тетрис, лабиринт, и в будущем в другие игры =) Спасибо всем за поддержку, на данный момент это мой самый крупный с точки зрения кода Ардуино проект!

Показать полностью 1

Мониторинг энергопотребления на базе PZEM-016 Modbus + Arduino

Всем доброго времени суток. Прикупил у братьев китайцев интересный девайс PZEM-016 счетчик энергии с интерфейсом modbus

Мониторинг энергопотребления на базе PZEM-016 Modbus + Arduino

Есть описание протокола https://drive.google.com/file/d/1SdMvZ2awGcM7vNbjEqgSgx2Kgb_...  Высылаю на модуль команду F8040000000A6464(подсмотрел формат команды на линии rs485 - к модулю идет програмка на комп) получаю ответ(пример) F8 04 14 09 19 00 00 00 00 00 00 00 00 00 01 00 00 01 F4 00 00 00 00 4E A9 расшифровываю на сайте http://modbus.rapidscada.net/ получаю значения регистров.

F8 Slave address 0xF8 (248)

04 Function code 0x04 (4) - Read Input Registers

14 Byte count 0x14 (20)

09 19 00 00 00 00 00 00 00 00 00 01 00 00 01 F4 00 00 00 00 Register value 0x0919 (2329), 0x0000 (0), 0x0000 (0), 0x0000 (0), 0x0000 (0), 0x0001 (1), 0x0000 (0), 0x01F4 (500), 0x0000 (0), 0x0000 (0)

4E A9 CRC 0x4EA9 (20137)

Вопрос кто поможет с сохданием библиотеки(скетча) под ардуино - как я понял нужно сформировать запрос чтения регистров с счетчика и после получения байтов расшифровать ответ. у

Показать полностью 1
848

Делаем будильник с плавным рассветом своими руками

А давайте сделаем максимально дешёвый аналог будильника PHILIPS "рассвет" – часов, которые за указанное время до будильника заливают вас светом с плавно нарастающей яркостью, то есть имитируют рассвет. Ваш маленький комнатный рассвет, который позволит проснуться бодрым и отдохнувшим за счёт естественных механизмов организма.

В видеоролике содержится подробная инструкция как сделать сие из дешёвых китайских компонентов, настроить и пользоваться!

Показать полностью
18

Установка Kali Linux на raspberry pi Zero W.

Установка

Для установки вам понадобится HDMI-дисплей, к которому можно подключить Pi, а также Wi-Fi сеть для полноценной работы встроенной беспроводной карты (тут можно попробовать использовать точку доступа вашего телефона).

Шаг 1. Скачайте образ, который не покажет вам радугу


Образ:
https://whitedome.com.au/re4son/re4son-kernel/

Сначала скачайте вот этот образ из блога Re4son(Это кастомный образ Kali для Pi Zero W, который не выдаст вам радужный экран.

ARMEL (Pi 1/Zero/Zero W) https://whitedome.com.au/re4son/download/kali-linux-2-1-2-ar... (SHA1: 7d1e7cc52c662dff7d1ea6e2aedc3c8f8a16a78a)

Шаг 2. Запишите образ на SD-карту

Эта часть будет такой же, как в нашем последнем посте на эту тему. Если вы используете Windows, то для записи образа вы можете воспользоваться Win32 Disk Imager. Для Mac вы можете использовать инструмент ApplePiBakerили Etcher. Если это в вашем случае вызывает какие-то ошибки, то лучший в этом случае способ создания загрузочной SD-карты — через терминал.

На Mac перед подключением SD-карты запустите в терминале следующую команду:

df -h

Эта команда отобразит список всех подключенных к вашей системе дисков. Потом вставьте вашу SD-карту и снова запустите эту команду. Обратите внимание на имя файловой системы на вашей SD-карте (это та, которая не была там раньше). Это должно выглядеть таким образом: «/dev/disk2s1», и вы должны быть очень внимательны, чтобы ничего не перепутать на последующих шагах, иначе вы можете перезаписать ваш жесткий диск.

Теперь мы будем использовать команду dd для загрузки образа Kali на карту. Сначала размонтируем ее раздел, чтобы вы могли записать хоть что-то на нее. Это делается при помощи команды ниже, где «x» — нужный номер диска:

sudo diskutil unmount /dev/diskX

Затем, чтобы загрузить образ на SD-карту, выполните в консоли следующую команду. Если после первого номера диска (например, rdisk2s1) есть буква «s», то не вставляйте эту «s» и следующий за ней номер. Итак, «rdisk2s1» должен выглядеть как «rdisk2». Вот как эта команда должна выглядеть в итоге:

sudo dd bs=1m if=путь_до_образа_Kali of=/dev/rdiskX

Чтобы начать процесс записи, нажмите «Enter» и обратите внимание, что команда dd не выдает на экран никакой информации о ходе процесса, если, конечно, не произойдет какая-нибудь ошибка или пока процесс не завершится. Чтобы просмотреть прогресс выполнения во время записи, вы можете нажать Ctrl + T. Подождите, пока процесс завершится. Вы узнаете, что процесс записи завершен, когда увидите информацию о количестве записанных байт.

Шаг 3. Загрузитесь в Kali

Благодаря Re4son, у нас уже есть настроенный SSH и уже настроено множество других полезных параметров. Подключите адаптер HDMI к дисплею, подключите OTG-хаб, Bluetooth клавиатуру/мышь, антенну и источник питания. Вставьте SD-карту, и чтобы загрузить Pi Zero W, подключите питание (т.к. кнопки включения у нее нет).



У нее есть порт Micro-USB для питания и другой — для USB-адаптера. Вы должны подключить питание к разъему Micro-USB к внешней стороне платы, как в нашем примере на фото.



После загрузки в Kali Linux введите имя пользователя root и пароль toor. Вам нужно будет обновить дистрибутив, чтобы получить полную функциональность, поэтому не волнуйтесь, если картинка на мониторе будет выглядеть немного странно.

Читать также:  Как безопасно пользоваться публичным Wi-Fi



Шаг 4. Устранение проблем в процессе обновления

После большого количества проб и ошибок мы смогли подключиться только к незащищенным сетям, поэтому мы просто создали на смартфоне незащищенную беспроводную точку доступа, чтобы можно было к ней подключить Pi. Мы также слышали о том, что можно обновить систему, если подключить к контактам GPIO  кабеля USB-TTL для питания и первой загрузки Pi Zero W, но сами мы этот способ не пробовали, т.к. для него нужна пайка (хотя он работает на полноразмерном Pi).



Как только Kali Linux загрузится, найдите значок Wi-Fi в правом верхнем углу экрана. Кликните на него, чтобы посмотреть на доступные сети и подключиться к открытой беспроводной сети, используя горячую точку вашего телефона (если необходимо). Как только Pi будет подключен, мы запустим обновление в терминале с помощью команды:

sudo apt update && sudo apt full-upgrade

Поскольку службы Bluetooth по умолчанию отключены, то вы можете запустить их, выполнив следующую команду.

sudo systemctl enable bluetooth && sudo systemctl enable hciuart

Шаг 5. Очистка и настройка

Нам нужно изменить стандартные SSH-ключи, для этого нужно выполнить в консоли следующее:

cd /etc/ssh/ mkdir insecure_old mv ssh_host* insecure_old/ dpkg-reconfigure openssh-server

Кроме того, чтобы убедиться, что вы не используете пароль по умолчанию, измените пароль пользователя root, набрав в консоли:

passwd

Шаг 6. Включение автоматического входа в систему

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

nano /etc/lightdm/lightdm.conf

Удалите решетки (#) перед следующими строками:

pam-autologin-service = PAM service to use for autologinautologin-user=root autologin-user-timeout=0

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



Сохраните изменения и выйдите с помощью Ctrl+X, затем введите:

nano /etc/pam.d/lightdm-autologin

Вам нужно будет изменить эти три строки, начиная со строки 11:

# Allow access without authentication auth required pam_succeed_if.so user != root quiet_success auth required pam_permit.so

Вот на эти:

# Allow access without authentication ###auth required pam_succeed_if.so user != root quiet_success auth required pam_permit.so

Сохраните изменения и закройте nano. Теперь у вас должен работать автологин. Перезагрузитесь, чтобы проверить, работает ли функция автологина. Если да, то вы можете войти в систему через SSH с вашего телефона или ноутбука. Если у вас возникли проблемы, тогда перейдите в директорию /etc/pam.d/, удалите «lightdm-autologin» и запустите следующую команду:

wget https://raw.githubusercontent.com/sadmin2001/fixes/master/li...

Шаг 7. Тест SSH & Autologin

Подключите Pi Zero W к ближайшей точке доступа Wi-Fi с паролем, чтобы убедиться, что карта Wi-Fi работает правильно, а затем запустите ifconfig, чтобы узнать IP-адрес внутренней беспроводной карты Pi Zero W, wlan0.



С компьютера или телефона, подключенного к той же беспроводной сети, подключитесь к Pi Zero W, набрав в терминале:

ssh root@(IP-адрес Pi)

Введите пароль, который вы изменили на шаге 5. Если вы видите сообщение дня, вы знаете, что все работает как нужно! Чтобы создать свой собственный экран MOTD (сообщения дня), введите следующую команду после того, как войдете в Pi Zero W:

nano /etc/motd

Удалите содержимое и вставьте все, что вы хотите показывать при каждом входе в систему.


Источник:
https://helpugroup.ru

Показать полностью
Отличная работа, все прочитано!