'아두이노'에 해당되는 글 91건

  1. 2017.07.29 Hardware | 저항을 구매해 보자
  2. 2017.07.29 Hardware | DS18B20 온도센서 17
  3. 2017.07.23 Hardware | Arduino Micro 구입기
  4. 2017.07.12 Hardware | AM2322 Temperature & Humidity Sensor
  5. 2017.07.09 Hardware | Arduino 의 Sensor Shield 사용해 보기
  6. 2017.07.08 Hardware | Arduino 로 Servo 를 움직여 보자
  7. 2017.07.03 Hardware | 금속탐지기를 조립해 보자
  8. 2017.06.28 Hardware | YF-S201 water flow sensor 가지고 놀기 4
  9. 2017.06.25 Hardware | Arduino 로 Photoresister 가지고 놀기 - 1
  10. 2017.05.07 Hardware | HC-SR501 PIR motion sensor

Hardware | 저항을 구매해 보자

|

1. 저항이 필요해

저항은 센서를 구동함에 있어 전압을 맞추기 위해 여러모로 필요합니다.

특히 LED 나 온도센서들은 민감해서 꼭 저항이 필수 입니다.


Arduino 취미에 있어서는 몇개쯤 구입해 놔야겠죠?

(콘덴서도 필요한데...)




2. 저항의 종류

AliExpress 에서 쉽게 찾아볼 수 있는 저항에는 두가지가 있습니다.

우리가 학교다닐 때 쉽게 접했던 누런색 바탕의 저항이 "탄소" 저항입니다.

요즘 전자기기를 분해해 보면 파란색 바탕의 저항이 "메탈" 저항입니다.


어떤것을 구매하는게 좋을까요? 찾아 봤습니다.


* 탄소 피막 저항

저렴하고 널리 쓰이는 유형으로 세라믹 기판에 탄소화합물 피막을 입힌 것.

열에 의한 값이 변하여, 정확도가 중요한 회로에서는 메탈 피막 저항기를 대체해서는 안된다고 합니다.


* 메탈 피막 저항

세라믹 봉에 금속 박을 얇게 증착시키고 홈을 파서 저항으로 만든 것.

1%의 정밀도도 쉽게 낼 수 있으며 온도에 따른 성능 변화도 적습니다.

하늘색 바탕에 색띠가 다섯 줄이면 1% 금속 피막 저항이라고 생각하셔도 좋습니다.


다만 와트 수를 높이기가 무척 어렵다는 것이 단점이라고 합니다.


시중에서도 1/8, 1/4, 1/2W까지는 비교적 쉽게 구할 수 있으나,

1W의 것은 찾기 어렵고, 2W이상은 생산되지 않는다고 보면 된다 합니다.


* 출처

http://blog.naver.com/casalsaudio/80061879019

http://blog.naver.com/paynoh/10171240920


자고로 "메탈 피막 저항"을 구매해야 하는군요.




3. 구매

AliExpress 에서 검색하면 많이 나옵니다.

저는 아래 재품을 구입하였습니다.


사실 300개라고 하지만, 저항이 여러가지라 그리 많은게 아닙니다.

테스트를 위해서는 가변저항을 향후 생각해 봐야겠네요.



무료배송에 이 가격이면 정말 고민이 되지 않습니다.




4. 도착

3주만에 도착했습니다. 그리 늦은건 아니죠.



같은 저항이 10개씩 묶음으로 들어 있습니다.



펼쳐봤습니다.



저항 종류는 다음과 같습니다.


10Ω  22Ω  47Ω 100Ω  150Ω  200Ω  220Ω  270Ω  330Ω
470Ω  510Ω  680Ω  1KΩ  2KΩ  2.2KΩ  3.3KΩ  4.7KΩ  5.1KΩ  6.8KΩ
10KΩ  20KΩ  47KΩ  51KΩ  68KΩ  100KΩ  220KΩ  300KΩ  470KΩ  680KΩ  1MΩ


왠만한 회로에서 여구하는 것은 다 있는것 같아요.




5. Sampling

LED 하면서 사용한 220Ω 을 측정해 봤습니다.

그리 나쁘지 않네요.



동일한 값의 다른 저항도 측정해 보니 비슷합니다.



그럼 조금 큰값인 2.2kΩ 을 측정해 봤습니다.



쓸만 한것 같습니다.




FIN

콘덴서는 한국제품 (예를 들면 삼양) 이 좋다고 하여 국산을 사보려 합니다.


And

Hardware | DS18B20 온도센서

|

1. 온도 센서

지금까지 온도센서를 4개 구동시켜 봤습니다.


* 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


온도라는 것은 생물이 살아가는 지구 환경의 특성을 나타내주는 중요한 바로메터 이기 때문에

시장에는 사용 용도에 따라서 여러 센서가 존재하는 듯 합니다.


이제 5번째 센서를 구동시켜보기로 합니다.




2. 수온 측정용 온도센서

물의 온도를 측정하기 위해서는 방수가 되어야 합니다.

알루미늄 방수캡으로 커버된 온도센서가 "DS18B20" 입니다.


원래는 아래 그림처럼 Dallas사에서 만든 세발달린 칩으로 되어 있습니다.



그것을 알루미늄 캡과 고무로 실링을 한 제품입니다.



데이터쉬트는 다음과 같습니다.


DS18B20.pdf


사양을 보면, 중간에 저항을 넣어줘야 하는 군요.

센서가 타버리지 않게 꼭 저항을 챙기도록 합니다.





3. 주문

오늘도 AliExpress 에서 구매합니다.


https://ko.aliexpress.com/item/1pcs-DS18B20-Stainless-steel-package-1-meters-waterproof-DS18b20-temperature-probe-temperature-sensor/32467815969.html





4. Layout

데이터쉬트에 표기되어 있듯이 "저항"을 꼭 챙기도록 합니다.



