라벨이 C언어인 게시물 표시

YOLO(영상처리)와 6DoF 로봇 팔(window)

이미지
➢ 전에 사용한 tensorflow가 아닌 YOLO( You Only Look Once)를 사용하여 영상을 촬영하고 미리 학습시켜둔 이미지와 매칭하여 물체를 찾는 방법을 사용했다. 공식 홈페이지 :  https://pjreddie.com/darknet/yolo/ ➢ 기존 다른 Object Detection보다 처리 속도가 빠르다. ➢ YOLO 설치는  https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects  를 참고하여 설치를 진행하였다. ➢ 각자 원하는 환경과 구성된 환경이 다르기에 설치 시 설정를 정확히 해야한다. 나는 opencv와 cuda가 깔려 있는 상황에서 설치를 시작하였다. 확인후 설치를 시작한다. ✫gpu를 사용한다면 cuda 설치를 해주어야 하며 이때가 가장 중요하다. cuda는 각 gpu가 지원하는 드라이버가 다른데 nvidia 홈페이지에서 자신에게 맞는 드라이버를 선택하고 설치를 하여야 한다. (지금은 환경은 window지만 ubuntu 환경에서 설치시에 고생을 많이 했다.) https://www.nvidia.com/Download/Find.aspx?lang=en-us 에서 자신에게 맞는 드라이버를 선택하여 설치를 하여주면 된다. ➢ 다운로드 후 컴파일은  https://github.com/AlexeyAB/darknet#how-to-compile-on-windows-legacy-way  방법을 사용했다. ➢컴파일도 완료하였으면 이제 training을 실시하여야 한다. training에 필요한 사진은 많으면 많을 수록 좋으며, 다양한 환경(다른 색의 배경 및 바닥, 다른 밝기의 조명)에서 찍은 사진이 많을 수록 좋은 것으로 보인다. 수는 최소 200장 정도 하면 적당한 것으로 생각된다. 필요한 사진들을 수집 완료 했으면 각 사진에 자신이 원하는 이미지를...

온도 센서와 조도 센서 이용하기

이미지
➢ 라즈베리를 사용하고 온도 센서, 조도 센서를 mcp3204를 이용하여 값을 읽어와 화면에 출력을 한다. ➢ 값을 읽어 오면 부저자 짧게 두번 울리며 초록색 led가 점등한다. ➢ 온도와 조도 중 한 값이 제대로 읽어지지 않으면 적색 led가 점등한다. ➢ 조도 센서가 일정 값 만큼 어두워 지면 노란색 led가 점등한다. ➢ 모듈 ➢ 앱 ➢ 동작 영상 ➢ 나머지 헤더 파일 https://drive.google.com/drive/folders/18n9wTS1evdIPmOtWm_4icxFq_nXFGNqY?usp=sharing

PLC(GMWIN)_LABVIEW_Arduino 연결하여 제어하기

이미지
➢ 전에 만들어 둔 PLC 보드를 사용하였다. ➢ 1번 버튼을 3초간 누르면 버튼 동작에 의하여 전등이 켜지고 꺼지며, 3번 버튼을 3초간 누르면 LabView의 패널 조작으로 아두이노를 통하여 릴레이를 조작하여 전등을 키고 끈다. ➢ LabView 패널과 블럭다이어 그램 ➢ 동작 영상

I2C 이용하여 LCD 사용 및 LED 제어

이미지
➤ 아두이노에서 작업, LCD 하나 그리고 LED와 button 각 3개씩 이용 ➤ 코드 ➤ 실행 결과

wiringPi, DHT11 사용하기

이미지
라즈베리파이 wiringPi 이용하여 온습도 센서(DHT11) 사용 ➤ gpio 핀 배열 ➤ 코드 ➤ MakeFile ➤ 실행 결과

라즈베리파이와 mcp3208 사용하기

이미지
만들어 주어야 할 파일 목록 Makefile에는 나중에 컴파일 시 사용 mcp3208.c와 mcp3208.h 파일을 작성하여 준다. ➤ mcp3208.h ➤mcp3208.c ➤mcp3208main.c ➤Makefile을 이용하여 make 실행 후 생성된 mcp3208App 실행시 화면 나타는 문자열에서 첫번째(digital data)와 3번째(Temp) 까지는 온도 센서의 값 그리고 4번째(digital data)에서 5번째(analog data)의 값은 가변저항의 값을 나타낸다.

PLC와 아두이노 그리고 온도 센서를 이용하여 램프 점등

