'알리익스프레스'에 해당되는 글 141건

  1. 2018.08.12 Hardware | Safecast bGeigi nano firmware upgrade
  2. 2018.08.10 Hardware | Raspberry Pi 3 model B+ unboxing
  3. 2018.08.06 Hardware | MAX31865 + PT100 온도센서 조합 2
  4. 2018.08.01 Hardware | ML8511 UV sensor 를 가지고 놀아보자
  5. 2018.07.31 Hardware | MAX31855 + K-type 온도센서 조합 2
  6. 2018.07.01 Hardware | 압력 센서를 가지고 놀아보자
  7. 2018.06.29 Hardware | 재생토너 chip 교환기 - 1
  8. 2018.05.29 Hardware | Amazon Kindle Paperwhite 구매기
  9. 2018.05.20 Hardware | 전자저울 구매하기
  10. 2018.05.19 Life | iPhone 6S Plus 밧데리 교환 DIY

Hardware | Safecast bGeigi nano firmware upgrade

|

1. firware upgrade


모든 기기는, 그 동작의 기본이 되는 firmware 가 있습니다.

저번에 만들어 봤던 Safecast bGeigie nano 도 firmware 가 있으므로 upgrade 해봅니다.


지금까지 bGeigie nano 에 대해서는 다음 포스트들을 읽어보세요.


* Hardware | Safecast bGeigie Nano 를 조립해 보자 - 1

http://chocoball.tistory.com/entry/Hardware-Safecast-bGeigie-Nano-1


* Hardware | Safecast bGeigie Nano 를 조립해 보자 - 2

http://chocoball.tistory.com/entry/Hardware-Safecast-bGeigie-Nano-2


* Hardware | bGeigie Nano 의 battery 를 업그레이드 해보자

http://chocoball.tistory.com/entry/Hardware-bGeigie-Nano-battery-upgrade


* Hardware | bGeigie Nano 를 이용하여 방사능을 측정해 보자

http://chocoball.tistory.com/entry/Hardware-bGeigie-Nano-checking-radiation



참고로 firmware upgrade 하기 전에는 1.3.4 입니다.


사용된 환경은 Mac 입니다.

아무래도 unix based OS 이고, arduino / FTDI 사용시 반응이 빠릿빠릿 해서 입니다.





2. FTDI driver


우선 FTDI for mac 드라이버를 인스톨 합니다.


* Future Technology Devices International Ltd.




위 링크에서 최신 driver 를 다운로드 받아서 설치합니다.



정식 명칭은 FTDI USB Serial Driver 군요.







3. AVR 설치


아래 링크에서 다운로드 받아서 설치합니다.


CrossPack for AVR® Development



오랜만에 Mac 에서 설치작업을 해보는군요.



2013년에 나온게 최신버전인가 보군요.






4. FTDI 연결하기


bGeigie nano 의 중앙 처리장치인 arduino FIO 옆에 pinout 이 있습니다.

firmware 업그래이드를 위해 마련된 FTDI 연결 포트입니다.


신기하게도 알리에서 구입한 FTDI breakout board 의 pinout 과 순서가 완벽히 일치합니다.

RX/TX 도 서로 엇갈리게 되어 있고, Vcc / GND 등 모두 짝이 맞춰져 있습니다.



참고로, firmware update 시의 주의사항 입니다.


NOTE: The Nano power switch MUST be turned OFF before connecting (the Fio board powers from the FTDI cable)!
NOTE: If you have a BLEBee or other wireless module, it MUST be removed before reprogramming, since it shares TX/RX signals!


즉, 전원은 꼭 off 로 해 놓고, FTDI 에서 받는 3.3V 를 이용하라는 것이고,

Bluetooth 용인 BLEBee 모듈을 꼭 제거하고 실행하라는 것 입니다. 그렇지 않으면 TX/RX 가 선점되어서 통신이 시작되지 못합니다.

(삽질 하루 걸림...)



꼭! BLEBee 모듈은 제거!



FTDI 와 연결합니다.

지금까지 여러가지 해봤더니, 어느새 FTDI 를 가지고 있네요?


* Hardware | FTDI Serial Adapter 를 사용해 보자

http://chocoball.tistory.com/entry/Hardware-FTDI-FT232RL-using





5. 최신 firmware 다운로드 및 upgrade


최신 firmware 를 다운로드 받습니다.


- wget https://github.com/Safecast/bGeigieNanoKit/raw/master/bGeigieNano.hex


파일을 다운로드 받으려고 하면, redirection 되어서 다음 화면의 링크에서 다운로드 받네요.



"bGeigieNano.hex" 가 그 최신 파일입니다.



다음 명령어로 flashing 합니다.


avrdude -DV -p atmega328p -P /dev/tty.usbserial-A50285BI -c arduino -b 57600 -U flash:w:bGeigieNanao.hex:i


USB port 는 각 기기마다 다르게 보일 터이니, ls 명령어로 우선 확인해 보고 맞는 이름을 사용하면 되겠습니다.

저의 경우는 "/dev/tty.usbserial-A50285BI" 였습니다.



짜잔~. 최신 버전인 1.4.2 로 업그레이드 되었습니다.



참고로 Windows OS 에서의 실행 결과 입니다.

나중을 위해 명령문도 기록해 놓습니다.


C:\"Program Files (x86)"\Arduino\hardware\tools\avr/bin/avrdude -CC:\"Program Files (x86)"\Arduino\hardware\tools\avr/etc/avrdude.conf -DV -p atmega328p -PCOM5 -c arduino -b 5700 -U flash:w:bGeigieNano.hex:i




6. 마무리


최신 firmware 로 upgrade 한 다음, microSD 및 GPS reset 을 해 줍니다.


GPS reset 은, microSD 를 뺀 다음, 부팅시켜주는 것이고,

microSD는 FAT 로 포맷하고, 필요한 파일인 "config.txt", 및 "SAFECAST.TXT" 만 root 에 copy 하고 리부팅 하면 됩니다.






FIN


거부감 없이 bGeigie nano 의 firmware 를 업그레이드 해봤습니다.

사실 microSD 카드에 logging 하는 기능이 정상 동작하지 않아, 궁여지책으로 해본 작업이었습니다.


firmware upgrade 를 해도 개선이 안되는 것을 보면, 다른 문제가 있어 보이네요.

국내에 얼마나 많은 분들이 가지고 계실지는 모르겠습니다만, 참고가 되었으면 합니다.




Update 20191228


마지막에 기술했다 시피, microSD 카드에 logging 되지 않는 현상과,

toggle switch 로 mode 를 변경시켜도 mode 가 변하지 않는 문제가 지속되었습니다.


일단, toggle switch 의 접점 문제로 인하여 mode 변경이 되지 않는게 아닌가 하여, 관련 부분 납땜을 다시 정리해 주기로 합니다.



살살 분해 합니다.



좀 많이 튀어 나온 부분이나, 납이 부족하다고 생각되는 부분을 정리해 줍니다.



이 작업 후에도 개선은 되지 않더군요... ㅠㅠ



1년 4개월이 흐른 뒤...

긴 휴가를 맞이하여 다시한번 도전하기로 합니다.


9개월 전에 새로운 firmware 가 올라 왔군요. 버전은 1.4.3.

그 전 버전이 1.4.2 였으니 마이너 업데이트 이긴 하지만, 밑져야 본전 입니다.



Firmware 업데이트 후, 되는군요... 문제가 고쳐졌습니다. ㅠㅠ



CPM 을 표시하면서 logging (microSD 에 기록) 하는 모드가 정상으로 돌아 왔습니다!!!



물론, 단순 측정 모드 (logging 하지 않음) 도 잘 되구요.

이제야 제대로 사용할 수 있으려나 합니다.


And

Hardware | Raspberry Pi 3 model B+ unboxing

|

1. Raspberry Pi 3 의 새버전이다!



2016년에 Raspberry Pi 3 model B 가 나온지 2년이 지난 지금, 3 model B 의 업그레이드 버전인 3 model B+ 가 출시되었습니다.

이 친구들은 2~3년에 한번씩 나올꺼라 하더니만, 실제로 그러네요.


3 model B+ 가 처음 출시당시인 올해 3월에는 도저희 구할 수 없어서 참고 있다가,

이번달에 되어서야 구매했습니다.


정시가는 35 USD 이지만, 아직도 알리에서 구할 수 있는 가장 싼게 40.70 USD 였네요.


* In Stock 2018 New Original Raspberry Pi 3 Model B+ on-board 2.4G & 5G WIFI Cpu Plus 1.4GHz add PoE Raspberry Pi 3 Plus Pi3B+

https://www.aliexpress.com/item/In-Stock-2018-New-Original-Raspberry-Pi-3-Model-B-on-board-2-4G-5G-WIFI/32870342438.html






2. 도착


역시 가격이 좀 되는거라 1주일만에 도착했습니다.



음? RPi 는 명함사이즈 인데 박스가 꽤 크군요.



뽁뽁이 봉투를 제거하면 비닐 포장지가 나옵니다.



그 안에 박스가 이제야 나오는군요. 그렇지만 여전히 큽니다.



Hey~~~! 안녕.

Model B+ 문구가 저를 반겨 줍니다.



버전이 올라갈수록 포장은 점점 더 simple 해지고 있습니다.



아직 RPC 버전 (중국 생산 버전) 은 없는건가?

"Made in United Kingdom" 이라고 박스에는 프린팅 되어 있네요.



저 뒷면의 CMIIT ID 란 무엇일까 찾아 봤습니다.


* CMIIT Wireless Applications

https://fccid.io/CMIIT-ID-2018AJ2147


우리나라로 따지면 "전파 인증" 정도가 되는듯 합니다.






3. 본체


짜잔~!!!



여느 버전들과 비슷한 모양의 본체가 박스안에서 나왔습니다.



눈에 들어오는 가장 큰 차이점은 CPU 에 붙은 heat spreader 와, 산딸기가 세겨진 WiFi 뚜껑정도가 되겠네요.

"Made in the UK" 되겠습니다.



뒷면도 얼른 확인해 봤습니다. Elpida 의 1G RAM은 여전하네요. 언능 2G 시대가 왔으면... 하고 바래 봅니다.






4. B vs. B+


팔려나갈 Model B 와의 비교샷 입니다.



오른쪽 위에 PoE 점퍼가 추가되었으며, 전원부 근처에 칩이 하나 커졌습니다.

그리고 기판 위의 각 component 들에 대한 라벨링이 사라졌습니다.



밑면 model B 입니다.



메모리 주변 회로가 깔끔해졌습니다.



옆면은 비교할게 없어서 그냥 model B+ 사진입니다.



Network port 생산연도는 18년 16주차인듯 하네요.






5. 전원 ON !


그 사이에 Ubuntu-Mate 18 버전이 새로 나왔고, 새로 구입한 Raspberry Pi 3 model B+ 이니,

OS 를 새로 깔아야 마땅 하나 너무너무너무너무너무너무너무너무너무너무너무너무 귀찮습니다.


CPU (클럭 상승) / Network 정도만 바뀐거라, 기존 OS 도 무리없이 돌아갈 것이라 생각되었습니다.