Datasheet 를 보면 3~5V 에서 구동한다고 되어 있으므로, Arduino Nano 에서는 3.3V 단자에 연결했습니다.


  DS18B20 | Arduino Nano
------------------------------
   Black  |     GND
    Red   |     3.3V (4.7k Ohms)
   White  |     D2 (4.7k Ohms)
------------------------------


빵판 모습은 다음과 같습니다.



Pullup 저항도 달아 줍니다. 이 pullup 저항이 왜 중요한지는 이 글의 마지막에 적어 놨습니다.

AliExpress 에서 구매한것 치고 4.7k Ohms 는 꽤나 정확하네요.



미지근한 물, 냉장고의 물, 급탕기로 뎁힌 뜨거운 물을 준비합니다.

자, 이제 준비 완료 입니다.







5. IDE Sketch

유명한 센서라서 여러 사이트에서 소개되고 있습니다.


가장 간단한 스케치는 다음과 같습니다.

https://create.arduino.cc/projecthub/TheGadgetBoy/ds18b20-digital-temperature-sensor-and-arduino-9cc806


- OneWire Library : https://github.com/PaulStoffregen/OneWire

- DallasTemperature Library : https://github.com/milesburton/Arduino-Temperature-Control-Library


/********************************************************************/
// First we include the libraries
#include <OneWire.h>
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices 
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
/********************************************************************/
void setup(void)
{
 // start serial port
 Serial.begin(9600);
 Serial.println("Dallas Temperature IC Control Library Demo");
 // Start up the library
 sensors.begin();
}
void loop(void)
{
 // call sensors.requestTemperatures() to issue a global temperature
 // request to all devices on the bus
/********************************************************************/
 Serial.print(" Requesting temperatures...");
 sensors.requestTemperatures(); // Send the command to get temperature readings
 Serial.println("DONE");
/********************************************************************/
 Serial.print("Temperature is: ");
 Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"? 
   // You can have more than one DS18B20 on the same bus. 
   // 0 refers to the first IC on the wire
   delay(1000);
}



cactus.io 에서 제품 자체의 시리얼 넘버까지 친절하게 보여주는 소스는 다음과 같습니다.

http://cactus.io/hookups/sensors/temperature-humidity/ds18b20/hookup-arduino-to-ds18b20-temperature-sensor


"cactus_io_DS18B20.h" 라이브러리는 다음 링크에서 다운받으면 됩니다.

cactus_io_DS18B20.zip


/* Example sketch for Maxim Integrated DS18B20 temperature sensor Written by cactus.io, and requires the cactus_io_DS18B20 library. This sketch was tested using the Adafruit Prewired DS18B20 Sensor. For hookup details using this sensor then visit http://cactus.io/hookups/sensors/temperature-humidity/ds18b20/hookup-arduino-to-ds18b20-temperature-sensor */ #include <cactus_io_DS18B20.h> int DS18B20_Pin = 2; //DS18S20 Signal pin on digital 2 // Create DS18B20 object DS18B20 ds(DS18B20_Pin); void setup() { ds.readSensor(); Serial.begin(9600); Serial.println("Maxim Integrated DS18B20 Temperature Sensor | cactus.io"); Serial.println("DS18B20 Serial Number: "); // we pass the serial number byte array into the printSerialNumber function printSerialNumber(ds.getSerialNumber()); Serial.println(""); Serial.println(""); Serial.println("Temp (C)\tTemp (F)"); } void loop() { ds.readSensor(); Serial.print(ds.getTemperature_C()); Serial.print(" *C\t"); Serial.print(ds.getTemperature_F()); Serial.println(" *F"); // Add a 2 second delay. delay(2000); } // We call this function to display the DS18B20 serial number. // It takes an array of bytes for printing void printSerialNumber(byte *addr) { byte i; for( i = 0; i < 8; i++) { Serial.print("0x"); if (addr[i] < 16) { Serial.print('0'); } Serial.print(addr[i], HEX); if (i < 7) { Serial.print(", "); } } }




6. 결과

실제로 "실내 공기 > 미지근한 물 > 냉장고의 차가운 물 > 급탕기로 뎁힌 물" 을 차례로 측정한 온도 변화 입니다.



동영상으로도 찍어 봤습니다.



전체 과정은 아래 동영상 입니다.



잘 되네요!




7. 주의

처음에 GND 와 VCC를 서로 바꿔 연결했더니만, 온도센서쪽이 불덩이가 되었습니다.

잠깐 만지기만 해도 손이 데일 정도였으니, 100도이상 순식간에 올라갔던 것 같습니다.


다행이 식힌 다음 제대로 연결했더니 센서 동작에는 문제가 없었습니다.

다른 센서들은 핀 연결을 잘못해도 문제가 생길 여지가 없는데, 이 센서는 왜 pullup 저항을 달아 놓는지 조금 이해가 갈 것 같습니다.




FIN

5개째 온돈세서 구동기였습니다.

더이상 다른 온도 센서는 없겠지?


And

Hardware | Arduino Micro 구입기

|

1. CH340

Arduino Nano 를 두개 구입합니다.


* Hardware | Arduino 구입기

- http://chocoball.tistory.com/entry/Hardware-Arduino-%EA%B5%AC%EC%9E%85%EA%B8%B0


* Hardware | Arduino nano 조립기

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


Arduino Nano 의 clone 제품을 AliExpress 에서 구입해서 잘 쓰고 있었습니다.

전혀 문제가 없었죠.


다만, CH340 이라는 interface 칩이 오리지널과 가장 다른 점이고,

여러 사이트에서 보면, 중국 클론 제품을 활용하려면 이 "CH340" 드라이버가 문제의 많은 부분이었습니다.


그러던 중, PC 의 BIOS 날려먹고 Arduino로 복구하고자 여러가지 시도를 합니다.


