목차 한국기술교육대학교 강사: 김 영 준 ㈜헬로앱스 1일차 아두이노 제어 실습

Slides:



Advertisements
Similar presentations
Android Application Development Tutorial. Topics Lecture 6 Overview Programming Tutorial 3: Sending/Receiving SMS Messages.
Advertisements

Application Fundamentals. See: developer.android.com/guide/developing/building/index.html.
Cosc 5/4730 Android SMS. A note first Depending on the API level, an import changes because of a deprecated API 3 uses – import android.telephony.gsm.SmsManager;
Client / Server Programming in Android Eclipse IDE Android Development Tools (ADT) Android SDK
@2011 Mihail L. Sichitiu1 Android Introduction Hello World.
Android Application Development Tutorial. Topics Lecture 5 Overview Overview of Networking Programming Tutorial 2: Downloading from the Internet.
Chien-Chung Shen Manifest and Activity Chien-Chung Shen
Introduction to Android Programming Content Basic environmental structure Building a simple app Debugging.
Getting Started with Android APIs Ivan Wong. Motivation - “Datasheet” - Recently exposed to what’s available in Android - So let’s see what API’s are.
Mobile Computing Lecture#08 IntentFilters & BroadcastReceivers.
8. Notification과 Alarm.
Package org.androidtown.database.query; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase;
Mobile Programming Lecture 6
로봇 모니터링 2/2 UNIT 21 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 Broadcasting Service 2.
Social Media Apps Programming Min-Yuh Day, Ph.D. Assistant Professor Department of Information Management Tamkang University
1 Announcements Homework #2 due Feb 7 at 1:30pm Submit the entire Eclipse project in Blackboard Please fill out the when2meets when your Project Manager.
8-3. 버튼 천안천일고등학교 류빈. 1. 가장 기본적인 위젯인 TextView 를 통해 위젯의 일반 적인 특징과 프로그래밍 방법을 상세하게 연구해보고 버튼의 사용 방법을 익힌다. 학습목표 1. 리소스 2. 텍스트 뷰 3. 버튼 학습내용 2.
2012 내장형 시스템 설계  Full Color LED 디바이스 구성  Full Color LED 디바이스 드라이버  Full Color LED JNI 라이브러리 작성  Full Color LED 안드로이드 App 구현  JNI 라이브러리.
망고 100 보드로 놀아보자 -18 Android 메뉴 생성 및 아이콘 생성 (SPDIF,WM8960)
Android - Broadcast Receivers
로봇을 조종하자 3/4 UNIT 17 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 스마트 폰의 센서를 사용할 수 있다. 2.
로봇 모니터링 1/2 UNIT 20 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 Message Queue Handler 2.
1 Introducing Activity and Intent. 2 Memory LinearLayout, weight=2 LinearLayout, weight=1 TextView ListView.
Mobile Device Development Camera and Sensors Dr.YingLiang Ma.
Copyright© Jeffrey Jongko, Ateneo de Manila University Deconstructing HelloWorld.
로봇을 조종하자 4/4 UNIT 18 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 Intent Activity 호출 2.
Android and s Ken Nguyen Clayton state University 2012.
아주대학교 LifecareScienceLAB Android Seminar 3 rd class Android Software Development 2011/05/04 – p.m. 06:00 – 팔달관 409 호 아주대학교.
Google map v2.
Android 基本 I/O. 基本 I/O 介面元件 在此節中主要介紹常見的 I/O 使用者介 面元件 – Button, TextView, 以及 EditText , 學習者可以學會: – Android 的視窗表單設計 res/layout/main.xml – Android SDK –
David Sutton SMS TELEPHONY IN ANDROID. OUTLINE  This week’s exercise, an SMS Pub Quiz  Simulating telephony on an emulator  Broadcast Intents and broadcast.
CMPE419 Mobile Application Development Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren
CMPE419 Mobile Application Development Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren
Lab7 – Appendix.
Lecture 3 Zablon Ochomo Android Layouts Lecture 3 Zablon Ochomo
Android Introduction Hello World
Android N Amanquah.
Android Intent Filters
Adapting to Display Orientation
GUI Programming Fundamentals
Android Introduction Hello World.
Android Notifications
Cleveland State University
Android Widgets 1 7 August 2018
Broadcast Receivers A Android Component where you can register for system or application events, receive and react to broadcast intent. Each broadcast.
Android Introduction Camera.
תכנות ב android אליהו חלסצ'י.
CIS 470 Mobile App Development
CIS 470 Mobile App Development
CIS 470 Mobile App Development
CIS 470 Mobile App Development
Many thanks to Jun Bum Lim for his help with this tutorial.
CMPE419 Mobile Application Development
CMPE419 Mobile Application Development
UNIT 08 그림책 만들기 2/2 로봇 SW 콘텐츠 교육원 조용수.
BMI Android Application will take weight and height from the users to calculate Body Mass Index (BMI) with the information, whether user is underweight,
CIS 470 Mobile App Development
CIS 470 Mobile App Development
CIS 470 Mobile App Development
Android Notifications
Adding Components to Activity
CMPE419 Mobile Application Development
BLP 4216 MOBİL UYGULAMA GELİŞTİRME-2
CMPE419 Mobile Application Development
CMPE419 Mobile Application Development
Mobile Programming Broadcast Receivers.
Android Sensor Programming
CIS 694/EEC 693 Android Sensor Programming
CIS 694/EEC 693 Android Sensor Programming
CIS 694/EEC 693 Android Sensor Programming
Presentation transcript:

