IFTTT로 구글스프레드시트에 데이터 저장하기

by 조혜인 | 2017-02-28 18:22
ifttt iot particle photon spread sheet 구글 데이터 문서화 빅데이터 스프레드시트 아두이노

재료

  • 파티클 포톤(Particle Photon) (해외) 1개 (30000원)
  • 가변저항 (국내) 1개 (330원)
  • 막대저항 (1M ohm) (국내) 1개 (550원)
  • 16x2 LCD (국내) 1개 (2750원)
  • 피에조 소자 (해외) 1개 (1700원)
  • 피에조 소자 (국내) 1개 (2200원)
  • 파티클 포톤(Particle Photon) (국내) 1개 (36300원)

사물인터넷 환경에서 센싱한 데이터를 웹서버에 보관하고 관리하는 것도 중요하겠죠? 이번 프로젝트에서는  IFTTT를 통해 데이터를 보내고 Google 스프레드 시트에 기록해보려 합니다. 좋은 레퍼런스를 발견했습니다.(Piezo Element Multimeter)

아두이노와 센서 인터페이스는 간단합니다. 피에조에서 전압을 읽어와 LCD에 출력합니다. 그리고 데이터값을 구글스프레드 시트에 저장합니다. 이 프로젝트를 응용해 더 의미있는 데이터를 받아올 수 있겠죠? 화분의 수분량, 미세먼지농도 등... 여러 곳에 쓰일 수 있을 것 입니다.


여기서는 IoT를 위해 파티클 포톤(Particle Photon)을 이용했습니다. 국내에선 360000원, 해외에선 19$에 구매 가능하네요. 120MHz ARM Cortex M3 마이크로 컨트롤러와 와이파이 칩이 작은 모듈에 내장되어 있는 제품으로 사물인터넷 프로젝트를 구현할 때 사용할 수 있습니다. 또한, 파티클 클라우드 (Particle Cloud)라는 무료 클라우드 서비스를 제공하고 있기 때문에 다양한 기능을 구현할 수 있습니다.

아두이노에 ESP8266 모듈을 추가하는 방법도 있지만, 이번엔 IoT기능이 내장된 보드를 이용해보도록 하겠습니다. 



1. 준비물

- 피에조 (Piezo) 소자
- 저항(1M(1,000,000) ohm)
- Particle Photon (or 아두이노 + ESP8266)
- 브레드보드
- 16x2 LCD
- 가변저항(Potentiometer)
- 점퍼케이블






2. 만드는 과정

STEP 1. 회로 구성하기

Piezo Element

피에조 (+) ------ Photon A0
피에조 (-) ------ Photon GND
저항 (1M Ohm resistor) ----- A0 & GND 중간에

LCD

Pin 1 for LCD ------ Photon GND
Pin 2 for LCD ------ Photon VIN
Pin 3 for LCD ------ 가변저항
Pin 4 for LCD ------ Photon D0
Pin 5 for LCD ------ Photon GND
Pin 6 for LCD ------ Photon D1
Pin 11 for LCD ------ Photon D2
Pin 12 for LCD ------ Photon D3
Pin 13 for LCD ------ Photon D4
Pin 14 for LCD ------ Photon D5
Pin 15 for LCD ------ Photon VIN
Pin 16 for LCD ------ Photon GND










파티클포톤과 LCD 연결 구체적인 자료는 여기서 확인하세요. (How to Setup a Particle Photon and a 16x2 LCD Screen)




STEP 2. 소프트웨어 설치하기

1. Particle IDE 열기

1) web IDE
로그인 해서 IDE를 엽니다. 자세한 가이드는 링크를 참조하세요.



2) 컴퓨터 설치 IDE


2. 라이브러리 추가하기

Particle Build로 가서 LiquidCrystal을 찾은 다음 LIQUADCRYSTAL 검색 결과를 클릭하십시오.


3. 소스코드 작성하기

IDE에 다음과 같이 소스코드를 작성합니다. IFTTT어플에서 스프레드시트에 데이터값을 보내는 코드입니다.

#include "application.h"
#include "LiquidCrystal/LiquidCrystal.h"

// Make sure to update these to match how you've wired your pins.

// pinout on LCD [RS, EN, D4, D5, D6, D7];

// pin nums LCD [ 4, 6, 11, 12, 13, 14];

LiquidCrystal lcd(D0, D1, D2, D3, D4, D5);

// these constants won't change: const int ledPin = 7;

// led connected to digital pin 13 const

int knockSensor = A0;

// the piezo is connected to analog pin 0 const int threshold = 100;

// threshold value to decide when the detected sound is a knock or not

float base;

float analog;

double analogV;

int sensorReading = 0;

int ledState = LOW;

void setup() {

lcd.begin(16,2);

lcd.print("Current Voltage:");

pinMode(ledPin, OUTPUT);

Serial.begin(9600);

Particle.variable("analogV", analogV); }

void loop() {

sensorReading = analogRead(knockSensor);

if (sensorReading >= threshold) {

ledState = !ledState;

digitalWrite(ledPin, ledState);

lcd.setCursor(0,1);

base = (sensorReading/3.999);

delay(50);

analog = (base/1024);

delay(50);

analogV = (analog*5);

lcd.print(analogV);

Serial.println(sensorReading);

Serial.println(analogV);

delay(300); // delay to avoid overloading the serial port buffer }

}










































































4. 빌드(Build) 하기

Flash 버튼을 누릅니다.

좀 더 자세한 내용은 다음 포스팅을 참조하세요.

(How to Setup a Particle Photon and a 16x2 LCD Screen)



STEP 3. IFTTT

1. IFTTT 계정 만듭니다.

2.가져올 변수의 이름을 코드에서 확인합니다. ("Particle.variable ("analogV ", analogV);")

3. IFTTT 레시피를 작성합니다. Google 스프레드 시트에 연결하고 화면의 지시 사항을 따르십시오.
화면에 나타난 그대로 진행하시면 됩니다. 셋팅은 변경하지 않습니다.

3.  Photon이 네트워크에 연결되면 해당 변수 이름(analogV)이 표시됩니다. 그리고 IFTTT를 통해 구글스프레드시트로 데이터가 전송됩니다.


3. 마무리

기존 프로젝트에서 파티클 포톤 보드를 이용했기 때문에 썼지만 가격이 비싸고, IDE 개발툴을 따로 이용해야 한다는 점에서 아두이노 esp8266이나 wemos로 바꾸어 쓰는 것이 좋을 것 같습니다. IFTTT로 데이터를 문서화할 수 있다는 점에서 좋은 프로젝트였습니다.



댓글 0

사물 인터넷(IoT)

IFTTT로 구글스프레드시트에 데이터 저장하기

by 조혜인

MADE BY

조혜인

arduino, processing, rhino, sketchup, 아두이노, 에프터이펙트, 포토샵, 프리미어