2014년 12월 10일 수요일

Cocoa, Xcode 관련 커뮤니티

사용자 삽입 이미지
Apple Develope Connection
url: http://www.apple.co.kr/developer/
애플에서 운영하는 맥개발 지원 공식사이트 입니다.  맥개발과 관련하여 필수적인 사이트이며, 레퍼런스, 메뉴얼, 샘플소스, 관련사이트 등 개발에 관련된 전반적인 지원을 받으실 수 있습니다.


사용자 삽입 이미지
Mac OS X 개발자 포럼
url: http://www.osxdev.org
맥 OSX에서 개발에 관한 대표적인 한국 포럼입니다. 위키에서 많은 자료와 번역 자료를 찾을 수 있습니다.



사용자 삽입 이미지
KMUG (한국 매킨토시 사용자 그룹)
url: http://www.kmug.co.kr
맥사용자 사이트이며 개발에 관한 내용은 커뮤니티/공부하자 밑에 코코아/카본 개발실에서 코코아 개발과 관련된 글, 질문/답변을 보실 수 있습니다. 


사용자 삽입 이미지
OS X Page 
url: http://osx.hyperjeff.net
OS X 개발에 관한 심도 있는 자료들을 볼 수 있습니다. 특히 각종 어플리케이션과 소스를 다운로드 받으실 수 있습니다. 적극 추천하는 사이트 입니다. 


사용자 삽입 이미지
iDevGames
url: http://www.idevgames.com
맥 게임개발 커뮤니티 입니다. 맥에서 게임제작과 관련하여 다양한 분류의 자료와 포스트들이 있습니다. 



사용자 삽입 이미지
CS193E
url: http://www.stanford.edu/class/cs193e/
코코아 개발 강좌 사이트 입니다. 메뉴얼, 튜토리알, 강좌, 샘플등을 다운로드 할 수 있습니다.



사용자 삽입 이미지
Cocoabuilder
url: http://www.cocoabuilder.com코코아 개발과 관련된 질문과 답변을 할 수 있는 포럼 사이트 입니다.




사용자 삽입 이미지
CocoaDev
url: http://www.cocoadev.com
코코아 개발과 관련된 Wiki 사이트이며,  커뮤니티와 링크 등 다양한 자료가 있습니다.



사용자 삽입 이미지
CocoaLab
url: http://www.cocoalab.com
Become an Xcoder란 문서로 유명한 코코아와 관련된 위키, 소스, 샘플 등의 자료가 있습니다. 코코아를 처음 시작하시는 분은  Become an Xcoder란 문서를 적극 추천 합니다.


사용자 삽입 이미지
Cocoa dev Central
url: http://www.cocoadevcentral.com
쉽게 따라할 수 있는 코코아 개발 튜토리알 사이트 입니다. 기타 OSX 개발과 관련된 유명 블로그들의 포스트와 링크가 있습니다. 



잘 정리해놓았는데, Chrome OS 즐겨찾기를 해놓았으나, 그래도 담아왔다.

--------------------------------
1차 출처
http://www.cocoadev.co.kr/category

LCD, LED, Touchpanel, Module and Controller

산업용으로 사용 하려고 큰사이즈의 (7inches, 17inches) 터치패널을 보는 중인데 Lcd를 제외하고 단순히 터치패널만 있거나, 모듈로써 있는 것은 프로그램 기반이 Windows CE 이다. Arduino 용량 문제상 3인치 정도만 Uno에서 사용하고 그 이상은 핀의 개수 부족으로 Mega를 쓰는 것으로 알고 있다. (몇인치까지 지원가능한지 모름.)
 단순한 이미지를 띄우거나, 터치 기능으로 간단한 몇페이지를 만들고 하려해서 C기반의 AVR, 혹은 Arduino를 이용하여 제작하려고 한다. 검색의 문제인지, 누구도 산업용으로는 Windows CE를 사용하기 때문에 관심이 없어서 인지 Arduino 기반의 PLC Controllio 를 제외하고는 Arduino 기반의 제품이 보이지 않는다. 안정성이 PLC가 뛰어나기 때문에 rom writer 를 사용하여 EEPROM을 구워 단순한 IC를 사용하여 만드는 방법은 쉽게 구상할 수 있겠지만, touch panel, lcd (굳이 LCD일 필요있나, 핸드폰처럼 led액정 사용하는 방법도 좋을 것.) 스위치가 아닌 터치스크린에 스위치를 넣는용도로 터치스크린을 산업용으로 쓰려 하는데  Arduino or AVR 기반의 큰 사이즈 터치패널용 모듈을 만들어야 할 판이다.
 LCD Controller 며, touch controller 며, IC 등을 이용하여 모듈을 제작하여야 할텐데, 전자공학과 인데 모듈 제작하나 못하는 자신을 보니 깝깝하다. 3인치로 터치스크린 제어나 연습할 까 싶다가, 어짜피 7인치 혹은 17인치로 만들어야하니 처음부터 모듈 제작 접근부터 해야 할까 싶다. 모듈제작은 어떻게 하는거야.. 혼란이다.

