반응형

2020/08/14 - [Raspberry Pi & Arduino] - How to play old DOS games on KODI(LibreELEC) with Raspberry Pi - 코디(라즈베리 파이)에서 도스 게임 플레이 하기


LibreELEC은 미디어 센터 프로그램인 KODI를 위한 리눅스 운영체제이다. KODI는 윈도우즈, 안드로이드등 여러가지 운영체제를 지원 하지만 라즈베리 파이를 이용한 홈 미디어 센터를 구성할때 KODI가 구동 될 수 있는 최소한의 환경을 갖춘 LibreELEC으로 진행 하면 다른 운영체제로 진행 하는 것보다 원활한 동작이 가능 하다.


LibreELEC - https://libreelec.tv/


KODI - https://kodi.tv/



Raspberry Pi - https://www.raspberrypi.org/


설치 및 활용은 영상으로 확인 하자.


Rufus is a utility that helps format and create bootable USB flash drives, such as USB keys/pendrives, memory sticks, etc.

Rufus - https://rufus.ie/


반응형
Posted by J-sean
:
반응형

예전 영화에서 종종 볼 수 있던 레이저 침입 감지 시스템은 간단한 작동 원리에도 불구하고 레이저를 이용 한 방식이 뭔가 있어 보이는지 아직까지도 영화나 드라마에서 심심치 않게 볼 수 있다. 작동 원리가 간단한 만큼 저렴한 부품으로도 비슷하게 만들어 볼 수 있다.


침입 감지 시스템을 회피하기 위한 Catherine Zeta-Jones의 피나는 노력 (영화 Entrapment)


The Big Bang Theory


약 $0.4 짜리 레이저 모듈. 5V로 작동하고 출력 5mW, 파장 650nm의 붉은색 레이저를 발생 시킨다.


Red 

625 - 740nm

Orange

590 - 625nm

Yellow

565 - 590nm

Green

520 - 565nm

Cyan

500 - 520nm

Blue

435 - 500nm

Violet

380 - 435nm


약 $0.7 짜리 레이저 수신 모듈. 5V로 작동하고, 레이저가 수신 될때는 HIGH 시그널을, 수신 되지 않을때는 LOW 시그널을 출력 한다. 수신하려는 레이저 외, 태양이나 다른 강한 빛이 없는 실내용.



레이저 리시버 센서는 방향에 주의 한다. 반대로 연결하면 뜨거울 정도로 열이 발생 한다.


위 다이어그램과 같이 구성 한다.


레이저 모듈에서 레이저가 발생되고 수신 모듈에서 이 레이저를 감지하면 HIGH 시그널을 출력 한다.


중간에 장애물이 생겨 레이저를 수신하지 못하게 되면 수신 모듈에서 LOW 시그널을 출력하고 아두이노는 디지털 4번 핀으로 HIGH를 출력해 Buzzer를 작동 시킨다.



실제 부품의 연결 방식은 다이어그램과 다르지만 기본 구성은 동일 하다. 


소스를 컴파일하고 아두이노에 업로드 한다.


제작 과정 및 테스트


Serial Monitor에도 적의 침입 기록이 남는다.


반응형
Posted by J-sean
:
반응형

USBASP로 ATtiny13을 프로그래밍 할 수 있다. Arduino를 이용한 프로그래밍과 기본적인 설정 방법은 아래 링크를 참고 한다.

 

2020/04/02 - [Raspberry Pi & Arduino] - Programming ATtiny13 with Arduino Uno - 아두이노로 ATtiny13 프로그래밍 하기

 

AliExpress에서 구매한 USBASP.

 

Adaptor와 함께 구매 했다.

 

컴퓨터에 연결 한다.

 

드라이버가 설치되지 않았다면 제대로 인식하지 못한다.

 

 

 

https://zadig.akeo.ie/

위 링크에서 Zadig를 다운 받는다.

zadig-2.5.exe
4.92MB

 

드라이버를 설치 한다.

 

장치가 제대로 인식 된다.

 

ATtiny13에 기본적인 Blink 예제를 프로그래밍 할 수 있도록 케이블을 연결 한다.

USBASP RESET - ATtiny pin 1

