Download presentation
Presentation is loading. Please wait.
1
목차 한국기술교육대학교 강사: 김 영 준 ㈜헬로앱스 http://www.helloapps.co.kr 1일차 아두이노 제어 실습
1일차 아두이노 제어 실습 2일차 스마트 디바이스 설계 및 응용 3일차 AVR C 기반의 마이크로컨트롤러 프로그래밍 4일차 마이컴 제어용 안드로이드 프로그래밍 5일차 원격 제어용 안드로이드 프로그래밍 강사: 김 영 준 ㈜헬로앱스
2
스마트 디바이스 설계 한국기술교육대학교 스마트 디바이스 제작 SMS 수신 알림장치 LTE LTE 창문열기 원격 조정
(서모모터 제어) 아두이노 안드로이드 스마트폰 안드로이드 스마트폰 블루투스 온습도 원격 측정 조도 원격 측정 원격 전등 제어
3
블루투스 예제 준비
4
예제1 다운로드 http://code.google.com/p/android-hacks/
android-hacks_ zip 다운로드 Hack36 폴더 useBluetooth 프로젝트 참조
5
다운로드 예제를 기존 Workspace에 추가
Eclipse/File/import 메뉴 실행
6
추가된 예제 프로젝트
7
프로젝트 생성 및 코드 복사
8
프로젝트 생성후 코드 복사 안드로이드 프로젝트 생성 Res/layout 폴더의 파일 Copy & Paste
Res/menu 폴더 생성 Res/menu 폴더의 파일 Copy & Paste Res/values 폴더의 파일 Copy & Paste 해당 파일을 열어서 일본어 내용을 영문으로 수정 AndroidManifes 파일 Permission 부분 복사 추가적인 Activity 항목 복사 Src 폴더의 파일 복사
9
오류 해결 오류 항목에 jp.???..Constants. ?? 에서 jp.?? 부분 대체
jp.co.brilliantservice.hacks.usebluetooth.Constants.TAG; 위의 라인을 실제 프로젝트 Package 이름으로 교체 [변경전] import static jp.co.brilliantservice.hacks.usebluetooth.Constants.TAG; [변경후] import static com.example.mybluetooth1.Constants.TAG; 오류가 없으면 기본적인 프로그램 준비 완료
10
블루투스 통신 테스트
11
블루투스 통신 테스트 CRX10 전원 On DeviceListActivity를 실행하여 블루투스 지원 및 사용권한 테스트
기기의 메뉴 버튼 클릭 메뉴에서 Scan new devices 선택 페어링시 “0000” 입력
12
블루투스 연결 테스트 ClientActivity를 실행하여 블루투스 연결 테스트
기기의 메뉴 버튼 클릭 메뉴에서 CNKR???? 선택 Connecting 메시지 표시 확인 Connected 메시지 표시 확인
13
센서 처리
14
주의사항 센서처리는 에뮬레이터에서 작동되지 않음 반드시 실 장비를 활용할 것
15
참고자료 MySensorExample.zip 소스 다운로드
16
새로운 안드로이드 프로젝트 생성 ProjectName MySensorExample PackageName Sensor.myapp
17
Layout 작업 – main.xml
18
Layout 작업 – main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Orientation" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" > <requestFocus /> </EditText> android:layout_height="wrap_content" /> android:layout_height="wrap_content" android:text="Accelerometer"/> android:text="Magnetic Field" /> </LinearLayout>
19
MySensorExampleActivity.java Import 문장 import android.app.Activity;
import android.os.Bundle; import android.widget.*; import android.content.Context; import android.hardware.*;
20
MySensorExampleActivity.java 전역변수 SensorManager sensorManager;
private EditText edit1; private EditText edit2; private EditText edit3; private EditText edit4; private EditText edit5; private EditText edit6; private EditText edit7; private EditText edit8; private EditText edit9;
21
MySensorExampleActivity.java public void onCreate(Bundle savedInstanceState)에 추가 edit1 = (EditText)findViewById(R.id.editText1); edit2 = (EditText)findViewById(R.id.editText2); edit3 = (EditText)findViewById(R.id.editText3); edit4 = (EditText)findViewById(R.id.editText4); edit5 = (EditText)findViewById(R.id.editText5); edit6 = (EditText)findViewById(R.id.editText6); edit7 = (EditText)findViewById(R.id.editText7); edit8 = (EditText)findViewById(R.id.editText8); edit9 = (EditText)findViewById(R.id.editText9); //Sensor sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_NORMAL); sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
22
MySensorExampleActivity.java 모듈 추가
private final SensorEventListener sensorListener = new SensorEventListener() { public void onAccuracyChanged(Sensor sensor, int accuracy) { // } public void onSensorChanged(SensorEvent event) { switch(event.sensor.getType()){ case Sensor.TYPE_ORIENTATION: edit1.setText("Azimuth : " + event.values[0]); edit2.setText("Pitch : " + event.values[1]); edit3.setText("Roll : " + event.values[2]); break; case Sensor.TYPE_ACCELEROMETER: edit4.setText("X-axis G : " + event.values[0]); edit5.setText("Y-axis G : " + event.values[1]); edit6.setText("Z-axis G : " + event.values[2]); case Sensor.TYPE_MAGNETIC_FIELD: edit7.setText("uT X : " + event.values[0]); edit8.setText("uT Y : " + event.values[1]); edit9.setText("uT Z : " + event.values[2]); };
23
실습 센서의 기울기를 활용하여 로봇을 제어하시오
24
SMS를 이용한 아두이노 제어 구글에서 “android sms broadcastreceiver”로 검색
25
SMS를 이용한 아두이노 제어 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" package="com.androidexample.broadcastreceiver" android:versionCode="1" android:versionName="1.0" > <application android:allowBackup="true" > <activity android:name="com.androidexample.broadcastreceiver.BroadcastNewSms" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.androidexample.broadcastreceiver.IncomingSms"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </receiver> </application> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> </manifest>
26
SMS를 이용한 아두이노 제어 public class IncomingSms extends BroadcastReceiver {
// Get the object of SmsManager final SmsManager sms = SmsManager.getDefault(); public void onReceive(Context context, Intent intent) { // Retrieves a map of extended data from the intent. final Bundle bundle = intent.getExtras(); try { if (bundle != null) { final Object[] pdusObj = (Object[]) bundle.get("pdus"); for (int i = 0; i < pdusObj.length; i++) { SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); String phoneNumber = currentMessage.getDisplayOriginatingAddress(); String senderNum = phoneNumber; String message = currentMessage.getDisplayMessageBody(); Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message); // Show Alert int duration = Toast.LENGTH_LONG; Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration); toast.show(); } // end for loop } // bundle is null } catch (Exception e) { Log.e("SmsReceiver", "Exception smsReceiver" +e); }
27
SMS를 이용한 아두이노 제어 package com.example.youngjoon.broadcasttest_sms;
import android.content.Intent; import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter filter = new IntentFilter(("android.provider.Telephony.SMS_RECEIVED")); SMSReceiver receiver = new SMSReceiver(); registerReceiver(receiver, filter); }
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.