DS3231 문제 및 해결

DS1307/DS1302 모델은 정확도가 떨어지고 가격도 전에는 싼 맛에 많이 사용했는데 이제는 DS3231도 1불정도 밖에 하지 않아서 의미가 없습니다. DS3231이 온도에 따른 시간 보정 기능 때문에 다른 칩보다 정확도가 우수합니다.

https://forum.arduino.cc/index.php?topic=278270.0

위 포럼에 나와있듯이 이게 전류가 배터리쪽으로 흐릅니다. 본인도 직접 멀티미터로 확인했구요. 그래서 배터리가 터지는 경우도 있다고 합니다. 리튬 이온 배터리가 충전식도 아니고 당연히 전류가 배터리쪽으로 들어가면 안되는 거지요.

해결책은 위와같이 저 부분을 칼로 그어서 잘라내면 됩니다.  다이오드를 인두기로 띄어내도 되긴합니다.

그냥 위 제품말고 다른 제품을 사면 되는데 그건 가격이 2불이 넘네요.

PCB 만능보드 살때 주의사항

PCB 보드로 납땜해서 만들려고 여러가지 크기의 다양한 제품을 샀는데 사용하다 보니 퀄러티 차이가 많이 납니다.

앞면과 뒷면입니다. 두께도 차이가 상당합니다.

오른쪽에 브라운색의 제품이 당연히 저가인데 납땜 동박 크기가 커서 합선이 너무 잘 일어납니다. 단면이라 그런지 동박도 너무 잘 떨어져 나가구요.

그리고 너무 간격이  좁아서 작업 끝나고 합선 체크하느라 시간도 많이 들어요. 또 표면처리가 안되어 있는지 납땜하다 보면 서로 잘 붙어요. 이것 때문에 디스플레이 몇개 고장났네요.

단면이 안좋은 점이 핀하고 접촉면이 너무 작아서 힘도 잘 받지 못합니다. 그래서 종종 동박하고 납땜한 부분이 조그만 힘만 줘도 떨어져 나갑니다. 접촉면이 작기 때문에 전류가 흐르는것 또한 좋지 않습니다.

결론은 저가 단면은 절대 비추.

ATtiny85 7 Digit LED 시계

ATtiny85로 시계를 완성시켜 보았습니다. 브레드보드로 테스트만 해 보았는데 아예 PCB 보드에 납땜해서 만들었습니다. 여기에 3D프린터로 케이스만 씌우면 좋긴 하겠네요.

 사용 부품

  1. 5×7 양면 PCB 보드
  2. 4 Digit LED Display(TM1637)
  3. ATtiny85
  4. 8-pin Dip Socket
  5. 0.1uf x 2 ceramic capacitor
  6. 10uf ceramic capacitor
  7. usb 단자 모듈
  8. DS3231 RTC
  9. 23AWG wires

RTC 모듈이 뒷쪽에 들어가 있습니다.

74HC14 Debounce Buttons

74HC14칩을 이용하여 6개의 버튼을 만들어 봅니다.

버튼 2개만 연결해서 on/off만 되게 만들어 보았습니다. 아래 코드 보시면 delay도 쓰지 않고도 완벽하게 작동합니다.  버튼에 여러가지 연결해서 회로는 복잡한 대신에 코드가 간단하게 되네요.

보통 소프트웨어 디바운스 안하고 아래의 코드 실행하면 버튼 오류가 상당합니다. 근데 PCB 디자인해서 만드는거 아니면 손이 많이 가긴합니다.

 

32×8 Matrix LED 시계

7 digit display보다 좀 더 정교한 32×8 LED Matrix 를 사용해서 시계를 만들어 봅니다. 디스플레이용 라이브러리는 MD_Parola를 이용합니다.

https://majicdesigns.github.io/MD_Parola/

https://github.com/MajicDesigns/MD_Parola

RTC를 처음 사용하는거면 Unix epoch time을 입력해야 합니다.  T1537178899   이런식으로 앞에 대문자 T가 들어가 있는 상태로 시리얼포트에 입력하면 RTC시간이 조정됩니다.