USBASP MOSI - ATtiny pin 5

USBASP MISO - ATtiny pin 6

USBASP SCK - ATtiny pin 7

USBASP 5V - ATtiny pin 8

USBASP GND - ATtiny pin 4

 

Optional:

ATtiny pin4(GND) - Negative side of the LED

ATTiny pin 3 - Resistor (330 Ohm) - Positive side of the LED

 

 

 

프로그램을 컴파일 하고 업로드 해도 warning이 발생하고 제대로 작동 하지 않는다. USBASP의 Firmware를 업데이트 해야 한다.

 

https://sourceforge.net/projects/ardude/

위 링크에서 Arduino AVR Dude Programmer를 다운 받고 설치한다. (설치하지 않고 cab 파일의 압축만 풀어도 상관 없다)

Arduino AVR Dude Programmer.zip
1.99MB

 

https://www.fischl.de/usbasp/

위 링크에서 usbasp.2011-05-28.tar.gz를 다운 받고 압축을 풀어서 usbasp.atmega8.2011-05-28.hex파일을 Arduino AVR Dude Programmer가 있는 폴더에 복사 한다. (USBASP의 칩셋이 ATMEGA8인지 확인 한다)

usbasp.2011-05-28.tar.gz
0.51MB

 

컴퓨터에 Arduino만 연결한 상태에서 File - Examples - 11. ArduinoISP - ArduinoISP를 컴파일 하고 업로드 한다.

 

 

 

 

USBASP의 Firmware를 업데이트 할 수 있도록 케이블을 연결 한다.

USBASP RESET - Arduino pin 10

USBASP MOSI - Arduino pin 11

USBASP MISO - Arduino pin 12

USBASP SCK - Arduino pin 13

USBASP 5V - Arduino 5V

USBASP GND - Arduino GND

 

Arduino RESET - (+) 10㎌ Capacitor (-) - Arduino GND (Capacitor를 연결하지 않으면 Firmware 업데이트가 제대로 되지 않는다)

USBASP JP1(JP2로 표시된 제품도 있다) 연결

 

avrdude가 있는 폴더(Arduino AVR Dude Programmer를 설치한 폴더)로 이동 해서 아래 명령어를 실행 한다.

avrdude -C avrdude.conf -c avrisp -P COM3 -b 19200 -p m8 -v

(COM 포트는 실제 포트를 적어준다.)

 

이상이 없다면 AVR device initialized and ready to accept instructions라는 메세지가 나온다.

 

아래 명령어를 실행 한다.

avrdude -C avrdude.conf -c avrisp -P COM3 -b 19200 -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex

Verify까지 완료되면 USBASP의 Firmware 업데이트가 끝난다.

 

USBASP로 Blink 예제를 프로그래밍 할 수 있도록 케이블을 다시 연결 한다.

USBASP RESET - ATtiny pin 1

USBASP MOSI - ATtiny pin 5

USBASP MISO - ATtiny pin 6

USBASP SCK - ATtiny pin 7

USBASP 5V - ATtiny pin 8

USBASP GND - ATtiny pin 4

 

Optional:

ATtiny pin 4(GND) - Negative side of the LED

ATTiny pin 3 - Resistor (330 Ohm) - Positive side of the LED

 

 

 

Programmer: "USBasp (slow)"로 설정 한다. USBasp로 설정 하면 에러가 발생 한다.

 

컴파일 하고 업로드 한다.

 

ATtiny13에 프로그램이 업로드 되고 정상 작동 한다.

 

반응형
Posted by J-sean
:
반응형

기본적인 ATtiny 프로그래밍 방법은 아래 링크에서 확인 할 수 있다.

 

2020.04.02 - [Raspberry Pi & Arduino] - Programming ATtiny13/85 with Arduino Uno - 아두이노로 ATtiny13/85 프로그래밍 하기

 

 

링크의 소스를 사용해 위 그림과 같이 저항과 LED만 연결한 간단한 회로도 LED on시 9.25mA, LED off시 0.98mA의 전류를 소비한다. delay()로 MCU가 아무것도 안하는 상황에서 0.98mA의 전류를 소비하는 것이다. 전원이 계속 공급되는 상황이라면 문제될게 없겠지만 배터리를 사용한다면 전류 사용량을 최소화해서 배터리가 오래 가도록 하는게 좋다.

 