* Hardware | Flash ROM 복구기

http://chocoball.tistory.com/entry/Hardware-flashROM-fix


그러나, 어느 사이트에선가 이 "CH340" 칩이 문제의 원인이라고 나와 있더군요.

또한 중국 클론 제품을 이용하여 BIOS 복구 프로그램인 "flashrom" 프로그램을 제대로 돌린 케이스를 찾을 수가 없었습니다.


이쯤해서 결론은, BIOS 복구하는 flashrom 을 돌리려면 정품 Arduino 이 필요하다는 결론이 납니다.


이제 Arduino 정품을 구할 때가 되었습니다.




2. Micro

정품 Arduino Nano 를 구입하려고 시도합니다.

한국에서는 중국 클론 제품만 팔고 있고, 정식 사이트 가면 22 USD 입니다.



이럴꺼면 Flashrom 기계를 사겠어요.

혹시나 Taobao 에서 구매 가능한지 알아 봅니다.



2만 8천원.

배송비까지 포함하면 배보다 배꼽이 더 커집니다.


폭풍 검색 중, 오잉?!!!

AliExpress 에서 CH340 을 쓰지 않는 Arduino Micro 정품을 팔고 있네요?


그건 다름아닌 "Arduino Micro" !!!


https://ko.aliexpress.com/item/Hot-Sale-High-Quality-Micro-R3-ATmega32u4-Microcontroller-Board-With-USB-Cable-For-Arduino/32645790480.html


Arduino 계열 정품을 팔지 않는 AliExpress 에서 빙고 입니다.

(너무 잘만든 카피품 일 수도 있지만)


가격도 7 USD 정도. 1/3 가격 이하네요.

바로 주문합니다.





3. 도착

도착은 1주만에 왔습니다. 조금 가격이 있다보니 air mail 로 왔네요.

도착샷 입니다.



뽁뽁이에 잘 포장되어서 왔습니다.



정말 정품처럼 잘 포장되어 왔네요.

USB 연결은 안드로이드 연결하는데 많이 쓰이는 Micro-B 5 Pin 입니다.

참고로 Arduino Nano 클론 제품은 Mini-B 5 Pin 였습니다.



다행이 케이블이 동볼되어 있어서 바로 확인할 수가 있네요.



보드 위에 프린팅도 선명하게 잘 되어 있습니다.



뒷면도 인터넷에서 보이는 것과 완벽히 동일해 보입니다.


굿 shopping.




4. IDE 에 연결해 보기

Windows 에 연결하면 자동으로 driver 를 찾아 줍니다.



IDE 에서 "Tools > Board" 에서는 "Arduino/Genuino Micro" 를 선택합니다.



Port 는 아까 드라이버 인스톨시 보였던 "COM9 (Arduino/Genuino Micro)" 를 선택해 줍니다.



Tools > Get Board Info 를 보면 잘 인식하네요.



Windows 장치 관리자에서도 잘 인식합니다.



Linux 에서도 인식이 잘 되나 꼽아 봤습니다.



"Arduino LLC Arduino Micro" 로 검색되고,

USB device 로는 "/dev/ttyACM0" 로 연결 되었습니다.


참고로 Arduino Nano clone 제품은 "/dev/ttyUSB0" 로 인식하는 것이 다른 점 입니다.



특이한 점은 보드 밑부분에 전원 연결 확인용 푸른 LED 가 켜진다는 점입니다.


아래는 동작 동영상 입니다.

기본으로 fade 되는 LED 점등 sketch 가 upload 되어 있었습니다.

참 멋지게 점등되었는데, 다른 sketch 실험하느라 지워져 버렸네요.


할수 없이 IDE 들어가 있는 기본 blink sketch 를 동작시키는 동영상 입니다.





FIN

중국 Arduino 정식 제품도 파네요 !!!

And

Hardware | AM2322 Temperature & Humidity Sensor

|

1. 온도 센서

온도를 측정할 수 있는 센서는 매우 다양하게 있습니다.

아래 링크들은 지금까지 실험해본 센서들 입니다.


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

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


* Hardware | BME280 sensor

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


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

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



생각보다 온도 센서들이 다양하게 있습니다.

그러던 중 SHT 계얄과 AM 계열이 또 있다는 것을 알게 되었죠.


그럼 어떤게 더 좋을까 찾아 봤습니다.

정확면에서는 AM 계열이 좋다는 글을 어디선가 보았습니다.


각 온도 센서들을 비교한 사이트도 있습니다만, AM 계열은 다루기가 까다롭다는 것을 알 수 있었습니다.

(측정을 위해 연속 측정하지 않고, reset 해야 하는 등)


http://3. - https://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html


그렇다면, 일단 AM2321 을 구입하기로 하고 AliExpress 를 뒤져 봅니다.


옷!!!

새로운 버전인 AM2322가 나와 있네요.


https://ko.aliexpress.com/item/1pcs-AM2321-digital-temperature-and-humidity-sensors-can-replace-SHT21-SHT10-SHT11/32324748233.html



센서 계열에서 3 USD 이상이면 고가에 속합니다.

하지만 구입합니다. 당연히 배송은 무료 입니다.




2. 도착

약 한달 반 정도 걸린것 같습니다.

오래 기다렸네요.


받고 바로 드는 생각은, "작다" 였습니다.




보통 빵판의 핀 사이의 거리가 "2.54 mm" 인데, 이 센서의 다리 간격이 "1.27 mm" 입니다.

연결을 어떻게 해야할지 고민됩니다.


결국 adapter 를 살까 하다가, 주문하고 기다리는 것을 참을 수가 없어 다리를 구부리기로 합니다.

까딱 잘못하다가는 다리가 날라갈 수가 있습니다.


참고로 1.27 to 2.54 어뎁터는 아래 사이트에서 판매합니다. (거의 안파는 듯)


