D7S-A0001과 M5STACK으로 유령 탐지기를 만들어 보았다.
개요
M5STACK과 감진 센서로, 유령 탐지기 만들어 보았다! ! !
장치
이번에 이쪽을 소개합니다.
여기. 오므론제 D7S-A0001이 탑재되고 있어, Grove 케이블로 낙승으로 사용할 수 있습니다. M5STACK, 라즈베리 파이, Arduino이면 드라이버와 샘플을 다운로드 할 수 있으므로 매우 편합니다.
이 장치는 여기에서 구입할 수 있습니다.
기술 공유
구매 페이지
스위치 과학
구매 페이지
마르츠에레텍
구매 페이지
일반적인 가속도 센서와 달리 순수하게 흔들림의 크기를 감지합니다. 진도도 매우 관련성이 높은 SI값을 측정할 수 있는 센서입니다.
이번에는 이것을 사용하여 포르타 가이스트 현상을 파악할 수있는 가젯을 만들려고했습니다. 포르타 가이스트 현상이 발생하면 당연히 책상 등이 흔들리는 것을 예상할 수 있습니다. 그것을 잡고 wed를 통해 통지하는 것입니다.
구성
이번 IFTTT라는 서비스를 사용했습니다. M5STACK이면 쉽게 WI-FI를 통해 WEB에 연결할 수 있기 때문에 센서가 흔들림을 감지하면 WEB를 통해 LINE 통지를 받습니다.
프로그램
/**
D7S用お化け検出プログラム
**/
#include <M5Stack.h>
#include <D7S.h>
#include <WiFi.h>
#include <HTTPClient.h>
// URL関連
// https://maker.ifttt.com/trigger/[EventName]/with/key/[Key]
// [EventName]はIFTTTのAppletのEventName
// [Key]はIFTTTのWebhooksの設定のURLのhttps://maker.ifttt.com/use/XXXのXXX
// 情報通知用(Value1=SI値,Value2=PGAとなるようAppletを作っておく)
#define INFO_URL "https://maker.ifttt.com/trigger/obake/with/key/ddoHtC0QcgYk7A2vfFH-1P"
// Wifi関連
const char* ssid = "*****"; // WiFi SSID
const char* password = "******"; // WiFi PW
void setup() {
// M5Stack 初期化
M5.begin();
Serial.begin(9600);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(2);
// D7S 初期化
D7S.begin();
D7S.setAxis(SWITCH_AT_INSTALLATION);
//start the initial installation procedure
D7S.initialize();
// Wifi 初期化
M5.Lcd.print("Wifi Init");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
M5.Lcd.print(".");
}
M5.Lcd.println("\nWifi Initialized");
M5.Lcd.print("D7S Init");
//wait until the D7S is ready (the initializing process is ended)
while (!D7S.isReady()) {
M5.Lcd.print(".");
delay(500);
}
M5.Lcd.println("\nD7S Initialized");
// 表示更新
delay(500);
M5.Lcd.clear();
printData(0, 0);
}
/**
ゆれ情報のBodyを生成する
*/
String makeInfoBody(float si, float pga) {
return "{ \"value1\" : \""
+ String(si, 2)
+ String(pga, 2)
+ "\"}";
}
/**
ゆれ開始のPOSTを送信する
*/
void postInfo(float si, float pga) {
HTTPClient http;
String requestBody = makeInfoBody(si, pga);
Serial.println(requestBody);
http.begin(INFO_URL);
http.addHeader("Content-Type", "application/json");
int httpCode = http.POST(requestBody);
delay(200);
http.end();
}
/**
データをLCDに出力する
*/
void printData(float si, float pga) {
M5.Lcd.fillRect(0, 0, 320, 40, BLACK);
M5.Lcd.setCursor(0, 0);
M5.Lcd.print("SI:");
M5.Lcd.print(si);
M5.Lcd.println("[m/s]");
M5.Lcd.print("PGA:");
M5.Lcd.print(pga);
M5.Lcd.print("[m/s2]");
}
void loop() {
static float oldSi = 0.0f;
static float oldPGA = 0.0f;
//checking if there is an earthquake occuring right now
if (D7S.isEarthquakeOccuring()) {
float si = D7S.getInstantaneusSI();
float pga = D7S.getInstantaneusPGA();
// 値が0から変化した際、ポルターガイスト検知を送信
if (oldSi == 0.0f && oldPGA == 0.0f && (si > 0.0f || pga > 0.0f)) {
postInfo(si, pga);
}
// 情報に変化があったら表示更新
if (oldSi != si || oldPGA != pga) {
printData(si, pga);
}
oldSi = si;
oldPGA = pga;
}
delay(200);
}
IFTTT측
IFTTT 측은 이런 느낌
흔들림 정보를 받으면 LINE으로 휴대 전화에 알립니다.
시험 환경
이런 느낌으로 넣어 본다. 덧붙여서 여기는 wi-fi가 연결되기 때문에, 시험에는 뛰어난 환경입니다.
실행 결과
어디까지나 손으로 흔들어 본 결과입니다. 정말 유령이 나온 것은 아닙니다. 그 중 하룻밤 방치하고 실험합니다.
Reference
이 문제에 관하여(D7S-A0001과 M5STACK으로 유령 탐지기를 만들어 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirowo/items/26454ff58ec40d625b5e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에 이쪽을 소개합니다.
여기. 오므론제 D7S-A0001이 탑재되고 있어, Grove 케이블로 낙승으로 사용할 수 있습니다. M5STACK, 라즈베리 파이, Arduino이면 드라이버와 샘플을 다운로드 할 수 있으므로 매우 편합니다.
이 장치는 여기에서 구입할 수 있습니다.
기술 공유
구매 페이지
스위치 과학
구매 페이지
마르츠에레텍
구매 페이지
일반적인 가속도 센서와 달리 순수하게 흔들림의 크기를 감지합니다. 진도도 매우 관련성이 높은 SI값을 측정할 수 있는 센서입니다.
이번에는 이것을 사용하여 포르타 가이스트 현상을 파악할 수있는 가젯을 만들려고했습니다. 포르타 가이스트 현상이 발생하면 당연히 책상 등이 흔들리는 것을 예상할 수 있습니다. 그것을 잡고 wed를 통해 통지하는 것입니다.
구성
이번 IFTTT라는 서비스를 사용했습니다. M5STACK이면 쉽게 WI-FI를 통해 WEB에 연결할 수 있기 때문에 센서가 흔들림을 감지하면 WEB를 통해 LINE 통지를 받습니다.
프로그램
/**
D7S用お化け検出プログラム
**/
#include <M5Stack.h>
#include <D7S.h>
#include <WiFi.h>
#include <HTTPClient.h>
// URL関連
// https://maker.ifttt.com/trigger/[EventName]/with/key/[Key]
// [EventName]はIFTTTのAppletのEventName
// [Key]はIFTTTのWebhooksの設定のURLのhttps://maker.ifttt.com/use/XXXのXXX
// 情報通知用(Value1=SI値,Value2=PGAとなるようAppletを作っておく)
#define INFO_URL "https://maker.ifttt.com/trigger/obake/with/key/ddoHtC0QcgYk7A2vfFH-1P"
// Wifi関連
const char* ssid = "*****"; // WiFi SSID
const char* password = "******"; // WiFi PW
void setup() {
// M5Stack 初期化
M5.begin();
Serial.begin(9600);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(2);
// D7S 初期化
D7S.begin();
D7S.setAxis(SWITCH_AT_INSTALLATION);
//start the initial installation procedure
D7S.initialize();
// Wifi 初期化
M5.Lcd.print("Wifi Init");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
M5.Lcd.print(".");
}
M5.Lcd.println("\nWifi Initialized");
M5.Lcd.print("D7S Init");
//wait until the D7S is ready (the initializing process is ended)
while (!D7S.isReady()) {
M5.Lcd.print(".");
delay(500);
}
M5.Lcd.println("\nD7S Initialized");
// 表示更新
delay(500);
M5.Lcd.clear();
printData(0, 0);
}
/**
ゆれ情報のBodyを生成する
*/
String makeInfoBody(float si, float pga) {
return "{ \"value1\" : \""
+ String(si, 2)
+ String(pga, 2)
+ "\"}";
}
/**
ゆれ開始のPOSTを送信する
*/
void postInfo(float si, float pga) {
HTTPClient http;
String requestBody = makeInfoBody(si, pga);
Serial.println(requestBody);
http.begin(INFO_URL);
http.addHeader("Content-Type", "application/json");
int httpCode = http.POST(requestBody);
delay(200);
http.end();
}
/**
データをLCDに出力する
*/
void printData(float si, float pga) {
M5.Lcd.fillRect(0, 0, 320, 40, BLACK);
M5.Lcd.setCursor(0, 0);
M5.Lcd.print("SI:");
M5.Lcd.print(si);
M5.Lcd.println("[m/s]");
M5.Lcd.print("PGA:");
M5.Lcd.print(pga);
M5.Lcd.print("[m/s2]");
}
void loop() {
static float oldSi = 0.0f;
static float oldPGA = 0.0f;
//checking if there is an earthquake occuring right now
if (D7S.isEarthquakeOccuring()) {
float si = D7S.getInstantaneusSI();
float pga = D7S.getInstantaneusPGA();
// 値が0から変化した際、ポルターガイスト検知を送信
if (oldSi == 0.0f && oldPGA == 0.0f && (si > 0.0f || pga > 0.0f)) {
postInfo(si, pga);
}
// 情報に変化があったら表示更新
if (oldSi != si || oldPGA != pga) {
printData(si, pga);
}
oldSi = si;
oldPGA = pga;
}
delay(200);
}
IFTTT측
IFTTT 측은 이런 느낌
흔들림 정보를 받으면 LINE으로 휴대 전화에 알립니다.
시험 환경
이런 느낌으로 넣어 본다. 덧붙여서 여기는 wi-fi가 연결되기 때문에, 시험에는 뛰어난 환경입니다.
실행 결과
어디까지나 손으로 흔들어 본 결과입니다. 정말 유령이 나온 것은 아닙니다. 그 중 하룻밤 방치하고 실험합니다.
Reference
이 문제에 관하여(D7S-A0001과 M5STACK으로 유령 탐지기를 만들어 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirowo/items/26454ff58ec40d625b5e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
/**
D7S用お化け検出プログラム
**/
#include <M5Stack.h>
#include <D7S.h>
#include <WiFi.h>
#include <HTTPClient.h>
// URL関連
// https://maker.ifttt.com/trigger/[EventName]/with/key/[Key]
// [EventName]はIFTTTのAppletのEventName
// [Key]はIFTTTのWebhooksの設定のURLのhttps://maker.ifttt.com/use/XXXのXXX
// 情報通知用(Value1=SI値,Value2=PGAとなるようAppletを作っておく)
#define INFO_URL "https://maker.ifttt.com/trigger/obake/with/key/ddoHtC0QcgYk7A2vfFH-1P"
// Wifi関連
const char* ssid = "*****"; // WiFi SSID
const char* password = "******"; // WiFi PW
void setup() {
// M5Stack 初期化
M5.begin();
Serial.begin(9600);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(2);
// D7S 初期化
D7S.begin();
D7S.setAxis(SWITCH_AT_INSTALLATION);
//start the initial installation procedure
D7S.initialize();
// Wifi 初期化
M5.Lcd.print("Wifi Init");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
M5.Lcd.print(".");
}
M5.Lcd.println("\nWifi Initialized");
M5.Lcd.print("D7S Init");
//wait until the D7S is ready (the initializing process is ended)
while (!D7S.isReady()) {
M5.Lcd.print(".");
delay(500);
}
M5.Lcd.println("\nD7S Initialized");
// 表示更新
delay(500);
M5.Lcd.clear();
printData(0, 0);
}
/**
ゆれ情報のBodyを生成する
*/
String makeInfoBody(float si, float pga) {
return "{ \"value1\" : \""
+ String(si, 2)
+ String(pga, 2)
+ "\"}";
}
/**
ゆれ開始のPOSTを送信する
*/
void postInfo(float si, float pga) {
HTTPClient http;
String requestBody = makeInfoBody(si, pga);
Serial.println(requestBody);
http.begin(INFO_URL);
http.addHeader("Content-Type", "application/json");
int httpCode = http.POST(requestBody);
delay(200);
http.end();
}
/**
データをLCDに出力する
*/
void printData(float si, float pga) {
M5.Lcd.fillRect(0, 0, 320, 40, BLACK);
M5.Lcd.setCursor(0, 0);
M5.Lcd.print("SI:");
M5.Lcd.print(si);
M5.Lcd.println("[m/s]");
M5.Lcd.print("PGA:");
M5.Lcd.print(pga);
M5.Lcd.print("[m/s2]");
}
void loop() {
static float oldSi = 0.0f;
static float oldPGA = 0.0f;
//checking if there is an earthquake occuring right now
if (D7S.isEarthquakeOccuring()) {
float si = D7S.getInstantaneusSI();
float pga = D7S.getInstantaneusPGA();
// 値が0から変化した際、ポルターガイスト検知を送信
if (oldSi == 0.0f && oldPGA == 0.0f && (si > 0.0f || pga > 0.0f)) {
postInfo(si, pga);
}
// 情報に変化があったら表示更新
if (oldSi != si || oldPGA != pga) {
printData(si, pga);
}
oldSi = si;
oldPGA = pga;
}
delay(200);
}
IFTTT측
IFTTT 측은 이런 느낌
흔들림 정보를 받으면 LINE으로 휴대 전화에 알립니다.
시험 환경
이런 느낌으로 넣어 본다. 덧붙여서 여기는 wi-fi가 연결되기 때문에, 시험에는 뛰어난 환경입니다.
실행 결과
어디까지나 손으로 흔들어 본 결과입니다. 정말 유령이 나온 것은 아닙니다. 그 중 하룻밤 방치하고 실험합니다.
Reference
이 문제에 관하여(D7S-A0001과 M5STACK으로 유령 탐지기를 만들어 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirowo/items/26454ff58ec40d625b5e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이런 느낌으로 넣어 본다. 덧붙여서 여기는 wi-fi가 연결되기 때문에, 시험에는 뛰어난 환경입니다.
실행 결과
어디까지나 손으로 흔들어 본 결과입니다. 정말 유령이 나온 것은 아닙니다. 그 중 하룻밤 방치하고 실험합니다.
Reference
이 문제에 관하여(D7S-A0001과 M5STACK으로 유령 탐지기를 만들어 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hirowo/items/26454ff58ec40d625b5e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(D7S-A0001과 M5STACK으로 유령 탐지기를 만들어 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hirowo/items/26454ff58ec40d625b5e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)