라즈베리파이, 아두이노 27

[간단한 아두이노 코딩] 3. 버튼 입력 제어하기

버튼 입력 제어하기 1. 버튼 동작 방식 우리가 일상 생활에서 접하는 버튼들은 아래와 같이 간단한 구조로 되어 있다. 위와 같이 버튼을 눌렀을 때는 A와 B 사이에 끊어진 도선이 연결되면서 전기가 흐르는 형식이다. 이렇게 직접적으로 전류를 제어하는 버튼들이 있는 반면 반대로 처음에는 연결되어 있다가 눌렀을 때 떨어지는 반대 버튼도 있고, 전류의 흐름을 직접 제어하지 않고 간접적으로 제어하는 버튼들도 있다. 우리는 가장 기본적인 형태의 버튼을 이용하여 버튼 입력을 받고, 그에 따른 동작을 수행할 수 있도록 코드를 구성할 예정이다. 2. 푸시 버튼 이번에 사용할 푸시 버튼은 앞에서 말한 것과 같이 눌렀을 때 도선이 연결되어 동작하는 버튼으로, 4개의 접점을 가진다. 이 4개의 접점을 통해서 기존 버튼의 동작..

[간단한 아두이노 코딩] 2. LED 깜박이기

LED 깜박이기 1. LED 회로 구상 초등학생때 배우는 꼬마전구와 건전지를 이용해서 불을 켜는 회로를 생각해보자. 우리는 꼬마 전구의 +-극에 건전지의 +,-극을 전선으로 연결하게 되면 불이 들어온다. 건전지 +극 --- LED --- 저항 --- 건전지 -극 LED 또한 마찬가지이다. LED의 +극과 -극에 그에 알맞은 전원을 인가해주면 불이 들어오게 된다. 여기서 알맞은 전원이란, 적당한 전압과 전류를 뜻하는데 빨간색의 LED는 약 1.8 볼트의 전압과 20mA의 전류가 필요하다. 그러나 아두이노에서는 3.3V와 5V 전압 포트가 있고, GPIO에서 디지털 핀은 HIGH일 때 5V를 출력한다. 따라서 우리는 옴의 공식을 이용하여 LED 소자가 타지 않도록 저항 값을 계산해서 연결해 주어야 한다. V..

[간단한 아두이노 코딩] 1. IDE 설치 하기

IDE 설치하기 1. IDE 다운로드 아두이노 IDE 설치 다운로드 사이트 : www.arduino.cc/en/software 각자의 운영체제에 맞게 다운로드 받자. (Windows zip file으로 다운로드 받음) 2. IDE 실행하기 다운로드 받은 zip을 풀면 아래와 같이 나온다. 이 폴더에 arduino.exe를 실행하자. 3. IDE와 아두이노 연결하기 아두이노 IDE를 처음 열게되면, 아래와 같이 코드를 입력하는 편집기가 나온다. 최초 실행시에는 아두이노를 자동으로 잡아주지 않으므로 아두이노를 PC에 연결한 다음 Port를 잡아주어야 한다. (위 사진에서 우측 하단에는 COM7에 잡혔다고 나오지만, 실제로는 아무것도 연결되지 않은 상태이다.) 아두이노를 PC에 연결하고, 아래와 같이 메뉴바 ..

[라즈베리파이 / 리눅스] init.d 서비스 스크립트 작성을 통한 시작 프로그램 만들기

리눅스, 특히 라즈베리파이를 이용한 프로젝트를 진행하고 있다면 아두이노와 같이 재부팅(전원 인가)시에 작성한 프로그램이 자동으로 켜지도록 만들어야 한다. 이러한 시작 서비스를 만드는 방법은 구글에 linux start up program 또는 boot up program의 키워드로 검색하면 다양한 정보를 얻을 수 있다. 가장 간단한 방법은 rc.local이나 crontab에 커맨드를 등록하여 바로 실행하는 방법이 있고, 더 나아가 systemmd를 이용하는 방법도 있다. 어느 사이트에서는 5가지 방법에 대하여 다루고 있다. 이번 포스트에서는 그중 가장 널리 사용되는 init.d 서비스 스크립트를 작성하는 방법을 다룬다. init.d는 리눅스를 어느정도 만져본 대부분의 사람들은 특정 서비스를 start /..

[라즈베리파이/리눅스/우분투] RS232/RS485 to USB 장치 포트(ttyUSB) 검색 방법 및 코드

라즈베리파이(raspberry pi)에서 serial to ttl usb 컨버터 장치를 통해 통신을 하기 위해서는 장치명이 아닌 포트위치가 필요하다. 포트 위치는 /dev/ttyUSB1과 같이 디렉터리이며, 여기서 USB0, USB1...의 장치는 연결되는 USB 장치의 개수에 따라 달라진다. 물론 이 포트 위치는 제조사와 장치 명칭을 통해서 고정하여 쓸 수 있다. 하지만 장치는 언제나 동일 기능을 수행하는 다른 장치로 변경할 수 있으므로 나는 Device ID를 이용해서 해당 장치의 포트를 알아내는 방식을 선택했다. 우선 크게 동작하는 방법을 알아보면, 1) Device 입력 및 해당 device가 존재하는지 확인 configuration파일을 통해서 장치ID를 입력 받을 것이므로, 입력받은 ID 값이..

[라즈베리파이] USB 컨버터(RS485/RS232)를 이용한 시리얼 통신 읽/쓰기 파이썬 예제

라즈베리파이(Raspberry pi / RPi)에 USB TTL 컨버터(RS485/RS232)를 이용하여 시리얼 통신하는 예제 코드를 작성하여 둔다. 우선 컨버터를 이용하기 때문에 결국 프로토콜이 RS232이든 반이중 RS485이든 결국 라즈베리파이에 들어오는 것은 serial임을 기억해야 한다. (USB를 안쓰고 TTL 기반의 컨버터를 써도 결과는 똑같다. 다만 GPIO를 이용하는것 차이이다.) USB를 통하여 통신하는 경우, Java의 RXTX 라이브러리나 파일 자체(리눅스는 모든 장치를 파일로 처리하므로 /dev 안의 파일)를 읽,쓰기 해도 무방하다. 하지만 Python을 이용하는 것이 별도의 라이브러리를 설치하지 않고 딱 좋은 것 같다. 따라서 Python의 PiSerial를 이용한 예제 코드가 ..

[아두이노] 두개의 아두이노 사이의 RS485 통신

아두이노 우노를 이용해서 RS485 통신하는 방법을 설명하고자 한다.RS485의 물리계층(1계층)이 어떻게 동작하는지는 정확한 프로토콜을 찾아보지 않았으나, 반이중통신으로 아두이노에서 Serial을 이용하여 통신을 할 수 있다. RS485는 P, N(A, B)의 두 개의 링크로 기기간 연결되며, 64개의 장치까지 한번에 연결할 수 있다고 알려져있다. 또한 4000피트까지 연결 가능하다고 하니, 원격지의 장치에서 데이터를 뽑아오는데 유용하다. 대충 검색을 해보니, TTL to RS485 모듈을 이용해서 통신을 한다. 나는 천원 내외인 MAX485가 장착된 컨버터를 이용했다. 더 검색을 해봐야겠지만 직접 A, B 링크를 읽거나 쓰는 것이 가능한 것 같아보이는데, 정확한 내용은 직접 확인하기 바람. (RS48..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사