http://www.proto-advantage.com/store/product_info.php?products_id=2700037



향후를 위해서는 꼭 구하고 십지만, 7 USD 입니다. 배보다 배꼽이 더 큰 현실.




3. Spec.

스펙은 아래 datasheet 를 참고하세요.


AM2322_datasheet.pdf


이번 계기로, 중국어 공부에 대해서 심각하게 고민하게 되었습니다.


다행히 AM2320 에 대한 자료나 소스는 많아서, 비슷하다고 생각하고 진행해 봅니다.




4. Layout

Pin 배열은 다음과 같습니다.

판매자 사이트에 설명이 나와 있습니다.


  AM2322 | Arduino Nano
-------------------------
   Pin 1 |     3.3V
   Pin 2 |      A4
   Pin 3 |     GND
   Pin 4 |      A5
-------------------------



보드 구성은 다음과 같아요.



리드선의 피치가 작아서 아래처럼 할수 없이 다리들을 엇갈리게 구부렸습니다.




다리를 서로 간섭이 안생기도록 벌리고, 클립으로 리드선과 연결해 주었습니다.



최종 연결한 모습 입니다.

불안하게 연결되어 있어서 센서와의 통신도 자주 끊겨버리네요.


일단 동작 확인이 우선이므로, 정식으로 프로젝트 한다면 어뎁터가 꼭 있어야겠습니다.







5. Source

소스 코드는 아래 사이트를 참고하였습니다.


http://www.instructables.com/id/Connecting-AM2320-With-Arduino/


#include 
#include 
AM2320 th;

void setup() {
  Serial.begin(9600);
}

void loop() {
  switch(th.Read()) {
    case 2:
      Serial.println("CRC failed");
      break;
    case 1:
      Serial.println("Sensor offline");
      break;
    case 0:
      Serial.print("humidity: ");
      Serial.print(th.h);
      Serial.print("%, temperature: ");
      Serial.print(th.t);
      Serial.println("*C");
      break;
  }

  delay(200);
}


위의 사이트 말고도 여러 사이트를 참고하실 수 있습니다.


https://github.com/hibikiledo/AM2320

https://github.com/Ten04031977/AM2320-master




6. 결과

IDE 의 Sensor Monitor 를 통해 본 결과 입니다.



결과가 잘 나옵니다.

습도가 점점 올라가는 것은, 예상 하셨듯 입김을 불어 넣어준 결과 입니다. 잘 반응하네요.






FIN

어? 또다른 온도 센서가 하나 더 있네 ?!!!



And

Hardware | Arduino 의 Sensor Shield 사용해 보기

|

1. 가위손

Arduino 를 하면서 빵판에 선을 꼽고 있으면 스파게티가 됩니다.


이를태면 이런거거죠.


- 출처 : http://anycpu.org/forum/viewtopic.php?t=143




2. Sensor Shield

하나의 Arduino nano 에 여러 센서들을 연결하게 되면, GND / 5V 를 여러 센서들이 공유해서 사용해야 해서

다음과 같은 문제가 발생할 수 있습니다.


- 선이 복잡해 진다

- 전원의 전압 강하될 가능성이 있다

- Arduino 의 전력부에 부하를 준다


등의 문제가 될 수 있겠습니다.


이를 해결하기 위한 쉴드가 다음 사진 입니다.



Arduino nano 전용 sheild 입니다.




3. 주문

Aliexpress 에서 주문합니다.


- URL : https://ko.aliexpress.com/item/For-Arduino-Nano-V3-0-Prototype-Shield-I-O-Extension-Board-Expansion-New-Module/32459623962.html




eBay 에서는 약 3~9 USD 정도 합니다.

그럼 Aliexpress 에서도 찾아 봅니다.


1.12 USD 에 무료 배송... 갓알리 입니다.




4. 도착

도착후 샷 입니다.

메뉴얼은 없고 단순히 보드 하나만 있습니다.



뒷면입니다.

Deek-Robot / DK-NANO-003 V3.0 이라고 적혀 있습니다.





5. 체결

결합전 샷 입니다.



합체 ~~!!!



전원 인가 모습.

잘 동작되는 것 같습니다.





6. 사양

Aliexpress 에서는 clone 제품을 많이 팔지만, 메뉴얼이나 자세한 설명은 없습니다.


어떤 전원을 꼽아야 하는지 알지 못하여 Googling 하였습니다.

완전히 같은 제품은 아니지만, 구성품이 거의 동일하여 동일한 사양일 듯 합니다.


Keyes - Funduino Uno and Nano Multi Purpose Shield V3.pdf




입력은 7~12V 사이가 적정하네요.




7. 연결해 보기

Servo 모터 두개를 달고 있는 Gimbal 미조립품이 있습니다.

이는 Kickstarter 에서 펀딩하고 받은 prototype 입니다.


- Servo 소개 글 : http://chocoball.tistory.com/entry/Hardware-Arduino-Servo


이 Gimbal 에는 두개의 Servo 모터가 들어갑니다.

각 Servo 모터는 5V / GND 와 digital pin 하나가 필요합니다.


이번에 구입한 Sensor Shield를 이용하여 간단하게 연결해 볼까요?



사진에서 보이듯, 각 signal pin 에 GND / 5V 핀이 바로 옆에 있어

배선이 깔끔해 집니다.


두개의 Servo 를 연결했을 때의 사진 입니다.

깔끔하죠?!!!



전원을 넣으면 각 pin 을 통해 5V 전원도 인가되고 GND 도 동작합니다.

그래서 각 센서에서 Arduino 의 5V / GND 에 따로 연결할 필요가 없습니다.


전원 인가하니 잘 동작 합니다.


동시에 두개의 Servo 를 구동시킨 동영상 입니다.



좋네요 !!!




