반응형

아두이노와 지문 인식 센서를 사용해 보자.

 

AS608 칩을 사용한 지문 인식 센서다.

 

핀맵은 왼쪽부터 아래와 같다. (D- D+는 USB 연결 시 사용한다)

D- D+ UA TCH GND RX TX VCC(3.3V)

제품마다 다를 수 있다.

 

아래와 같이 연결한다.

VCC - 3.3V

TX - D2

RX - D3

GND - GND

 

Arduino IDE - Library Manager - fingerprint를 검색하고 Adafruit Fingerprint Sensor Library를 설치한다.

 

 

File - Examples - Adafruit Fingerprint Sensor Library - enroll 을 선택한다.

 

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

 

시리얼 모니터를 확인하면 지문인식 센서가 인식되고 ID 입력을 기다린다.

 

127개의 지문을 인식할 수 있다. 처음 이므로 1을 입력하면 첫 번째 지문 등록 대기상태로 들어간다.

 

 

손가락을 대면 지문이 인식되고 뗐다 다시 대면 첫 번째 지문이 등록 된다. 2를 입력하고 동일한 방법으로 두 번째 지문을 등록한다.

 

이번엔 fingerprint 예제를 불러온다.

 

컴파일하고 업로드한다.

 

지문인식 센서가 인식되고 대기상태에 들어간다. 센서에 2개의 지문(템플릿)이 있다고 표시된다.

 

 

첫 번째 등록한 손가락을 대면 ID 1과 매치된다.

 

두 번째 손가락을 대면 ID 2와 매칭된다.

 

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

이북(eBook)에 쓰이는 전자잉크를 아두이노와 함께 사용해 보자.

 

MH-ET LIVE 2.13 Inch E-paper Module

 

3.3V와 5.0V 모두 사용 가능하다. 딥스위치는 L(4-Line)로 옮겨준다.

전자잉크와 아두이노는 아래와 같이 연결한다.

 

E-Paper Arduino
Busy D7
Reset D9
D/C D8
CS D10
SCLK D13
SDI D11
GND GND
VCC 5V

 

Arduino IDE를 실행한다.

 

 

Library Manager에서 e-paper를 검색하고 GxEPD2를 설치한다.

 

필요한 라이브러리 모두 함께 설치한다.

 

File - Examples - GxEPD2 - GxEPD2_HelloWorld를 선택한다.

 

HelloWorld 예제가 열린다.

 

 

GxEPD2_display_selection_new_style.h 파일을 선택하고 #define GxEPD2_DISPLAY_CLASS GxEPD2_3C의 주석을 해제한다

그리고 기본적으로 #define GxEPD2_DISPLAY_CLASS GxEPD2_BW의 주석이 해제되어 있다. 주석 처리하자.

 

#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c의 주석을 해제한다

 

컴파일하고 업로드한다.

 

화면이 몇 번 깜빡이고 Hello World!가 출력된다.

 

 

전원이 공급되지 않아도 출력상태가 유지된다.

 

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

토양 수분 센서를 라즈베리 파이와 함께 사용해 보자.

 

라즈베리 파이는 아날로그 신호를 입력 받을 수 없기 때문에 ADC(MCP3008)를 사용해야 한다.

 

Analog-Digital Converter

 

라즈베리 파이 - ADC - 토양 수분 센서를 연결한다.

 

 

ADC            -       Raspberry Pi

VDD                                5V
VREF                               5V
AGND                            Ground
CLK                           GPIO11(SCLK)
DOUT                         GPIO9(MISO)
DIN                            GPIO10(MOSI)
CS/SHDN                    GPIO8(CE0)
DGND                            Ground

 

Soil Moisture Sensor   -   ADC(Raspberry Pi)

VCC                                       (5V)

GND                                    (Ground)

A0                                         CH0

 

라즈베리 파이에서 raspi-config를 실행한다.

 

 