PLC의 개념

*이해된 개념을 정리한 수집 블로그로, 실제 사실과 차이가 있을 수 있음.

PLC (Programmable Logic Controller)는 Process 혹은 Equipment를 제어하기 위해 제어순서를 일련의 명령어 순으로 기억하는 메모리를 가지며, 메모리에 따라 아날로그, 디지털 입출력 모듈을 통해 기계와 프로세스를 제어하는 디지털 조작형 전자장치를 말함.
 Relay based sequence control system을 해결하기 위해 GM(General Motors)에서 기반을 마련하였다.  Relay based sequence control system의 경우, 시퀀스 로직의 변경이 어려우며, 설비의 신뢰성이 부족하고, 문제 발생시 문제점을 찾아내는데 문제가 생긴다. 쉽게 릴레이 하나 고장으로도 명령에 문제가 생길 수 있고, 그 릴레이를 일정 시기마다 교체를 해야 하며, 문제가 발생한 릴레이를 찾아내는 것이 어렵다는 것이다.



그림은 이전의 릴레이 제어 시스템과 PLC를 비교한 것이다.
PLC 제어기능을 보면 Relay, Up-down Counter, Shift Register, 가감산 의 제어를 수행함을 알 수 있다.

References
PLC의 개요
http://www.kemco.or.kr/up_load/blog/PLC.pdf
PLC에 의한 PID 제어기 구현 및 가압펌프 적용
http://dspace.inha.ac.kr/pdfupload/9198.pdf

2014년 10월 10일 금요일

Arduino Projects Book_04번 실험

2014.10.10. 15:47~16:52 

제목: Color Mixing Lamp 
참고: arduino.cc , <Arduino Projects Book>

실험 준비물 :  LED with 4 legs, 220, 10k resistor, photoresistor

책자에는 45분짜리 라고 되어있는데 오랜만에 다시 실험을 하느라 한시간 넘짓 걸렸다. 이 실험은 다리가 4개인 LED를 사용하는 것으로 R,G,B 색 조합으로 어느 색상이든지 표현할 수 있다. 


그림과 같이 회로는 구성할 수 있으며, 


const int greenLEDPin = 9;
const int redLEDPin = 11;
const int blueLEDPin = 10;

const int redSensorPin = A0;
const int greenSensorPin = A1;
const int blueSensorPin = A2;

int redValue = 0;
int greenValue = 0;
int blueValue = 0;

int redSensorValue = 0;
int greenSensorValue = 0;
int blueSensorValue = 0;

void setup(){
  Serial.begin(9600);
  
  pinMode(greenLEDPin,OUTPUT);
  pinMode(redLEDPin, OUTPUT);
  pinMode(blueLEDPin, OUTPUT);
}

void loop(){
  redSensorValue = analogRead(redSensorPin);
  delay(5);
  blueSensorValue = analogRead(greenSensorPin);
  delay(5);
  blueSensorValue = analogRead(blueSensorPin);
  
  Serial.print("Raw Sensor Values \t Red:  ");
  Serial.print(redSensorValue);
  Serial.print("\t Green:  ");
  Serial.print(greenSensorValue);
  Serial.print("\t Blue:  ");
  Serial.print(blueSensorValue);
  
  redValue = redSensorValue/4;
  blueValue = blueSensorValue/4;
  greenValue = greenSensorValue/4;
  
  Serial.print("Mapped Sensor Values \t Red :  ");
  Serial.print(redValue);
  Serial.print("\t Green:  ");
  Serial.print(greenValue);
  Serial.print("\t Blue:  ");
  Serial.print(blueValue);
  
  analogWrite(redLEDPin, redValue);
  analogWrite(greenLEDPin, greenValue);
  analogWrite(blueLEDPin, blueValue);
}