FIN

OLDE / 여러 Sensor / Motor 등을 하나의 Arduino 로 제어하고 싶을 때, 배선이 깔끔해 지겠습니다.

다른것도 해봐야지.

And

Hardware | Arduino 로 Servo 를 움직여 보자

|

1. Servo

보통 전원만 들어오면 한쪽으로만 도는 모터도 있지만,

무선 조정 자동차 등에 들어가는 전자 제어식 모터가 있습니다.

이 모터는 각도 및 방향을 지정할 수 있습니다.


이런 모터 중 하나가 Servo 입니다.


제가 가지고 있는 것은 따로 구입한 것은 아니고,

Kickstarter 라는 클라우드 펀딩에서 Gimbal 장비로 소개된 프로젝트에 투자하여 받은 장비에 있는 것입니다.


아래는 그 Kickstarter 프로젝트 소개 입니다.


Gimbal for your Lights Camera or Action

https://www.kickstarter.com/projects/2035152529/gimbal-for-your-lights-camera-or-action?ref=user_menu


요런겁니다.



카메라나 전등을 붙이고 원격에서 그 방향을 조절할 수 있는 장치 입니다.

단, 받은 장비는 Hardware 만 있고 Software 는 자기가 만들어야 하는 제품입니다.




2. 부품

Gimbal 에 들어가는 부품은 Futaba 의 다음 두개 입니다.


- S3010


- S3114



이제 이런 부품의 생산도 중국이네요.




3. Layout

Pin 배열입니다.

   Servo  | Arduino Nano
-------------------------
   Black  |     GND
    Red   |     5V
   White  |     D9
-------------------------


아래와 같이 연결하면 됩니다.





4. Source

Arduino IDE 에서는 "<Servo.h>" 라는 라이브러리를 제공해 주고 있습니다.

그래서 control pin 정보와 움직이고 싶은 각도만 입력하면 그대로 동작해요.


참 편하죠?


#include "Servo.h"
 
Servo myservo; // create servo object to control a servo
 
void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}
    
void loop(){   
  myservo.write(0);     // sets the servo at 0 degree position
  delay(1000);          // waits for the servo to get there
  myservo.write(90);    // sets the servo at 90 degree position
  delay(1000);          // waits for the servo to get there
  myservo.write(180);   // sets the servo at 180 degree position
  delay(1000);          // waits for the servo to get there
  myservo.write(90);    // sets the servo at 90 degree position
  delay(1000);          // waits for the servo to get there
}





5. 결과

소스를 올리고 전원을 넣으면 다음과 같이 움직입니다.



감시 카메라를 올리고 사용하려면 좀더 디테일한 움직임을 보여야 하는데,

일단 동작만 확인합니다.


Servo도 step motor 의 일종일 터인데,

지원 라이브러리로 편하게 동작시킬 수 있는게 좋네요.




FIN

좀더 연구해봐야 겠습니다.

And

Hardware | 금속탐지기를 조립해 보자

|

1. 해변

바다를 좋아하는 우리 가족은 일단 해변은 항상 가고싶은 장소이다.

금속 탐지기에 관한 Youtube 를 보면, 일단 해변이 나온다.


그렇다면, 나도 한번... 이라는 생각이 자연스럽게 들었다.


다만 여러가지 조사를 하는 과정에 만만치 않은 공부를 해야 하는 것을 알게 되었다.

또한 성능 좋은 금속 탐지기를 만들기 위해서는 그만큼 투자를 해야 하는 것도.


쉬운게 없습니다.

준비해야 할게 너무 많아 일단, 원리만 알고자 코일만 구입해 놓습니다.


https://ko.aliexpress.com/item/Newest-100m-Red-Magnet-Wire-Enameled-Copper-Wire-Roll-Magnetic-Round-Coil-0-2mm-Dia-Favorable/32716325725.html



도착은 했지만, 정작 시작을 못하고 있습니다.



생각보다 구리선이 가늡니다. 좀더 굵은게 더 성능이 좋을 듯 한데요.

고민에 빠집니다.




2. 엇?

기성품은 좋은 성능을 보여주는 대신 조금 많이 비쌉니다.

어떻게든 현실을 반영하여 DIY 쪽으로 마구마구 조사를 합니다.


마침 짱 성능 좋은 DIY 용품을 영국에서 판다고 하네요.

다만, 이것도 비쌉니다.


Arduino 를 이용하여 core coil 만 만들자고 계획을 세우던 와중에 아래 링크를 발견하게 됩니다.


https://ko.aliexpress.com/item/Metal-Detector-Scanner-Unassembled-Kit-Project-3-5V-DIY-Kit-Suite-Trousse-Boards-Module-Integrated-Circuits/32722475891.html



그 많은 고민들을 한방에 해결하는 DIY 제품이 있었네요.

고민하지 않고 바로 구입합니다. 항상 감사하는 무료 배송.




3. 도착

도착해서 구성품을 살펴 봅니다.

정말 간단합니다.



실패할 수도 있고, 백업용으로도 필요할 듯 하여 2개를 주문했습니다.

구성품은 정말 단촐합니다.



4. 조립

다른 전자 DIY 처럼 위치에 맞게 배치하고 납땜을 잘 하면 됩니다.

우선 알맞은 위치에 부품들을 끼워 주구요.



납땜하기 좋게 다리들을 벌려 줍니다.



전자 부품에 문제가 없는지 확인도 해 봅니다.

Tester 기도 좋지만, 저번에 만들어 놨던, Transister Tester 를 이용해 봅니다.

역시 여러 정보를 잡아 주네요.


Transister Tester 글은 다음을 참조하세요.

http://chocoball.tistory.com/entry/Hardware-Transistor-Tester


동봉된 캐페시터는 100㎌ 짜리가 92㎌ 정도 되니 그렇게 성능이 좋아 보이지는 않습니다.

