Nodejs 환경에서 MCP3208 ADC 컨버터를 사용하여 ADC 데이터를 읽어오는 방법을 설명한다.
일단 nodejs 설치한다.
Node 의 최신 버전을 설치한다. Node 6.x.
- $ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
The previous command updates our Debian apt package repository to include the NodeSource packages.
설치화면은 아래와 같다.
pi@raspberrypi:~ $ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
## Installing the NodeSource Node.js v6.x repo...
## Populating apt-get cache...
+ apt-get update
Hit http://mirrordirector.raspbian.org jessie InRelease
Hit http://archive.raspberrypi.org jessie InRelease
Hit https://deb.nodesource.com jessie InRelease
Hit http://mirrordirector.raspbian.org jessie/main armhf Packages
Hit http://archive.raspberrypi.org jessie/main armhf Packages
Hit https://deb.nodesource.com jessie/main Sources
Hit http://archive.raspberrypi.org jessie/ui armhf Packages
Hit http://mirrordirector.raspbian.org jessie/contrib armhf Packages
Hit https://deb.nodesource.com jessie/main armhf Packages
Get:1 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Hit http://mirrordirector.raspbian.org jessie/non-free armhf Packages
Get:2 https://deb.nodesource.com jessie/main Translation-en [162 B]
Hit http://mirrordirector.raspbian.org jessie/rpi armhf Packages
Get:3 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Get:4 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:5 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Get:6 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:7 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Get:8 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:9 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Ign https://deb.nodesource.com jessie/main Translation-en_US
Get:10 https://deb.nodesource.com jessie/main Translation-en [162 B]
Ign https://deb.nodesource.com jessie/main Translation-en
Ign http://archive.raspberrypi.org jessie/main Translation-en_US
Ign http://archive.raspberrypi.org jessie/main Translation-en
Ign http://archive.raspberrypi.org jessie/ui Translation-en_US
Ign http://archive.raspberrypi.org jessie/ui Translation-en
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en
Ign http://mirrordirector.raspbian.org jessie/main Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/main Translation-en
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en
Reading package lists... Done
## Confirming "jessie" is supported...
+ curl -sLf -o /dev/null 'https://deb.nodesource.com/node_6.x/dists/jessie/Release'
## Adding the NodeSource signing key to your keyring...
+ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
OK
## Creating apt sources list file for the NodeSource Node.js v6.x repo...
+ echo 'deb https://deb.nodesource.com/node_6.x jessie main' > /etc/apt/sources.list.d/nodesource.list
+ echo 'deb-src https://deb.nodesource.com/node_6.x jessie main' >> /etc/apt/sources.list.d/nodesource.list
## Running `apt-get update` for you...
+ apt-get update
Hit http://archive.raspberrypi.org jessie InRelease
Hit http://mirrordirector.raspbian.org jessie InRelease
Hit http://archive.raspberrypi.org jessie/main armhf Packages
Hit http://mirrordirector.raspbian.org jessie/main armhf Packages
Get:1 https://deb.nodesource.com jessie InRelease [3,914 B]
Hit http://archive.raspberrypi.org jessie/ui armhf Packages
Hit http://mirrordirector.raspbian.org jessie/contrib armhf Packages
Get:2 https://deb.nodesource.com jessie/main Sources [762 B]
Hit http://mirrordirector.raspbian.org jessie/non-free armhf Packages
Hit http://mirrordirector.raspbian.org jessie/rpi armhf Packages
Get:3 https://deb.nodesource.com jessie/main armhf Packages [967 B]
Get:4 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Get:5 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:6 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Get:7 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:8 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Get:9 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:10 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Get:11 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:12 https://deb.nodesource.com jessie/main Translation-en_US [162 B]
Ign https://deb.nodesource.com jessie/main Translation-en_US
Get:13 https://deb.nodesource.com jessie/main Translation-en [162 B]
Ign https://deb.nodesource.com jessie/main Translation-en
Ign http://archive.raspberrypi.org jessie/main Translation-en_US
Ign http://archive.raspberrypi.org jessie/main Translation-en
Ign http://archive.raspberrypi.org jessie/ui Translation-en_US
Ign http://archive.raspberrypi.org jessie/ui Translation-en
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en
Ign http://mirrordirector.raspbian.org jessie/main Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/main Translation-en
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en
Fetched 5,643 B in 16s (348 B/s)
Reading package lists... Done
## Run `apt-get install nodejs` (as root) to install Node.js v6.x and npm
pi@raspberrypi:~ $
마지막줄에 아래 명령을 실행하면 Node.js v6.x and npm을 동시에 설치한다고 나온다.
pi@raspberrypi:~ $ sudo apt install -y nodejs
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
mysql-server : Depends: mysql-server-5.5 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
pi@raspberrypi:~ $
My Sql 버전이 맞지 않아 설치가 안된다는 말인거 같은데, 라즈베리 파이에는 이미 설치가 되어 있으므로 버전 확인만 하고 넘어간다.
pi@raspberrypi:~ $ node -v
v4.5.0
npm init 명령어로 package.json 파일을 생성하는 과정을 거쳐야 한다. 이러한 과정을 설명한 다음 링크를 참고한다.
라즈베리 파이에서 node js 로 온습도 센서 dht22에서 데이터 읽어오기 http://fishpoint.tistory.com/1899
npm을 사용하여 ADC 컨버터 패키지를 설치한다.
pi@raspberrypi:~/nodejs-test $ npm install mcp-adc --save
> spi@0.2.0 install /home/pi/nodejs-test/node_modules/spi
> node-gyp rebuild
make: Entering directory '/home/pi/nodejs-test/node_modules/spi/build'
CXX(target) Release/obj.target/_spi/src/spi_binding.o
../src/spi_binding.cc: In static member function ‘static void Spi::New(const v8::FunctionCallbackInfo<v8::Value>&)’:
../src/spi_binding.cc:105:49: warning: ‘v8::Local<v8::Object> v8::Function::NewInstance() const’ is deprecated (declared at /home/pi/.node-gyp/6.3.1/include/node/v8.h:3243): Use maybe version [-Wdeprecated-declarations]
args.GetReturnValue().Set(cons->NewInstance());
^
../src/spi_binding.cc: In member function ‘void Spi::full_duplex_transfer(v8::Isolate*, const v8::FunctionCallbackInfo<v8::Value>&, char*, char*, size_t, uint32_t, uint16_t, uint8_t)’:
../src/spi_binding.cc:199:3: warning: missing initializer for member ‘spi_ioc_transfer::cs_change’ [-Wmissing-field-initializers]
};
^
../src/spi_binding.cc:199:3: warning: missing initializer for member ‘spi_ioc_transfer::tx_nbits’ [-Wmissing-field-initializers]
../src/spi_binding.cc:199:3: warning: missing initializer for member ‘spi_ioc_transfer::rx_nbits’ [-Wmissing-field-initializers]
../src/spi_binding.cc:199:3: warning: missing initializer for member ‘spi_ioc_transfer::pad’ [-Wmissing-field-initializers]
SOLINK_MODULE(target) Release/obj.target/_spi.node
COPY Release/_spi.node
make: Leaving directory '/home/pi/nodejs-test/node_modules/spi/build'
nodejs-test@1.0.0 /home/pi/nodejs-test
└─┬ mcp-adc@0.1.0
└─┬ spi@0.2.0
└── bindings@1.2.1
npm WARN nodejs-test@1.0.0 No repository field.
pi@raspberrypi:~/nodejs-test $
아래는 MCP3208 ADC 컨버터의 핀맵과 스팩, 사용된 회로도를 나타내었다.
MCP3208 Pin Map
MCP3208 Pin Description
라즈베리 파이와 ADC 간의 핀 연결도
adc0-sample.js 파일을 작성한다.
프로그램 소스는 아래와 같다.
pi@raspberrypi:~/nodejs-test $ nano adc0-sample.js
var McpAdc = require('mcp-adc');
var adc = new McpAdc.Mcp3208();
var channel = 0;
adc.readRawValue(channel, function(value) {
console.log("Raw value:\t" + value);
});
adc.readVoltage(channel, function(voltage) {
console.log("Voltage:\t" + voltage);
});
adc.readNormalizedValue(channel, function(normValue) {
console.log("Percents:\t" + (normValue * 100));
});
아래와 같이 실행하게 되면 결과를 볼 수 있다.
pi@raspberrypi:~/nodejs-test $ sudo node adc0-sample
{ MODE: { MODE_0: 0, MODE_1: 1, MODE_2: 2, MODE_3: 3 },
CS: { none: 64, high: 4, low: 0 },
ORDER: { msb: false, lsb: true },
Spi: [Function] }
{ _spi: _spi {}, device: '/dev/spidev0.0' }
Raw value: 1935
Voltage: 1.5625641025641026
Percents: 47.27716727716727
pi@raspberrypi:~/nodejs-test $
'개발자 > Raspberry Pi' 카테고리의 다른 글
라즈베리파이 LCD 1602 사용하기 16x2 LCD Hello World using C (2) | 2016.10.20 |
---|---|
파이썬 프로그래밍의 기초 (0) | 2016.10.08 |
KT 제공 IoT Makers 에 연동시 컴파일 오류 (0) | 2016.09.27 |
PN532 NFC RFID Module 사용자 가이드 using C (0) | 2016.09.20 |
라즈베리 파이에서 Gstreamer 설치 테스트 스트리밍하는 방법 (7) | 2016.08.31 |
8G SD 카드 이미지 백업 받은것을 32G SD 카드에 굽고 난 다음 (0) | 2016.08.11 |
스마트 농장 안드로이드 앱 소스 파일 (0) | 2016.06.29 |
라즈베리 파이 GPIO pin 상태를 읽어 이용하기 - GPIO pull up 사용 (0) | 2016.04.19 |
더욱 좋은 정보를 제공하겠습니다.~ ^^