이것은 책을 보고 작성한 소스코드이다. 
아두이노 문법은 함수를 만들어논 형태라서 함수가 어떤 기능을 하는지만 알고 있으면 쉽게 사용할 수 있다. 
 이대로 소스를 짜면 시리얼 모니터를 통해 볼 때 보기가 불편한데, 
* 이유는 Serial.println을 사용하지 않아서이다. ln과 안붙은 것의 차이는 Print할때 한줄을 띄고 안띄고의 차이이다. 

또한 실험중에 Photoresistor에 각각 R,G,B 색상의 셀로판지를 붙여서 그 빛의 양을 보는 것인데 파란색상이 없어서 그냥해서 정확히 결과를 보여주진 못했다. 손으로 가려도 일정 빛이상을 받아들이기에 두 색상을 가릴때 정확히 안가린 색상을 보여주는 결과는 나오지 않았다.

 이 실험에 LED를 생각해보면 우리 스마트폰에도 있다. Samsung Galaxy S4에 상단에 LED가 바로 그것이다. 카카오톡 올때 노란색 문자올때 파란색 충전중일때 빨간색상이 들어오는 것 그것이 이 간단한 실험을 직접 적용한 것이라고 할 수 있다. 

2014년 9월 4일 목요일

오늘(2014.9.4.)자 경향신문, 전자신문 읽고 생각나는 것.

 경향신문은 국회의원의 체포동의안을 놓고 투표를 했으나, 방관 혹은 무효표, 반대가 과반수 이상으로 부결되었고, 2년만이라고 한다. 특전사 훈련중 2명이 사망하였다. 삼성의 주식이 120만원대가 깨졌다. 
 전자신문은 SK하이닉스가 D램 세계최초 20나노 개발 이라고 하며, IoT기술을 ETRI와 연합하여 한다는 것, 촬영장비 관련 컨퍼런스가 코엑스에서 있었으며, 촬영장비 쿼드로터 사진이 나와있고, 카카오톡이 처음에  단순한 SNS에서 플랫폼 제공하는 업자가 되었다는 것( 통신사 에서 구글, 애플로 구도가 옮겨져 옴), 삼성 갤럭시노트4가 공개되었고, 유세윤이 다음에서 웹툰을 연재하는 것, 액티브X의 보안취약점 한달만에 100건 이상 발견되었다는 것, 또한 그것으로 500만원의 상금을 걸고 있음. 아이폰6가 조립공정이 까다로워져서 9월말까지 출하량이 1500만대 예상이였는데 1350만대가 출하 될 것 이라는 점 등이 있었다. 
 원자력 및 방사선 엑스포가 이 달 17일부터 19일까지 3일간 코엑스에서 열린다.
 페이스북에서도 많이 돌아다닌 것이지만 카셰어링 업계인 쏘카와 그린카가 1,2위를 다투고 있다는 것이 흥미로웠고, 양쪽 합쳐서 9월1일 기준으로 그린카 1100대 쏘카 1300대 이며, 회원수는 각각 24만명 30만명이라고 한다. 

이렇게 생각나는 것을 정리해보는 것은 처음이고, 그냥 신문을 읽기만 하다가 그냥 읽어선 끝까지 제자리 일 것 같아서 조금 씩 정리해보려고 했는데, 아무래도 전자공학과 특징인 듯 전자신문이 더 눈에 들어오고 경향신문은 읽기가 힘들다. 경제지도 읽고 싶은데 어떤 경제지가 좋으려나... 너무 많이 하는 것이 좋지 않다는 것은 알지만 간단히라도 훑어 보고 싶다.

2014년 5월 29일 목요일

XBEE 사용하기 - 기본 연결 및 통신 확인

 개발 도구(Development equipments)는 Arduino, ZTerm, 이고,

사용 하게 되는 장비
Sparkfun Xbee explorer x1
Sparkfun Xbee shield x1
Sparkfun Xbee module x2
USB to Mini-B cable x1
Arduino Uno x1
(PC)Macbook air 2009 mid x1

 references sites