그래도 싸고 간단한 맛에 하는 것이니 그냥 씁니다. 



실장을 모두 마쳤습니다.

부저와 콘덴서의 자리 간섭이 심하여 할수 없이 부저를 갸우뚱하게 납땜하였습니다.

그래도 문제는 없으니까요.



이쁘죠? 마음에 듭니다.



납땜이 끝난 뒷모습 입니다.



이제 + / - 리드선도 납땜해 줍니다.



전원 리드선은 밑으로 뽑는게 나을듯 하여 밑으로 뽑아 냈습니다.



동봉된 전원선이 너무 짧으니 연장선으로 쓸 마땅한 전선을 찾아 봅니다.

비행기 탔을 때 나누어 받았던 이어폰 줄을 사용해 보기로 합니다.


오늘의 희생양.



싹뚝 !!!



뜨헉 !!!

선이 얇고, 거기에 두가닥밖에 들어있지 않습니다.

그냥 나눠줄 만 하네요. 그나마 R/L 구분하기 위해 색이 입혀진 선이 있어서 2가닥 입니다.



다른 곳에서 USB 연장선을 잘라서 사용하도록 합니다. (사진 생략)

수축 튜브도 준비하고.



이쁘게 이어줍니다.



이제 전원을 연결해 줘야겠죠?

3V ~ 5V 로 구동되니, 1.5V 직렬로 연결해 주기 위해 건전지 2개를 이용합니다.



저번에 사 놨던 조그마한 스위치도 이용해 봅니다.

구입 URL 은 아래 입니다.

https://ko.aliexpress.com/item/10Pcs-Slide-Type-Switch-Module-1-Bit-2-54mm-1-Position-Way-DIP-Red-Pitch/32452842198.html



실제 모양은 다음과 같습니다.



한가지 단점은, 기판 위에 실장용이라서 전원선이나 건전지에 직접 납땜하려고 하면 잘 붙지 않습니다.

우선 작동 시험을 위해서 조립하고 있으므로, 절연테이프의 힘으로 꽁꽁 싸매어 고정해 줍니다.





5. 합체

이 금속 탐지기 본체만 가지고는 돌아다니면서 스켄할 수 없으므로, 편리한 도구가 없을까 주위를 살펴 봅니다.


올커니! 쓰지 않는 셀카봉!



요렇코롬 들어 있네요.



합체 준비 입니다.



짜잔~!!!

완성했습니다~!!!



이제 테스트, 테스트~!




6. 테스트

실내에서 동전을 마루에 깔고 테스트한 동영상 입니다.



잘 동작 합니다. 신기하기도 하네요.

중간에 잘 인식이 안되는 것은 건전지쪽에 붙여놓은 스위치 접점이 확실하게 고정이 안되어서 그렇습니다.

고정이 잘 되면 인식이 잘 됩니다.


완성된 후, 저녁밥 먹기 전에 아파트 놀이터 모래에서 시험해 봤습니다.

한 30분 했으나 득탬은 하지 못했습니다.


알고보니 며칠 전, 모래 검수 후 다 교체했다 하네요...




7. 개선

여기서 끝날 수는 없습니다.

아래는 향후 개선할 사항들 입니다.


1. 전원선의 길이를 길게 한다.

2. 전원은 micro USB 를 이용하여 충전할 수 있게 한다.

3. core coil 을 보강하여, 더 넓고 깊은 곳까지 스켄할 수 있게 한다.


위의 세가지를 보강하는 계획을 짜 봅니다.




FIN

아 즐거웠다.

보강 내용을 가지고 upgrade 해봐야겠습니다.


And

Hardware | YF-S201 water flow sensor 가지고 놀기

|

1. 이런 센서도 있네?

향후 집도 짓고 배관 시설도 공사도 해야 해서 "Water Flow Sensor" 를 익힐 필요가 있습니다.


...라는건 뻥이구요 (집 짓는게 장래 희망은 사실), Arduino 로 할 수 있는 센서는 어떤게 있을까 찾아 봤습니다.

"Water Flow Sensor" 라는게 있네요.


쓰임새는 액체가 흐르는 파이프에 설치하여 흐르는 양을 검출할 수 있는 센서 입니다.

요런거죠.





2. 구입

역시 Aliexpress 에서 구입 했습니다.

없는게 없죠?


https://ko.aliexpress.com/item/Water-flow-sensor-flowmeter-Hall-flow-sensor-Water-control-1-30L-min-2-0MPa-YF-S201/32583680601.html



3천원 미만으로 무료 배송이면 괜찮츄?




3. 도착 및 분해

도착 기념 샷 입니다.

구성은 단순하네요.



뒷면을 보니 흐르는 방향이 표시되어 있습니다.



내부가 궁금해 졌습니다.

나사 4개가 너무 눈에 띄게 만들어 졌네요. 분리해 봅니다.



물이 들어갈까봐 고무 패킹에 잘 둘러쌓여 있습니다.



호스 부분은 프로펠러가 달려 있어서 회전하게 되어 있습니다.

회전축에 자석같은게 붙어 있어서, 이 부분이 상판 회로의 센서와 hall effect 를 검출하는 것 같습니다.



상판 회로는 잘 분리되어 있습니다.




4. Layout

Pin 연결은 다음과 같습니다.


  YF-S201 | Arduino Nano
-------------------------
  Red     |      5V
  Black   |      GND
  Yellow  |      D2
-------------------------



Hall effect 를 이용한 센서라고 하는데, 전자기를 이용한 방식인 듯 합니다.

그래서 그런지 digital 단자와 연결됩니다.


Hall effect 는 다음 Wikipedia 를 참고해 보세요.

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




5. Source

Code 는 다음과 같습니다.


출처는 아래 link 입니다.

https://diyhacking.com/arduino-flow-rate-sensor/

