NodeMcu V2 웨더스테이션

Nodemcu V2버전으로 만든 웨더스테이션입니다. LCD는 2.8인치이구요.

Darksky는 애플에게 넘어가서 더이상 계정을 만들 수 없는 상태입니다.

이제는 https://openweathermap.org 에서 API 키를 만들어야 합니다.

AM2320 온습도 센서를 설치해서 실내 온습도 측정도 가능하게 만들었습니다.

RFID 복사 쉽게 하기

Wemos D1 Mini와 RC522보드를 SPI로 연결했습니다.

SPI에 전부 연결했고 D0 – RST 만 추가했습니다. 버튼은 D3, LED는 D4에 연결했습니다.

I2C로 쓰이는 D1, D2은 추후에 디스플레이 사용을 대비해서 사용을 안했습니다.

기본 모드는 카드 읽는 모드이고 버튼 누르면 쓰기 모드로 바뀌면서 LED에 불이 들어옵니다.

추후에 PCB보드 만들면 세트로 제작할 계획입니다. 

USBASP firmware 업데이트

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

위와 같이 메세지가 나오면 펌웨어 업데이트가 필요합니다. 아래는 전에 USBASP를 하나만 가지고 있을 때 업데이트 하는 방법입니다.

이번에는 USBASP 2개로 펌웨어 업데이트 하는 방법에 대해서 알아봅니다. 핀 3개로 되어 있는게 3.3V, 5V 선택하는 JP2핀입니다. JP1은 보드 펌웨어 업데이트용입니다. 그래서 이 핀을 연결해줘야 합니다.

업데이트 할 보드의 첫번째 JP1의 점퍼핀을 연결해 줍니다.

위쪽에 있는 보드가 업데이트 되는 보드입니다.

avrdude -c usbasp -p atmega8 -U flash:w:usbasp.atmega8.2011-05-28.hex

CMD로 도스창에서 위의 코맨드를 실행하면 업데이트가 됩니다.

USBASP ATtiny85보드용 커넥터 제작

ATtiny85 보드를 프로그래밍을 할때마다 매번 선 체크해서 연결하는게 번거로와 PCB를 만들었습니다.

아래 사진은 이전에 작업하던 방식입니다.

가운데 있는 모듈이 이번에 만든 PCB보드입니다.

USBASP와 ATtiny85보드를 연결하기 쉽게 만들어 줍니다.

간단한 보드지만 프로그램 업로드 할때 바로 꽂아서 연결하니깐 훨씬 편하네요.

LGT8F328P 아두이노 나노 호환 보드

나노와 99%이상 호환이 가능하다는 LGT8F328P보드입니다. 가격은 1/2 – 2/3 수준인데 호환이 잘만 된다면 앞으로 이걸로 구입해서 작업해도 문제가 없겠네요.

가운데 메인칩에 마킹이 없습니다. ATmega328 카피 버전이 아닐까 생각이 됩니다.

아래의 홀텍 USB 칩입니다. 나노 클론에서 많이 쓰는 CH340G칩이 아니네요. 홀텍칩은 따로 USB 드라이버 안 잡아도 윈도우에서 자동으로 잡히네요.

아두이노 IDE에서 셋팅은 다음과 같습니다. Preferences에 아래의 링크를 추가해 주시면 됩니다.

https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json

다음에는 실제 프로젝트에서 구동해 보고 결과물을 올려야겠네요. 굳이 돈 더주고 나노를 살 필요는 없을거 같습니다.

MC14490 하드웨어 디바운스

하드웨어 디바운스되는 칩중에서 이 칩이 최고중의 하나가 아닐까 합니다. 

Features
• Diode Protection on All Inputs
• Six Debouncers Per Package
• Internal Pullups on All Data Inputs
• Can Be Used as a Digital Integrator, System Synchronizer, or Delay Line
• Internal Oscillator (R−C), or External Clock Source
• TTL Compatible Data Inputs/Outputs
• Single Line Input, Debounces Both “Make” and “Break” Contacts
• Does Not Require “Form C” (Single Pole Double Throw) Input Signal
• Cascadable for Longer Time Delays
• Schmitt Trigger on Clock Input (Pin 7)
• Supply Voltage Range = 3.0 V to 18 V