아두이노로 ATtiny를 프로그래밍 할 수 있도록 준비 한다.

 

 

 

 

dealy()가 아닌 sleep_cpu()를 사용해 MCU가 Sleep Mode로 들어 갈 수 있도록 소스를 작성 한다. 64마이크로초 동안 켜졌다 2초 동안 꺼지는 소스이다. 멀티미터로 전류 사용량을 확인해 보면 LED on시 8.34mA, LED off시 0.00mA로 표시 된다. LED off시에는 0.01mA의 전류도 사용하지 않는 것이다. 아주 짧은 시간 동안만 LED가 켜지고 대부분의 시간은 0.01mA 이하의 전류만 사용 하므로 배터리 사용 시간이 훨씬 더 길어지게 된다.

 

반응형
Posted by J-sean
:
반응형

아두이노를 이용해 ATtiny13/85를 프로그래밍 할 수 있다. USBASP를 이용한 프로그래밍은 아래 링크를 참고 한다.

 

2020/05/07 - [Raspberry Pi & Arduino] - Programming ATtiny13 with USBASP - USBASP로 ATtiny13 프로그래밍 하기

 

 

 

 

Arduino를 실행 한다.

 

File - Examples - 11.ArduinoISP - ArduinoISP를 선택 한다.

 

Arduino Uno를 연결하고 Upload한다.

 

 

 

 

Upload가 완료 되면 새로운 sketch에서 File - Preferences를 선택 한다.

 

Additional Boards Manager URLs:에 아래 링크를 입력하고 OK를 클릭 한다.

 

https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json

 

Tools - Board - Boards Manager...를 선택 한다.

 

Attiny를 검색하고 ATtiny13 board를 설치 한다.

 

 

 

 

Tools에서 아래와 같이 설정을 변경 한다.

 

Board: ATtiny13

BOD: BOD 4.3v

Clock: 1.2 MHz internal osc.

Port: (Your Arduino port)

Programmer: Arduino as ISP

 

위 사진과 같이 연결 한다.

 

Attiny13 Pin Configuration

 

Ardunio pin 10 - ATtiny pin 1

Arduino pin 11 - ATtiny pin 5

Arduino pin 12 - ATtiny pin 6

Arduino pin 13 - ATtiny pin 7

Arduino 5V - ATtiny pin 8

Arduino GND - ATtiny pin 4

 

Optional:

ATtiny pin 4(GND) - Negative side of the LED

ATTiny pin 3 - Resistor (330 Ohm) - Positive side of the LED

 

그리고 Tools - Burn Bootloader를 클릭해 부트 로더를 굽는다.

 

 

 

이제 모든 준비가 끝났다. 원하는 코드를 입력하고 업로드 하면 ATtiny에 프로그램이 업로드 된다.

위와 같이 LED가 1초 주기로 깜빡이는 소스를 입력 하고 Upload 해 보자. Upload가 끝나면 LED가 1초 주기로 깜빡인다.

Arduino IDE 2.X를 사용한다면 그냥 Upload 버튼으로 업로드 할 수 없다. 아래 내용을 참고한다.

 

케이블을 모두 제거 하고 3.0V 배터리만 연결해도 최대 10MHz의 속도로 작동 한다.

 

 

ATTiny85도 특별히 다른 부분은 없다. 같은 방법으로 구성하고 세팅만 위와 같이 바꿔준다.

 

Arduino IDE 2.0 부터는 프로그래머를 이용한 업로드 방법이 바뀌었다. Arduino 1.X처럼 그냥 Upload 하면 A programmer is required to upload. 라는 에러 메세지가 나온다.

위와 같이 Sketch - Upload Using Programmer를 선택해 업로드 해야 한다.

 

반응형
Posted by J-sean
:
반응형

ESP32-CAM에는 프로그래머 칩이 없기 때문에 보통 USB to UART Converter를 이용해 프로그래밍 한다. 하지만 아두이노 보드가 있다면 Converter 없이 ESP32-CAM에 프로그래밍 할 수 있다.