Code 소스는 아래 link 입니다.

http://diyhacking.com/projects/FlowMeterDIY.ino


/*
Liquid flow rate sensor -DIYhacking.com Arvind Sanjeev

Measure the liquid/water flow rate using this code. 
Connect Vcc and Gnd of sensor to arduino, and the 
signal line to arduino digital pin 2.
 
 */

byte statusLed    = 13;

byte sensorInterrupt = 0;  // 0 = digital pin 2
byte sensorPin       = 2;

// The hall-effect flow sensor outputs approximately 4.5 pulses per second per
// litre/minute of flow.
float calibrationFactor = 4.5;

volatile byte pulseCount;  

float flowRate;
unsigned int flowMilliLitres;
unsigned long totalMilliLitres;

unsigned long oldTime;

void setup()
{
  
  // Initialize a serial connection for reporting values to the host
  Serial.begin(38400);
   
  // Set up the status LED line as an output
  pinMode(statusLed, OUTPUT);
  digitalWrite(statusLed, HIGH);  // We have an active-low LED attached
  
  pinMode(sensorPin, INPUT);
  digitalWrite(sensorPin, HIGH);

  pulseCount        = 0;
  flowRate          = 0.0;
  flowMilliLitres   = 0;
  totalMilliLitres  = 0;
  oldTime           = 0;

  // The Hall-effect sensor is connected to pin 2 which uses interrupt 0.
  // Configured to trigger on a FALLING state change (transition from HIGH
  // state to LOW state)
  attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
}

/**
 * Main program loop
 */
void loop()
{
   
   if((millis() - oldTime) > 1000)    // Only process counters once per second
  { 
    // Disable the interrupt while calculating flow rate and sending the value to
    // the host
    detachInterrupt(sensorInterrupt);
        
    // Because this loop may not complete in exactly 1 second intervals we calculate
    // the number of milliseconds that have passed since the last execution and use
    // that to scale the output. We also apply the calibrationFactor to scale the output
    // based on the number of pulses per second per units of measure (litres/minute in
    // this case) coming from the sensor.
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;
    
    // Note the time this processing pass was executed. Note that because we've
    // disabled interrupts the millis() function won't actually be incrementing right
    // at this point, but it will still return the value it was set to just before
    // interrupts went away.
    oldTime = millis();
    
    // Divide the flow rate in litres/minute by 60 to determine how many litres have
    // passed through the sensor in this 1 second interval, then multiply by 1000 to
    // convert to millilitres.
    flowMilliLitres = (flowRate / 60) * 1000;
    
    // Add the millilitres passed in this second to the cumulative total
    totalMilliLitres += flowMilliLitres;
      
    unsigned int frac;
    
    // Print the flow rate for this second in litres / minute
    Serial.print("Flow rate: ");
    Serial.print(int(flowRate));  // Print the integer part of the variable
    Serial.print(".");             // Print the decimal point
    // Determine the fractional part. The 10 multiplier gives us 1 decimal place.
    frac = (flowRate - int(flowRate)) * 10;
    Serial.print(frac, DEC) ;      // Print the fractional part of the variable
    Serial.print("L/min");
    // Print the number of litres flowed in this second
    Serial.print("  Current Liquid Flowing: ");             // Output separator
    Serial.print(flowMilliLitres);
    Serial.print("mL/Sec");

    // Print the cumulative total of litres flowed since starting
    Serial.print("  Output Liquid Quantity: ");             // Output separator
    Serial.print(totalMilliLitres);
    Serial.println("mL"); 

    // Reset the pulse counter so we can start incrementing again
    pulseCount = 0;
    
    // Enable the interrupt again now that we've finished sending output
    attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
  }
}

/*
Insterrupt Service Routine
 */
void pulseCounter()
{
  // Increment the pulse counter
  pulseCount++;
}



6. 측정

당장 물 호스를 연결할 수가 없어, 입으로 바람을 불어 봅니다.

잘 되네요 !!!



Serial Monitor 로 결과를 보면 아래와 같습니다.

신기하게 잘 잡힙니다.



Flow rate / 흐르는 양 / 총량을 계산해 줍니다.

원작자가 소스코드를 잘 짜신것 같습니다.




FIN

이제 집만 지으면 될 것 같습니다.

And

Hardware | Arduino 로 Photoresister 가지고 놀기 - 1

|

1. Photoresistor

광원을 받으면 저항값이 바뀌는 소자가 photo-resistor 입니다.

다른 말로는 Light Dependent Resisor (LDR) 이라고도 합니다.


빛을 받으면 저항값이 내려가고, 어두워지면 저항값이 올라가는 반응을 이용합니다.



보통, 어두워지면 자동으로 전기가 켜지는 가로등에 많이 쓰이고 있죠.



저번에 했던 motion sensor 에, 이 photoresistor 를 추가하여 개조하기 위해 구입해 봅니다.


http://chocoball.tistory.com/entry/Hardware-HCSR501-PIR-motion-sensor




2. 구입 및 도착

AliExpress 에서 "GL5528" 로 검색하면 보편적인 Photoresistor 가 검색됩니다.


https://ko.aliexpress.com/item/20Pcs-Photo-Light-Sensitive-Resistor-Photoresistor-5528-GL5528/1852500725.html



무료배송이 행복합니다.


배송까지 약 2주정도 걸렸습니다.

요즈음은 대략 2주정도 걸리는군요.



실물은 이렇게 생겼습니다.



구글에서 보던 줄이 더 촘촘하고 긴 모듈을 상상했으나,

조금 간단한 제품입니다.




3. Layout

Pin 연결은 다음과 같습니다.

특이한건, 저항과 Photoresistor 연결점을 A0 로 한다는 것 정도 입니다.


 Photoresistor | 
-------------------------------
      +        |      A0
      +        |   220 ohm (1)
      -        |      GND
