블로그 이미지
안녕하세요~ iolate(a.k.a. isho) 의 블로그 입니다~! iolate

카테고리

분류 전체보기 (179)N
Server, Cloud (9)
끄적끄적 (6)
Linux, Ubuntu (27)N
개발개발 (46)
Mac, iOS (41)
Embedded (20)
NAS (1)
Web (5)
Network (3)
Review (12)
기타 (9)
비공개글 (0)
Total649,442
Today205
Yesterday241

자판기를 만들고 싶어서, 일단 지폐인식기를 구해보았다.


일반적으로 아두이노 관련 제품을 파는 쇼핑몰에서는 구할 수 없고, 오락기나 자판기 부품을 판매하는 업체 등에서 구할 수 있는데

중고나라에 자주 올라오니 중고나라에서 구매하는 것도 좋은 방법.


나는 마침 중고나라에 올라온 GBK-PS500 이라는 제품을 구매하였는데, 기억은 안나지만 개당 2만원 정도에 구매했던 것 같다.


Apple | iPhone 7 | Normal program | 4.0mm | 2018:06:27 20:12:09


이렇게 생긴 친구이며, 좌측에 MOLEX 53015 10P 커넥터가 달려있고, 우측에 있는 DIP 스위치로 신호 출력방식, 지폐 권종 등을 조절할 수 있다.


문제는 중고로 샀더니 정말 제품만 덜렁왔고... 커넥터에 맞는 케이블을 구하기가 어려웠다.

그러다 모 쇼핑몰에서 동일 제품을 판매하는걸 발견했고, 옵션 상품에 케이블을 판매하길래 전화로 별도 구매 성공!

링크는 여기 http://smartpon4989.com/item.php?ct_id=18&id=F154916030


다만 전원과 VEND1 출력만 연결된 3선 케이블이라고 한다.

3개만으로도 작동을 하니까 파는거겠지.. 하면서 일단 받았다.


전원 연결을 하면 지폐인식이 매우 잘 되는건 확인.

이제 신호를 받아야하니 이전에 사뒀던 DSO138 에 물려서 확인해보았다.


Apple | iPhone 7 | Normal program | 4.0mm | 2018:06:27 19:50:40



(내가 쓸줄 몰라서 그러는건지.. 뭔가 이쁘게 딱 보이진 않았지만...)

사진에 보이다시피 펄스가 주기적으로 계속 나오다가, 지폐가 입력되면 100 ms 동안 LOW 신호가 1000원 단위로 출력되는 구조였다.

앞에서 얘기했듯이 DIP 스위치로 1000원 당 펄스 횟수(1~10,11,12,15,20)를 조절할 수 있고, 펄스길이(100ms / 50ms)도 조정가능함.

지폐가 인식이 안되어서 반환이 되었는지, 현재 지폐 인식 중인지 등의 정보도 받을 수 있는 것 같지만 선이 연결 안되어있으니 일단 패쓰.

아날로그 신호다 보니 노이즈가 들어오면 돈이 잘못 인식될 수도 있을.. 것 같지만 3선밖에 없어서 검증루틴 같은걸 추가하기도 곤란하다. 그냥 배선을 잘 해두는 수밖에.


여튼 아두이노 코드로는 간략히 아래와 같이 작성하였다.

(이제보니 purseIn 이라는 내장 함수가 있네... 다음에 깔끔하게 고쳐보는걸루...)


더보기


100ms 의 경우 만원권 등을 넣었을때 그만큼 인식에 시간이 걸리기 때문에, 50ms 로 줄여도 된다. 그 경우엔 조건문을 조금 수정해야할 듯.


여튼 일단 잘 됨!


추가로, LCD 같은 부품을 사용해서 아두이노가 loop 한번 돌때 걸리는 시간이 길어진다면, 펄스 신호를 제대로 체크할 수 없기 때문에 제대로 작동하지 않을 수도 있다. 알..아서 잘 해결해보자ㅎㅎ



+ INHIBIT 포트를 LOW 로 주면 지폐를 받지 않는다.

ESCROW 는 모르겠음

Posted by iolate

ubuntu 17 부터인지

ifupdown 대신 netplan 이 네트워크 설정을 담당하고,

기본 nameserver 로는 127.0.0.53, systemd-resolved 가 작동하면서 알아서 질의한다.


같은 시기에 설치한 ubuntu 18 서버 두대 중 한대가 dns 질의가 안되었는데,


$ nslookup google.com

Server: 127.0.0.53

Address: 127.0.0.53#53


** server can't find google.com: SERVFAIL


$ sudo journalctl -u systemd-resolved -f

Jun 26 18:53:46 hostname systemd-resolved[688]: Got packet on unexpected IP range, refusing.



대충 이런 상황...?


원인을 찾아보니 황당하게도 iptables 설정 문제.