2020/11/15 - [Raspberry Pi & Arduino] - NodeMCU(ESP-12E/ESP8266) LED Control Server Programming


USB to UART Converter


eBay에 주문 후 약 한 달 반이 걸려 도착한 ESP32-CAM. 카메라와 함께 작은 정전기방지 비닐에 포장되어 도착했다.


ESP32-CAM 보드



뒷면




Flat Flexible Cable에 8225N V2.0 171026라고 적힌 카메라



뒷면


누군지 기억도 안나는 사람의 명함과 함께 크기 비교


카메라를 연결 하기 위해 저 검은 latch를 들어 올려 열어야 한다.


이렇게.



카메라 케이블을 삽입하고 닫아 준다.


아두이노와 ESP32-CAM을 케이블로 연결한다. 내 가짜 아두이노... ㅠㅠ



Arduino 5V to ESP32-CAM 5V

Arduino GND to ESP32-CAM GND

Arduino RX to ESP32-CAM U0R

Arduino TX to ESP32-CAM U0T

Arduino RESET to Arduino GND

ESP32-CAM IO0 to ESP32-CAM GND


Arduino를 실행하고 File - Preferences 클릭.



Additional Boards Manager URLs에 아래 주소를 입력하고 OK클릭

https://dl.espressif.com/dl/package_esp32_index.json


Tools - Board: "Arduino Uno" - Boards Manager... 클릭


'esp32'를 검색하고 Install 클릭


Board Manager에서 esp32 설치가 완료 되면 위와 같이 설정을 바꿔준다.


Board: ESP32 Wrover Module"

Upload Speed: "115200"

Flash Frequency: "40MHz"

Flash Mode: "QIO"

Partition Scheme: "Huge APP (3MB No OTA/1MB SPIFFS)"

Core Debug Level: "None"

Port: "COM4"(아두이노가 연결된 포트)

Programmer: "AVR ISP"



File - Examples - ESP32 - Camera - CameraWebServer를 클릭 하면 카메라 웹 서버 코드가 로드 된다.


1
2
3
4
5
6
7
8
9
10
11
// Select camera model
#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
//#define CAMERA_MODEL_AI_THINKER
 
#include "camera_pins.h"
 
const char* ssid = "*********";
const char* password = "*********";


카메라 웹 서버 코드의 일부


1
2
3
4
5
6
7
8
9
10
11
// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER
 
#include "camera_pins.h"
 
const char* ssid = "my_ssid";
const char* password = "my_password";


대부분 AI_THINKER 카메라를 사용 하므로 #define CAMERA_MODEL_WROVER_KIT은 주석 처리하고 #define CAMERA_MODEL_AI_THINKER을 주석 해제 한다. ssid와 password 부분은 자신의 인터넷 ssid와 password에 맞게 수정한다.


소스를 컴파일하고 ESP32-CAM에 업로드 한다.



업로드가 완료 되면 ESP32-CAM IO0 와 ESP32-CAM GND를 연결한 케이블을 제거 한다.


Tools - Serial Monitor 클릭


Baud Rate을 115200으로 맞춘다.


ESP32-CAM 뒷면의 RST 버튼을 눌러 준다.


RST 버튼을 누르면 잠시 후 Serial Monitor 마지막 줄에 카메라 웹 서버의 주소가 표시 된다.



인터넷 브라우저로 카메라 웹 서버에 접속하면 위와 같은 화면이 나온다. Start Stream 버튼을 클릭 한다.


카메라에 찍히는 영상이 바로 스트리밍 된다. Resolution, Quality, Brightness, Contrast, H-Mirror, V-Flip, Face Detection등의 설정을 변경 할 수 있다.


Serial Monitor에는 스트리밍 상황이 표시 된다.


영상 스트리밍만 확인 하고 싶다면 아래와 같은 형식으로 접속 한다.

http://웹서버주소:81/stream

http://192.168.0.42:81/stream



ESP32-CAM에 프로그램 업로드가 완료되면 5V 전원만 있어도 동작한다. 5V 배터리나 건전지를 사용해도 되고 USB 케이블에서 5V를 받아와도 된다. 컴퓨터 USB 케이블은 5V를 사용한다.