https://www.sparkfun.com/tutorials/192
http://bildr.org/2011/04/arduino-xbee-wireless/
http://ardadv.blogspot.kr/2012/03/using-xbee-with-arduino-on-mac-os-x.html

특히 2번째 3번째 링크는 Mac OS X 에서는 X-CTU프로그램을 사용하지 못하므로,
ZTerm 의 사용법에 대해 잘 나와있으니 참고하면 좋습니다.

기본 Xbee 연결에서 발생한 문제들 *
1. Xbee shield 사용 시에 데이터 전송 및 프로그램 업로드 시에는 DLINE 에 스위치를 위치시키고, 통신 사용시에는 UART 로 스위치를 위치 시켜야 함.
2. ZTerm 프로그램 사용시 Setting - Connection 에서 9600 속도 로 맞추어야함.
3. Xbee Shield 를 Solding없이 그냥 끼워서 사용하려 했는데 접촉불량, 말도안되는 행동임. 납땜을 하고 사용할 것 (첫번째 링크내의 첫번째 링크에 나와있음.현재 Sparkfun 서버점검으로 확인 불가)
4. Xbee explorer 사용시에 드라이버를 PC에 다운받고 사용한다. 안그러면 Zterm 사용시 usb 인식이 안됨.

실험 절차
1.Arduino.cc 에서 Arduino 프로그램을 다운로드.
2. Xbee explorer Driver 다운 PC에 맞는 버전으로 다운받을 것 (Windows or Mac OS or Linux)
3. Arduino Xbee Shield Solding(납땜)
4. Aruduino Xbee Shield + Arduino Uno 결합.
5. Aruduino Program 작성 및 컴파일  업로드
6. PC + Usb to Mini-B cable + Xbee explorer + Xbee module.
7. Zterm 실행후 Setting- Connection  속도(Data rates) 9600 설정
8  Setting - Modem Preferences     Serial Port 제대로 연결되었는지 확인
(Windows 에선 내컴퓨터 장치관리자 에서 연결된 COM단자 확인 가능하며 맥에서는
Usb가 한두개 이므로 usb 어쩌고 바로 있을 것임.)

의문 : Xbee 는 Data Rates 가 9600에 코드 고정이라서 딱히 상관없이 무조건 데이터 연결되는 것인가 부분이 의문임. 다시말해 여러개의 Xbee 사용시 전부다 혼란을 일으키는 것인지 의문. 데이터 전송시 패리티 등의 오류 검사 부분은 어떻게 처리된건지 의문.


Source Code

//////////////////////////////////////////////////////////////////
//©2011 bildr
//Released under the MIT License - Please reuse change and share
//Monitors the serial port to see if there is data available.
//'a' turns on the LED on pin 13. 'b' turns it off.
//////////////////////////////////////////////////////////////////

void setup() {
  Serial.begin(9600);     //initialize serial
  pinMode(12, OUTPUT);  
  pinMode(13, OUTPUT); //set pin 13 as output
}

void loop() {
  while(Serial.available()){  //is there anything to read?
char getData = Serial.read();  //if yes, read it

if(getData == 'a'){  
   digitalWrite(12, HIGH);
          digitalWrite(13, LOW);a
}else if(getData == 'b'){
   digitalWrite(12, LOW);
          digitalWrite(13, HIGH);
}
  }
}

이프로그램은 PC Zterm 으로
명령어 a 입력시 13번 LED OFF 12번 LED ON

명령어 b 입력시 13번 LED ON   12번 LED OFF

되는 프로그램이다.

2014년 5월 15일 목요일

Arduino Using

My development environment  Macbook Air 2009 mid.

Firstly download arduino program in http://arduino.cc
If you have many time, you can get every information which you want about Arduino.

Arduino is more easy than just like AVR128.
Arduino UNO use Atmega328.
Arduino is for even non-electronics people.

It is first my sentences in blogger. Actually I'm lazy. It is my fault.

I have 'The Arduino Starter Kit'. I have bought it in ArtRobot. It is useful. But I can't speak in English well. So It is elementary grade English. I have to use Arduino well. even my major is electronics. I know that Arduino is for non-professional. So I practice continuously. 

I have done 3 examples in Arduino projects book which is in Starter Kit. 
anyway, There were Switch - LED control, temperature sensor control and RGB LED control.