기존 model B 에 꽂혀있던 microSD를 넣고 전원을 키니 문제없이 Ubuntu-Mate 16 이 잘 돌아갑니다.



Keyboard / HDMI / Wired netowrk 등을 연결했더니만,

화면 좌측 윗쪽에 번개표시가 자꾸 뜨면서, network 을 통한 다운로드 속도가 줄고, 진행이 더디어지는게 느껴집니다.



네... idle 시에는 전기를 적게 먹지만, 로드가 걸리면 전기를 더 많이 처 드시는군요.

위의 표에서 가장 오른쪽이 칼럼이 model B+ 입니다.


* Raspberry Pi

https://en.wikipedia.org/wiki/Raspberry_Pi



"Under-voltage detected! (0x00050005) 가 작렬하지만, 우선 다른 선택이 없으므로 기존 USB charger 를 그대로 사용합니다.


좀더 안정적으로 전원 공급이 되는 USB Power 이어야 본래의 성능이 나온다 하니,

나중에 좋은걸로 달아줘야겠습니다.






6. OS / firmware upate


가는날이 장날이라고, "apt-get update" 와 "apt-get upgrade" 를 통하여 package update 를 시켜줍니다.



흠흠... 문제 없이 잘 됩니다. (무슨 문제가 생기겠어...)



그 후에, "rpi-update" 를 통하여 Raspberry Pi firmware update 를 시켜줍니다.



모두 끝나고 리부팅해서 확인해 보면, 문제 없이 적용이 되었습니다.



Raspberry Pi 로서는 6번째 라즈베리파이 인지라 뭔가 그리 흥은 많이 안나는군요.



심심하니, dmesg 를 통하여 부팅 시퀀스도 확인해 봅니다.

CPU 는 ARMv7 의 revison 5 로 알고 있었는데, 아직 OS 에서 명확하게 구분해주지 못하나 봅니다.


참고로 CPU 제조는 Sony 라는 사실.


* RPi HardwareHistory

https://elinux.org/RPi_HardwareHistory


흠흠~~ 그렇구나~~.





FIN


이로써, 1 Model B, 1 Model B+, 2 Model B, 3 Model B 및 이번의 3 Model B+ 까지,

Model B 버전은 모두 사용해보게 되었습니다.


개인 WiKi page 를 운영하고 있어서, CPU 도 좋지만 RAM 좀 얼른 2G로 올려주면 안되겠니?


And

Hardware | MAX31865 + PT100 온도센서 조합

|

1. MAX31865


K-Type 온도 센서를 arduino 와 연결하여 측정하는 MAX31855 은 아래 포스팅에서 가지고 놀아 봤습니다.


* Hardware | MAX31855 + K-type 온도센서 조합

http://chocoball.tistory.com/entry/Hardware-MAX31855-Ktype


그 외의 온도센서에 대해서는 아래 포스트들을 참고해보세요.


* Hardware | AM2322 Temperature & Humidity Sensor

http://chocoball.tistory.com/entry/Hardware-AM2322-Temperature-Humidity-Sensor


* Hardware | Arduino 비접촉 온도센서 GY-906 MLX90614

http://chocoball.tistory.com/entry/HardwareArduinoMLX90614


* Hardware | Arduino BMP280 고도/온도/기압 센서

http://chocoball.tistory.com/entry/HardwareArduinoBMP280


* Hardware | BME280 sensor

http://chocoball.tistory.com/entry/HardwareBME280


* Hardware | DS18B20 온도센서

http://chocoball.tistory.com/entry/Hardware-DS18B20-temperature-sensor


여기서 주의할 점은, MAX31865은 MAX31855와 제일 마지막 앞번의 digit 차이 입니다.

주문시 주의해야 합니다.


* MAX31865 : PT100 / PT1000 용

* MAX31855 : K-type 용





2. MAX31865 구입


AliExpress 에서 검색하면 아래의 링크가 가장 많이 구입한걸로 나옵니다.

바로 주문 넣습니다.


* MAX31865 SPI PT100/PT1000 RTD-to-Digital Converter Board Temperature Thermocouple Sensor Amplifier Module For Arduino 3.3V/5V

https://ko.aliexpress.com/item/MAX31865-PT100-PT1000-RTD-to-Digital-Converter-Board-Temperature-Thermocouple-Sensor-Amplifier-BModule-For-Arduino/32777498066.html







3. 도착


다른 센서들보다는 조금 높은 가격입니다.

그러나 업자는 항상 1 USD 미만으로 보내주십니다. :-)



포장은 일반적인 간단한 포장입니다.



Adafruit 제품과 거의 동일하게 만들었습니다.



Chip 을 확대해 봤습니다.

Taiwan 에서 생산된 M31865 라고 인쇄되어 있습니다.



Pin array 와 terminal 을 납땜해 줍니다.

Rref 의 저항은 431 = 430 ohm 입니다.





4. Thermocouple K-Type 구매하기


MAX31865 를 구입하면서, 거의 동시에 온도 센서도 주문에 넣습니다.


* Thermocouple K-Type Thermocouple Thermometer Probe WRNT-03 200mm*1000mm

https://ko.aliexpress.com/item/Thermocouple-K-Type-Thermocouple-Thermometer-Probe-WRNT-03-200mm-1000mm/32615649856.html



분명히 K-Type 이라고 적혀 있습니다.



Probe 형이라 길이가 깁니다. 포장도 큼지막 합니다.



뽁뽁이로 잘 쌓여서 도착했습니다.



음? CU50?



이미 MAX31855 글에서도 CU50 에 대해서 적었습니다.


MAX31865 / MAX31855 의 개념이 없었고, K-Type / PT100 / PT1000 개념도 없이 처음 질렀던 온도계 센서 입니다.

더욱 헷갈리게 된 것은, K-Type 이라고 주문한게 CU50 이 도착해, 처음 한동안은 뭐가 문제인지 몰랐습니다.


그 뒤에 센서 및 coverter chip 종류가 다르다는걸 알았죠.


* CU50 / WRNT-03 spec.

K1118591875.pdf



뭘 모르면 알때까지 삽질해야 하는 것은 인생의 진리 입니다.





5. PT100 구입하기


MAX31865 는 PT100 / PT1000 용 analog to digital converter 입니다.

PT1000 은 예민하면서 실험실용으로 사용되고 있어서, PT100 을 선택합니다.


* MYLB-0-400C PT100 Type 5mm x 50mm Temperature Controller Thermocouple Probe 2 Meters

https://ko.aliexpress.com/item/MYLB-0-400C-PT100-Type-5mm-x-50mm-Temperature-Controller-Thermocouple-Probe-2-Meters/32746546570.html




점점 진실에 접근하는 느낌이 듭니다.



도착.




포장 문제 없슴.

선은 3 wire 센서 이군요.



흠흠.



색이 다른 터미널끼리는 거의 100 ohm 의 차이를 보입니다.

이는 PT100 의 일반적인 현상이며, 더운 여름에 측정하다 보니 저항값이 조금 높습니다.


이 저항값의 변화를 가지고 온도를 측정하는 것입니다.



동일 선끼리는 거의 0 ohm 입니다.





6. Pinout / Layout


Pinout 에 대해서는 아래 Adafruit 의 링크를 참조해 보세요.


* Adafruit MAX31865 RTD PT100 or PT1000 Amplifier

https://learn.adafruit.com/adafruit-max31865-rtd-pt100-amplifier/pinouts


 MAX31865  | Arduino Micro
---------------------------
    Vin    |      3.3V
    GND    |      GND
    CLK    |      D13
    SDO    |      D12
    SDI    |      D11
    CS     |      D10
---------------------------


Layout 입니다.






7. sketch


레퍼런스 소스를 이용해서 기본적인 동작 확인에 들어갑니다.

우선 Library Manager 에서 max31865 를 검색해서 install 해줍니다.



인스톨이 완료되면, "File > Examples > Adafruit MAX31865 library > max31865" 을 선택하여 소스를 로딩합니다.



아래는 sketch 입니다.