-------------------------------

  220 ohm (1)  | 
-------------------------------
      +        | Photoresistor
      -        |      GND
-------------------------------

 
    LED    | 
----------------------------------
     +     |     D8
     -     |  220 ohm (2) -->  GND
----------------------------------




4. Code

Source code 입니다.


//photoresistor A Style Tech.

int Pr = 0; // will be used for analog 0.
int PrValue = 0; // value of output
int Pr_Input = 10; // value of when light is on

void setup() {
  Serial.begin(9600); //start serial Monitor
  pinMode(8, OUTPUT); // pin 8 as output
}

void loop() {
  PrValue = analogRead(Pr);
  Serial.println(PrValue); //prints photoresistor value
  delay(100); // value updated every 0.1 second.

  if (PrValue < Pr_Input) {
    digitalWrite(8, HIGH);
  } else {
    digitalWrite(8, LOW); }
}




5. 구동

구동 잘 되네요.



IDE의 Serial Monitor 로 확인해본 결과 입니다.

10 이하의 값이 나오는 경우는 손으로 photoresistor 를 막아서 빛을 못받게 하는 상황입니다.

이때 LED 가 켜지죠.



잘 되쥬?



나름 재미 있네요.




FIN

이제 뭘하지?

And

Hardware | HC-SR501 PIR motion sensor

|

1. 시작하기

Motion sensor 를 이용하여, 사람을 감지하는 모듈을 만들어 보고싶었습니다.

오늘은 기본 구동 확인만 해 봅니다.


역시 구입은 AliExpress 죠!

이게 어떻게 1000원정도로 구입할 수 있는지, 감사할 따름입니다.



원리는 이렇다고 합니다.



Datasheet 입니다.

HC-SR501-PIR-Sensor-Datasheet.pdf



2. 외관

도착한 센서를 찍어 봤습니다.



커버 안에 센서가 보입니다.

커버를 통하여 넓은 범위를 커버하기 위함이라 합니다.





뒷면




3. 참고

보드를 보면 부품 실장이 되지 않은 부분이 있습니다.



바로 Photoresistor socket 과 Thermistor socket 입니다.

Photoresistor 를 실장하면, 동작하는 조건을 낮/밤 구분해서도 할 수 있을것 같습니다.


좀더 찾아보니, Photoresistor 를 같이 파는 사이트도 있는걸 보니, 실 구동도 가능해 보입니다.



Photoresistor 는 GL5528 이라는 규격을 사용하면 되겠네요.

다른 규격들을 살펴 보면, Ligth Resistance 와 Dark Resistance 가 다르네요.

나중에 기회되면 Photoresistor 를 추가하여 구축해보겠습니다.



Photoresistor 의 datasheet 입니다.

GL55 Series Photoresistor.pdf


Thermistor 에 대한 정보는 찾을 수가 없었습니다.

뭔가 알게되면 update 할께요.


또한, jumper 를 이용하여 모드를 변경할 수 있습니다.

여러 회사에서 제조되는 관계로 이 jumber 부분에 pin 이 실장되지 않는 제품들도 있더군요.

다행히 제가 구매한 제품은 점퍼가 살장되어 있었습니다.



Sensitivity 와 Time Delay 조정은 다음과 같이 합니다.






4. Sketch

회로 구성 및 정보는 아래 사이트를 참고하였습니다.

http://henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/arduino-hc-sr501-motion-sensor-tutorial/


Pin 배열 정보 입니다.

HC-SR501 PIR sensor | Arduino Nano
----------------------------------
         S          |     D8
         +          |     5V
         -          |     GND
----------------------------------

    Piezo busser    | Arduino Nano
----------------------------------
         S          |     D11
         +          |     5V
         -          |     GND
----------------------------------

Sketch 정보입니다. 여기저기 source 보고 짜집기 했습니다.

/*******************************************************

Uses a PIR sensor to detect movement, sounds a buzzer

*******************************************************/
//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;

int ledPin = 13; // choose the pin for the LED
int inputPin = 8; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
int pinSpeaker = 11; //Set up a speaker on a PWM pin (digital 9, 10, or 11)

void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
pinMode(pinSpeaker, OUTPUT);

//give the sensor some time to calibrate
Serial.begin(9600);
Serial.print("Calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println(" Done!");
  Serial.println("SENSOR is ACTIVE now");
  delay(50);
}

void loop() {
  val = digitalRead(inputPin); // read input value
  if (val == HIGH) { // check if the input is HIGH
    blinky(); // blink LED when motion haas been detected
    // digitalWrite(ledPin, HIGH); // turn LED ON
    playTone(300, 160);
    delay(150);
    
    if (pirState == LOW) {
    // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    playTone(0, 0);
    delay(300);

    if (pirState == HIGH){
    // we have just turned off
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}

void playTone(long duration, int freq) {
  // duration in mSecs, frequency in hertz
  duration *= 1000;
  int period = (1.0 / freq) * 1000000;
  long elapsed_time = 0;

  while (elapsed_time < duration) {
    digitalWrite(pinSpeaker,HIGH);
    delayMicroseconds(period / 2);
    digitalWrite(pinSpeaker, LOW);
    delayMicroseconds(period / 2);
    elapsed_time += (period);
  }
}

void blinky() {
  for(int i=0; i<3; i++) {
    digitalWrite(13, HIGH);
    delay(200);
    digitalWrite(13, LOW);
    delay(200);
  }
}

빵판 구성입니다.



실제 구동하면서 Serial Monitor 입니다.



잘 동작합니다. 소리도 잘 나네요.



5. 실제 구성

실제 구성샷 입니다.




구동 동영상 입니다.





FIN

이제 뭘하지?


And
prev | 1 | ··· | 5 | 6 | 7 | 8 | 9 | 10 | next