Browse Source

commit file and mod_readme

master
IIGang 5 years ago
parent
commit
bcdc6f6aca
  1. 15
      .vscode/launch.json
  2. 15
      README.md
  3. 49
      Receiver_servo/Receiver_servo.ino
  4. 87
      sender_hw/sensorValue_send.ino
  5. 156
      server/appl.js
  6. 9
      server/index.js
  7. 1184
      server/package-lock.json
  8. 9
      server/user.js
  9. 131
      server/web_index.html

15
.vscode/launch.json

@ -0,0 +1,15 @@
{
// IntelliSense .
// .
// https://go.microsoft.com/fwlink/?linkid=830387() .
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}

15
README.md

@ -0,0 +1,15 @@
## PROJECT
< 공유모빌리티 서비스 상용에 따른 안전장구 착용 대안 개발 >
___
### Team_name : Sper
### Team : 이강, 박준형, 서준혁, 김태경, 바야르세섹
___
## Summary
전동킥보드(공유모빌리티)의 이용의 본질을 저해하지 않으면서 기존 공유모빌리티 시스템에 적용될 수 있는 가장 적합한 안전장구 착용 대안 및 응용SW를 개발하는 것이다

49
Receiver_servo/Receiver_servo.ino

@ -0,0 +1,49 @@
#include<SoftwareSerial.h>
#include<Servo.h>
SoftwareSerial xbee(2,3);
#define LEN 13
#define servoPin 9
int count = 0, flag = 1, angle = 0, a = 1;
Servo myservo;
void setup() {
Serial.begin(9600);
xbee.begin(9600);
myservo.attach(servoPin);
myservo.write(0);
}
void loop() {
char arr[LEN] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'o', 'x'};
char ch = xbee.read();
for(int i = 0; i < LEN; i++){
if(ch == '*') count++;
else if(count >= 3 && ch == '!'){
count = 0;
Serial.println();
}
else if(count >= 3 && ch == arr[i]){
if(ch == 'x'){
flag = 0;
}
else if(ch == 'o'){
flag = 1;
}
Serial.write(ch);
}
}
if(flag == 1){
if(angle == 180){
a = -10;
}else if(angle == 0){
a = 10;
}
angle += a;
myservo.write(angle);
delay(10);
}
}

87
sender_hw/sensorValue_send.ino

@ -0,0 +1,87 @@
#include <SoftwareSerial.h>
#include <TinyGPS.h>
#define RXPIN 6
#define TXPIN 5
#define GPSBAUD 9600
TinyGPS gps;
SoftwareSerial uart_gps(RXPIN, TXPIN);
void getgps(TinyGPS &gps);
int value = 0;
char arr_o[] = { '*', '*', '*', 'o', '!' }, arr_x[] = { '*', '*', '*', 'x', '!' };
//setup
void setup() {
Serial.begin(9600);
uart_gps.begin(GPSBAUD);
Serial.println("");
Serial.println("GPS Shield QuickStart Example Sketch v12");
Serial.println(" ...waiting for lock... ");
Serial.println("");
}
void loop() {
//FSRsensor
value = analogRead(A0);
if(value >= 300){
for(int i = 0; i < 5; i++){
Serial.write(arr_o[i]);
}
}
else{
for(int i = 0; i < 5; i++){
Serial.write(arr_x[i]);
}
}
//gps
while(uart_gps.available())
{
int c = uart_gps.read();
if(gps.encode(c))
{
getgps(gps);
}
}
delay(3000);
}
//parshing code
void getgps(TinyGPS &gps)
{
char floatArr[10], buff[15];
float latitude, longitude;
int len;
gps.f_get_position(&latitude, &longitude);
//latitude
dtostrf(latitude, 10, 5, floatArr);
sprintf(buff, "***%s!", floatArr);
len = strlen(buff);
for(int i = len; i >= 0; i--){
if(buff[i] != ' '){
Serial.write(buff[i]);
}
}
//longitude
dtostrf(longitude, 10, 5, floatArr);
sprintf(buff, "***%s!", floatArr);
len = strlen(buff);
for(int i = len; i >= 0; i--){
if(buff[i] != ' '){
Serial.write(buff[i]);
}
}
Serial.println();
unsigned long chars;
unsigned short sentences, failed_checksum;
gps.stats(&chars, &sentences, &failed_checksum);
}

156
server/appl.js