https://www.epochconverter.com/

RTC는 배터리를 빼기 전까지는 시간을 기억하니깐 처음 사용할 때만 시간 셋팅이 필요합니다.

시간과 날짜가 교대로 나옵니다. WAIT_TIME을 고치면 나오는 시간 조정이 됩니다.포텐셔미터로 LED 밝기 조정을 합니다. 수치는 0-15입니다.

Parola에 다양한 애니메이션 효과 있기 때문에 좀 더 화려한 효과를 원하시면 그 효과를 적용시키면 됩니다. 보통 스크롤 기능을 많이 사용합니다.

여기에 온도, 요일 표시까지 되는 업그레이드 버전을 추가로 만들어서 다시 올려야 겠네요. 그리고 on/off 스위치도 만들어서 밤에는 꺼지게 할수 있게 하는게 좋을듯 하네요.

 

32×8 모듈 그림이 없어서 8×8 모듈 하나로 된거 올립니다.

USBASP 펌웨어 업데이트

최근에 ATtiny board로 바로 업로드를 하기 위해 구입한 USBASP 장치가 아두이노 IDE에서 아래와 같은 에러 메세지를 보이면서 업로드가 안되네요.

warning: cannot set sck period. please check for usbasp firmware update

펌웨어 업데이를 하기 위해 알아보니 방법이 2가지 있는데 하나는 2개의 USBASP가 필요해서 할수가 없었고 다른 하나는 아두이노를 ISP로 사용하여 펌웨어를 업데이는 하는 겁니다.

***** USBASP 장치가 컴퓨터에서 드라이버 설치가 제대로 안되면 http://zadig.akeo.ie/ 에서 Zadig를 받아서 설치하시면 됩니다.

  • USBASP 펌웨어 업데이트 하는 방법을 설명합니다.

1. 아두이노 우노를 컴퓨터와 연결한 상태한 후에 IDE에서 Arduino UNO as an ISP를 선택합니다. File – Examples 에서 “Arduino ISP”를 선택하여 업로드 합니다.

2. https://sourceforge.net/projects/ardude/ 에서 avrdude를 다운 받아서 압축을 풉니다.

3.  https://www.fischl.de/usbasp/ 에서 usbasp.2011-05-28.tar.gz 를 다운 받아서 압축을 풉니다. bin\firmware\usbasp.atmega8.2011-05-28.hex 파일을 복사해서 avrdude폴더에 넣습니다. (본인이 가지고 있는 usbasp에 atmega8 칩인지 확인)

4. 우노와 USBASP장치를 아래와 같이 연결합니다. 우노의 Reset- Ground에 10uF 캐퍼시터 연결합니다. 그리고 USBASP 장치에 있는 JP1 점퍼에 선을 연결합니다.

Arduino—USBASP

5V ———– VCC
GND ——– GND
13 ———— SCK
12  ———-  MISO
11 ———-   MOSI
10 ———    RESET

5. 윈도우즈 cmd로 도스창으로 들어갑니다. avrdude가 있는 폴더로 이동합니다. 코맨드 창에서 아래와 같이 입력합니다. 포트는 본인에게 맞는 번호를 적으세요.

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

이상이 없다면 화면에 여러가지 정보 리스트가 나오면서 avrdude: AVR device initialized and ready to accept instructions 문구가 나올겁니다.

6. 마지막으로 다음과 같이 적어서 업데이트를 하면 됩니다.

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

이상이 없으면 업로드가 되고나서 verify를 합니다.

이렇게 하면 USBASP 장치로 ATtiny85를 아두이노 우노를 사용하지 않고도 아래 사잔과 같이 직접 업로드가 가능합니다.  자작으로 만든 ATtiny용 우노 쉴드가 더이상 필요없다는 뜻입니다.

USB포트에 전원만 연결해서 Blink되는거 확인합니다.

테스트용 업로드 코드는 다음과 같습니다.

 

 

IR Remote Test – Arduino Nano