You need to have C language skill. So You can understand Source code. If you have this KIT and have English ability, You can use arduino well. I'm a non-native then It is hard to me. IF I want to use arduino well, I must spent a lot of time with arduino. 


It is Source code and a figure. I use 12, 11,10 pins of arduino as the OUTPUT and RGB LED pins.I use 8 pin as the servo motor. finally A0 pin is for gas sensor. 


It is simple diagram to use arduino and sensor. 
These circuits is to close the gas valve.
gas sensor read LPG then, If it leak LPG gas, LED will be RED then LED blink.
servo motor turn 90 degree clockwise.

.Korean. 
사실 영어도 엉망 진창일거다. 
디지털 설계실험에서 하는 실험이다. 중간밸브를 잠그는 기능을 하는 회로를 만들어 보는 것이다. 원래 지그비(Xbee) 도 추가하여야 하지만, 이부분을 하지 못했다. 지그비 사용에 대한 것이 다 영어로 나온데다가 어렵다. 읽기도 귀찮고.. 게으름의 문제도 크고 대책없이 미룬 문제도 크다. 하루종일 아두이노만 붙잡고 공부하고 싶지만 또 그렇게 할 수가 없다. 
회로는 간단하다. 모든 모듈들은 3.3V 혹은 5V 로 동작한다. 그리고 그 모듈들은 각각 Vcc, GND 그리고 기능을 수행하는 하나의 핀으로 구성되어있다. 간단하다. 디지털이니까 1이면 high 이면 동작 0이면 low이면 동작안함 으로 간단히 생각하면 된다. 아날로그 센서같은 경우는 이 수치가 0에서 1까지 0에서 5V까지 유연하게 나온다고 생각하면 되는 것이다. 디지털 개념자체는 간단하여, 출력을 하냐 입력을 할거냐 결정을하고, 명령어 쓸때는 어떠한 경우에 동작해라 안해라 라고 하면 되는 것이다. 맨처음 C 언어를 어느정도 다루는 것과 전에 AVR을 혼자 다뤄보려다가 제대로 다루지도 못했지만 했던 경험이 아두이노를 다룰 때 무척 쉽게 느끼게 만든 것도 한몫 하는 것 같다. 후에 ARM 다루게 되면 어떡하지. 
TI C2000이라는 킷도 가지고 있는데 다룰 수 있다면 다뤄보도록 해야겠다. 
제일 큰건 개발환경의 문제이다. 나의 맥북2009는 윈도우 부트캠프로 깔아지지도 않고 (USB로) 해서 맥으로 다룰 수 있는건 ARDUINO밖에 없기도 하며 아두이노 아두이노 말들이 많이 들려 다루게 되었다. 일단 프로젝트 북 전부 끝내보고,  또한 통신 모듈중 하나인 Zigbee 를 빨리 다뤄 봄으로써 어느정도 전자회로는 다뤄봤다고 할 정도가 되어야 할 것이다. 
 따라하는 것, 따라 만들어보고 소스를 보고 치는 것 자체가 도움이 별로 안될줄 알았다. 하지만 이것도 능력이고 정보검색 능력이며, 도움이 될 것이다. 머리를 써서 내가 전자회로책을 뒤적이며, OP AMP 사용법 CONVERTER 사용법, 귀환이니 부귀환이니 가산기니 등등의 기능을 숙지하고 머리속에서 짜내서 만드는 것이 가장 이상적인 것이나, 이미 생각하고 있는 것은 다 회로로 나와있고, 차라리 회로를 더 많이 봐보고, 이거든 저거든 다 만들어보고 하는 것이 이 현실에서 살아가는데는 더 유리한지도 모르겠다. 내가 학자나, 전자공학 원리 이론 탐구를 목적으로 하는 것이아니라, 모듈, 반도체 회로 등을 가져다 쓰는 대기업이나 만드는 기업에서는 해보는 것 자체에 의미가 있을지도 모르겠다. 일단 뭐든 만들어보자.

 뭔가 작성하는 방법에 대해 다시 한국어로 쓰려고했는데 한국어는 그냥 내 생각들을 적게되었네. 영어문법이 어긋날지 아닐지 모르나, 영어로는 방법을 대략 썼고, 앞으로 계속 쓰자는 글에 첫번 째 글이니 엉망이다. 노력해보자.