이미지
우선은 전에 만들어둔 ArduinoUno(Atmega328P), LM35(온도센서)를 이용해 LCD에 Text 나타내기 와 PCB 실습_220V를 5V로 전압 감하 를 이용하여 만들었다. 2가지 방식으로 작동하도록 만들었다. 1) 자동 : 온도 센서의 일정한 값에 따라 Lamp의 불이 들어오게 만들었다. 2) 수동 : 수동 모드로 전환하는 스위치를 눌러 자동 동작은 정지하고 수동으로 스위치 조작하며 one button 방식으로 설정하였다. 글로파에 올릴 프로그램은 GMWIN에서 작성하였다. 작성 후 접속+쓰기+모드전환+모니터시작 으로 연결과 업로드를 동시에 실행하였다. 아두이노의 전원 공급은 5V로 전압 감하된 전원을 사용한다. ➢Atmel7.0을 이용하여 아두이노에 업로드한 코드 /*  * Atmega328p_PLC_1213.c  *  * Created: 2018-12-13 오후 2:22:24  * Author : USER  */ #define F_CPU 16000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <stdio.h> #include    <util/delay.h> #include "lcd.h" // LCD.h 시작 // LCD.h 끝 #define MAX_LCD_STRING 0x40 #define SINGLE_MODE 0 #define FREE_MODE 1 #define PRESSED 0 #define RELEASED 1 volatile int  adc_rq=0, adc_result=0; volatile unsigned  int  mode = SINGLE_MODE; //volatile float V=0; ISR(ADC...

디바이스 드라이버 01

이미지
VM Ware의 우분투에서 작업 1) nano로 hello_module.c 작성 2) nano로 Makefile 생성 3) make 완료후 ko파일 생성됨 4) 라즈베라 파이로 이동하여 $sudo mknod /dev/memory c 255 0 $sudo chmod 777 /dev/memory $sudo insmod memory.ko 실행 5) TestApp.c 파일 생성 6) make 실행 7) 생성된 TestApp 을 실행 $./TestApp 작동하는것을 확인

ACM 호텔

이미지
ACM 호텔 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 256 MB 16427 5940 5051 36.485% 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모든 인접한 두 방 사이의 거리는 같은 거리(거리 1)라고 가정하고 호텔의 정면 쪽에만 방이 있다고 가정한다. 그림 1. H = 6 이고 W = 12 인 H × W 호텔을 간략하게 나타낸 그림 방 번호는 YXX 나 YYXX 형태인데 여기서 Y 나 YY 는 층 수를 나타내고 XX 는 엘리베이터에서부터 세었을 때의 번호를 나타낸다. 즉, 그림 1 에서 빗금으로 표시한 방은 305 호가 된다. 손님은 엘리베이터를 타고 이동하는 거리는 신경 쓰지 않는다. 다만 걷는 거리가 같을 때에는 아래층의 방을 더 선호한다. 예를 들면 102 호 방보다는 301 호 방을 더 선호하는데, 102 호는 거리 2 만큼 걸어야 하지만 301 호는 거리 1 만큼만 걸으면 되기 때문이다. 같은 이유로 102 호보다 2101 호를 더 선호한다. 여러분이 작성할 프로그램은 초기에 모든 방이 비어있다고 가정하에 이 정책에 따라 N 번째로 도착한 손님에게 배정될 방 번호를 계산하는 프로그램이다. 첫...

4x4x4(입체) cube 만들기_generator(도형, 문양)

이미지
4x4x4 큐브 led 코드 작성시 편리하게 작성 가능한 프로그램이 있음. [출처] https://www.instructables.com/id/LED-CUBE-CODE-4x4x4-Arduino/ 층과 핀 배열은 각자에게 맞게 다시 설정해 준다. 참고로 pannel은 가로 층 구조가 아닌 세로 층 구조이다. 프로그램을 사용하여 만든 모양 중 하나. 물음표가 위 아래로 움직이는 동작을 취하고 있다.

4x4x4(입체) cube 만들기_2

현재까지 날씨 표현은 해, 구름 그리고 비가 내리는 동작을 구현하였다. led의 밝기가 너무 약하게 나타나는 문제가 있다. led가 타버릴까봐 달아둔 저항 때문에 나타나는 문제 같으며, 저항을 통하지 않고 short하게 만들 방법이 필요하다.

4x4x4(입체) cube 만들기

이미지
필요 물품) 1. led 64개 (불량 있을수도 있으니 최소 70~ 80개 구비) 2. 강선 3. pcb기판 4. 아두이노 4x4x4 cube를 제작한 모양이다. 다 만들고 납땜을 완료한 후의 사진이며, 그 이전의 사진은 깜빡하고 찍지 못하였다. led를 일일히 납땜하는 데에 어려움이 있기에 아래와 같은 led를 끼울 수 있는 판을 만들고 구멍에 led를 끼워 넣어 납땜하는 데에 좀더 쉽게 할 수 있도록 하였다. 저항을 연결하여 납땜한 모습이다. 개인적으로 저항을 달지 않는것을 추천한다.(led가 많이 켜질수록 전력이 모자라 led 밝기가 약해지는 모습을 보인다.) 작동영상)