/*************************************************** 
  This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865

  Designed specifically to work with the Adafruit RTD Sensor
  ----> https://www.adafruit.com/products/3328

  This sensor uses SPI to communicate, 4 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include 

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 max = Adafruit_MAX31865(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 max = Adafruit_MAX31865(10);

// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF      430.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL  100.0

void setup() {
  Serial.begin(115200);
  Serial.println("Adafruit MAX31865 PT100 Sensor Test!");

  max.begin(MAX31865_3WIRE);  // set to 2WIRE or 4WIRE as necessary
}


void loop() {
  uint16_t rtd = max.readRTD();

  Serial.print("RTD value: "); Serial.println(rtd);
  float ratio = rtd;
  ratio /= 32768;
  Serial.print("Ratio = "); Serial.println(ratio,8);
  Serial.print("Resistance = "); Serial.println(RREF*ratio,8);
  Serial.print("Temperature = "); Serial.println(max.temperature(RNOMINAL, RREF));

  // Check and print any faults
  uint8_t fault = max.readFault();
  if (fault) {
    Serial.print("Fault 0x"); Serial.println(fault, HEX);
    if (fault & MAX31865_FAULT_HIGHTHRESH) {
      Serial.println("RTD High Threshold"); 
    }
    if (fault & MAX31865_FAULT_LOWTHRESH) {
      Serial.println("RTD Low Threshold"); 
    }
    if (fault & MAX31865_FAULT_REFINLOW) {
      Serial.println("REFIN- > 0.85 x Bias"); 
    }
    if (fault & MAX31865_FAULT_REFINHIGH) {
      Serial.println("REFIN- < 0.85 x Bias - FORCE- open"); 
    }
    if (fault & MAX31865_FAULT_RTDINLOW) {
      Serial.println("RTDIN- < 0.85 x Bias - FORCE- open"); 
    }
    if (fault & MAX31865_FAULT_OVUV) {
      Serial.println("Under/Over voltage"); 
    }
    max.clearFault();
  }
  Serial.println();
  delay(1000);
}


결과는 아래와 같습니다.



뭔가 많이 이상하군요... 뭐가 문제일까...





8. Jumper !!!


그렇습니다.

Adafruit 의 점퍼 설정을 대충 읽은 결과 입니다.



위의 글에 나와 있듯이, 미세하게 연결된 24 부분의 선을 잘라줘야 합니다.

시키는 대로 했으나 제대로 되지 않았습니다.


처음에는 CU50 으로 삽질하면서 2 wire 설정으로 납땜 했다가, 납 지워줬다가, 3 wire 설정으로 다시 납땜 했다가,

기판이 지저분해진 상태이고, 자주 인두로 지져서 기판 상태가 엉망으로 되면서 고장난게 분명하다는 결론에 도달했습니다.

(모두 합하면 10시간동안 삽질함)





9. 재구매


breakout 보드값이 비싸지만, 모든걸 다 해본 뒤라 새로운 converter 를 구입하기로 합니다.

이번에는 색이 다른것으로 구입합니다.


배송료 합하면 거의 6천원이군요... ㅠ.ㅠ


* 31865 MAX31865 RTD platinum resistance temperature detector module PT100 to PT1000

https://www.aliexpress.com/item/31865-MAX31865-RTD-platinum-resistance-temperature-detector-module-PT100-to-PT1000/32814557294.html



잘 도착했습니다. 얼른 시험해보고 싶습니다.



점퍼 사시의 간극이 커서 잘 납땜해야 합니다.



Rref 저항은 430 ohm 으로 동일하며, 2 4 사이에 미세하게 연결되어 있는것도 확인했습니다.

커터로 잘 그어서 절단해 줍니다.



두둥!

잘 연결하고 확인해 봅니다.



Aㅏ.....

그렇습니다. 여러 삽질을 하는 동안, 기존 breakout 기판이 고장난 것이었습니다.

그간 삽질하면서 학습한 내용을 토대로 잘 jumper 도 납땜하고, 자를껀 자르고 연결하니 한방에 성공합니다.



애증의 MAX31865 와 PT100 센서 입니다.



찬물 / 상온 물 / 뜨거운 물을 가지고 확인한 동영상 입니다.

calibration 이 필요해 보이지만, 그딴거는 나중에 기회되면 하겠습니다.

여기까지 오는것만 해도 힘들었습니다.



그래프화 시킨 그림입니다.

동작에 무리 없어 보입니다.





FIN


제가 가지고 있는 온도센서 및 converter breakout 보드는 다 확인해 봤네요.

CU50 만 빼고... 이놈은 어떻게 해야 할까요.


And

Hardware | ML8511 UV sensor 를 가지고 놀아보자

|

1. 여름


유독 2018년의 여름은 예년보다 더욱 덥습니다.

지구 온실효과로 내년 뉴스에도, "올해도 최고 온도를 갱신했습니다!" 라는 멘트를 들을 수 있을것 같습니다.


오존층 파괴등으로 인하여 피부에 직사광선을 쬐는 것은 이제 위험한 시대입니다.

자외선 - Ultraviolet 인거죠.



위 표는 UV 세기에 따라 어떤식으로 몸을 보호해야 하는지 나타내주는 표 입니다.

더이상 선글라스는 패션이 아니군요.





2. ML8511 센서 구매


UV 를 측정해주는 아나로그 센서로는 ML8511 이 있습니다.

AliExpress 를 검색하니 아래가 가장 많이 팔렸던 제품입니다.


* GY-8511 ML8511 UVB Breakout Test Module Ray Sensor UV Detector Analog Output Module

https://www.aliexpress.com/item/GY-8511-ML8511-UVB-Breakout-Test-Module-Ray-Sensor-UV-Detector-Analog-Output-Module/32451073500.html



기능은... 280-390nm 를 가장 잘 측정해 준다 합니다.


The ML8511 breakout is an easy to use ultraviolet light sensor.

The MP8511 UV (ultraviolet) Sensor works by outputing an analog signal in relation to the amount of UV light that's detected.

This breakout can be very handy in creating devices that warn the user of sunburn or detect the UV index as it relates to weather conditions.


This sensor detects 280-390nm light most effectively.

This is categorized as part of the UVB (burning rays) spectrum and most of the UVA (tanning rays) spectrum.

It outputs a analog voltage that is linearly related to the measured UV intensity (mW/cm2).

If your microcontroller can do an analog to digital signal conversion then you can detect the level of UV!


이 구간은 피부를 가장 잘 타게 만드는 구간이라고 하네요.







3. ML8511 도착


뭐 특별히 이상한 점 없이 잘 도착 하였습니다.



이렇게 생겼습니다.



다리를 납땜해줍니다.



숫자가 적힌 부분은 마무리가 되지 않은 부분이므로, 니퍼로 제거해 줍니다.



센서를 확대해 봤습니다.

금으로 된 점퍼가 모든 단자에 연결되어 있지 않은 것을 보니, 가지고 있는 성능을 완전히 구현해 놓은 것은 아닌것 같군요.





4. Layout / Pinout


Pinout 은 다음과 같습니다.


   ML8511  | Arduino Micro
---------------------------
    3V3    |    A1 / 3.3V
    GND    |      GND
    OUT    |      A0
    EN     |    A1 / 3.3V
---------------------------


SparkFun 의 다음 link 가 도움이 됩니다.


* ML8511 UV Sensor Hookup Guide

https://learn.sparkfun.com/tutorials/ml8511-uv-sensor-hookup-guide


다만, 중국제는 pin 수가 하나 더 많아서 헷갈릴 수 있습니다.

결국 같은 pinout 이지만, 동일한 GY8511 을 사용한 다음 blogpost 가 더 도움이 되었습니다.


* GYM8511ML UV Sensor Connection To Arduino Nano

http://twenty5nov.blogspot.com/2016/02/gym8511ml-uv-sensor-connection-to.html



Layout 은 다음과 같습니다.






5. sketch


위의 SparkFun 사이트의 소스를 사용해 봅니다.


 /* 
 ML8511 UV Sensor Read Example
 By: Nathan Seidle
 SparkFun Electronics
 Date: January 15th, 2014
 License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).

 The ML8511 UV Sensor outputs an analog signal in relation to the amount of UV light it detects.

 Connect the following ML8511 breakout board to Arduino:
 3.3V = 3.3V
 OUT = A0
 GND = GND
 EN = 3.3V
 3.3V = A1
 These last two connections are a little different. Connect the EN pin on the breakout to 3.3V on the breakout.
 This will enable the output. Also connect the 3.3V pin of the breakout to Arduino pin 1.

 This example uses a neat trick. Analog to digital conversions rely completely on VCC. We assume
 this is 5V but if the board is powered from USB this may be as high as 5.25V or as low as 4.75V:
 http://en.wikipedia.org/wiki/USB#Power Because of this unknown window it makes the ADC fairly inaccurate
 in most cases. To fix this, we use the very accurate onboard 3.3V reference (accurate within 1%). So by doing an
 ADC on the 3.3V pin (A1) and then comparing this against the reading from the sensor we can extrapolate
 a true-to-life reading no matter what VIN is (as long as it's above 3.4V).

 Test your sensor by shining daylight or a UV LED: https://www.sparkfun.com/products/8662

 This sensor detects 280-390nm light most effectively. This is categorized as part of the UVB (burning rays)
 spectrum and most of the UVA (tanning rays) spectrum.

 There's lots of good UV radiation reading out there:
 http://www.ccohs.ca/oshanswers/phys_agents/ultravioletradiation.html
 https://www.iuva.org/uv-faqs

*/

//Hardware pin definitions
int UVOUT = A0; //Output from the sensor
int REF_3V3 = A1; //3.3V power on the Arduino board

void setup() {
	Serial.begin(9600);
	
	pinMode(UVOUT, INPUT);
	pinMode(REF_3V3, INPUT);
	
	Serial.println("ML8511 example");
}

void loop() {
	int uvLevel = averageAnalogRead(UVOUT);
	int refLevel = averageAnalogRead(REF_3V3);
	
	//Use the 3.3V power pin as a reference to get a very accurate output value from sensor
	float outputVoltage = 3.3 / refLevel * uvLevel;
	
	float uvIntensity = mapfloat(outputVoltage, 0.99, 2.8, 0.0, 15.0); //Convert the voltage to a UV intensity level
	
	Serial.print("output: ");
	Serial.print(refLevel);
	
	Serial.print("\tML8511 output: ");
	Serial.print(uvLevel);
	
	Serial.print("\tML8511 voltage: ");
	Serial.print(outputVoltage);
	
	Serial.print("\tUV Intensity (mW/cm^2): ");
	Serial.print(uvIntensity);
	
	Serial.println();
	
	delay(100);
}

//Takes an average of readings on a given pin
//Returns the average
int averageAnalogRead(int pinToRead) {
	byte numberOfReadings = 8;
	unsigned int runningValue = 0;
	
	for(int x = 0 ; x < numberOfReadings ; x++)
		runningValue += analogRead(pinToRead);
	runningValue /= numberOfReadings;
	
	return(runningValue);
}

//The Arduino Map function but for floats
//From: http://forum.arduino.cc/index.php?topic=3922.0
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
	return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}


Serial out 으로 보면 reLevel / uvLevel / outputVoltage / uvIntensity 를 아래와 같이 확인할 수 있습니다.



뭔가 와닿지 않죠?





6. OLED 로 UV Index 표시하기


Youtube 를 보니 UV Index 를 LCD 에 표현해 주는 분이 계셨습니다.


* Arduino UV Meter using the UV31A Ultraviolet Sensor

http://www.electronics-lab.com/project/arduino-uv-meter-using-uv30a-ultraviolet-sensor/



센서와 LCD 스크린도 다르지만 컨셉은 이해할 수 있었습니다.



따라하지 아니할 수가 없네요.

저는 SSD1306 과 ML8511 을 사용해서 소스를 converting 해 봅니다.


우선 처음 부팅시 보여주는 logo 를 만드는 작업을 하였습니다.

너무 길어지니 따로 포스팅 하였습니다.


* Hardware | SSD1306 에 로고를 세겨보자

http://chocoball.tistory.com/entry/Hardware-SSD1306-create-logo


표시해주는 UV Index 는 UV31A 센서가 기준이라, 가지고 있는 ML8511 로 하면 전혀 다른 숫자들이 나옵니다.


찾고 찾아보니, 중국에서 ML8511 을 가지고 UV Index 를 테이블화 하여 작성된 논문이 있었습니다.


* See UV on Your Skin: An Ultraviolet Sensing and Visualization System

BodyNets_2013_UV.pdf


논문 안에 기재된, 아래 테이블을 가지고 적용하면 되겠네요!



Vcc = 3.0V 이고, ML8511 은 3.3V 이지만, 소스에서 보정을 해주므로 그리 큰 문제는 되지 않을것 같습니다.


다음이 완성된 최종 sketch 입니다.

LOGO를 새기는 부분과 "else if" 를 이용한 UV Indexing 부분으로 나뉘어 있습니다.

나머지는 SparkFun 의 소스도 사용했구요. 한마디로 짜집기 버전입니다.


#include "SPI.h"
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
  
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

