반응형

분류 전체보기 133

[Android] Ndef 읽기 쓰기

이번에는 NFC를 이용하여 Ndef Message를 NFC에 읽고 쓰는 방법에 대해 알아봅시다. 일단 안드로이드에서 Empty Project를 하나 생성합니다. AndroidManifest.xml 을 열고 위쪽에 다음과 같은 내용을 넣습니다. 문법의 설명처럼 NFC의 권한을 넣고, 하드웨어에서 NFC 기능이 필요하다 라고 명시해 놓은겁니다. package com.antoine.ndef import android.app.PendingIntent import android.content.Intent import android.nfc.NdefMessage import android.nfc.NdefRecord import android.nfc.NfcAdapter import android.nfc.Tag impo..

[IoT] WiFi Max RSSI인 SSID 얻기

esp32를 사용하여 Wifi를 연결할 때, 첫 번째로 가장 중요한 요소는 Wifi와의 연결 강도가 될 수 있습니다. 기껏 esp32를 통해 간단한 웹서버를 만들거나 mqtt를 사용한다거나 카메라 화면등을 가져오는데 Wifi의 연결때문에 신호가 끊어져서 데이터를 읽는 경우가 많습니다. 아래의 코드는 현재 ESP32가 연결 가능한 Wifi들을 수집하여 RSSI가 가장 좋은 SSID를 얻는 방법입니다. int numSsid = WiFi.scanNetworks(); if(numSsid < 0) numSsid = 0; if (numSsid == -1) { INFO("Couldn't get a wifi connection"); while (true); } // print the list of networks se..

프로그래밍/IoT 2020.09.14

[Arduino] Serial Log 관리

Arduino를 개발할 때, 우린 주로 Jtag를 사용하는 경우를 제외하곤 대부분 디버깅을 Serial port를 이용하여 디버깅을 합니다. 그런데 로그도 일반 앱처럼 Info, Warn, Debug, Error 단위로 관리는 하지 않죠. 이를 위한 방법으로 아래와 같이 사용하면 편합니다. 원하는 Log level까지만 표기하도록 전처리기로 선언하여 사용하면 관리가 쉽습니다. #pragma once #include #include // Change _LOGLEVEL_ to set tracing and logging verbosity // 0: DISABLED: no logging // 1: ERROR: errors // 2: WARN: errors and warnings // 3: INFO: errors..

프로그래밍/IoT 2020.09.14

Modbus RTU 구현

과거 Modbus 통신으로 설비 데이터를 수집하는 서브 프로젝트를 맡은 적이 있다. 그당시 nuget에 올라와 있는 modbus 통신 라이브러리를 사용하려고하니 이상하게 동작이 안되는 것들이 많았다. 어차피 시리얼 통신이고 데이터 리딩하는것에 남의 라이브러리 가져다 쓰느니 내가 가볍게 만들어서 쓰는게 좋겠다 싶어서 제작하였다. 코드에는 Write부분이 없긴한데 사실 Write하는 부분도 상당히 간단하기 때문에 Read구문과 비슷하게 코딩하면 될듯. 다른 사람을 위해 올립니다. 적당히 수정하여 사용하시면 될것같습니다. 귀찮음이 많이 보이는 코드지만 특별하게 문제가 없는 코드임으로 잘 사용하시길 바랍니다. using System; using System.Collections.Generic; using Sys..

프로그래밍/C# 2020.09.14

[IoT] esp32 Flash Download Tools 이용하여 업로드

우리가 VS Code에 PlatformIO Plugin을 이용하여 개발을 하는 경우, esp32에 프로그램을 업로드 하려면 vs code를 이용하여 업로드 하는 방법밖에 없다. 하지만 소스코드를 매번 컴파일 하며 업로드를 하는 것은 시간 낭비이며, 업체에 소스코드를 넘겨서 생산하는것은 더더욱 무리다. 때문에 .bin파일을 이용하여 esp32에 프로그램을 업로드 하는 방법을 소개하고자 한다. 먼저 해당 프로젝트를 열고 터미널을 연다. pio run -v -t upload 위의 코드를 입력하면 기존에 업로드 할때 나왔던 정보가 아닌 디테일한 정보들이 나온다. 이러한 정보 중 다음과 같은 데이터를 이용한다. 대충 이러한 정보인데 텍스트를 이쁘게 풀어서 써보자면 아래와 같다. "c:\users\jade4375\..

프로그래밍/IoT 2020.09.14

[Arduino] Button Control

