Обнаружение молний с помощью Raspberry Pi
Для обнаружения молнии можно использовать разные методы. Обычно это связано с обнаружением электромагнитного излучения, создаваемого ударом. Большинство людей, вероятно, слышали это в какой-то момент как статические, потрескивающие и хлопающие звуки в AM-радио. Некоторые детекторы способны улавливать вспышки света, возникающие в облаке, даже днем, когда их обычно не видит человеческий глаз из-за солнечного света. Иногда молния испускает короткие импульсы гамма-излучения - что-то, что собирается изучить новый прибор на борту Международной космической станции.
В этой статье я рассмотрю использование RaspberryPi для взаимодействия с микросхемой датчика молнии AS3935 Franklin от компании AMS (Австрия Mikro Systeme). AS3935 - это программируемый датчик, который может обнаруживать молниеносную активность на расстоянии до 40 км. Он использует запатентованный аппаратный алгоритм для фильтрации шума и искусственных «помех» и оценки расстояния до переднего края шторма; имеет программируемые уровни обнаружения, настройки пороговых значений и настройку антенны; и в отличие от многих предыдущих наземных датчиков молний может обнаруживать молниеносную активность как облако-земля, так и внутри облаков.
Подробности
Вместо того, чтобы собирать отдельные компоненты в небольших количествах, выкладывать печатную плату и пытаться вручную припаять довольно маленький (4x4 мм) корпус MLPQ-16, я использовал коммутационную плату MOD-1016 от Embedded Adventures. Для AS3935 требуется диапазон напряжения питания 2,4–5,5 В, который будет идеально работать с логическими уровнями 3,3 В GPIO RaspberryPi. Он может быть подключен через SPI или I2C. По умолчанию MOD-1016 сконфигурирован для использования I2C, но его можно легко переключить на использование SPI с помощью пары припаянных перемычек на плате. В своих настройках я буду придерживаться конфигурации I2C по умолчанию.
Этот проект послужил для меня хорошим знакомством с протоколом I2C. Раньше я использовал протокол 1-Wire для взаимодействия с некоторыми датчиками температуры DS18B20, но I2C используется гораздо более широко, и поэтому я был рад возможности погрузиться в него. В этом посте я расскажу о деталях, необходимых для связи с AS3935 через RaspberryPi через I2C, но если вам нужна дополнительная информация, Byte Paradigm предоставляет прекрасное введение в I2C и SPI.
Если у вас еще нет RaspberryPi, настроенного для использования протокола I2C, вам придется установить пару пакетов и загрузить пару модулей ядра. У Adafruit есть замечательное руководство, но в основном вам просто нужно установить python-smbus и i2c-tools пакеты и загрузите i2c-bcm2708 и i2c-dev модули ядра. Выполнение этого в дистрибутиве Raspbian может выглядеть примерно так:
### Устанавливает пакеты ~ $ sudo apt-get install python-smbus ~ $ sudo apt-get install i2c-tools ### Загружает модули ядра ~ $ sudo modprobe i2c-bcm2708 ~ $ sudo modprobe i2c-dev ### Убедитесь, что модули загружаются при загрузке ~ $ echo "i2c-bcm2708i2c-dev" | sudo tee -a / etc / modules
Подключить MOD-1016 к RaspberryPi относительно просто. С I2C вам понадобятся только два провода (SDA и SCL) - помимо питания и земли, конечно, - для связи с несколькими устройствами. AS3935 выдает прерывания, чтобы предупредить микроконтроллер о событиях, поэтому для этого нам понадобится один дополнительный провод. Я использовал стандартный макет и RaspberryPi Cobbler от Adafruit, чтобы смоделировать схему. MOD-1016 (AS3935) подключается к RaspberryPi как таковой:
MOD-1016 | RaspberryPi |
---|---|
GND | Земля |
VCC | 3,3 В (вывод 1) |
IRQ | GPIO 17 (вывод 11) |
SCL | SCL (вывод 5) |
SDA | SDA (вывод 3) |
Следует отметить, что I2C был разработан для связи между кристаллами, часто между интегральными схемами, находящимися на одной печатной плате. В I2C линии поддерживаются подтягивающими резисторами и подтягиваются к низкому уровню, чтобы указать противоположное состояние. Время, необходимое для восстановления линии до VCC, зависит от значения подтягивающего резистора и емкости шины. Спецификация I2C ограничивает максимальную емкость до 400 пФ, что обычно ограничивает практическое расстояние до нескольких метров. При необходимости можно увеличить максимальную длину. Наиболее очевидным из них является удлинитель шины I2C. Снижение тактовой частоты также может помочь увеличить максимальное расстояние. Кроме того, имейте в виду, что при использовании кабеля типа «витая пара», такого как CAT-5 для соединений I2C, не следует запускать линии SCL и SDA вместе по одной и той же витой паре. Используйте отдельные пары и привяжите вторую линию в каждой паре к земле.
На изображениях ниже показан макет MOD-1016 вместе с датчиком барометрического давления MS5611 от Embedded Adventures и FTDI Friend от Adafruit.
После того, как все подключено, вы можете использовать команду i2cdetect чтобы увидеть, работает ли I2C и может ли он связываться с датчиком. Если вы используете более старый RaspberryPi (с оперативной памятью 256 МБ), вы запустите команду, как показано ниже, с идентификатором шины I2C, равным 0. Если вы используете более новый RaspberryPi, используйте вместо этого 1. В выходных данных ниже вы можете увидеть, что AS3935 (0x03) и MS5611 (0x76) были правильно обнаружены.
~ $ sudo i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 abcde f00:03 - - - - - - - - - - - - -10:- - - - - - - - - - - - - - - --20:- - - - - - - - - - - - - - - - --30:- - - - - - - - - - - - - - - - --40:- - - - - - - - - - - - - - - --50:- - - - - - - - - - - - - - - - --60:- - - - - - - - - - - - - - - - --70:- - - - - - 76 -
Теперь, чтобы на самом деле использовать датчик, нам нужно иметь возможность взаимодействовать с ним. Это делается путем чтения и записи в регистры внутри микросхемы. Регистры - это области памяти, используемые для хранения битов для таких вещей, как конфигурация и ввод / вывод. В некотором смысле они похожи на цифровые DIP-переключатели, где биты или серии битов используются для индикации или установки различных состояний. Например, с AS3935 можно очистить статистику, созданную алгоритмом, переключив 7-й бит (бит 6) 3-го регистра (0x02). Таблицы и схемы, описывающие расположение регистров и их функции, можно найти в техническом описании устройства. Например,
На большинстве языков и платформ есть инструменты или библиотеки для работы с I2C. Например, в Linux i2c-tools пакет предоставляет такие утилиты, как i2cdetect, i2cget, i2cdump и i2cset который можно использовать из командной строки. Для python модуль SMBus, предоставляемый python-smbus package предлагает привязки, необходимые для доступа к шине I2C. Однако часто для устройств доступны библиотеки более высокого уровня, которые абстрагируются от деталей работы с отдельными регистрами. Вместо того, чтобы знать, какие биты в какие регистры читать или записывать, вы часто можете просто создать экземпляр класса и вызвать методы для взаимодействия с конкретным устройством.
Для работы с AS3935 на питоне доступна библиотека RaspberryPi-AS3935, написанная Филом Фенстермахером. Инструкции по установке можно найти на странице GitHub. Он предоставляет полезные методы, а также хороший демонстрационный скрипт, который поможет вам начать работу. Чтобы увидеть доступные методы и их аргументы, просмотрите файл RPi_AS3935.py.
AS3935 использует параллельную цепь RLC в качестве антенны, и ее необходимо настроить на резонансную частоту 500 кГц ± 3,5%. Чтобы компенсировать отклонения, имеется внутреннее устройство с емкостью до 120 пФ, через настроечные конденсаторы, которые можно активировать с шагом 8 пФ. Посредством настройки регистра AS3935 может выводить резонансную частоту на вывод IRQ, позволяя внешнему устройству измерить ее и соответствующим образом настроить антенну, активировав необходимые настроечные конденсаторы. К счастью, прорыв MOD-1016 от Embedded Adventures поставляется со значением настроечного конденсатора, отображаемым на внешней стороне антистатической сумки. Это значительно упрощает процедуру калибровки. При использовании указанной выше библиотеки это так же просто, как вызов calibrate () и передавая значение настроечного конденсатора в качестве аргумента. Более подробную информацию о конструкции антенны можно найти в Руководстве по проектированию оборудования AS3935 AMS.
Подробнее:Обнаружение молний с помощью Raspberry Pi
Производственный процесс
- Регистратор температуры Raspberry Pi
- Считать температуру с помощью DS18B20 | Raspberry Pi 2
- Измерение температуры с помощью RASPBERRY PI
- Мониторинг температуры с помощью Raspberry Pi
- Интеграция данных датчика с микропроцессором Raspberry Pi
- Контроллер умного дома 433 МГц с Sensorflare и RaspberryPi
- Сигнализация о воде Raspberry Pi 2 с t сапожником плюс
- Монитор температуры ThingSpeak с Raspberry Pi
- Простой детектор детского плача своими руками с Raspberry Pi
- Отслеживание лица при панорамировании / наклоне с помощью raspberry pi