static const unsigned char PROGMEM UVMeter[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x18, 0x03, 0x18, 0x01, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x1C, 0x03, 0x18, 0x03, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x1C, 0x03, 0x1C, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x07, 0xC0, 0x07, 0x00, 0x00, 0x1C, 0x03, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0x0F, 0xC0, 0x0E, 0x00, 0x00, 0x1C, 0x03, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE0, 0x0F, 0xE0, 0x3E, 0x00, 0x00, 0x1C, 0x03, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF0, 0x0F, 0xF0, 0x7E, 0x00, 0x00, 0x1C, 0x03, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0x0F, 0xF8, 0xFE, 0x00, 0x00, 0x1C, 0x03, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xDF, 0xFD, 0xFE, 0x00, 0x00, 0x1C, 0x03, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x1C, 0x03, 0x03, 0x0C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x1C, 0x03, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x03, 0x03, 0x98, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x00, 0x1C, 0x07, 0x01, 0x98, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7F, 0x03, 0xE0, 0x7F, 0x00, 0x00, 0x0C, 0x06, 0x01, 0xB0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0x3F, 0xFE, 0x1F, 0x3F, 0xF0, 0x0E, 0x0E, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00,
0x06, 0x0F, 0xF8, 0xFF, 0xFF, 0x8F, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
0x07, 0xFF, 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00,
0x03, 0xFF, 0xE7, 0xFF, 0xFF, 0xF3, 0xFF, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00,
0x03, 0xFF, 0xCF, 0xFF, 0xFF, 0xF9, 0xFF, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x20, 0x00, 0x00,
0x01, 0xFF, 0x9F, 0xFF, 0x7F, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x20, 0x00, 0x00,
0x00, 0xFF, 0x9F, 0xF0, 0x07, 0xFC, 0xFE, 0x00, 0x00, 0x00, 0x58, 0x28, 0x38, 0x78, 0x38, 0x48,
0x00, 0x7F, 0x3F, 0xC0, 0x01, 0xFE, 0x7E, 0x00, 0x00, 0x00, 0x58, 0x68, 0x6E, 0x78, 0xCC, 0x7C,
0x00, 0x3E, 0x7F, 0x80, 0x00, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x48, 0x48, 0xC6, 0x20, 0x84, 0x60,
0x00, 0x1E, 0x7F, 0x00, 0x00, 0x7F, 0x3C, 0x00, 0x00, 0x00, 0x4C, 0xC8, 0xC2, 0x21, 0x86, 0x40,
0x00, 0x1E, 0x7E, 0x00, 0x00, 0x3F, 0x3C, 0x00, 0x00, 0x00, 0x4C, 0x88, 0xFE, 0x21, 0xFE, 0x40,
0x00, 0x3C, 0xFE, 0x00, 0x00, 0x3F, 0x9F, 0x00, 0x00, 0x00, 0x46, 0x88, 0x80, 0x21, 0x80, 0x40,
0x00, 0x7C, 0xFC, 0x00, 0x00, 0x1F, 0x9F, 0xF0, 0x00, 0x00, 0x47, 0x88, 0xC0, 0x21, 0x80, 0x40,
0x00, 0xFC, 0xFC, 0x00, 0x00, 0x1F, 0x9F, 0xFC, 0x00, 0x00, 0x43, 0x08, 0x42, 0x30, 0xC0, 0x40,
0x03, 0xFC, 0xFC, 0x00, 0x00, 0x1F, 0x9F, 0xFE, 0x00, 0x00, 0x43, 0x08, 0x7E, 0x1C, 0x7C, 0x40,
0x07, 0xFC, 0xFC, 0x00, 0x00, 0x1F, 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

String UV = "0"; 

//Hardware pin definitions
int UVOUT = A0; //Output from the sensor
int REF_3V3 = A1; //3.3V power on the Arduino board

void setup() {
	pinMode(UVOUT, INPUT);
	pinMode(REF_3V3, INPUT);
	
	display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
	display.clearDisplay();
	display.drawBitmap(0, 0, UVMeter, 128, 32, WHITE);
	display.display();
	
	delay(3000);
}

 
void loop() {
	int stringLength = 0;
	UV = readSensor();
	
	display.clearDisplay();
	display.drawRect(0, 0, display.width(), display.height(), WHITE);
	display.drawFastHLine(0, 10, 128, WHITE);
	
	display.setTextSize(1);
	display.setTextColor(WHITE);
	display.setCursor(40, 2);
	display.print("UV INDEX");
	
	stringLength = UV.length();
	printUV(stringLength);
	display.display();
	
	delay(150);
}

void printUV(int length) {
	switch(length) {
		case 1:
			display.setTextSize(3);
			display.setTextColor(WHITE);
			display.setCursor(60, 10);
			display.print(UV); break;
		case 2:
			display.setTextSize(3);
			display.setTextColor(WHITE);
			display.setCursor(55, 10);
			display.print(UV); break;
		default: display.print(UV); break;
	}
}

String readSensor() {
	String UVIndex = "0";
	
	int uvLevel = averageAnalogRead(UVOUT);
	int refLevel = averageAnalogRead(REF_3V3);
	
	//Use the 3.3V power pin as a reference to get a very accurate output value from sensor
	float voltage = 3.3 / refLevel * uvLevel;
		
	if(voltage<=0.993) {
		UVIndex = "0";
	} else if (voltage>0.993 && voltage<=1.073) {
		UVIndex = "1";
	} else if (voltage>1.073 && voltage<=1.153) {
		UVIndex = "2";
	} else if (voltage>1.153 && voltage<=1.233) {
		UVIndex = "3";
	} else if (voltage>1.233 && voltage<=1.313) {
		UVIndex = "4";
	} else if (voltage>1.313 && voltage<=1.393) {
		UVIndex = "5";
	} else if (voltage>1.393 && voltage<=1.473) {
		UVIndex = "6";
	} else if (voltage>1.473 && voltage<=1.553) {
		UVIndex = "7";
	} else if (voltage>1.553 && voltage<=1.633) {
		UVIndex = "8";
	} else if (voltage>1.633 && voltage<=1.713) {
		UVIndex = "9";
	} else if (voltage>1.713 && voltage<=1.793) {
		UVIndex = "10";
	} else if (voltage>1.793 && voltage<=1.873) {
		UVIndex = "11";
	} else if (voltage>1.873 && voltage<=1.953) {
		UVIndex = "12";
	} else if (voltage>1.953 && voltage<=2.033) {
		UVIndex = "13";
	} else if (voltage>2.033 && voltage<=2.113) {
		UVIndex = "14";
	} else if (voltage>2.113 && voltage<=2.193) {
		UVIndex = "15";
	} else if (voltage>2.193 && voltage<=2.273) {
		UVIndex = "16";
	} else if (voltage>2.273 && voltage<=2.353) {
		UVIndex = "17";
	} else if (voltage>2.353 && voltage<=2.433) {
		UVIndex = "18";
	} else if (voltage>2.433 && voltage<=2.513) {
		UVIndex = "19";
	} else if (voltage>2.513 && voltage<=2.593) {
		UVIndex = "20";
	} else if (voltage>2.593) {
		UVIndex = "21";
	}
	
	return UVIndex;
}

//Takes an average of readings on a given pin
//Returns the average
int averageAnalogRead(int pinToRead) {
	byte numberOfReadings = 8;
    unsigned int runningValue = 0;
     
    for(int x = 0 ; x < numberOfReadings ; x++)
        runningValue += analogRead(pinToRead);
    runningValue /= numberOfReadings;
     
    return(runningValue);
}






7. 밖에 나가서 확인해 보자


저녁 6시가 되니, 해가 뉘엿뉘엿 지고 있습니다.

해떨어지기 전에 얼른 나가서 확인해 봅니다.



실내에서는 당연히 UV Index = 0 입니다.



저무는 해를 향해 조준합니다.



오옷!

3 ~ 4 정로를 보여주네요.



동영상 갑니다.


지역은 다르지만 New York 의 월별/시간대별 UV Index 그래프 입니다.

오후 4시만 되어도 3 이하로 떨어지는군요.


현재 한국은 한여름이고, 오후 6시라도 햇볕의 기운이 아직 남아 있으므로, "3 ~ 4" 는 적절하게 인식한것 같습니다.



집에 resin 을 굳히는 UV lamp 가 있다는걸 뒤늦게 생각해 내어,

UV lamp 로도 확인해 봅니다.



해지는 햇살과 비슷하게 3 ~ 4 정도를 나타내네요.





FIN


UV sensor 인 ML8511 을 가지고 알차게 실험해 봤네요.

이참에 OLED 에 로고 새기는 방법도 터득했구요.


해가 거듭될수록 자외선의 위험성이 강조되는 요즈음,

향후를 위해서라도 한번쯤은 확인해 보고 싶었던 센서 였습니다.


다른 분들도 참고가 되었으면 좋겠습니다.


And

Hardware | MAX31855 + K-type 온도센서 조합

|

1. 또 온도센서야?


지금까지 시험해본 온도센서들 입니다. 5개나 있네요.


* Hardware | AM2322 Temperature & Humidity Sensor

http://chocoball.tistory.com/entry/Hardware-AM2322-Temperature-Humidity-Sensor


* Hardware | Arduino 비접촉 온도센서 GY-906 MLX90614

http://chocoball.tistory.com/entry/HardwareArduinoMLX90614


* Hardware | Arduino BMP280 고도/온도/기압 센서

http://chocoball.tistory.com/entry/HardwareArduinoBMP280


* Hardware | BME280 sensor

http://chocoball.tistory.com/entry/HardwareBME280


* Hardware | DS18B20 온도센서

http://chocoball.tistory.com/entry/Hardware-DS18B20-temperature-sensor



* Hardware | AM2322 Temperature & Humidity Sensor

http://chocoball.tistory.com/entry/Hardware-AM2322-Temperature-Humidity-Sensor


* Hardware | Arduino 비접촉 온도센서 GY-906 MLX90614

http://chocoball.tistory.com/entry/HardwareArduinoMLX90614


* Hardware | Arduino BMP280 고도/온도/기압 센서

- http://chocoball.tistory.com/entry/HardwareArduinoBMP280


* Hardware | BME280 sensor

- http://chocoball.tistory.com/entry/HardwareBME280



출처: http://chocoball.tistory.com/entry/Hardware-DS18B20-temperature-sensor [초코볼의 inside Tech]


* Hardware | AM2322 Temperature & Humidity Sensor

http://chocoball.tistory.com/entry/Hardware-AM2322-Temperature-Humidity-Sensor


* Hardware | Arduino 비접촉 온도센서 GY-906 MLX90614

http://chocoball.tistory.com/entry/HardwareArduinoMLX90614


* Hardware | Arduino BMP280 고도/온도/기압 센서

- http://chocoball.tistory.com/entry/HardwareArduinoBMP280


* Hardware | BME280 sensor

- http://chocoball.tistory.com/entry/HardwareBME280



출처: http://chocoball.tistory.com/entry/Hardware-DS18B20-temperature-sensor [초코볼의 inside Tech]

* Hardware | AM2322 Temperature & Humidity Sensor

http://chocoball.tistory.com/entry/Hardware-AM2322-Temperature-Humidity-Sensor


* Hardware | Arduino 비접촉 온도센서 GY-906 MLX90614

http://chocoball.tistory.com/entry/HardwareArduinoMLX90614


* Hardware | Arduino BMP280 고도/온도/기압 센서

- http://chocoball.tistory.com/entry/HardwareArduinoBMP280


* Hardware | BME280 sensor

- http://chocoball.tistory.com/entry/HardwareBME280



출처: http://chocoball.tistory.com/entry/Hardware-DS18B20-temperature-sensor [초코볼의 inside Tech]


* Hardware | AM2322 Temperature & Humidity Sensor

http://chocoball.tistory.com/entry/Hardware-AM2322-Temperature-Humidity-Sensor


* Hardware | Arduino 비접촉 온도센서 GY-906 MLX90614

http://chocoball.tistory.com/entry/HardwareArduinoMLX90614


* Hardware | Arduino BMP280 고도/온도/기압 센서

- http://chocoball.tistory.com/entry/HardwareArduinoBMP280


* Hardware | BME280 sensor

- http://chocoball.tistory.com/entry/HardwareBME280



출처: http://chocoball.tistory.com/entry/Hardware-DS18B20-temperature-sensor [초코볼의 inside Tech]

네 그렇습니다.

온도 센서에는 기존에 확인했던 위의 센서들 말고, 준비하고 있는게 아래 3가지가 있습니다.


- K-type

- PT100 / PT100

- Cu50


이 포스트에서는 K-Type 에 대해 알아보려 합니다.





2. K-type


이번에는 K-type 온도센서 이므로, 해당의 제품을 구매합니다.


* Thermocouple K-Type Thermocouple Thermometer Probe WRNT-03 200mm*1000mm

https://www.aliexpress.com/item/Thermocouple-K-Type-Thermocouple-Thermometer-Probe-WRNT-03-200mm-1000mm/32615649856.html



일반적으로 Thermocouple K-type 은 선이 두가닥인데, 도착한 놈은 세가닥 입니다.

거기에 더해서 "Cu50" 이라는 라벨도 붙어 있습니다...


분명 난, K-Type 을 보고 주문한건데 말입니다.

사양서도 확인해 보면 WRNT-03 이라서 Probe type 의 thermocouple 이라고 생각했습니다만, 도착한건 그냥 Cu50 인듯 합니다..



세가닥 단자들 사이는 55 Ohm / 0 Ohm 의 차이를 보입니다.

100 Ohm 정도면 PT100 인데, 55 Ohm 이면 좀 애매하네요.



확실히 잘 사용되지 않는 Cu50 이 맞는 듯 합니다.

이놈은 이놈 나름대로 사용될 수 있는 방법을 찾아봐야겠습니다.



음?

테스터기로 측정하고 있을 때 눈에 들어오는 테스터용 온도 probe !!!



위 사진의 오른쪽 다발로 보이는 것이 테스터용 온도 센서 입니다.



혹시나? 하고 메뉴얼을 찾아 보니 "K-type" 이라고 적혀 있네요!



우연히 K-Type 온도센서를 구할 수 있게 되었습니다.

역시 K-Type 은 단자가 2개인게 확실합니다.





3. MAX31855


보통 온도 센서들은 아날로그 값으로 표현하므로, digital 로 변환해주는 converter 가 필요합니다.

K-Type 온도센서용으로는 MAX31855 라고 하는군요.


Arduino 용 K-Type 모듈인 MAX31855 를 구입합니다.


* MAX31855 MAX6675 SPI Type K Thermocouple Temperature Sensor Board Module For Arduino

https://ko.aliexpress.com/item/MAX31855-K-Type-Thermocouple-Breakout-Board-Temperature-200C-to-1350-Celsius-for-Arduino/32746337946.html



아래는 도착 사진 입니다.



친절하게 알아서 사용하라는 중국 생산자의 배려 입니다.



기록을 위해 뒷면도 찰칵.






4. sketch


Arduino IDE 에서 Library Manger 를 열고 max 라는 키워드로 검색하면, MAX31855 가 나옵니다.

인스톨 하세요.



패키지 인스톨 후, "File > Examples > Adafruit MAX31855 library > serialthermocouple" 을 선택합니다.



Sketch 는 다음과 같아요.


/*************************************************** 
  This is an example for the Adafruit Thermocouple Sensor w/MAX31855K

  Designed specifically to work with the Adafruit Thermocouple Sensor
  ----> https://www.adafruit.com/products/269

  These displays use SPI to communicate, 3 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include "SPI.h"
#include "Adafruit_MAX31855.h"

// Default connection is using software SPI, but comment and uncomment one of
// the two examples below to switch between software SPI and hardware SPI:

// Example creating a thermocouple instance with software SPI on any three
// digital IO pins.
#define MAXDO   3
#define MAXCS   4
#define MAXCLK  5

// initialize the Thermocouple
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);

// Example creating a thermocouple instance with hardware SPI
// on a given CS pin.
//#define MAXCS   10
//Adafruit_MAX31855 thermocouple(MAXCS);

void setup() {
  while (!Serial); // wait for Serial on Leonardo/Zero, etc
  
  Serial.begin(9600);
  
  Serial.println("MAX31855 test");
  // wait for MAX chip to stabilize
  delay(500);
}

void loop() {
  // basic readout test, just print the current temp
   Serial.print("Internal Temp = ");
   Serial.println(thermocouple.readInternal());

   double c = thermocouple.readCelsius();
   if (isnan(c)) {
     Serial.println("Something wrong with thermocouple!");
   } else {
     Serial.print("C = "); 
     Serial.println(c);
   }
   //Serial.print("F = ");
   //Serial.println(thermocouple.readFarenheit());
 
   delay(1000);
}



음? 정상적으로 동작하지 않는군요.

혹시 몰라 MAX31855 의 전 버전인 MAX6675 라이브러리를 설치하고 sketch 를 실행시켜 봅니다.



음... 안되는군요.

뭐가 문제일까요?





5. 중국 공장의 나쁜 버릇


폭풍 검색을 해도 문제를 해결한 케이스를 볼 수 없다가,

우연히 Youtube 의 댓글에서 힌트를 찾았습니다.


MAX6675 와 MAX31855 breakout 보드의 차이점은 1번과 2번 pin 이 연결되어 있느냐 없느냐의 차이라고 합니다.



제가 구입한 MAX31855 breakout 보드의 1번과 2번을 보니 붙어 있네요.



위는 MAX6675 의 breakout board 의 layout 입니다.

1번과 2번이 연결되어 있네요.



MAX31855 의 breakout board 의 1번 / 2번 pin 은 서로 붙어있지 않습니다.



Adafruit 의 정식 판매용 MAX31855 breakout board 도 1번 / 2번 pin 도 떨어져 있습니다.



위의 사진은 중국 AliExpress 제품의 소개 사진입니다.

Chip 은 MAX31855 지만, breakout board 는 전압 regulator 도 없는 MAX6675 용 breakout board 와 비슷합니다.


즉, 중국 업자들은 기존 MAX6675 breakout board 에,

스펙이 비슷한 MAX31855 chip 을 얹은게 아닌가 하는게 internet 친구들의 예상입니다.


MAX31855 는 minus 온도까지 측정할 수 있는 등 upgrade 되었으나,

MAX6675 breakout board 를 사용하면서 기능 확장도 안되고, pinout spec. 에 맞지 않게 된거죠.


쉽게 말하면,

upgrade 제품이니까 맞겠지 하고 MAX6675 breakout board 에 MAX31855 를 얹으면서 정상작동하지 않는 것이였습니다.

(이거 팔아도 되는거야? 구매한 다른사람들은 어떻게 사용한거지?)



결국 위의 사진처럼 1번/2번 pin 사이의 연결을 완전히 긁어 내어 단락시키니 정상 작동하였습니다.

아놔....





6. K-Type +/- 단자 사이에 capacitor


해결점을 찾아서 정상 작동까지는 왔으나,

값이 널을 뛰어 안정적으로 측정하지 못했습니다.



위에서 보듯이 많은 사람들이 단자에 capacitor 를 사용했더랬습니다.


* Hardware | AliExpress 에서 Ceramic Condenser 를 구입해 보자

http://chocoball.tistory.com/entry/Hardware-AliExpress-Ceramic-Condenser-buying


뭘 하려면 여러가지가 구비되어야 하는군요.

다행이 ceramic capacitor (condenser) 가 있었습니다.



사용된 것은 10nF = 0.01uF 입니다.



Capacitor 를 연결하고서야 안정적으로 값을 확인할 수 있었습니다.





7. Pinout / Layout


Pinout 은 다음과 같습니다.


 MAX31855  | Arduino Micro
---------------------------
    Vin    |      5V
    GND    |      GND
    DO     |      D3
    CS     |      D4
    CLK    |      D5
---------------------------



구성도는 다음과 같습니다.



실제 사진입니다.






8. 결과


이제서야 제대로 측정이 되었습니다.

chip 자체적으로 Internal Temp 를 측정 가능한게 신시합니다.



여름 저녁이라 거실 실내 온도가 31도군요.

올해는 더워도 너무 덥습니다. 1994년도 5월에 입대하고 기초훈련 받던 때가 생각나네요.

그때도 이만큼 더웠던것 같습니다. 유격훈련 한번 하고 나면 동기들이 탈진해서 쓰러지곤 했더랬습니다.


우리 기수, 다른 중대 훈련병 중에 행군중 탈진으로 죽은 전우가 있어,

저의 다음 기수부터는 행군을 생략했다는 이야기를 들었습니다.

저의 행군 중에도, 옆에서 쓰러진 동기는 흰자위를 보이며 땅바닥에서 경련을 일으킬 정도로 극한의 날씨였습니다.



위는 K-type thermocouple 에 라이터 불로 온도를 높혔을 때를 동영상으로 찍어 봤습니다.



EXCEL 의 그래프 작업으로 internal / sensor 의 온도변화를 그래프로 표현해 봤습니다.

흠흠, 잘 변화를 감지했군요.





FIN


제대로 함정을 밟았지만, 잘 헤쳐나온것 같습니다.

Breakout board 는 되도록 reference (Adafruit / Sparkfun) 과 잘 비교해 본 다음, 문제가 없어보이면 구입하는게 좋을것 같습니다.


And

Hardware | 압력 센서를 가지고 놀아보자

|

1. FSR


FSR 은 Force Sensitive Resistor 의 약자입니다.

당장에야 어디에 붙여서 사용할 필요는 없지만, 미리 경험해 본다 샘 치고 구입해 봅니다.

한개만 해도 되는데, 실제 무게 대비 어떤식으로 반응하는지 궁금하여,
각각 스케일이 다른 센서가 한 set 인 제품을 구매합니다.

선호되는 제품이 아닌지라 약 1만원 정도로 비싼 축에 속합니다.


* WALFRONT 5pcs/Lot Thin Film Pressure Sensor DF9-40 High Precise Force Sensing Resistor Resistance-type Flexible Pressure Sensor

https://www.aliexpress.com/item/WALFRONT-5pcs-Lot-Thin-Film-Pressure-Sensor-DF9-40-High-Precise-Force-Sensing-Resistor-Resistance-type/32847434125.html




특징은 다음과 같다고 합니다.


Features:


This flexible pressure sensor is based on new nanometer pressure-sensitive materials supplemented by ultra-thin film substrate.

Highly sensitive flexible nanometer materials can realize highly sensitive detection of pressure.

It has pressure sensitive function as well as water-resistant function.

When sensor detects outside pressure, the resistance of sensor will change.

Pressure signal can be converted into a corresponding electrical signal output using simple circuit.

Specifications:


Measuring Range: 0-500g, 0-2kg, 0-5kg, 0-10kg, 0-20kg

Thickness: <0.25mm

Precision: ±2.5%(85% measuring range)

Repeatability: <±5.8(50% load)

Lifespan: >1million times

Initial Resistance: >10MΩ(no load)

Response Time: <1ms

Restore Time: <15ms

Test Voltage: DC 3.3V (typical)

EMI: Not generate

EDS: Not sensitive


Sensing Area Outer Diameter: 9mm

Sensing Area Inner Diameter: 7.5mm

Pin Spacing: 2.54mm


Range 는 500g / 2kg / 5kg / 10kg / 20kg 각각 다른 5개의 FSR 이 한 set 입니다.




2. 도착


얇은 막 같은 형태인지라 납짝한 포장지로 왔습니다.



봉지에 각 FSR 의 range 값이 적혀 있을 뿐, 센서 자체에는 없어서 어디서 꺼냈는지 잘 외워 둬야 합니다.



어떤것은 앞뒤가 검은색, 흰색으로 되어 있고...



또 어떤것은 회로선으로 구성되어 있고, 제각각입니다.





3. LED 연동


일단 간단하게 LED 를 연결하여 누르는 힘의 세기에 따라 밝기 조절이 되는 회로를 구성해 봅니다.

아래 website 를 참고하였습니다.


* Using an FSR

https://learn.adafruit.com/force-sensitive-resistor-fsr/using-an-fsr


회로 구성은 다음과 같습니다.


주의할 점은, 저항이 꼭 필요하다는 것.

FSR 출력값은 저항과 같이 연결된 부분에서 A0 에 연결하면 됩니다.



이쁘게 연결 되었습니다.



저항은 꼭 연결되어야 합니다.

/* FSR testing sketch.

Connect one end of FSR to 5V, the other end to Analog 0.
Then connect one end of a 10K resistor from Analog 0 to ground
Connect LED from pin 11 through a resistor to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrAnalogPin = 0;  // FSR is connected to analog 0
int LEDpin = 11;  // connect Red LED to pin 11 (PWM pin)
int fsrReading;  // the analog reading from the FSR resistor divider
int LEDbrightness;
 
void setup(void) {
	Serial.begin(9600); // We'll send debugging information via the Serial monitor
	pinMode(LEDpin, OUTPUT);
}
 
void loop(void) {
	fsrReading = analogRead(fsrAnalogPin);
	Serial.print("Analog reading = ");
	Serial.println(fsrReading);
	
	// we'll need to change the range from the analog reading (0-1023) down to the range
	// used by analogWrite (0-255) with map!
	LEDbrightness = map(fsrReading, 0, 1023, 0, 255);
	// LED gets brighter the harder you press
	analogWrite(LEDpin, LEDbrightness);
	
	delay(100);
}


sketch 는 위와 같습니다.

열결된 FSR 을 통해 analog 값을 읽어들이고, LED 밝기 범위 안으로 mapping 시키는 방법 입니다.



어때요, 잘 동작하쥬?




4. FSR 에 걸리는 voltage / resistance 도출


아래 sketch는 실제 값을 측정해 보는 소스 입니다.

사용된 법칙은 아래 두가지 입니다.


The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V

FSR = ((Vcc - V) * R) / V

/* FSR testing sketch. 
 
Connect one end of FSR to power, the other end to Analog 0.
Then connect one end of a 10K resistor from Analog 0 to ground 
 
For more information see www.ladyada.net/learn/sensors/fsr.html */
 
int fsrPin = 0;     // the FSR and 10K pulldown are connected to a0
int fsrReading;     // the analog reading from the FSR resistor divider
int fsrVoltage;     // the analog reading converted to voltage
unsigned long fsrResistance;  // The voltage converted to resistance, can be very big so make "long"
unsigned long fsrConductance; 
long fsrForce;       // Finally, the resistance converted to force
 
void setup(void) {
//  Serial.begin(9600);   // We'll send debugging information via the Serial monitor
  Serial.begin(19200);   // We'll send debugging information via the Serial monitor
}
 
void loop(void) {
  fsrReading = analogRead(fsrPin);  
  Serial.print("Analog reading = ");
  Serial.println(fsrReading);
 
  // analog voltage reading ranges from about 0 to 1023 which maps to 0V to 5V (= 5000mV)
  fsrVoltage = map(fsrReading, 0, 1023, 0, 5000);
  Serial.print("Voltage reading in mV = ");
  Serial.println(fsrVoltage);  
 
  if (fsrVoltage == 0) {
    Serial.println("No pressure");  
  } else {
    // The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V
    // so FSR = ((Vcc - V) * R) / V        yay math!
    fsrResistance = 5000 - fsrVoltage;     // fsrVoltage is in millivolts so 5V = 5000mV
    fsrResistance *= 10000;                // 10K resistor
    fsrResistance /= fsrVoltage;
    Serial.print("FSR resistance in ohms = ");
    Serial.println(fsrResistance);
 
    fsrConductance = 1000000;           // we measure in micromhos so 
    fsrConductance /= fsrResistance;
    Serial.print("Conductance in microMhos: ");
    Serial.println(fsrConductance);
 
    // Use the two FSR guide graphs to approximate the force
    if (fsrConductance <= 1000) {
      fsrForce = fsrConductance / 80;
      Serial.print("Force in Newtons: ");
      Serial.println(fsrForce);      
    } else {
      fsrForce = fsrConductance - 1000;
      fsrForce /= 30;
      Serial.print("Force in Newtons: ");
      Serial.println(fsrForce);            
    }
  }
  Serial.println("--------------------");
  delay(600);
}


회로는 LED만 빼면 같고 소스만 다릅니다.

그 결과는 다음과 같습니다.



각 소자마다 아마 값이 달라지겠지만,

누르는 힘에 따라 저항값이 바뀌며, 세게 누르면 저항값이 낮아져 전류가 많이 흐르는 것을 보여주고 있습니다.





5. 각 소자별 반응 차이 측정


그럼 위의 소스를 살짝 수정하여,

각 소자의 특성을 확인해 보기로 합니다.


이 값이 있어야, 특정 목적에 사용시 적절한 소자를 선택할 수 있겠죠?



그냥 각 소자를 추가하고, 저항을 각각 연결하여 값을 입력받는 방식입니다.


사진은 찍지 못했지만, 저기 소자들을 한대 모아서 같은 손가락으로 누르면서 측정하였습니다.

사진 찍을 여유가 없네요.


소스는 다음과 같습니다.

바로 위의 소스를 조금 수정했고, 소자에 흐르는 voltage 와 resistance 값만을 한줄에 출력하도록 했습니다.


/* FSR testing sketch. 

Connect one end of FSR to power, the other end to Analog 0.
Then connect one end of a 10K resistor from Analog 0 to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */
 
int fsrVoltage_00;  // the analog reading converted to voltage
int fsrVoltage_01;
int fsrVoltage_02;
int fsrVoltage_03;
unsigned long fsrResistance_00;  // The voltage converted to resistance, can be very big so make "long"
unsigned long fsrResistance_01;
unsigned long fsrResistance_02;
unsigned long fsrResistance_03;

void setup(void) {
	Serial.begin(19200);  // We'll send debugging information via the Serial monitor
	
	pinMode(A0,INPUT);
	pinMode(A1,INPUT);
	pinMode(A2,INPUT);
	pinMode(A3,INPUT);
	
	Serial.println("500g        2Kg       5Kg      10Kg");
	Serial.println("------------------------------------------");
}
 
void loop(void) {
	// analog voltage reading ranges from about 0 to 1023 which maps to 0V to 5V (= 5000mV)
	fsrVoltage_00 = map(analogRead(A0), 0, 1023, 0, 5000);
	Serial.print(fsrVoltage_00);
	Serial.print("   ");
	
	fsrVoltage_01 = map(analogRead(A1), 0, 1023, 0, 5000);
	Serial.print(fsrVoltage_01);
	Serial.print("   ");
	
	fsrVoltage_02 = map(analogRead(A2), 0, 1023, 0, 5000);
	Serial.print(fsrVoltage_02);
	Serial.print("   ");
	
	fsrVoltage_03 = map(analogRead(A3), 0, 1023, 0, 5000);
	Serial.print(fsrVoltage_03);
	Serial.print("   ");
	
	
	// The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V
	// so FSR = ((Vcc - V) * R) / V        yay math!
	fsrResistance_00 = ((5000 - fsrVoltage_00)*10000)/fsrVoltage_00;  // fsrVoltage is in millivolts so 5V = 5000mV
	Serial.print(fsrResistance_00);
	Serial.print("   ");
	
	fsrResistance_01 = ((5000 - fsrVoltage_01)*10000)/fsrVoltage_01;
	Serial.print(fsrResistance_01);
	Serial.print("   ");
	
	fsrResistance_02 = ((5000 - fsrVoltage_02)*10000)/fsrVoltage_02;
	Serial.print(fsrResistance_02);
	Serial.print("   ");
	
	fsrResistance_03 = ((5000 - fsrVoltage_03)*10000)/fsrVoltage_03;
	Serial.print(fsrResistance_03);
	Serial.println();
	
	delay(600);
}


Serial Monitor 에 나타나는 모양은 다음과 같습니다.



각 값을 보면 정말 linear 하게 값이 움직이는지 알 수 없으나,

그래프화 시켜보면 다음과 같습니다.


각 센서마다 반응하는 range 가 다른 것을 알 수 있습니다.



한가지 문제는 5kg 센서가 너무 반응을 잘 한다는 거죠.

제가 봉투에서 꺼내면서 다른 센서와 바꿔버렸는지, 아니면 처음부터 잘못 들어가 있는지... 확신이 없습니다.


이걸 토대로, 실제 사용시는 기준 실측값을 가지고 사용해야겠습니다.




FIN


슬슬 뭔가 실생활에 도움되는 것을 만들어야 하는데,

센서 종류만 탐구하고 앉아 있네요.



And

Hardware | 재생토너 chip 교환기 - 1

|

1. 어랏?


CP116w 의 정품 토너를 다 쓰고, 재생토너로 신나게 사용중이었습니다.

재생토너로 교환기는 아래 글을 참고해 주세요.


* Hardware | Fuji Xerox 의 CP116w 토너 교환기

http://chocoball.tistory.com/entry/Hardware-Fuji-Xerox-CP116w-toner-replacement


교환 후, 2주정도 흘렀을 때부터 Cyan 칼라가 다 쓴걸로 표시됩니다.

이런 ?!!! ㄱㄴㄷㄹㅁㅂㅅㅇ....


상태 표시창에는 "0" 으로 표시됩니다.

하... 또 뭐가 문제일까.




2. chip


레이저 프린터는 토너 교환 후 얼마나 뽑았는지를 기준으로 가용 용량을 가늠한다 합니다.

재생토너는 이 chip 에 새겨친 counter 를 읽어서 파악한다고 하네요.


결국 chip 이 망가졌다는 것을 알게 되었습니다.



그 사실을 알고 시도한 것은,

위의 사진에서처럼 chip 다리 부분을 인두로 다시 지져주는 것이였죠.


결과는 실패 !

그냥 chip 이 망가진 듯 합니다.




3. 낱개 구매


Cyan 의 chip 만 교환하면 되지만,

당장 프린터를 사용해야 하는지라 chip + 파우더 한쌍인 제품을 구매합니다.



바로 다음날 도착했습니다.

출장으로 일주일 집을 비우는 관계로 그 전에 고쳐야 하는데 잘 되었습니다.



박스는 튼튼하게 잘 왔어요.



구성물은 파우더와 chip 이 동봉되어 있습니다.

재생토너로 교환해서 얼마 안되었는지라, 필요한 부품은 이 chip 이 되겠습니다.



기존 재생토너에 채결된 chip 은 단순한 구조였는데,

새로 받은 chip 은 조금 정교하면서 main chip 을 보호하게 애폭시로 쌓여 있습니다.



프린터와 연결되는 접촉면도 넓게 형성되어 있습니다.

왠지 신뢰가 가네요.




4. 교환


재생 토너에 붙어 있던 커버를 아래처럼 힘을 줘서 빼면 문제없이 빠집니다.



기존 chip을 조심스레 제거해 줍니다.

chip 을 걸치는 힌지 프라스틱 부분이 부러지지 않도록 조심해야 합니다.



새로 받은 chip으로 교환해 줍니다.

역시 끼워 넣을 때에도, 살짝 chip 을 휘어야 들어가므로 최대한 조심해서 작업합니다.



필요 없겠지만, 파우더도 왔으니, 넣어봅니다.

분말가루가 잘 날리니 조심해야겠죠?

배송 박스 안에 넣고 주입해 줍니다.


주입구는 상판의 chip 커버를 분리하면 바로 밑에 보입니다.






5. 결과


다행스럽게 성공했습니다.



이제 정상적으로 다시 재생토너를 사용할 수 있게 되었네요.




6. 추가 구매


chip 이 고장나면 대책없이 당하는 상황이 오는지라, 미리 chip 을 구매하기로 합니다.

AliExpress 에는 없는게 없어요.


* Cartridge Chip For Fuji Xerox DocuPrint CP225w CP115w CP116w CM115w CM225fw CP115 225 CM115 225 Printer Toner Reset Refill Chips

- https://www.aliexpress.com/item/Cartridge-Chip-For-Fuji-Xerox-DocuPrint-CP225w-CP115w-CP116w-CM115w-CM225fw-CP115-225-CM115-225-Printer/32346560791.html



두쌍으로 8개가 지금 오고 있습니다.

한국에서 구매한 chip 과 완전히 동일한 제품으로 보입니다.


7천원 정도면 조금 비싼 감이 없지 않아 있지만, chip 자체가 고장나면 바로 사용할 수 없게 되므로,

선투자 해 놓고 구비해 놓기로 합니다.




FIN


AliExpress 를 좀더 뒤져보면, 정품 토너를 다 쓴 후,

재생 토너로 바꾸어주는 chip + 상판 플라스틱 + 파우더 세트를 파는군요.


미리 알았더라면, 그 제품으로 샀을 것인데... 조금 아쉽습니다.

원래 정품 토너의 카트리지 플라스틱 품질이 더 좋아 보였으니, 그걸로 재생 토너로 바꾸었으면 완벽했을 듯 합니다.


어찌 되었든, 지금은 재생 토너로 다시금 즐거운 레이저 프린터 생활을 이어가고 있습니다. :-)




Update


드디어 AliExpress 에서 여유 chip 이 도착했습니다.

판매자의 사진은 지금 새로 구입한 추가 chip 과 동일하나,

실제 도작한 제품은 원가절감을 한 제품으로 보입니다.



포장은 그럭저럭 입니다.

단지, 정확하게 CP116w 라는 글자가 없어서 좀 거시기 합니다만, 어쩔 수 없네요.



좀 신뢰성이 떨어지지만 나중에 문제 생겼을 시에 사용해 보려 합니다.


And

Hardware | Amazon Kindle Paperwhite 구매기

|

1. 시작


스마트폰이 대세이기 전에는 화장실을 가던, 버스를 타던간에 항상 책을 가지고 다녔습니다.

적어도 한달에 한두권 정도는 읽었던것 같아요.


그럼 요즈음은?

그렇습니다. 스마트폰이 항상 손에 쥐어져 있으므로, 메시지 확인이나 게임으로 시간을 보내고 있죠.



어느때부턴가 너무 스마트폰에 끌려다니는 것이 마음에 들지 않았습니다.

그래서 예전부터 E-book 을 생각해 오던 차, 지르기로 마음 먹습니다.




2. 기기 선정


E-book 은 그 종류가 다양합니다.

한국산으로는 리디북스, 크레마가 있고, 외산으로는 Amazon 에서 나온 Kindle 시리즈가 있습니다.


우선 영어 서적을 기본으로 구독할 것이기에 Kindle 로 정했습니다.

다만, Kindle 도 유구한 역사를 가지고 있어서 버전이 많더군요.


* Amazon Kindle

https://en.wikipedia.org/wiki/Amazon_Kindle


위의 Wikipedia 를 참조로 다음과 같이 범위를 좁혔습니다.

----------------------------------------------------------------

- 7th generation 일것

- back light 가 있어서 어두운 곳에서도 읽을 수 있을 것

- 해상도는 300ppi 이상일 것

- 금액은 15만원을 넘지 않을 것

----------------------------------------------------------------


마지막 조건인 "15만원을 넘지 않을것"을 충족하려면 최신기종은 배제해야 했습니다.



이렇게 되면, 그냥 7 이냐, Voyage 냐, Paperwhite (3세대) 냐로 좁혀집니다.


이제 AliExpress 를 뒤져볼 차례지요?

Voyage 는 최소 270 USD 라서 고민없이 제외시켰습니다.


결국은 Kindle Paperwhite (3rd generation) 이 되겠네요.


* Brand New Unopened Kindle Paperwhite 7 Generation E-book reader Built in Light 6 Inch 4GB Ebook Reader E-ink Ereader

- https://www.aliexpress.com/item/kindle-paperwhite-one-built-in-light-wifi-e-book-reader-ebook-ink-touch-e-ink-book/32601669594.html