우리가 Arduino나 마이크로 프로세서 등을 사용할 때 I/O를 이용하는 가장 기본적으로 예는 바로 버튼일 것이다. 이같은 회로를 바로 사용하면 채터링(Chattering) 현상이 발생하게 되는데 시그널로 확인해본다면 아래와 같다. 채터링 현상이 일어나는동안 SW적으로 데이터를 읽으면 1도 아니고 0도 아닌 이상한 상태가 되어 의도하지 않은 값을 읽어올수 있다. 이와 같은 상황을 해결하기 위해서 Debouncing이라는 기법을 이용하여 해결한다. 쉽게 설명하여 버튼 입력이 일어나는 동안 Debouncing Time만큼 입력을 무시하면 된다. 그리고 또한 실제 개발 환경에서는 이러한 버튼들에 대해 많은 I/O를 할당 하기 어려운 경우들이 대부분이다. 그러면 적은 수의 버튼을 이용하여 셋팅이나 조작을 해야..

프로그래밍/IoT 2020.09.14

[Android] 경기지역화폐 지도 만들기 - 4

이번 포스트 지난 포스트에서는 Retrofit을 이용해서 실제로 지역화폐 가맹점 데이터를 가져와봤다. 이번 포스트에서는 Dependency Injection(의존성 주입)을 사용하기 위해 Koin이라는 라이브러리를 적용하겠다. 의존성 주입의 이점은 대표적으로 3가지가 있다. 의존 관계 설정이 컴파일시가 아닌 실행시에 이루어져 모듈간의 결합도를 낮출 수 있다. 코드 재사용을 높혀서 작성된 모듈을 여러 곳에서 소스코드의 수정 없이 사용할 수 있다. 모의 객체 등을 이용한 단위 테스트의 편의성을 높여준다. 위와 같은 이유로 사용되어지는데, 사실상 개발을 하다보면 확실히 느끼게 되는 점 중 하나는 결합도의 문제이다. 객체 간의 결합도가 높게 되면 A 객체의 수정 시, B 객체도 수정해야하는 불상사가 생기게 되고..

[WPF] MVVM에서 ComboBox SelectionChanged Binding

단순히 xaml에서 code behind로 SelectionChanged 이벤트는 쉽게 헨들러를 통해 추가할 수 있다. 하지만 MVVM에서 Binding을 통해 Binding을 하려고 하면 바인딩을 하기 위한 속성이 존재 하지 않는다. 이를 해결하기 위해 System.Windows.Interactivity라는 Reference가 존재한다. 단순히 Blend SDK가 안깔려 있다면 아래와 같은 내용을 최상위 컨트롤에 추가해준다. xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 깔려 있을경우 아래의 내용을 추가해준다. xmlns:i="http://schemas.microsoft.com/expre..

프로그래밍/WPF 2020.08.21

[Android] 경기지역화폐 지도 만들기 - 3

이번 포스트 이번 포스트에서는 retrofit2 라이브러리를 이용하여 공공데이터 open API에서 데이터를 다운 받아보겠다. 일단 retrofit에 대해서 알아보자 https://square.github.io/retrofit/ Retrofit A type-safe HTTP client for Android and Java square.github.io 상단의 홈페이지에 가보면 사용법과 셋팅법에 대해서 기술하고 있다. public interface GitHubService { @GET("users/{user}/repos") Call listRepos(@Path("user") String user); } 위의 예제에서는 @GET 이라는 Annotation을 이용하여 RESTful service들을 이용할 ..

[Android] 경기지역화폐 지도 만들기 - 2

지난 포스트 지난 시간에는 경기도의 지역화폐 가맹점 데이터를 습득하기 위해 공공데이터포탈에서 가입 그리고 인증키를 발급받았다. 이번 포스트 이번 포스트에서는 Android Studio를 이용하여 프로젝트를 생성하고, OpenAPI에서 사용하는 데이터를 이용하기 위한 데이터 클래스를 만들도록하겠다. 이제 Android Studio를 이용하여 프로젝트를 생성하도록 하자. Empty Activity에 kotlin으로 적용하고 sdk버전은 7.0으로 셋팅하자. 컴파일도 해보고 실행도 시켜서 잘돌아가는지 확인하자. 뭔가 잘 안된다면 열심히 검색... 큰 문제는 아닐것이다. 대부분 SDK가 설치가 안되었다거나 에뮬레이터 버전 문제가 대부분이다. 이제 우리가 요청한 URL을 통해서 데이터를 받아야 하는데 일단 어떤 ..

반응형