목차 한국기술교육대학교 강사: 김 영 준 ㈜헬로앱스 http://www.helloapps.co.kr 1일차 아두이노 제어 실습 1일차 아두이노 제어 실습 2일차 스마트 디바이스 설계 및 응용 3일차 AVR C 기반의 마이크로컨트롤러 프로그래밍 4일차 마이컴 제어용 안드로이드 프로그래밍 5일차 원격 제어용 안드로이드 프로그래밍 강사: 김 영 준 ㈜헬로앱스 http://www.helloapps.co.kr

스마트 디바이스 설계 한국기술교육대학교 스마트 디바이스 제작 SMS 수신 알림장치 LTE LTE 창문열기 원격 조정 (서모모터 제어) 아두이노 안드로이드 스마트폰 안드로이드 스마트폰 블루투스 온습도 원격 측정 조도 원격 측정 원격 전등 제어

블루투스 예제 준비

예제1 다운로드 http://code.google.com/p/android-hacks/ android-hacks_20101026.zip 다운로드 Hack36 폴더 useBluetooth 프로젝트 참조

다운로드 예제를 기존 Workspace에 추가 Eclipse/File/import 메뉴 실행

추가된 예제 프로젝트

프로젝트 생성 및 코드 복사

프로젝트 생성후 코드 복사 안드로이드 프로젝트 생성 Res/layout 폴더의 파일 Copy & Paste Res/menu 폴더 생성 Res/menu 폴더의 파일 Copy & Paste Res/values 폴더의 파일 Copy & Paste 해당 파일을 열어서 일본어 내용을 영문으로 수정 AndroidManifes 파일 Permission 부분 복사 추가적인 Activity 항목 복사 Src 폴더의 파일 복사

오류 해결 오류 항목에 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; 오류가 없으면 기본적인 프로그램 준비 완료

블루투스 통신 테스트

블루투스 통신 테스트 CRX10 전원 On DeviceListActivity를 실행하여 블루투스 지원 및 사용권한 테스트 기기의 메뉴 버튼 클릭 메뉴에서 Scan new devices 선택 페어링시 “0000” 입력

블루투스 연결 테스트 ClientActivity를 실행하여 블루투스 연결 테스트 기기의 메뉴 버튼 클릭 메뉴에서 CNKR???? 선택 Connecting 메시지 표시 확인 Connected 메시지 표시 확인

센서 처리

주의사항 센서처리는 에뮬레이터에서 작동되지 않음 반드시 실 장비를 활용할 것

참고자료 http://cafe.naver.com/roboconsulting/ MySensorExample.zip 소스 다운로드

새로운 안드로이드 프로젝트 생성 ProjectName MySensorExample PackageName Sensor.myapp

Layout 작업 – main.xml

Layout 작업 – main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Orientation" /> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" > <requestFocus /> </EditText> android:id="@+id/editText2" android:layout_height="wrap_content" /> android:id="@+id/editText3" android:id="@+id/textView2" android:layout_height="wrap_content" android:text="Accelerometer"/> android:id="@+id/editText4" android:id="@+id/editText5" android:id="@+id/editText6" android:id="@+id/textView3" android:text="Magnetic Field" /> android:id="@+id/editText7" android:id="@+id/editText8" android:id="@+id/editText9" </LinearLayout>

MySensorExampleActivity.java Import 문장 import android.app.Activity; import android.os.Bundle; import android.widget.*; import android.content.Context; import android.hardware.*;

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;

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),

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]); };

실습 센서의 기울기를 활용하여 로봇을 제어하시오

SMS를 이용한 아두이노 제어 http://androidexample.com/Incomming_SMS_Broadcast_Receiver_-_Android_Example/index.php?view=article_discription&aid=62 구글에서 “android sms broadcastreceiver”로 검색

SMS를 이용한 아두이노 제어 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androidexample.broadcastreceiver" android:versionCode="1" android:versionName="1.0" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.androidexample.broadcastreceiver.BroadcastNewSms" android:label="@string/app_name" > <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>

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); }

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); }