10nf를 사용했습니다. 100ms정도 타이밍으로 버튼 클릭 가능합니다.

테스트용 아두이노 코드입니다. 하드웨어적으로 처리하기 때문에 delay없이 작동합니다. 

int buttonPin = 3;         // the number of the input pin
int ledPin = 13;       // the number of the output pin

int state = 0;      // the current state of the output pin
int reading;           // the current reading from the input pin
int previous = 0;    // the previous reading from the input pin


void setup()
{
  pinMode(buttonPin,  INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);
}

void loop()
{
  reading = digitalRead(buttonPin);

  if (reading == 0 && previous == 1)
  {
    state = !state;

    Serial.println("button pressed");
  }

  digitalWrite(ledPin, state);

  previous = reading;
}

PLL LCD 라디오 수신기

LCD 라디오 수신기 모듈로 라디오를 만들어 봅니다. RX, TX도 있어서 아두이노를 연결하여 명령어로 조정도 가능합니다. 다음번에는 그렇게 한번 만들어 봐야 할거 같네요.

제품 사양은 아래와 같습니다.

FM radio module / LCD version

Product parameters:
Output power: 500mW (drive headphones)
Frequency response range: 50Hz-18KHz
Channel: Stereo
Receiving frequency adjustment range:
Turn off campus broadcast 87.0MHz-108.0MHz,
Turn on campus broadcast 76.0MHz-108.0MHz Equivalent noise: ≥30dB
Supply voltage: 3.0V-5.0V
Current: 40mA

  • PLL digital frequency lock, no frequency
  • 30 level digital volume control
  • 76.0-108.0MHZ full coverage
  • Wide voltage 3-5V power supply
  • Automatic search storage function
  • Power off memory volume / frequency
  • Mono / Stereo Control
  • Support serial command control

Pinout

1 (L): left channel audio output
2(G): audio ground
3 (R): right channel audio output
4 (V+) : Short press volume + / long press continuous +
5 (V-): Short press volume – / long press continuous –
6(F+) : Short press a station / long press down to search for a station
7(F-) : Short press the previous station / long press to search for the station
8(P): Short press mute/long press full band search and save station
9 (DM): USB DM cable
10 (DP) : USB DP data cable
11 (TX): TTL serial port sender
12 (RX): TTL serial port receiver
13 (+5V): 5V power input (3-5V wide range)
14(G): power ground
15 (ANT): External FM radio antenna end

버튼 연결은 4번부터 8번까지 총 5개입니다. 버튼 반대쪽은 GND에 연결합니다.
이어폰잭에 연결해서 테스트 해봤습니다.

또 다른 Arduino Nano 보드들

오른쪽의 보드는 아두이노 나노보드인데 usb 칩이 CH340E 으로 구성되어 있습니다. 보통 많이 들어간 CH340G가 아닙니다. 이 칩은 크리스탈이 칩안에 구성되어 있다고 하네요.

왼쪽 보드는 아두이노 나노인데 메인칩이 ATmega328이 아닌 ATmega168 로 구성되어 있습니다. 2009년에 나온 Arduino Duemilanove에 들어간 칩이라서 메모리 구성이 반이네요.

AVRISP MKII

https://www.microchip.com/webdoc/avrispmkii/index.html

이 제품이 있으면 ATmel studio 7.0을 사용하여 프로그램밍이 가능합니다. 정품은 아니고 중국에서 만든 제품인데 프로그램에서는 avrisp mk2로 제대로 나옵니다. 가격은 1.5만원입니다. 메인칩은 Atmega128A가 들어가 있고 PDIUSBD12, 74HC4053D, 74HC4066D, AMS1117-3.3v로 구성되어 있네요.

ATtiny85 보드 업로드 하기

v-usb 방식으로 업로드 가능하지만 안정성이 떨어져서 좋지 않네요. usbasp 사용하는게 빠르고 확실합니다.

usbasp의 vcc는 attiny85보드의 5V, gnd-gnd로 연결합니다. 나머지 mosi, miso, slk, reset 연결해주면 됩니다.

보드 셋팅은 아래와 같습니다. Digispark로 디폴트 선택하면 되고 Programmer는 usbasp로 선택합니다.

스케치 메뉴에 있는 Upload Using Programmer를 클릭하면 프로그램 업로드가 완료됩니다.