본문 바로가기
아두이노(Arduino)/아두이노 중급

[아두이노중급.003] 앱으로 아두이노 제어하기(스마트홈)

by 긱펀 2022. 4. 25.
반응형

[아두이노중급.003] 앱으로 아두이노 제어하기(스마트홈)

 

0. 스마트홈 동작영상

 

 

 

1.앱 만들기

[1] 앱인벤터란?

MIT App Inventor 는 어린이를 포함한 모든 사람이 Android 휴대폰, iPhone 및 Android/iOS 태블릿용으로 완전한 기능의 앱을 구축할 수 있도록 하는 직관적이고 시각적인 프로그래밍 환경입니다. MIT App Inventor를 처음 사용하는 사용자는 30분 이내에 간단한 첫 번째 앱을 설치하고 실행할 수 있습니다. 또한 블록 기반 도구를 사용하면 기존 프로그래밍 환경보다 훨씬 짧은 시간에 복잡하고 영향력이 큰 앱을 쉽게 만들 수 있습니다.

 

 

[2] 앱인벤터 디자인

 

[3] 앱인벤터 코딩

 

 

*앱 다운받기(안드로이드 apk 파일)

App_Smart_Home.apk
3.48MB

 

 

 

2. 아두이노 회로도

 

 

3. 아두이노 코딩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <SoftwareSerial.h>
#include <MsTimer2.h>
#include <OneWire.h>
#include <DallasTemperature.h>
 
#define RX_PIN        5
#define TX_PIN        8
#define LIGHT_PIN     A0
#define IR_PIN        6
#define TEMP_PIN      7
#define LED1_PIN      9
#define LED2_PIN      4
 
SoftwareSerial BT(RX_PIN, TX_PIN);
OneWire oneWire(TEMP_PIN); 
DallasTemperature temp(&oneWire);
 
int value_ir;
int value_light;
int value_temp;
 
void setup() {
  BT.begin(9600);
  pinMode(LED1_PIN, OUTPUT);
  pinMode(LED2_PIN, OUTPUT);
  pinMode(IR_PIN, INPUT);
  pinMode(TEMP_PIN, INPUT);
  temp.begin();
  MsTimer2::set(1000, send_value);
  MsTimer2::start();
}
 
void loop() {
  if(BT.available() > 0) {
    char input = BT.read();
    if(input == 'A') TV_ON();
    else if(input == 'B') TV_OFF();
    else if(input == 'C') LED_ON();
    else if(input == 'D') LED_OFF();
  }
}
 
void send_value() {
  value_ir = digitalRead(IR_PIN);
  value_light = analogRead(LIGHT_PIN);
  temp.requestTemperatures();
  value_temp = temp.getTempCByIndex(0);
  
  BT.print(value_ir);
  BT.print("$");
  BT.print(value_light);
  BT.print("$");
  BT.print(value_temp);
}
 
void TV_ON() {
  digitalWrite(LED1_PIN, HIGH);
}
 
void TV_OFF() {
  digitalWrite(LED1_PIN, LOW);
}
 
void LED_ON() {
  digitalWrite(LED2_PIN, HIGH);
}
 
void LED_OFF() {
  digitalWrite(LED2_PIN, LOW);
}
 
cs

 

 

728x90
반응형

댓글