3 Interface Options를 선택한다.

 

I4 SPI를 선택한다.

 

YES를 선택한다.

 

SPI가 활성화 된다.

 

 

git이 설치되어 있지 않다면 설치한다.

 

py-spidev를 다운 받는다.

 

다운받은 py-spidev 디렉토리로 이동하고 설치한다

 

수분량을 감지하는 소스를 입력하고 저장한다.

 

 

소스를 실행하면 센서에서 읽은 값이 표시된다.

※ 참고

Python Spidev

 

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

라즈베리 파이 피코는 컴퓨터에 연결 하고 전원을 공급한 상태에서 소스를 입력하고 실행(F5)해야 프로그램이 작동한다. 컴퓨터 연결 없이 자동으로 실행되도록 해 보자.

 

소스를 입력하고 파일명을 main.py로 Pico에 저장한다.

이제 컴퓨터 없이도 피코 LED가 깜빡인다. MicroPython은 전원 공급시 자동으로 파일 시스템에서 main.py를 찾아 실행한다. (Headless Operation)

 

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

 

 

Raspberry Pi Pico를 사용해 보자.

 

Pico를 컴퓨터에 연결하면 기타 장치 - RP2 Boot로 인식된다.

 

파일 익스플로러에서도 확인 할 수 있다. (RPI-RP2)

만약 파일 익스플로러에 Pico가 표시되지 않는다면 BOOTSEL 버튼을 누른 상태에서 컴퓨터에 연결한다.

 

MicroPython을 설치하기 위해 아래 링크에 접속해 MicroPython UF2 파일을 다운로드한다.

Raspberry Pi Documentation

 

MicroPython is a full implementation of the Python 3 programming language that runs directly on embedded hardware like Raspberry Pi Pico. You get an interactive prompt (the REPL) to execute commands immediately via USB Serial, and a built-in filesystem. The Pico port of MicroPython includes modules for accessing low-level chip-specific hardware.

 

 

다운로드한 UF2 파일을 Pico(RPI-RP2)에 복사해 넣는다.

 

한 쪽 구석에 디바이스 설정 중이라는 메세지가 나타난다.

 

설정이 끝나면 기타 장치였던 Pico는 USB 직렬 장치(COMX)로 표시된다.

 

Thonny를 다운로드하고 설치한다.

Thonny

 

 

Thonny를 실행한다.

 

Run - Select interpreter...를 클릭한다.

 

MicroPython (Raspberry Pi Pico)와 USB 직렬 장치(COMX)를 선택한다.

 

간단한 소스를 입력하고 Run 버튼(F5)을 클릭한다.

 

 

소스를 어디에 저장할지 물어 보면 Raspberry Pi Pico를 선택한다.

 

적당한 이름을 지정한다.

Run 버튼을 클릭했으므로 소스가 저장되고 나면 바로 실행된다.

Pico에 달려있는 LED(GP25)가 1초 간격으로 깜빡인다.

 

LED(GP25)

 

Pico를 다시 연결하면 아무것도 실행되지 않는다. File - Open...을 클릭한다.

 

 

Raspberry Pi Pico를 선택한다.

 

Pico에 저장되어 있는 소스를 선택하고 실행한다.

 

WAVESHARE의 Pico-like MCU, RP2040-Zero도 같은 방식으로 동작한다.

RP2040-Zero는 Raspberry Pi Pico와 Pinout이 다르고 단색 LED가 아닌 WS2812 RGB LED(GP16)가 사용되었다.

단색 LED가 아니기 때문에 간단한 Blink.py 예제는 동작하지 않는다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import time
from machine import Pin
import rp2
 
max_lum =100
r=0
g=0
b=0
 
@rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True, pull_thresh=24)
def ws2812():
    T1 = 2
    T2 = 5
    T3 = 3
    wrap_target()
    label("bitloop")
    out(x, 1)               .side(0)    [T3 - 1]
    jmp(not_x, "do_zero")   .side(1)    [T1 - 1]
    jmp("bitloop")          .side(1)    [T2 - 1]
    label("do_zero")
    nop()                   .side(0)    [T2 - 1]
    wrap()
 
 
# Create the StateMachine with the ws2812 program, outputting on Pin(4).
sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(16))
 
# Start the StateMachine, it will wait for data on its FIFO.
sm.active(1)
 
# Color change
while True:
    for i in range(0,max_lum):
        r=i
        b=max_lum-i
        rgb =(g<<24| (r<<16| (b<<8)
        sm.put(rgb)
        time.sleep_ms(10)
    time.sleep_ms(300)
    for i in range(0,max_lum):
        g=i
        r=max_lum-i
        rgb =(g<<24| (r<<16| (b<<8)
        sm.put(rgb)
        time.sleep_ms(10)
    time.sleep_ms(300)
    for i in range(0,max_lum):
        b=i
        g=max_lum-i
        rgb =(g<<24| (r<<16| (b<<8)
        sm.put(rgb)
        time.sleep_ms(10)
    time.sleep_ms(300)
 

 

조금 복잡한 WS2812 Test Code로 RGB값 변화를 확인할 수 있다.

 

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

온도 센서 DS18B20을 사용해 보자.

 

별 다른 표시가 없는 DS18B20 온도 센서와 아두이노와의 연결을 쉽게 해 주는 터미널

 

Operating voltage: 3V to 5V
Temperature Range: -55°C to +125°C
Accuracy: ±0.5°C

 

아두이노와 연결한다. (터미널이 없다면 DATA 케이블과 VCC 케이블을 4.7KΩ 저항으로 연결해야 한다)

Sensor - Terminal - Arduino

Yellow - DAT - D2

Red - VCC - 5V

Black - GND - GND

 

아두이노 Library Manager에서 OneWire 라이브러리를 설치한다.

 

File - Examples - OneWire - DS18x20_Temperature 를 불러온다.

 

 

OneWire ds(10)을 OneWire ds(2)로 바꾼다.

 

컴파일하고 실행하면 현재 온도를 측정해 Serial Monitor에 표시한다.

 

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

최신 버전의 OpenCV를 리눅스나 라즈베리 파이에 설치하기 위해서는 길고 지루한 과정을 거쳐야 한다. 꼭 최신 버전의 OpenCV가 필요한게 아니라면 간단하게 설치하고 사용해 보자.

 

libopencv-dev를 설치한다.

 

3.2.0 버전의 OpenCV가 설치 되었다.

 

텍스트 편집기에서 간단한 소스를 입력하고 저장한다.

 

컴파일 한다. pkg-config 명령어를 감싸고 있는 ` 기호는 Tab 키 위에 있는 backtick이다.

 

 

컴파일된 파일을 실행하면 라즈베리 파이에 연결된 카메라가 작동되고 sample.jpg가 생성된다.

 

sample.jpg

 

라즈베리 파이가 아닌 PC(우분투)에서 위 내용을 진행하면 opencv2/opencv.hpp가 없다는 에러가 발생하게 된다.

 

설치한 libopencv-dev의 버전이 다르기 때문인데 PC(우분투)에서는 라즈베리 파이보다 높은 버전의(4.2.0) opencv가 설치된다.

 

 

pkg-config --list-all 명령으로 확인된 opencv4 옵션을 사용해 컴파일 한다.

 

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

레트로파이를 업데이트 하고 나면 부팅시 자동 로그인 되지 않고 암호를 물어보는 경우가 생긴다. 아래와 같이 자동 로그인 옵션을 활성화 하자.

 

Raspberry Pi Software Configuration Tool을 실행하고 3 Boot Options를 선택한다.

 

B1 Desktop / CLI 를 선택한다.

 

B2 Console Autologin을 선택한다.

 

반응형
Posted by J-sean
: