'aliexpress'에 해당되는 글 152건
- 2018.08.01 Hardware | ML8511 UV sensor 를 가지고 놀아보자
- 2018.07.31 Hardware | MAX31855 + K-type 온도센서 조합 2
- 2018.07.01 Hardware | 압력 센서를 가지고 놀아보자
- 2018.06.29 Hardware | 재생토너 chip 교환기 - 1
- 2018.05.29 Hardware | Amazon Kindle Paperwhite 구매기
- 2018.05.20 Hardware | 전자저울 구매하기
- 2018.05.19 Life | iPhone 6S Plus 밧데리 교환 DIY
- 2018.05.16 Hardware | ATtiny85 를 사용해 보자 - 2
- 2018.05.16 Hardware | ATtiny85 를 사용해 보자 - 1 2
- 2018.04.15 Life | 여행용 가방 롤러 수리하기
1. 여름
유독 2018년의 여름은 예년보다 더욱 덥습니다.
지구 온실효과로 내년 뉴스에도, "올해도 최고 온도를 갱신했습니다!" 라는 멘트를 들을 수 있을것 같습니다.
오존층 파괴등으로 인하여 피부에 직사광선을 쬐는 것은 이제 위험한 시대입니다.
자외선 - Ultraviolet 인거죠.
위 표는 UV 세기에 따라 어떤식으로 몸을 보호해야 하는지 나타내주는 표 입니다.
더이상 선글라스는 패션이 아니군요.
2. ML8511 센서 구매
UV 를 측정해주는 아나로그 센서로는 ML8511 이 있습니다.
AliExpress 를 검색하니 아래가 가장 많이 팔렸던 제품입니다.
* GY-8511 ML8511 UVB Breakout Test Module Ray Sensor UV Detector Analog Output Module
기능은... 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
논문 안에 기재된, 아래 테이블을 가지고 적용하면 되겠네요!
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 에 로고 새기는 방법도 터득했구요.
해가 거듭될수록 자외선의 위험성이 강조되는 요즈음,
향후를 위해서라도 한번쯤은 확인해 보고 싶었던 센서 였습니다.
다른 분들도 참고가 되었으면 좋겠습니다.
'Hardware' 카테고리의 다른 글
Hardware | Raspberry Pi 3 model B+ unboxing (0) | 2018.08.10 |
---|---|
Hardware | MAX31865 + PT100 온도센서 조합 (2) | 2018.08.06 |
Hardware | MAX31855 + K-type 온도센서 조합 (2) | 2018.07.31 |
Hardware | SSD1306 에 로고를 세겨보자 (0) | 2018.07.24 |
Hardware | 압력 센서를 가지고 놀아보자 (0) | 2018.07.01 |
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
일반적으로 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
아래는 도착 사진 입니다.
친절하게 알아서 사용하라는 중국 생산자의 배려 입니다.
기록을 위해 뒷면도 찰칵.
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 입니다.
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) 과 잘 비교해 본 다음, 문제가 없어보이면 구입하는게 좋을것 같습니다.
'Hardware' 카테고리의 다른 글
Hardware | MAX31865 + PT100 온도센서 조합 (2) | 2018.08.06 |
---|---|
Hardware | ML8511 UV sensor 를 가지고 놀아보자 (0) | 2018.08.01 |
Hardware | SSD1306 에 로고를 세겨보자 (0) | 2018.07.24 |
Hardware | 압력 센서를 가지고 놀아보자 (0) | 2018.07.01 |
Hardware | 재생토너 chip 교환기 - 1 (0) | 2018.06.29 |
1. FSR
FSR 은 Force Sensitive Resistor 의 약자입니다.
* WALFRONT 5pcs/Lot Thin Film Pressure Sensor DF9-40 High Precise Force Sensing Resistor Resistance-type Flexible Pressure Sensor
특징은 다음과 같다고 합니다.
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
슬슬 뭔가 실생활에 도움되는 것을 만들어야 하는데,
센서 종류만 탐구하고 앉아 있네요.
'Hardware' 카테고리의 다른 글
Hardware | MAX31855 + K-type 온도센서 조합 (2) | 2018.07.31 |
---|---|
Hardware | SSD1306 에 로고를 세겨보자 (0) | 2018.07.24 |
Hardware | 재생토너 chip 교환기 - 1 (0) | 2018.06.29 |
Hardware | Amazon Kindle Paperwhite 구매기 (0) | 2018.05.29 |
Hardware | 전자저울 구매하기 (0) | 2018.05.20 |
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
두쌍으로 8개가 지금 오고 있습니다.
한국에서 구매한 chip 과 완전히 동일한 제품으로 보입니다.
7천원 정도면 조금 비싼 감이 없지 않아 있지만, chip 자체가 고장나면 바로 사용할 수 없게 되므로,
선투자 해 놓고 구비해 놓기로 합니다.
FIN
AliExpress 를 좀더 뒤져보면, 정품 토너를 다 쓴 후,
재생 토너로 바꾸어주는 chip + 상판 플라스틱 + 파우더 세트를 파는군요.
미리 알았더라면, 그 제품으로 샀을 것인데... 조금 아쉽습니다.
원래 정품 토너의 카트리지 플라스틱 품질이 더 좋아 보였으니, 그걸로 재생 토너로 바꾸었으면 완벽했을 듯 합니다.
어찌 되었든, 지금은 재생 토너로 다시금 즐거운 레이저 프린터 생활을 이어가고 있습니다. :-)
Update
드디어 AliExpress 에서 여유 chip 이 도착했습니다.
판매자의 사진은 지금 새로 구입한 추가 chip 과 동일하나,
실제 도작한 제품은 원가절감을 한 제품으로 보입니다.
포장은 그럭저럭 입니다.
단지, 정확하게 CP116w 라는 글자가 없어서 좀 거시기 합니다만, 어쩔 수 없네요.
좀 신뢰성이 떨어지지만 나중에 문제 생겼을 시에 사용해 보려 합니다.
'Hardware' 카테고리의 다른 글
Hardware | SSD1306 에 로고를 세겨보자 (0) | 2018.07.24 |
---|---|
Hardware | 압력 센서를 가지고 놀아보자 (0) | 2018.07.01 |
Hardware | Amazon Kindle Paperwhite 구매기 (0) | 2018.05.29 |
Hardware | 전자저울 구매하기 (0) | 2018.05.20 |
Hardware | ATtiny85 를 사용해 보자 - 2 (0) | 2018.05.16 |
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
다만 여기서 주의해야 할 점은 "가격"입니다.
국내 판매자에게 구매한다 해도, 신품이 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
새로운 장난감 같이 느껴질지 모르겠지만, 그것은 어디까지나 오해입니다.
저는 이 장난... 아니, 새로운 기기로 문자를 탐독하며 한여름을 보내고자 합니다.
'Hardware' 카테고리의 다른 글
Hardware | 압력 센서를 가지고 놀아보자 (0) | 2018.07.01 |
---|---|
Hardware | 재생토너 chip 교환기 - 1 (0) | 2018.06.29 |
Hardware | 전자저울 구매하기 (0) | 2018.05.20 |
Hardware | ATtiny85 를 사용해 보자 - 2 (0) | 2018.05.16 |
Hardware | TCS230/TCS3200 color sensor 를 사용해 보자 (0) | 2018.04.03 |
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
보기에도 단순하면서 깔끔해 보입니다.
그 위에 접시(?) 도 준다고 하네요.
최대 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 할 때, 약품 배합시 정확하게 할 수 있겠네요.
'Hardware' 카테고리의 다른 글
Hardware | 재생토너 chip 교환기 - 1 (0) | 2018.06.29 |
---|---|
Hardware | Amazon Kindle Paperwhite 구매기 (0) | 2018.05.29 |
Hardware | ATtiny85 를 사용해 보자 - 2 (0) | 2018.05.16 |
Hardware | TCS230/TCS3200 color sensor 를 사용해 보자 (0) | 2018.04.03 |
Hardware | Raspberry Pi 3 model B 의 RPC 와 UK 생산지 차이를 비교해보자 (0) | 2018.03.29 |
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
배달은 한 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
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 제품 사용 설명서 사진입니다.
각종 그림과 자세한 설명으로 많은 도움이 되었습니다.
이렇게 친절한 설명서는 처음인듯 해요...
'Life' 카테고리의 다른 글
Life | 화장실 환풍기 팬 청소기 (0) | 2018.07.02 |
---|---|
Life | LG TV 수리 DIY 실패기 (9) | 2018.05.20 |
Life | 세면대 파이프를 교환해 보자 (0) | 2018.05.13 |
Life | 여행용 가방 롤러 수리하기 (0) | 2018.04.15 |
Life | 중국의 Xiamen 방문기 (0) | 2018.03.29 |
1. 준비물
ATtiny85 에 구동 program 를 업로드 하기 전에, 구성품 준비가 필요합니다.
관련해서는 다음에 링크된 이전글을 참고해 주세요.
* Hardware | ATtiny85 를 사용해 보자 - 1
- http://chocoball.tistory.com/entry/Hardware-ATtiny85-1
참고로 ATtiny85 의 datasheet 는 다음과 같습니다.
- Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf
2. 참조 사이트
ATtiny85 에 프로그램 업로드를 위해서는 몇가지 방법이 있지만,
저는 다음 사이트를 기준으로 참고하였습니다.
* Breathing life into the DigiSpark clone with ATtiny MCU
- https://makbit.com/web/firmware/breathing-life-into-digispark-clone-with-attiny-mcu/
3. Arduino - ArduinoISP
자, 이제 준비가 완료 되었으니 이제 시작을 해 볼까요?
ATtiny85 에 프로그램을 심으려면,
바로 PC 와 USB를 통해 연결하면 안되고 "PC -- USB -- Arduino -- ATtiny85" 식으로 연결하여 프로그래밍 할 수 있습니다.
중간에 위치한 Arduino 를 브릿지 형식으로 사용하는 것입니다. 이름하야 In-circuit Serial Programmer (ISP) 라는군요.
이를 위해, Arduino 가 ISP 로 동작할 수 있도록 Arduino 에 ISP 프로그램을 업로드 해줍니다.
File > Examples > 11.ArduinoISP > ArduinoISP
이걸로 Arduino 쪽의 준비는 끝났습니다.
4. Arduino IDE - Perferences
다음으로 IDE의 Preferences 메뉴로 이동하여 ATtiny85 보드를 Arduino 에서 인식시킬 수 있도록 관련된 library 를 인스톨 합니다.
이를 위하여, 다음 URL 중 하나를 Preferences 의 Boards Manager URLs 에 다음 중 하나를 선택하여 입력해 줍니다.
* ATtinyCore
- http://drazzy.com/package_drazzy.com_index.json
* Digispark
- http://digistump.com/package_digistump_index.json
File > Preferences > Additional Boards Manager URLs
보통은 Digispark 용을 사용해도 되나,
Spence Konde 라는 사람이 만든 ATTinyCore 는 좀더 정밀하게 설정할 수 있고, 문제 없이 동작한다고 합니다.
* Spence Konde
- https://github.com/SpenceKonde/ATTinyCore
저는 Spence Konde 를 선택했습니다.
5. Arduino IDE - Board Manager
다음으로 ATtinyCore 라이브러리를 Board Manager 를 통해 설치합니다.
Tools > Board > Board Manager > search "ATtinyCore"
위의 과정까지 거치면, 아래처럼 Board 에서 ATtiny85 를 선택할 수 있습니다.
6. Arduino IDE - Programmer
이제 마지막으로 운용할 Programmer 를 선택합니다.
이미 우리는 Arduino 를 ISP 로 사용할 것을 알기에, "Arduino as ISP" 를 선택하면 됩니다.
ATtinyCore 라이브러리가 설치되어 있으므로, "Arduino as ISP (ATtinyCore)" 를 선택해도 됩니다만,
왠지 default 로 제공되는 것을 사용하고 싶어서 "Arduino as ISP" 를 선택했습니다.
어느쪽을 선택해도 문제없을것 같아요.
이제 Arduino IDE 에서의 준비는 끝났습니다.
7. Layout
ATtiny85 의 Pin 배열은 다음과 같습니다.
위의 그림을 참조하여 Arduino 와 ATtiny85 를 다음과 같이 연결합니다.
ATtiny85 | Arduino Nano --------------------------- VCC | 5V GND | GND Reset | D10 Pin 0 | D11 Pin 1 | D12 Pin 2 | D13 ---------------------------
추가로 Arduino 의 GND/RESET 에 10uF 캐패시터를 연결해 줍니다.
이유는 Arduino 가 ATtiny85 에 업로드 할 때, auto reset 을 방지하기 위함이라 합니다.
실제 모양은 다음과 같아요.
그간 고생해서 얻은 "DIP to SOIC converter" 가 빛을 발하는 순간입니다.
이제 물리적인 구성은 완료 되었습니다.
8. sketch
소스는 아래 link 를 참조하였습니다.
깜빡이 간격이 좀 짧은것 같아 increment / decrement 를 5에서 1로 변경했습니다.
* Attiny85 blink fade for loop 3 LED
- https://codebender.cc/sketch:354605
해당 소스는 단순히 LED 를 깜빡이게 하는것 외에도,
PWM (Pulse With Modulation) 기법을 이용하여 LED 점등을 fade 효과를 낸 것입니다.
/* This code will allow you to mix fading and blinking on 3 LEDs Jill Dawson */ int Pin0 = 0; // LED connected to pwm pin 0, which can blink or fade int Pin1 = 1; // LED connected to pwm pin 1, which can blink or fade int Pin2 = 2; // LED connected to digital pin 2, which can only blink void setup() { // nothing happens in setup // declares pins as outputs pinMode (0, OUTPUT); pinMode (1, OUTPUT); pinMode (2, OUTPUT); } //Loop repeats void loop() { // fades pin 0 in from min to max in increments of 5 points for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=1) { // sets the value (range from 0 to 255): analogWrite(Pin0, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); } // fades pin 0 out from max to min in increments of 5 points for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=1) { // sets the value (range from 0 to 255): analogWrite(Pin0, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); } // blinks LED 1 three times { digitalWrite (1, HIGH); //turns pin 1 on delay (1000); //waits for 1 second digitalWrite (1, LOW); //turns pin 1 off delay (1000); //waits for 1 second digitalWrite (1, HIGH); //turns pin 1 on delay (1000); //waits for 1 second digitalWrite (1, LOW); //turns pin 1 off delay (1000); //waits for 1 second digitalWrite (1, HIGH); //turns pin 1 on delay (1000); //waits for 1 second digitalWrite (1, LOW); //turns pin 1 off } // blinks LED 2 three times { digitalWrite (2, HIGH); //turns pin 2 on delay (1000); //wait for 1 second digitalWrite (2, LOW); //turns pin 2 off delay (1000); //waits for 1 second digitalWrite (2, HIGH); //turns pin 2 on delay (1000); //wait for 1 second digitalWrite (2, LOW); //turns pin 2 off delay (1000); //waits for 1 second digitalWrite (2, HIGH); //turns pin 2 on delay (1000); //wait for 1 second digitalWrite (2, LOW); //turns pin 2 off delay (1000); //waits for 1 second } // fades pin 1 out from max to min in increments of 5 points for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=1) { // sets the value (range from 0 to 255): analogWrite(Pin1, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); } // fades out from max to min in increments of 5 points: for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=1) { // sets the value (range from 0 to 255): analogWrite(Pin1, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); } }
Arduino IDE 에서 업로드 합니다.
AVR Part 항목을 보면 ATtiny85 로 정확히 인식합니다.
ATtiny85 에 FLUSH 가 성공하면 위와 같이 문제없이 완료가 됩니다.
9. 결과
짜잔~!
FIN
이제 ATtiny85 에 프로그램을 업로드 하여 standalone 으로 동작하는 것까지 확인할 수 있었습니다.
"ATtiny85 + DIP to SOIC adapter + USB board" 를 USB 에 직접 연결하여,
Arduino ISP 없이도 Digispark 처럼 프로그램을 업로드 할 수 있는게 목표므로, 다음 글에서 구성해 보도록 하겠습니다.
'Hardware' 카테고리의 다른 글
Hardware | Amazon Kindle Paperwhite 구매기 (0) | 2018.05.29 |
---|---|
Hardware | 전자저울 구매하기 (0) | 2018.05.20 |
Hardware | TCS230/TCS3200 color sensor 를 사용해 보자 (0) | 2018.04.03 |
Hardware | Raspberry Pi 3 model B 의 RPC 와 UK 생산지 차이를 비교해보자 (0) | 2018.03.29 |
Hardware | Fuji Xerox 의 CP116w 토너 교환기 (0) | 2018.03.28 |
1. 시작
Arduino Nano 를 사용하고 있지만, 실제 프로젝트 구성시 이렇게 많은 핀들이 필요할지 의문이 드는 때가 있습니다.
인터넷을 돌아다니다 보면, Arduino 본체는 아니지만 소스코드는 거의 동일하지만, chip 은 조그마한 것이 사용된 것을 볼 수 있습니다.
그 이름하야 ATtiny85.
Arduino Nano 에 들어가는 chip 이 Atmel 사의 MEGA328P 인데,
이 ATtiny85 의 생산회사도 Atmel 사 입니다.
이 ATtiny85 는 두가지 package 가 존재합니다.
하나는, 아래 보이느 DIP8 형태 (다리가 8개 벌레같은 칩) 의 ATtiny85.
'
다른 하나는, SOIC 형태 (납착한 보드 납땝식) 의 ATtiny85 입니다.
다리는 8개밖에 없는지라, power / ground 빼면 6개 이고, chip control 하는 1번을 빼면,
실제 가용할 수 있는 pin 수는 5개가 되겠군요.
실제 project 상에서 사용되는 Pin 수는 그리 많지 않기때문에,
간단한 sensor 를 이용하여 기능 구현할 때에는 Arduino 보단, 이런 ATtiny85 를 사용하는 것이 훨씬 경제적으로 보입니다.
- 장소 차지가 적다
- Power가 더 적게 먹을 것이다
- 기판 적층시 component 처럼 실장할 수 있다
2. 최종 모양
ATtiny85 에 프로그램을 upload 하기 위해서는, FTDI 나 Arduino ISP 모드를 이용하여 8k 자체 메모리에 업로드 해야 합니다.
위의 방법이 일반적이지만, 아래 그림의 처럼
직접 Arduino IDE 에서 프로그래밍 하여 USB를 통해 upload 할 수 있는, Digispark 모양으로 만들고 싶었습니다.
* Digispark
- http://digistump.com/products/1
클라우드펀딩인 Kickstarter 에서도 큰 방향을 일으킨 제품입니다.
* Digispark - The tiny, Arduino enabled, usb dev board!
- https://www.kickstarter.com/projects/digistump/digispark-the-tiny-arduino-enabled-usb-dev-board
지금까지 내용을 정리하면 최종 모습은 아래와 같은 모양이 됩니다.
- SOIC 형태
- Digispark 처럼 USB 를 통한 개발 보드 형태
알리에서 검색해 보면, DIP 소켓 을 사용하여 Digispark 처럼 사용할 수 있게 해주는 보드가 있습니다.
그럼 위의 DIP 소켓을 SOIC 로 변환해주는 adapter 를 이용하면, 최종적으로 SOIC를 사용할 수 있겠군요.
이제 구상이 끝났으니 AliExpress 에서 구입을 진행해 봅니다.
2. 구입 - ATtiny85
먼저 SOIC 타입의 ATtiny85 를 구매합니다.
* Free Shipping 5PCS Original Integrated circuit parts ATTINY85 ATTINY85-20SU
5개에 1만원 정도이니, 여타 다른 chip 들에 비하면 비싼 편 입니다.
릴 package 를 끊어서 보내줬군요.
확대해서 보면 Atmel 사의 TINY85 라고 쓰여 있습니다.
여기서 잠깐, 구매한 ATtiny85 는 20SU 라는 코드가 달려 있습니다.
제품사양을 보면 20SH 는 좀더 비싸고, 20SU 는 조금 더 쌉니다. 기호의 의미는 다음과 같다고 하네요.
– H: NiPdAu lead finish
– U: matte tin
U는 주석이고, H 는 NiPdAu (Nickel-Palladium-Gold) 로 납땜시, 더 확고하고 쉽게 접합된다고 합니다.
이렇게까지 전문적으로 아직 필요가 없으므로, 무난하게 20SU 버전으로 구입합니다.
3. 구입 - USB board
ATtiny85 chip 을 엊고 USB 를 연결하게 할 수 있는 보드를 구매합니다.
물론 ATtiny85 가 DIP 소켓에 꽂혀 있는 일체형이나 SOIC chip 이 납땜되어 있는 버전도 팔지만,
SOIC 를 바꿔 끼울 수 있도록 adapter 를 사용할 것이기에 깡통 USB 보드를 선택합니다.
* ATtiny13A/ATtiny25 /ATtiny45/ATtiny85 Pluggable Development Programming Bare Board
배송 포함 1천원정도니 부담없습니다.
잘 도착해서 보니, 기판 찌꺼기가 같이 붙어 있네요.
뭐 이 가격이니 이해할 수 있습니다.
뒷면입니다.
기판 찌꺼기는 펜치로 잡고 구부리면 쉽게 제거됩니다.
제거되면 기분이 뭔가 좋아집니다. 이런 즐거움도 선사해 주는군요.
나중에 adapter 가 도착하여 ATtiny85 와 채결할 때, 호기심으로 1번 핀을 거꾸로 채결해 봤더니 연기가 나더군요.
(나중에 안 사실이지만, 이 연기는 솔더링 잘되라고 도포된 약품이 레귤레이터 열로 증발한 것)
USB 연결시에 PC 에서 인식 못하는 문제가, 이 태워먹은 결과라고 잘못 생각하고 바로 2개를 추가로 주문했습니다.
(USB 를 연결하여 Digispark 처럼 사용하려면, 필요한 과정이 더 있슴)
총 3개가 되었군요.
4. 구입 - DIP to SOIC converter
USB 의 DIP 소켓을 SOIC 를 엊을 수 있게 하는 adapter / converter 를 주문합니다.
* SOIC8 SOP8 to DIP8 EZ Socket Converter Module Programmer Output Power Adapter With 150mil Connector SOIC 8 SOP 8 To DIP 8
잘 도착했습니다.
포장도 잘 되어 있네요.
정전기 방지 포장까지 되어 있습니다.
Chip 규격이 다양한 만큼 알아야 할것도 많네요.
AliExpress 의 무료배송 마약때문에, 새로 구입한 converter 가 도착하려면 최소 2주 이상을 또 기다려야 합니다.
이거 하나 하는데 도대체 얼마나 기다려야 하는겨.
가끔 AliExpress 를 통한 놀이는 기다림이 대부분인것 같습니다.
기다리다가 열정이 식어버려, 다시 끌어올리는데 시간이 많이 걸리는 경우가 있어요.
5. 구입 - 또다른 DIP to SOIC converter
이제 정확한 제품 규격을 알게 되었으니 제대로 구입합니다.
제품명에 "Universal" 이라는 문구가 왠지 신뢰갑니다.
* Universal Adapter Sockets SOP8 SOP 8 to DIP8 DIP 8 for all Programmer 200 208 mil
드.디.어! 정확한 converter 가 도착 했습니다.
대충 포장되어 있더라도 상관 없습니다.
아아아아아! 이거 얼마나 걸린거야.
6. 최종 모습
겨우 최종 결과 모습이 되었습니다.
별것도 아닌것 같은데 너무 오래 걸렸네요.
USB 보드 + DIP to SOIC adapter + ATtiny85 구성 입니다.
모두 합체하면 이렇게 되죠.
FIN
여기까지 오는데 너무 힘을 빼서, 실제 Arduino IDE 를 이용한 program uploading 은 다음 편에서 다루도록 하겠습니다.
1. 시작
쌤소나이트에서 2005년, 그러니까 지금으로부터 거의 13년전에 구입한 여행가방이 있습니다.
가방에 붙어있는 정식 명칭은 "SAHO SPIN .55" 인데, 너무 오래되서인지 구글 이미지에 검색도 되지 않는군요.
잘 쓰고 있었는데, 휠 바퀴의 고무 부분이 삭아서 진동과 소음이 심해졌습니다.
AS 센터의 글을 종합해 보면, 바퀴 한짝당 교환 금액이 대략 1만 5천원 가량 한답니다.
흠...
2. 가방의 정보
가방 안감의 지퍼를 열면, 안쪽에 다음과 같은 태그가 숨어 있습니다.
태그를 뒤집어 보면, 일련번호와 정식 명칭 정보가 부착되어 있습니다.
SAHO SPIN .55 라는군요.
너무 오래되서인지 구글 이미지에는 딱 맞는 제품이 보이지 않고,
부분적으로 플라스틱으로 구성된, 업그레이드 된 것처럼 보이는 제품이 겨우 검색됩니다.
이름이 SAHO 가 아니라 SAHORA 입니다.
교환될 상태를 보니, 본체와 고정되는 세트로 교환하고 싶으나 부품이 없는것 같고,
바퀴만 갈아보려고 크기를 알아봅니다.
대략 휠하우스 반지름이 26mm 정도 되니, 휠 직경이 50mm 정도면 될 것 같습니다.
비교적 고무가 남아있는 바퀴의 지름을 재어 보니 거의 50mm 군요.
휠의 두께는 18mm 정도 하는군요.
AliExpress 에서 검색해본 결과 여러가지가 검색되지만,
아래 제품이 가장 적당해 보이고 많이들 구입한 히스토리가 있습니다.
* Osmond 50x18mm Luggage Suitcase Replacement Wheels OD 50 1.97 Inch ID 6 W 18 Axles 30 Repair Set Lowest Price Bag Accessories
제품 설명도 실측한 정보랑 거의 동일합니다.
3. 구입 및 도착
가격이 좀 있다 보니, 무료배송이라 하더라도 항공으로 배송되어, 1주일만에 도착하였습니다.
한꺼번에 모두 갈려고 2세트, 바퀴 4개를 구입했습니다.
4. 교환
쌤소나이트의 휠들은 볼트/너트로 되어 있지 않고, 축의 철심 끝이 리벳처럼 뭉틍그려져서 고정되는 방식입니다.
그래서 바퀴 교환을 위해서는 철심을 절단할 수밖에 없는 구조입니다.
줄질을 열씸히 하다보면 절단이 되고 분리가 됩니다.
철심 한쪽의 head 는 플라스틱 고정 모양과 같이 사각형 모양을 하고 있어서,
바퀴의 힘으로 축이 돌아가거나 느슨해 져서 풀리는 것을 애초에 방지하고 있습니다. 꼼꼼히도 만들어 졌네요.
이정도의 철심을 잘라야 하는지라, 4개를 다 자르게 되면 팔과 어깨가 뻐근합니다.
별로 일도 아닐것 같지만, 이거 하고 피곤해서 바로 10시간을 잤더랬습니다.
바퀴를 분리하면 휠베이스 안쪽에 부품 넘버가 있습니다.
"HI-W10501 I 6" 처럼 보입니다만.... 알아봤자 필요 없는 정보 되겠습니다.
교환용 바퀴와 와셔를 안쪽에 끼워주고, 배달되어 온 축으로 고정한 다음, 한쪽을 아래처럼 나사로 고정합니다.
나사 안쪽에 순간접착제를 넣어서, 고정 후, 혹시 모를 풀림을 방지했습니다.
비교적 정상인 하나 남은 바퀴 하나와 비교샷 입니다.
구조는 거의 동일하군요.
표면 고무가 벗겨져 나간 바퀴와 비교적 정상인 바퀴의 비교 입니다.
홀라당 벗겨져 있네요.
짜잔~~~ 모두 교환한 샷 입니다.
어이쿠 허리야.
기존 제품의 깔끔함과는 비교할 수 없겠지만, 다시 되살아난 바퀴의 기능과 비교하면 DIY 할만 합니다.
제품을 모르는 사람이면, 기성 부품이라고 생각이 될 정도입니다.
적출된 바퀴들 입니다.
속에 끼어 있던 먼지와 때가 같이 나왔습니다. 으웩!
FIN
아래는 완성 동영상 입니다. 시원스럽게 잘 굴러가네요. 아 기분 좋아.
사실 다른 Samsonite 가방의 바퀴 2개가 먼저 고장났을 시,
교환하고 싶어 AS 센터 및 해외 Samsonite 웹사이트를 뒤져서 알아 봤으나, 너무 오래된 제품이라 제고 부품을 찾을 수가 없었습니다.
이 제품도 바퀴가 고장나고 확인해 보니 마찬가지였죠.
DIY 밖에 없다고 생각하고 AliExpress 를 뒤져보니 비슷한 규격이 있어서 교환하게 되었습니다.
교환된 바퀴로 가방에 새생명이 불어 넣어진 느낌입니다.
조금 아쉬운 점은, 직경 55mm 바퀴가 있으면 보다 잘 맞을듯 한데, 55mm 바퀴는 없더라구요.
모두 즐거운 DIY 하세요~.
'Life' 카테고리의 다른 글
Life | iPhone 6S Plus 밧데리 교환 DIY (0) | 2018.05.19 |
---|---|
Life | 세면대 파이프를 교환해 보자 (0) | 2018.05.13 |
Life | 중국의 Xiamen 방문기 (0) | 2018.03.29 |
DIY | 캠핑용 화로대를 업그래이드 해보자 (0) | 2018.03.06 |
Life | 샤오미 미밴드 1S 손목밴드 교환기 (0) | 2018.02.04 |