MySQL(Maria DB)설치하기
1. $sudo raspi-config
2. $sudo apt-get install mariadb-server
3. $sudo systemctl restart mariadb.service
4. $sudo mysqladmin -u root password '비밀번호'
실습 초음파센서와 mysql 연결하기
database 설정하기
table 생성
create database sensordb;
use sensordb;
create table sonic(stamp DATETIME(3) NOT NULL, distance INT);
node.js 에서의 MySQL 연동모듈 설치
$npm install mysql
하드웨어 구성
초음파 측정센서
5v - 물리적 2번
GND - 물리적 6번
ECHO - 물리적 38번 wpi-28
GND - 물리적 40번 wpi-29
코드구현
선언 및 디비 연결 부분
const gpio = require('node-wiring-pi');
const mysql = require('mysql');
const TRIG = 29;
const ECHO = 28;
var startTime; // 초음파 송출시간
var travelTime; // 초음파 수신까지 경과시간
const client = mysql.createConnection({
host:'localhost', //DB서버 IP주소
port:port번호, // DB서버 Port주소
user:'ID', // DB접속 아이디
password:'password', // 암호
database:'DB이름' // 사용할 DB명
});
함수구현 부분
const Triggering = function(){
gpio.digitalWrite(TRIG,gpio.LOW);
gpio.delaymicroseconds(2);
gpio.digitalWrite(TRIG,gpio.HIGH);
gpio.delaymicroseconds(20);
gpio.digitalWRite(TRIG,gpio.LOW);
while(gpio.digitalRead(ECHO)==gpio.LOW);
startTime = gpio.micros();
while(gpio.digitalRead(ECHO)==gpio.HIGH);
travelTime = gpio.micros()-startTime;
distance = travelTime/58;
if(distance<400){
console.log("Distance : %d cm",distance);
if(distance <=20){ //20cm이내 근접거리
let stamptime = new Data();
client.query('INSERT INTO sonic VALUES (?,?)',[stamptime,distance],(err,result)=>{
if(err){
console.log("DB저장실패!");
console.log(err);
}
else console.log("DB저장완료!");
});
}
}
setTimeout(Triggering,700);
}
테이블 값 조회 부분
const Retrieve = function(){
let stamp_distance;
client.query('SELECT * FROM `sonic`',function(error,results,fields){
console.log("-----------------------------------");
results.forEach(function(element,i){
stamp_distance = '';
stamp_distance += element.stamp.toLocaleString('ko-KR',{hour12:false}) + '.';
stamp_distance += element.stamp.getMilliseconds() + ' ';
stamp_distance += element.distance; // 거리(distance)추가
console.log(stamp_distance);
});
console.log("------------------------------------");
setTimeout(Retrieve,5000); // 5초마다 DB조회 (저장확인)
});
}
gpio.wiringPiSetup();
gpio.pinMode(TRIG,gpio.OUTPUT);
gpio.pinMode(ECHO,gpio.INPUT);
setImmediate(Triggering);
setImmediate(Retrieve);
'Coding > Raspberry pi - node.js' 카테고리의 다른 글
로터리 엔코더(가변저항기)모듈 (3) | 2019.11.18 |
---|---|
실습 임베디드와 REST API를 이용한 LED 제어 (0) | 2019.11.18 |
REST API 예제 (0) | 2019.11.17 |
실습 사운드센서, 광센서를 웹에 연결시키기 (0) | 2019.11.17 |
실습 socket.io를 활용하여 1색LED, Buzzer, 3색LED Control (0) | 2019.11.17 |
댓글