포트 포워딩을 하면서 SNAT 을 위해 아래와 같이 설정해두었는데 이게 문제였다.

# iptables -t nat -A POSTROUTING -j MASQUERADE



로컬 인터페이스에 대해서도 SNAT 이 걸려서 뭔가 문제라고 판단을 하였고, 

# iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

이렇게 네트워크 인터페이스를 지정해주고 문제 해결.


참고로 네트워크 인터페이스 지정을 안해주니 sudo 도 hostname 을 제대로 못찾아서 에러를 낸다.

127.0.1.1 주소를 /etc/hosts 파일에 hostname 과 연결해주면 해결되지만, (또 그렇게 연결해두라고 하지만)

SNAT 설정을 안해두면 애초에 이 문제가 발생하지 않음.


여튼 해결.

Posted by iolate

예전에 학교 학생회관에 DID(디지털 정보 디스플레이, Digital Information Display) 느낌으로 라즈베리파이와 모니터로 만들어서 설치한 적이 있었는데,

그 당시엔 pygame 으로 이미지를 순차 디스플레이 하는 방법을 사용했었지만 좀 구린 점이 있었고...

다른 쓸만한 방법을 발견해서 업데이트.


우선 목적은 정해진 이미지들을 순차적으로 전체화면으로 보여주고, 전원이 켜지자마자 바로 이미지를 보여주는 모드로 들어가야함. 그냥 디지털 액자 생각해도 된다.


Raspberry Digital Signage 이라는 커스텀 OS 가 있길래, 이걸 사용하려 했는데 유료 플랜이 아니면 실사용이 어려울 정도로 기능 제약이 있음. chromium 을 사용해서 만들었다는 점에 아이디어를 얻어서 좀더 찾아봤다.


직접 chromium-browser 를 실행하는 방법도 있었지만,, 이래저래 귀찮은 와중에 딱 이런 목적으로 만들어진

FullPageOS (github) 를 발견.


추가적인 나의 상황은, 네트워크가 불안정한 환경. 즉 이미지 수정을 오프라인으로 해줘야한다.

여러가지 방법이 있겠지만, boot 파티션에 남는 약 20MB 정도의 용량을 활용하기로 결정.

boot 파티션을 웹 루트 하위에 심볼릭 링크를 건 다음, php 스크립트로 이미지 목록을 가져와서 뿌려지는 방식을 사용하였다.


1. FullPageOS 설치

당연히 젤 처음해야할 작업.

직접 컴파일할 필요는 없으니 이미지는 http://unofficialpi.org/Distros/FullPageOS/ 여기서 다운.


메모리카드에 만드는 방법은 여러가지 방법이 있으니 알아서 해주자.

Mac 에서 설치디스크 만들기 (Flashing Image)


2. 일단 네트워크가 되는 환경에서 작업!

만든 php 스크립트를 업로드 해야하니... 다른 방법도 있겠지만 그냥 파이를 부팅한 다음에 네트워크에 물리는 방법이 편하다.

ssh 는 기본적으로 활성화이니 무선 네트워크 설정 혹은 유선랜을 물리자. 기본 호스트네임은 fullpageos.local


와이파이 설정은 라즈비언과 조금 다르게 부트파티션에 fullpageos-wpa-supplicant.txt 파일이 있다. 수정해주자.


3. php 스크립트 집어넣고 심볼릭 링크.

fullpageos 에 기본적으로 lighttpd 와 php 등이 설치되어 있다.

/var/www/html 이 기본 루트. 다른거를 굳이 지워줄 필요는 없으니 did 폴더 정도 만들어주자.

그리고 boot 파티션에 images 폴더를 만들고, 이것도 심볼릭 링크 생성.


$ sudo mkdir /var/www/html/did

$ sudo mkdir /boot/images

$ sudo ln -s /boot/images /var/www/html/did/images


(만든 스크립트는 나중에 수정으로 업로드 예정)


4. 실행될 웹주소 수정

/boot/fullpageos.txt 파일을 수정하면 된다. boot 파티션에 있기 때문에 컴퓨터에서 바로 수정도 가능


$ sudo bash -c 'echo "http://localhost/did/" > /boot/fullpageos.txt'


5. 이미지 파일 넣기

컴퓨터에 연결해서 파일을 넣거나, 지금은 네트워크가 연결된 상황이니 /boot/images 에 이미지를 넣어주자.


6. 재부팅

왠지 서비스를 재시작하는 방법이 있을 것 같지만, 잘 모르겠으니 그냥 재부팅.

한 15초 정도 부팅이 지나면 바로 이미지들이 재생되기 시작한다.


대충 jquery 로 짜면서 fade out 효과를 줬는데.. 조금 버벅인다ㅠ

인터넷 연결이 상시되는 환경이면 애초에 온라인 상의 웹에 바로 물리고 주기적으로 새로고침되게 짜는 것도 좋다.

Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함