산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Raspberry Pi로 번개 감지

다양한 방법을 사용하여 번개를 감지할 수 있습니다. 일반적으로 충격으로 인해 생성된 전자기 복사를 감지하는 작업이 포함됩니다. 대부분의 사람들은 이것을 AM 라디오에서 정적, 딱딱 소리, 펑하는 소리로 한 번쯤 들어봤을 것입니다. 일부 감지기는 일반적으로 햇빛으로 인해 인간의 눈으로 볼 수 없는 낮에도 구름 내에서 생성된 빛의 섬광을 감지할 수 있습니다. 때때로 번개는 감마선의 짧은 펄스를 방출합니다. 이는 국제 우주 정거장의 새로운 기기가 연구할 예정입니다.

이 게시물에서는 RaspberryPi를 사용하여 ams(Austria Mikro Systeme)의 AS3935 Franklin Lightning Sensor IC를 인터페이스하는 방법을 살펴보겠습니다. AS3935는 최대 40km 떨어진 곳에서 번개 활동을 감지할 수 있는 프로그래밍 가능한 센서입니다. 독점적인 유선 알고리즘을 사용하여 소음과 인공 "방해자"를 걸러내고 폭풍의 선두 가장자리까지의 거리를 추정합니다. 프로그래밍 가능한 감지 수준, 임계값 설정 및 안테나 튜닝이 있습니다. 이전의 많은 지상 낙뢰 센서와 달리 구름 대 지상 및 구름 내 낙뢰 활동을 모두 감지할 수 있습니다.

세부정보

특정 구성 요소를 소량으로 모아 PCB를 배치하고 다소 작은(4x4mm) MLPQ-16 패키지를 손으로 납땜하는 대신 Embedded Adventures의 MOD-1016 브레이크아웃 보드를 사용했습니다. AS3935에는 RaspberryPi의 3.3v GPIO 로직 레벨과 완벽하게 작동하는 2.4~5.5V의 공급 전압 범위가 필요합니다. SPI 또는 I2C를 통해 인터페이스할 수 있습니다. 기본적으로 MOD-1016은 I2C를 사용하도록 구성되어 있지만 보드의 몇 가지 솔더 점퍼를 통해 SPI를 사용하도록 쉽게 전환할 수 있습니다. 내 설정에서는 기본 I2C 구성을 사용하겠습니다.

이 프로젝트는 저에게 I2C 프로토콜에 대한 좋은 소개였습니다. 이전에 일부 DS18B20 온도 센서를 인터페이스하기 위해 1-Wire 프로토콜을 사용한 적이 있지만 I2C가 훨씬 더 널리 사용되기 때문에 I2C에 대해 알아볼 기회가 생겨 기뻤습니다. 이 게시물에서는 I2C를 통해 RaspberryPi에서 AS3935와 통신하는 데 필요한 세부 정보를 다루겠지만, 더 많은 정보를 원하시면 Byte Paradigm에서 I2C 및 SPI에 대한 멋진 소개를 제공합니다.

I2C 프로토콜을 사용하도록 RaspberryPi를 아직 구성하지 않은 경우 몇 개의 패키지를 설치하고 몇 개의 커널 모듈을 로드해야 합니다. Adafruit에는 여기에 훌륭한 가이드가 있지만 기본적으로 python-smbus를 설치하기만 하면 됩니다. 및 i2c-도구 패키지를 만들고 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 티 -a /etc/modules 

MOD-1016을 RaspberryPi에 연결하는 것은 비교적 간단합니다. I2C를 사용하면 전원과 접지 외에 두 개의 전선(SDA 및 SCL)만 있으면 여러 장치와 통신할 수 있습니다. AS3935는 인터럽트를 발생시켜 마이크로 컨트롤러에 이벤트를 경고하므로 이를 위해 하나의 추가 와이어가 필요합니다. 나는 Adafruit의 표준 브레드보드와 RaspberryPi Cobbler를 사용하여 회로를 모형화했습니다. MOD-1016(AS3935)은 다음과 같이 RaspberryPi에 연결됩니다.

MOD-1016 라즈베리파이
GND 그라운드
VCC 3.3v(핀 1)
IRQ GPIO 17(핀 11)
SCL SCL(핀 5)
SDA SDA(핀 3)

I2C에 대해 주의해야 할 점은 동일한 PCB에 있는 집적 회로 간의 칩 간 통신을 위해 설계되었다는 것입니다. I2C에서 라인은 풀업 저항에 의해 높게 유지되고 반대 상태를 나타내기 위해 낮게 당겨집니다. 라인을 VCC로 되돌리는 데 걸리는 시간은 풀업 저항과 버스 커패시턴스의 값에 따라 다릅니다. I2C 사양은 최대 커패시턴스를 400pF로 제한하며 일반적으로 실제 거리를 몇 미터 이내로 제한합니다. 필요한 경우 최대 길이를 확장하는 방법이 있습니다. 가장 분명한 것은 I2C 버스 확장기입니다. 클럭 속도를 낮추는 것도 최대 거리를 늘리는 데 도움이 될 수 있습니다. 또한 I2C 연결을 위해 CAT-5와 같은 트위스터 페어 케이블을 사용하는 경우 동일한 트위스트 페어를 통해 SCL 및 SDA 라인을 함께 실행하지 않도록 주의하십시오. 별도의 쌍을 사용하고 각 쌍의 다른 라인을 접지에 묶습니다.

아래 이미지는 Embedded Adventures의 MS5611 기압 센서 및 Adafruit의 FTDI Friend와 함께 브레드보드된 MOD-1016 브레이크아웃을 보여줍니다.

모든 것이 연결되면 i2cdetect 명령을 사용할 수 있습니다. I2C가 작동하고 센서와 통신할 수 있는지 확인합니다. 이전 RaspberryPi(256MB 램 포함)를 사용하는 경우 I2C 버스 ID 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:-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - --40:-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --70:-- -- -- -- -- -- 76 -- 

이제 센서를 실제로 사용하려면 센서와 상호 작용할 수 있어야 합니다. 이것은 칩 내의 레지스터를 읽고 쓰는 방식으로 수행됩니다. 레지스터는 구성 및 입력/출력과 같은 비트를 저장하는 데 사용되는 메모리 위치입니다. 어떤 면에서는 디지털 DIP 스위치와 같으며 비트 또는 일련의 비트를 사용하여 다양한 상태를 표시하거나 설정합니다. 예를 들어 AS3935를 사용하면 세 번째 레지스터(0x02)의 7번째 비트(비트 6)를 토글하여 알고리즘에 의해 구축된 통계를 지울 수 있습니다. 레지스터 위치와 기능을 설명하는 테이블과 매핑은 장치의 데이터시트에서 찾을 수 있습니다. 예를 들어,

대부분의 언어와 플랫폼에는 I2C 작업에 사용할 수 있는 도구 또는 라이브러리가 있습니다. 예를 들어 Linux에서 i2c-tools 패키지는 i2cdetect, i2cget과 같은 유틸리티를 제공합니다. i2cdumpi2cset 명령줄에서 사용할 수 있습니다. 파이썬의 경우 python-smbus에서 제공하는 SMBus 모듈 패키지는 I2C 버스에 액세스하는 데 필요한 바인딩을 제공합니다. 개별 레지스터 작업의 세부 사항을 추상화하는 장치에 사용할 수 있는 상위 수준 라이브러리가 있는 경우가 많습니다. 어떤 비트를 읽거나 어떤 레지스터에 쓸지 알아야 하는 대신 클래스를 인스턴스화하고 특정 장치와 상호 작용하는 메서드를 호출하면 됩니다.

Python에서 AS3935 작업을 위해 Phil Fenstermacher가 작성한 RaspberryPi-AS3935 라이브러리를 사용할 수 있습니다. 설치 지침은 GitHub 페이지에서 찾을 수 있습니다. 시작하고 실행할 수 있는 유용한 방법과 멋진 데모 스크립트를 제공합니다. 사용 가능한 메서드와 해당 인수를 보려면 RPi_AS3935.py 파일을 살펴보세요.

AS3935는 병렬 RLC 회로를 안테나로 사용하며 500kHz ±3.5%의 공진 주파수로 조정해야 합니다. 편차를 보상하기 위해 8pF 단위로 활성화할 수 있는 튜닝 커패시터를 통해 내부적으로 최대 120pF를 사용할 수 있습니다. 레지스터 설정을 통해 AS3935는 IRQ 핀에서 공진 주파수를 출력할 수 있어 외부 장치가 이를 측정하고 필요한 튜닝 커패시터를 활성화하여 안테나를 적절하게 튜닝할 수 있습니다. 운 좋게도 Embedded Adventures의 MOD-1016 브레이크아웃에는 정전기 방지 백 외부에 표시된 튜닝 커패시터 값이 함께 제공됩니다. 이렇게 하면 보정 루틴이 훨씬 간단해집니다. 위의 라이브러리를 사용할 때 calibration()을 호출하는 것만 큼 간단합니다. 메서드를 사용하고 튜닝 커패시터 값을 인수로 전달합니다. 안테나 설계에 대한 자세한 내용은 AS3935 AMS 하드웨어 설계 가이드에서 확인할 수 있습니다.

자세한 내용:Raspberry Pi로 번개 감지


제조공정

  1. 라즈베리 파이 온도 로거
  2. DS18B20으로 온도 읽기 | 라즈베리 파이 2
  3. RASPBERRY PI로 온도 측정
  4. Raspberry Pi로 온도 모니터링
  5. 센서 데이터와 Raspberry Pi 마이크로프로세서의 통합
  6. Sensorflare 및 RaspberryPi가 포함된 433MHz 스마트 홈 컨트롤러
  7. t cobbler plus가 포함된 라즈베리 파이 2 물 경보기
  8. ThingSpeak 온도 모니터(Raspberry Pi 포함)
  9. 라즈베리 파이를 사용한 손쉬운 DIY 아기 울음 감지기
  10. 라즈베리 파이로 팬/틸트 얼굴 추적