다만 여기서 주의해야 할 점은 "가격"입니다.

국내 판매자에게 구매한다 해도, 신품이 15만원선, 리퍼가 11만원선 입니다.


AliExpress 에서 구매할 이유가 없어지는거죠.

흠.... 믿었던 알리였것만...




3. 역시 기기 구매는....


그렇습니다. 중고장터밖에 답이 안나오더군요.

한 2일정도 중고장터를 모니터링 합니다.


거의 사용하지 않은 제품이면서, 화면 보호 필름도 부착되어 있으며 케이스까지 주신다는 분을 발견합니다.

한가지 걸리는 것은 일본어판이라고 하네요.


Googling 한 결과, 일본어판이라 하더라도 계정 등록이나 언어 변환에 대해서는 전혀 상관없다는 결론을 내고 구매에 들어갑니다.


- 본체 + 보호필름 + 케이스 = 12만원


보내주시는 분이 과하게 포장해 주셔서 안전하게 배달되었습니다. (감사합니다.)



이것이 그 Kindle 이라는 거구나.



비닐 포장과 케이스까지 거의 새것같은 느낌입니다.



제조는 Mexico 이네요. 쓸 수만 있으면 상관 없는 부분이지만, 기록으로 남겨 봅니다.



Kindle Paperwhite (3rd generation) 이 확실하네요.

- WIFI

- 4GB

- 햇빛 아래에서도 선명하게 읽힘

- 300PPI 터치스크린 디스플레이

- 내장형 프론트라이트




4. 제품 개봉


상자를 열어 봤습니다.



안녕, 하고 인사를 합니다.

e-ink 인지라 전원이 인가되어 있지 않아도 마지막 형상을 기억하여 표현되어 있네요.



크기는 딱 저의 손바닥만 합니다.



전원을 키면, 언어 선택이 제일 먼저 나옵니다.

위에서 표시되는 언어들은 다른 지역에서 판매된 Kindle 에서도 동일한 가짓수 입니다. (Google 로 확인)

그러니 생산 지역의 차이는 없다고 봐야겠죠?


참고로 저는 영어를 선택했습니다.



부팅하는 모습입니다. 한 1분 미만 걸린것 같습니다.



Hey~. 난 Paperwhite 3rd generation 이라고 해. 성능이 끝내줘~.




5. 기기 등록


Kindle 은 Amazon Store 에서 구매한 서적을 보기 위한 기기 이므로,

기본적으로 Amazon Store 의 ID 와 연동을 시켜줘야 합니다.


연동을 위해서 먼저 Wi-Fi 연결을 진행합니다.



"Connect to Wi-Fi" 를 선택합니다.



Wi-Fi 를 스캔해주어, 사용할 수 있는 Wi-Fi spot 을 보여줍니다.



Wi-Fi 를 선택하고 사용을 위한 비번을 입력합니다.

그럼 화면 오른쪽 위의 밧데리 마크 옆에 Wi-Fi 아이콘이 뜹니다.



이제 Amazon Store 와 연동할 차례 입니다.

저는 이미 ID 를 가지고 있으니 "Use an existing Amazon account" 를 선택합니다.



그럼 Login ID 와 비번을 입력합니다.



짜잔~~~ 연동 되었습니다.

시간도 저의 local 시간 (한국) 으로 자동으로 싱크되네요.



분실을 대비해, 전화번호도 등록합니다.

KR (+82) 를 선택하면, 일반적으로 생략하는 전화번호 앞자리 "0" 을 입력하지 않아도 자릿수를 맞춰 줍니다.

세세한 부분에서 신경 쓰고 만든 흔적이 보이네요.



전화번호 등록을 마치면 SMS 문자로 등록되었다고 연락이 옵니다. 신기.



사람들이 많이 읽은 책에 대해서 push 해주는 기능 같습니다.

뭔가 얽매이는 것 같아 Skip 합니다.

저는 trend 를 따라가는 것을 한박자 늦춰서 하는걸 좋아해서요.



간단한 설명이 6페이지정도 나옵니다.



짜잔~~~ 이제 책을 읽을 수 있는 준비가 완료되었습니다.

아~ 나도 이제 Kindler !




6. 스벅에서


스타벅스의 무료 와이파이를 사용하려면, web page 를 통한 인증이 필요합니다.

혹시 Kindle 은 이런 종류의 인증 방법도 가능할까? 궁금해졌습니다.



스벅에서 제공하는 KT-starbucks 를 고르니 Web 브라우저에서 진행할꺼라고 안내가 되네요.

흠흠... 대응이 되는구나.



평소 하던것처럼 Agree 선택하면...



와이파이 연결이 됩니다. 편리하다.




7. 가독성


e-ink 라서 화면 전환시에 지지직 하는 잔상이 생기지만,

적응하면 전혀 문제가 되지 않습니다.



불빛 아래에서 보면 더 선명하게 보입니다.



흠흠, 독서할 맛 나네요.


페이지 전환에 대해 느낄 수 있도록, 동영상으로도 찍어 봤습니다.



최대한 확대해 보았습니다.