@ -0,0 +1,156 @@
const express = require('express');
const app = express();
const http = require('http');
const Readline = require('@serialport/parser-readline')
const server = http.createServer(app);
const {Server} = require("socket.io");
const io = new Server(server);
// const bodyparser = require('body-parser')
// const SerialPort = require('serialport')
// const parsers = SerialPort.parsers;
// const parser = new parsers.Readline({
// delimiter: '\n'
// });
// const port = new SerialPort("COM6",{
// io: io,
// route: '/port/ttys002',
// bitRate: 115200,
// dataBits: 8,
// buffersize:1,
// parity: 'none',
// flowControl: false,
// dealay: 9600
// });
// const ByteLength = require('@serialport/parser-byte-length');
// const { ifError } = require('assert');
// const { parse } = require('path');
// const parser = port.pipe(new ByteLength({length: 1 }))
// //const parser = port.pipe(new parsers.Readline({delimiter:'\r\n'}))
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index1.html');
});
//SerialPort
// port.on("open", () => {
// console.log("serialport Port open");
// });
// parser.on('data',function(data){
// var Pressure = data[0];
// if(Pressure <=100){
// io.emit('Pre_War')
// }
// console.log(data);
// io.emit('data',dat,dd[1]);
// });
var c='\0';
var d='\0';
var a=0;
var z=[];
var count=0;
var f={};
var i=0;
f[0] = 35.1;
f[1] = 36.1;
f[2] = 'o';
f[3] = 33.1;
f[4] = 22.1;
f[5]= 'x';
// parser.on('data',function(data){
// data=data.toString("ASCII");
// c+=data;
// console.log('c'+c);
// if(data=='\n'){
// var f= c;
// c='\0';
// if(f!='o'){
// z[count] = parseFloat(f.substr(1));
// console.log('z:'+(z[count]));
// io.emit('data',z[count],count);
// if(count==1){
// io.emit('data1',z[count],count);
// count=0;
// }
// else{
// io.emit('data',z[count],count);
// count++;
// }
// }
// else if(f=='o'){
// io.emit('Pressure',c);
// }
// else if(f=='x'){
// io.emit('Pressure',c);
// }
// }
// console.log('c:'+c);
// console.log('data:'+data.toString("UTF-8"));
// io.emit('data',data);
// });
// socket
server.listen(3000, () => {
console.log('listening on *:5000');
for(i=0; i<3; i++){
if(f[i]!='o'){
z[count] = f[i];
console.log('z:'+(z[count]));
io.emit('data',z[count],count);
if(count==1){
io.emit('data1',z[count],count);
count=0;
}
else{
io.emit('data',z[count],count);
count++;
}
}
else if(f=='o'){
io.emit('Pressure',c);
}
else if(f=='x'){
io.emit('Pressure',c);
}
}
});

9
server/index.js

@ -0,0 +1,9 @@
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;

1184
server/package-lock.json
File diff suppressed because it is too large
View File

9
server/user.js

@ -0,0 +1,9 @@
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;

131
server/web_index.html

@ -0,0 +1,131 @@
<!doctype html>
<html>
<head>
<title>Gps </title>
<meta charset="utf-8">
<title>지도 생성하기</title>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<div id="map" style="width:100%;height:700px;"></div>
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey= 6f7fabc77f1bff2334bd5521889a7b35"></script>
<style>
table { border-collapse: collapse; }
th, td { border: 1px solid black; padding: 50px; }
</style>
</head>
<body>
<table>
<caption>ㅇ센서</caption>
<tr>
<td></td>
<th scope="col">lat(위도)</th>
<th scope="col">lng(경도)</th>
<th scope="col">wear(착용여부)</tH>
</tr>
<tr>
<th scope="row">GPS/Pressure</th>
<td rowspan="1"><p id = 'lat'></p></td>
<td rowspan="2"><p id = 'lng'></p></td>
<td rowspan="3"><div id = 'Pressure'></div></td>
</tr>
<tr>
</table>
<td> </div> </td>
<script>
var socket = io();
var d;
var c;
var z=0;
socket.on('data', function(data,count){
if(count==1){
d= data;
console.log(data);
document.getElementById('lat').innerHTML=d;
}
else if(count==2){
c= data;
console.log(c);
document.getElementById('lng').innerHTML=c;
}
else if(count==0){
if(data[1] == 'o'){
document.getElementById('Pressure').innerHTML = data.toString();
z=0;
}
else if(z != data[1]) {
z = data[1];
document.getElementById('Pressure').innerHTML = data.toString();
alert("사용자가 헬멧을 착용하고 있지 않습니다. 킥보드를 멈춤");
}
}
});
var mapContainer = document.getElementById('map'), // 지도를 표시할 div
mapOption = {
center: new kakao.maps.LatLng( 35.97043362952654,126.95478849952511), // 지도의 중심좌표
level: 3 // 지도의 확대 레벨
};
var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다
// 지도에 표시될 객체를 가지고 있을 배열입니다
const locations = [
{ place:"원광대학교1", lat: d, lng: c}
//{ place:"비교 주소 ", lat: 35.97043362952654, lng: 126.95478849952511 },
];
for (var i = 0; i < locations.length; i++) {
var marker = new kakao.maps.Marker({
map: map,
position: new kakao.maps.LatLng(locations[i].lat, locations[i].lng)
});
}
</script>
</body>
</html>
Loading…
Cancel
Save