IR 수신용 LED는 TSOP4838 또는 TSOP38238는 구입하세요.  저가의 VS1838은 구입하지마시구요. 테스트해보니깐  QC가 좋지 않아서 불량률이 있습니다. 하다보면 가끔씩 오류 코드를 발생시키네요.

  • 필요부품

–  아두이노 나노 또는 우노 x 2

–  IR LED Emitter and Receiver

–  100 ohm 저항

–  Button

보내는쪽 코드입니다.

받는쪽 코드입니다.

 

라즈베리 파이로 IPTV 보기

IPTV 많이들 보시는데 TV가 한대면 기본적으로 주는 셋탑박스가 있어서 문제가 없는데 이게 추가 TV가 있거나 컴퓨터로 TV를 보고 싶다고 하면 문제가 생깁니다.셋탑 박스 추가하면 당연히 매달 렌탈비가 더 나오는데 추가 셋탑박스 없이 보는 방법을 알아봅니다.

라즈베리 파이 3, SD카드, 2A 이상의 어댑터, SD카드 리더기 등이 있어야 셋업이 가능합니다.  대략적으로 6만원정도의 초기 비용이 들겠네요. 라즈베리 파이가 따로 필요없이 그냥 컴퓨터로 보실분들은 라즈베리 파이 부분은 건너뛰고 OMVP쪽만 확인하시면 됩니다.

LibreElec를 https://libreelec.tv/ 에서 다운 받아서 SD카드에 설치해야 합니다. 사이트에 자세히 나와 있어서 설명 보시고 따라하시면 됩니다. Kodi만 들어가 있는 슬림 버전의 운영체제라서 용량도 얼마 안되고 간단합니다.

LibreElec설치 후에 라즈베리 파이에서 셋팅하면 됩니다. 마우스가 필요합니다. ssh활성화 해서 추후에 수정은 컴퓨터에서 원격으로 할수 있게 만드는게 중요합니다.

필요한 프로그램:

위의 링크에서 각각의 프로그램을 전부 다운받아서 설치합니다.

하드웨어 연결은 아래와 같습니다. 공유기는 TP-link C7을 쓰고 있습니다. 통신사 모뎀에 랜포트가 두개 있는데 여기에 따로 연결하는게 포인트 입니다.

개인 공유기에서 중요한거 MAC Clone입니다. 제가 현재 쓰고 있는 U+ 의 공유기 mac 주소를 복사해서 가지고 있는 공유기에 MAC Clone으로 넣었습니다. 이걸 안하면 컴퓨터에서 IP주소로 TV볼때 1분이상 볼수가 없더라구요. 보다보면 계속 멈춥니다.

OMVP를 사용하여 ip리스트 축출하는거에 대해 다음에 좀 더 자세히 기술하겠습니다.

74HC595 쉬프트 레지스터 사용하기

보통 led가 여러개이면 그 수에 맞게 핀이 필요합니다. 그런데 그 숫자가 많아지면 더이상 불가능한 경우가 있습니다. 이럴경우에 쉬프트 레지스터로 SIPO방식의 74HC595칩을 사용합니다.

74HC595칩 하나에 8개의 led를 사용할수 있는데 7개의 led만 사용했습니다. 아두이노에 latch, clock, data선 3개만 연결하면 제어가 가능합니다.

HM-10 바로 연결하기

블루투스 연결에 대해서 알아봅니다. 보통 아두이노를 써서 연결하는데 아래와 같이 컴퓨터에 직접 연결 합니다.

이렇게 하면 Putty나 기타 시리얼 프로그램으로 AT 코맨드 입력이 가능합니다. 스마트폰의 블루투스 프로그램하고 통신도 할 수 있습니다.

아래 사진에서 왼쪽부터 보시면 미니 브레드보드, 로직 컨버터, 5V-3.3V 다운 모듈, FDTI USB, HM-10 이렇게 나와 있습니다. 3.3V로 연결가능하면 USB에 바로 연결 가능한데 이것 때문에 전압 낮추는 모듈까지 필요하네요.