300PPI 가 어떤 숫치인지는 모르겠지만, 미려한 경계선을 구현해 주는 것 같습니다.


백라이트를 키면 어두운 곳에서도 잘 보입니다.





FIN


새로운 장난감 같이 느껴질지 모르겠지만, 그것은 어디까지나 오해입니다.

저는 이 장난... 아니, 새로운 기기로 문자를 탐독하며 한여름을 보내고자 합니다.


And

Hardware | 전자저울 구매하기

|

1. 이게 필요할까?


우연한 기회에 중국발 전자저울이 꽤 괜찮다는 이야기를 들었습니다.

그래서 알리를 검색했죠. 아주 당연한 수순입니다.


* 3000g x 0.1g Mini Digital Scale Weighting Kitchen Scale Electronic and LCD Display g/ oz/ ct/ gn Precision with 2 trays 3kgx0.1g

https://www.aliexpress.com/item/3000g-x-0-1g-Mini-Digital-Scale-Weighting-Kitchen-Scale-Electronic-and-LCD-Display-g-oz/32623860680.html



보기에도 단순하면서 깔끔해 보입니다.

그 위에 접시(?) 도 준다고 하네요.


최대 500g 측정하는 제품은 0.01g 범위까지 측정 가능하나,

최대 1Kg 이상 측정하는 버전은 0.1g 범위까지만 가능합니다.


이 전자저울 구매의 궁극적인 목적은 카본파이버 굳힐때 사용하는 resine 측정에 필요할것 같아서 이예요.




2. 도착


이건 10일만에 도착했습니다.



뽁뽁이 봉투로 잘 보호되어 왔습니다.



충격에 잘 보호되도록 제품 박스 자체에도 뽁뽁이로 잘 쌓여 있습니다.



외장 박스는 조금 구겨졌지만 그러려니 합니다.



동일 외관이지만 scale 이 다른 버전들이 많이 있네요.

이번에 구매한 제품은 3000g/0.1g 버전입니다.




3. 구성


박스를 까보면 전자저울이 나옵니다.



보너스로 준다는 접시는 어디에 있지? 라고 찾던 중....


음???!!!



뚜껑이 접시였네요~!

물건을 올리는 부분을 커버하는게 작은 접시,

모든 부분을 커버하는 큰 접시, 2개가 있군요. 좋은 아이디어네요.



건전지는 AAA 2개가 들어갑니다.





4. 설명서


설명서를 스켄해서 올려 놓습니다.

자세히 읽지는 않았지만, 잘 설명되어 있는것 같네요.



뒷면입니다.





5. 동작


아래는 동작샷 입니다.

특별히 문제 없이 잘 동작하네요.



조금 사용해 보면서 아쉬웠던 점은,


- 무게를 측정하는 부분 말고 본체 케이스가 플라스틱이 아니라, 스테인레스였으면 고급져 보였을것 같습니다. 

- 버튼도 싼마이 플라스틱이라 알루미늄이었으면 좋았을 듯 합니다.

- 3000g 까지 측정되지만, 0.1g 이 아니라 0.01g 까지 측정되었으면 어떨가 합니다.


위의것이 다 되면, 이 가격에 구할 수 없었겠죠?




FIN


손바닥만 하지만, 기본 기능은 잘 되고 수납하기 좋아, 하나 가지고 있어도 괜찮은 제품입니다.

이제 Carbon Fiber 를 가지고 DIY 할 때, 약품 배합시 정확하게 할 수 있겠네요.


And

Life | iPhone 6S Plus 밧데리 교환 DIY

|

1. 내가 조루라니


그렇습니다. iPhone 6S Plus 를 2년 이상 사용하다 보니,

밧데리 충전 가능 용량이 2750mAh --> 1800mAh 로 확연히 떨어졌습니다.


매번 기회 있을 때마다 충전을 해야 하고, 반나절도 못가는 상태가 되었습니다.



밧데리 대란으로 정식 AS 센터에서 3만 7천원이라고 합니다.




2. 밧데리


알리익스프레스에서 검색해 봅니다.

원래 정품은 2750mAh 지만, 3250mAh 짜리 고용량이 있네요.


상품평이 괜찮아서 조금 가격이 있지만, 3250mAh 로 결정했습니다.


* Original NOHON Battery For iPhone 6S Plus 6SPlus Li-ion Replacement Batteries 3250mAh High Capacity Retail Package

https://www.aliexpress.com/item/NEW-Arrival-Original-NOHON-Battery-For-iPhone-6S-Plus-6SPlus-Li-ion-Replacement-Batteries-3250mAh-High/32809041799.html



배달은 한 2주 된것 같습니다.

포장은 특별히 문제 없이 뽁뽁이 봉투에 넣어서 배달되었습니다.



구성품은 헤라, 빨판, 드라이버, 소켓 분리 툴, 접착 테이프, 그리고 밧데리 입니다.



밧데리 샷 입니다.



보증기한이 6개월인데, 이게 고장나면 아예 폰이 타버리겠죠?

용량이 3250mAh 라고 쓰여 있습니다.



그냥 뒷면샷 입니다.



자세히 보면, 테이핑 마무리 등은 정품이 좀더 깔끔한것 같습니다.




2. 방수 점착제


밧데리 동영상 등을 보면, 상판을 뜻을 때, 방수용 점착제가 같이 뜯어져 나오는 장면들이 많습니다.


일반적인 동영상을 보면 이 부분을 다시 보충해 주는 정보가 없지만,

확실히 다시 보충해 줘야 하는 부분이라고 생각하고 따로 구입했습니다.


* 2x original Waterproof Adhesive Glue Tape Sticker For iPhone 6S 6SP 7 7P plus Front Housing LCD Touch Screen Frame tracking code

https://www.aliexpress.com/item/2x-original-Waterproof-Adhesive-Glue-Tape-Sticker-For-iPhone-6S-6SP-7-7P-plus-Front-Housing/32801683330.html



2장이 한세트이니, 한번 실패해도 안심입니다.



포장은 얇은 박스로 왔네요.

전혀 구겨질 수 없도록 일반 포장지가 아니고 박스로 오는게 믿음이 갑니다.



이렇게 두장 들어 있습니다.




3. 교환 방법 공부


iPhone 6S Plus 의 밧데리 교환방법이 가장 잘 설명된 Youtube 동영상 입니다.


* Tutorial: Detailed step by step Battery Replacement Guide for iPhone 6S (Plus)

https://www.youtube.com/watch?v=doubGxWEUtw


어느부분을 주의해야 하는지라던가, 접착 테이브 붙이는 방법, 점검법, 그리고 실링 점착제 붙이는 방법 등,

가장 잘 설명해 주는 동영상인듯 합니다.


밑에는 AliExpress 사이트의 제품 설명 화면들 입니다.

실링 점착제 붙이는 부분은 빠져 있지만, 전반적으로 잘 설명되어 있습니다. 




흠흠.... 이렇게 하면 되는군요.




4. 분해 - 상판


이제 본격적으로 분해를 시작해 봅니다.


우선, 헤어드라이어기로 iPhone 의 가상자리를 달구어 줍니다.

한 2분정도면 충분할것 같습니다.


충분히 달구지 않으면 상하판을 잡고 있는 점착제가 딱딱한 상태라서 힘을 많이 주게 되므로 파손의 위험이 있습니다.

점착제가 유들유들하게 만드는게 포인트 입니다.



충분히 달구며 바로 온도가 떨어지지 않습니다.



동그라미 부분의 별나사를 살폿이 풀어줍니다.



위의 사진처럼 빨판을 살짝 윗쪽에 붙여서 들어 올립니다.

들어 올리는 부분에 간격이 생기면 거기에 헤라를 집어 넣어서 점점 더 벌여주기 시작합니다.



빨판 위치를 다시 살짝 옮겨, 그 부분을 들어 올리면서 벌려 줍니다.

이렇게 하면, "지지직" 하면서 점착제로부터 상하판이 분리되면서 벌어집니다.



너무 힘을 많이 주지 않고, 벌리는게 뽀인트 입니다.

90도 각도를 유지합니다. 확 꺾어버리면, 커넥터가 손상되므로 특별히 주의해야 합니다.



위의 사각진 부분의 상판에서 나사 5개를 풀고 커넥터를 분리합니다.



이로써 상판 분리가 끝났습니다.



분리 후의 모습입니다. 깔끔하게 잘 만들었네요.

6S Plus 라서 그런지 공간이 조금 넉넉해 보입니다.



상판 뒷면입니다.




5. 분해 - 밧데리


이제 밧데리를 분리할 차례 입니다.



드라이기로 또한 충분히 달구워 줍니다.



위 사진의 동그라미 2개 나사를 분리하여, 밧데리 커넥터가 있는 커버를 제거합니다.

이제 밧데리 커넥터를 분리할 수 있습니다.



작업하느라 사진 찍는걸 잊어버렸습니다.

밧데리 밑부분에 접착 테이프를 당겨서 빼내는 부분이 있습니다.


3개 중, 가장 오른쪽 부분은 이쁘게 분리했지만, 다른 두 부분이 아직 붙어 있어서,

분리된 부분의 밧데리를 꺾고, 드라이버를 집어 넣어서 접착 테이프를 돌돌 말아서 제거해 줍니다.






6. 새 밧데리 장착


접착 테이프는 윗부분에 살짝 먼저 붙여 놓고... 



뒤로 꺽어서 실링을 제거하고 붙입니다.



마무리 부분에서 실링 커버가 조금 튀었더니 끝부분에 붙어서 절대 떨어지지 않더군요.



할 수 없이 저 부분은 잘라 냈습니다. 강력한 접착제네요.



잘 장착 되었습니다.

밧데리 커넥터를 채결하고 커버를 드라이버로 고정 하면, 이제 상판을 붙일 차례 입니다.



상판 붙이기 전에 방수 점착제를 먼저 정렬해서 붙여 놓습니다.



밑에부터 붙인 다음, 양 옆을 태두리를 신경쓰면서 위에까지 덮어 줍니다.

손톱으로 잘 접착되도록 눌러줍니다.


이제 분리의 역순으로 상판을 채결해 줍니다. (사진 無)





7. 결과


특별한 문제 없이 잘 교체 되었습니다.



3250mAh 를 구매했지만, 인식은 3300mAh 네요.

한가지 더, 실제 전압이 3.80V --> 4.28V 로 바뀌었습니다.


이제 한번 충전으로 하루정도는 버티겠네요. 뭔가 기분이 개운해졌습니다.


총 비용은, 23.65 + 3.06 USD = 26.71 USD = 28,800 원 정도 합니다.

서비스 비용인 3만 7천원보다는 1만원 싸게 하면서 대용량으로 바꿀 수 있었네요.


다만, 기다림, 작업 시간, 준비, 실패할 확률 등을 감안하면, 3만 7천원이 비싼게 아니라는 것을 알 수 있습니다.




FIN


NOHON 제품 사용 설명서 사진입니다.



각종 그림과 자세한 설명으로 많은 도움이 되었습니다.



이렇게 친절한 설명서는 처음인듯 해요...


And
prev | 1 | ··· | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ··· | 15 | next