빨간색: 5V

검정색: GND


빨간색 선은 5V에 연결하고 검정색 선은 GND에 연결한다.


ESP32-CAM이 연결된 USB 케이블을 컴퓨터에 연결하면 잘 작동 한다.


반응형
Posted by J-sean
:
반응형

RetroPie installed on a PC can be too fast to play retro games. You can adjust(slow down) its speed by changing video_frame_delay value.


라즈베리 파이가 아닌 PC에 레트로파이를 설치한 경우 성능 차이로 인해 레트로 게임들이 너무 빨라 진행 할 수 가 없다. video frame delay 설정을 변경해 속도를 조절해 보자.


RetroPie Configuration을 선택 한다.


Configuration Editor를 선택 한다.


Advanced Configuration을 선택 한다.


Configure Libretro options를 선택 한다.



all/retroarch.cfg를 선택 한다.


video_frame_delay를 선택 한다.


Edit를 선택 한다.


15 이하의 적당한 숫자를 입력 하고 OK를 선택 한다. 다시 게임을 진행해 보면 속도가 적당히 변경되어 있다.



Configure Libretro options가 아닌 Manually edit RetroArch configurations에서도 변경 가능 하다.


all/retroarch.cfg를 선택 한다.


원래는 video_frame_delay가 주석처리(#)되어 있는데 위와 같이 주석을 삭제하고 적당한 값으로 바꾸면 된다.


특정 게임에서 잠시 video frame delay 값을 변경하고 싶다면 Hotkey(Select) + X 를 누른다.



Quick Menu가 표시 된다. 라즈베리파이(라즈비안)가 한국어로 설정되어 있다면 Quick Menu의 글자가 제대로 표시되지 않는다. 언어 설정을 영어로 바꾸면 제대로 표시된다.


Latency를 선택 한다.


Frame Delay를 선택 한다.


원하는 값을 선택 하고 게임으로 돌아가면 변경된 값이 적용 된다. 이 방법은 일회성이며 게임을 다시 시작하면 원래 값으로 돌아 간다. 이 상태를 저장하고 싶다면 Quick Menu에서 Save State를 선택 한다.


반응형
Posted by J-sean
:
반응형

레트로파이는 보통 레트로파이 홈페이지에서 받은 이미지를 MicroSD 카드에 설치하고 라즈베리 파이에서 사용 한다.

하지만 라즈비안이 설치된 라즈베리 파이나 라즈베리파이 데스크탑(데비안)이나 우분투가 설치된 PC에서도 레트로파이를 설치하고 레트로 게임을 즐길 수 있다.


2020/01/16 - [Raspberry Pi & Arduino] - Raspberry Pi Raspbian 설치 후 업데이트, 한글, 고정 IP, VNC, Samba 설정

2020/02/14 - [Raspberry Pi & Arduino] - How to slow down RetroPie games - 레트로파이 게임 속도 조절 하기(video frame delay)

2021/01/24 - [Raspberry Pi & Arduino] - How to add Korean font, game marquees, images, videos, and descriptions to RetroPie - 레트로파이에 한글 폰트, 게임 마키, 이미지, 플레이 영상, 설명 넣기

2020/11/12 - [Vita] - 오래된 노트북을 오락실 게임기로 만들어 보자.


APT repository를 모두 업그레이드 하고 Git이 설치 되어 있지 않다면 설치 한다.


sudo apt-get update

sudo apt-get upgrade

sudo apt-get install git


RetroPie-Setup 스크립트를 다운로드 한다.


git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git


다운 받은 스크립트 디렉토리로 이동하고 retropie_setup.sh를 실행 한다.


sudo ./retropie_setup.sh


Basic install을 실행 한다.


Yes를 선택 하고 설치를 진행 한다.



꽤 오랫동안 설치가 진행 된다.


설치가 완료되면 빌드하지 못한 에뮬레이터에 대한 메세지가 몇 개 표시 된다. 모두 OK를 선택 한다.


Setup 화면으로 돌아 오면 Update를 진행 한다.


Yes를 선택 하고 설치된 패키지 업데이트를 진행 한다.


최신 버전의 RetroPie Setup Script를 가져 왔다. OK를 선택 한다.



업데이트를 계속 진행 한다.


RetroPie에 관한 간단한 메세지가 표시 된다. OK를 선택 한다.


Kernel등의 underlying OS package들을 업데이트하기 위해 Yes를 선택 한다.


다시 꽤 오랜 시간동안 설치가 진행 된다.


업데이트가 완료 되었다.



재부팅을 선택 한다.


Yes를 선택 한다.


재부팅이 완료되면 레트로파이를 실행 한다. 터미널에서 emulationstation 명령어를 실행 해도 된다.


아래 게임패드 다이어그램을 참고하여 컨트롤러 버튼 설정을 진행 한다. 게임패드가 없다면 위와 같은 화면이 나오지만 키보드로 진행할 수 도 있다.


SNES Controller


XBox 360 Controller


PS3 Controller



버튼 설정을 완료하면 레트로파이가 실행 된다. 아직은 아무 게임도 보이지 않는다. 이 상태에서 게임 롬을 설치해도 오디오 드라이버가 설정 되지 않아 아무 소리도 나지 않는다. 오디오 드라이버 설정을 위해 A 버튼을 눌러 RetroPie Configuration으로 들어 간다.


Configuration Editor를 선택 한다.


Advanced Configuration을 선택 한다.


Configure Libretro options를 선택 한다.


all/retroarch.cfg를 선택 한다.



audio_driver를 선택 한다.


alsa(Advanced Linux Sound Architecture)를 선택 하고 Configuration을 빠져나가 레트로파이를 종료 한다.

※ 아래 순서로 진행해도 된다.

RetroPie Configuration - Retroarch - Settings - Audio - Output - Audio - alsa

RetroPie Configuration - Retroarch - Settings - Drivers - Audio - alsa


/home/pi/RetroPie/roms/arcade 디렉토리에 게임 롬 파일을 복사 한다. Raspberry Pi 2/3에 추천하는 MAME emulator는 lr-mame2003이고 lr-mame2003 emulator에 사용 가능한 게임 롬 버전은 MAME 0.78이다. MAME 0.78용 스트리트 파이터 2 롬 파일을 복사 했다.


다시 레트로 파이를 실행하면 ARCADE가 활성화 되고 1개의 게임이 사용 가능하다는 메세지가 표시 된다. A 버튼을 눌러 선택 한다.


ARCADE를 선택 하면 위에서 복사한 스트리트 파이터 2가 표시 된다. A 버튼을 누르고 진행 한다.



기본 에뮬레이터를 선택 하는 화면이 표시 된다. lr-mame2003을 선택 한다.


스트리트 파이터 2가 launching 된다.



스트리트 파이터 2가 실행 된다.


기본적으로 Raspberry Pi Desktop은 Screen Saver 프로그램이 설치되어 있지 않다. 하지만 Screen Saver 기능은 활성화 되어 있기 때문에 사용자 입력이 없으면 10분 후 화면이 꺼진다. RetroPie를 사용하는 동안에도 키보드나 마우스가 아닌 게임패드를 사용한다면 사용자 입력이 없다고 판단해 Screen Saver가 작동하게 되고 화면이 꺼져버리게 된다.


Preferences - Add/Remove Software를 선택 한다.


xscreensaver를 검색하고 설치 한다.


다시 Preferences를 확인해 보면 Screensaver가 설치되어 있다.


Screen Saver를 실행 한다.



Mode 콤보 박스를 클릭 하고 Disable Screen Saver를 선택 한다.


Screen Saver 기능이 비활성화 된다.


컴퓨터를 켜거나 재부팅하면 항상 위와 같은 GRUB 화면이 나온다. 여기서 몇 초(5초) 기다리거나 엔터키를 한 번 눌러야 부팅이 시작된다. 바로 부팅 되도록 해보자.


/etc/default/grub 파일을 열자.



GRUB_TIMEOUT=5로 되어 있다. 그래서 5초를 기다려야 했던 것이다.


기다리지 않고 바로 부팅되도록 0으로 바꾸고 저장한다.


sudo update-grub 명령으로 업데이트 한다. 이제 기다릴 필요 없이 바로 부팅된다.


반응형
Posted by J-sean
: