Sunday, December 2, 2018

[Arduino]<아두이노 프로젝트> 자전거 공기압 알림 IoT 프로젝트 Bicycle Air Pressure Notification IoT Project




프로젝트 목표는 따릉이 자전거의 바퀴에 대한 공기압을

실시간으로 볼 수 있게 하는것입니다.


1. 부품

사용한 부품은 다음과 같습니다.
<사각형 압력센서>


공기압 측정을 타이어에 닿는 압력을 이용해 하기때문에

압력센서를 이용하였습니다.


타이어게 공기가 많으면 땅에 닿는 면적이 작고

타이어에 공기가 없으면 땅에 닿는면적이 크다는 원리를 이용하였습니다.



<Wemos R1 D1>


와이파이를 이용해 스마트폰으로 현재 상태를 확인하기때문에

와이파이 모듈이 있는 R1 D1 보드를 썼습니다.



<릴레이>


외부전원을 써서 LED를 동작시키기 때문에 릴레이를 이용하여

아두이노로 LED 제어하였습니다.



<LED>


타이어 공기압 상태를 쉽게 확인하도록 

LED를 이용하여 가이드를 세웠습니다.



그 외로는 아크릴과 자전거 거치대, 저항, 전원 어답터 가 있습니다.



2. 아두이노

아두이노와 연결은 다음과 같이 합니다.



아두이노 코드는 다음과 같습니다. 


빨간색 부분은 사용자에 맞게 고쳐야 됩니다.

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#define USE_SERIAL Serial

ESP8266WiFiMulti WiFiMulti;


void setup() {
pinMode(D10, OUTPUT);
pinMode(D11, OUTPUT);
pinMode(D12, OUTPUT);
    USE_SERIAL.begin(115200);  //시리얼 열기
   // USE_SERIAL.setDebugOutput(true);

    USE_SERIAL.println();
    USE_SERIAL.println();
    USE_SERIAL.println();

    for(uint8_t t = 4; t > 0; t--) {    //카운트다운
        USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
        USE_SERIAL.flush();
        delay(1000);
    }

    WiFi.mode(WIFI_STA);
    WiFiMulti.addAP("와이파이이름", "와이파이비번");   //와이파이 연결

}

void loop() {
    // wait for WiFi connection

     
        int temp = analogRead(A0);           // 압력 감지센서에더 데이터 받아오기
       
  
    if((WiFiMulti.run() == WL_CONNECTED)) {

        HTTPClient http;


        USE_SERIAL.print("[HTTP] begin...\n");
        
        http.begin("http://서버 IP 입력/test1.php?d="+String(temp)); //서버로 압력센서값 전송

        USE_SERIAL.print("[HTTP] GET...\n");  //시리얼에 출력
        // start connection and send HTTP header
        int httpCode = http.GET();

        // httpCode will be negative on error
        if(httpCode > 0) {
            // HTTP header has been send and Server response header has been handled
            USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);

            // file found at server
            if(httpCode == HTTP_CODE_OK) {
                String payload = http.getString();
                USE_SERIAL.println(payload);
            }
        } else {
            USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); //에러면 표시
        }

        http.end(); //끝
    }
if(temp>0&&temp<40){
    digitalWrite(D10, LOW);
    digitalWrite(D11, LOW);
    digitalWrite(D12, HIGH);
  }
  else if(temp>40&&temp<600){
    digitalWrite(D10, LOW);
    digitalWrite(D11, HIGH);
    digitalWrite(D12, LOW);
  }
  else if(temp>600){
    digitalWrite(D10, HIGH);
    digitalWrite(D11, LOW);
    digitalWrite(D12, LOW);
  }
    delay(1000);   //1초 주기로 반복
}


test1.php는 뒤에서 추가할 것입니다.


다음은 하드웨어 입니다.


아래 사진들은 위 회로처럼 선을 연결을 하고 선정리를 한 사진입니다.



LED및 가이드는 다음과 같이 만들었습니다.


위 사진처럼 아크릴 판 중간에 LED를 부착하였습니다.


그리고 직육면체로 아크릴을 붙여서 마무리했습니다. 


중간에 있는 부품은 릴레이 입니다.


아래 사진은 가이드를 거치대에 부착하고 전원을 인가한 사진입니다.



빨간색뿐만아니라 초록색, 파란색 등 여러 색깔의 불빛이 가능합니다.




2. 데이터 베이스

데이터 베이스는 Mysql을 사용하였습니다.


데이터베이스 및 서버 사용은 다른 게시물 참조하시길 바랍니다.


아래처럼 test 데이터베이스 안에 press1 이라는 테이블을 생성하였습니다. 



그리고 그 press1 테이블의 구조는 아래 그림과 같습니다.



3. PHP 파일

PHP 파일은 아두이노에서 데이터베이스로, 데이터베이스에서 스마트폰으로

센서값을 전송하기위해서 사용하는 파일입니다.


먼저 아두이노 데이터베이스로 센서값을 전송하기 위한 php파일입니다.


이름은 test1.php 입니다.


<?php

$mysql_hostname = '서버 IP';
$mysql_username = 'mysql ID';
$mysql_password = 'mysql 비번';
$mysql_database = 'test';
$mysql_port = '3306';
$mysql_charset = 'utf8';



$dsn = 'mysql:host='.$mysql_hostname.';dbname='.$mysql_database.';port='.$mysql_port.';charset='.$mysql_charset;

$temp = $_GET['d'];  //get 방식으로 센서값 받기

try
{
$connect = new PDO( $dsn, $mysql_username, $mysql_password );  //mysql 접속

$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "INSERT INTO press1 (press,created) VALUES ('$temp',now())"; //press1 테이블 안에 센서 값 넣기

    
$connect->exec($sql);

    echo "New record created successfully";  //성공시 센서값하고 정상 메세지 출력

    echo "$temp";


}
catch ( PDOException $e )
{
echo 'Connect failed : ' . $e->getMessage() . '';  //실패시 오류 메세지 출력
return false;
}

//5. 연결 종료
//pdo 는 자동 종료 됨. 구지 하고 싶다면, null 값을 준다.
$connect = null;

?>



다음은 데이터베이스에서 스마트폰으로 센서값을 전송하기 위한 php 파일입니다.


이름은 test5.php입니다.

<?php

$mysql_hostname = '서버 IP';
$mysql_username = 'mysql ID';
$mysql_password = 'mysql 비번';
$mysql_database = 'test';
$mysql_port = '3306';
$mysql_charset = 'utf8';



$dsn = 'mysql:host='.$mysql_hostname.';dbname='.$mysql_database.';port='.$mysql_port.';charset='.$mysql_charset;   


try
{
$connect = new PDO( $dsn, $mysql_username, $mysql_password );  //데이터베이스와 연결

     $statement = $connect->query("select press from press1 order by id desc limit 1");  //press1테이블에서 press값 추출
while($record1 = $statement->fetch(PDO::FETCH_ASSOC)){  
//화면에 출력하기 위해 작업
  
foreach($record1 as $column){ 
$result1 .=$column; 
  }





}
catch ( PDOException $e )
{
echo 'Connect failed : ' . $e->getMessage() . '';  //실패시 에러메세지
return false;
}


$connect = null;

?>
<?php 
echo "press:";
echo 0+$result1; //화면에 압력값 출력
echo "psi";
echo "finish" ?>


4. 앱

앱은 앱 인벤터를 이용하여 만들었습니다.


프로젝트를 올릴 수 없어서 사진으로 올리겠습니다.


 이 블럭을 실행 시키려면 arduino.txt파일을 

스마트폰 저장공간 가장 바깥쪽에 넣어야 합니다.


arduino.txt 내용은 다음과 같습니다.


place1:1.&http://서버IP/test5.php





 5. 결과

이 모든 것들을 성공적으로 하면

다음과 같은 화면이 나옵니다.



아래 사진은 실제 따릉이를 이용하여 실험한 사진입니다.


거치가 안되어있을 때는 파란색 불이 들어옵니다.



바퀴에 바람이 부족하면 빨간색 불이 들어옵니다.



바퀴에 바람을 넣고 공기압이 적당하면 초록불이 들어옵니다.



지금까지 자전거 공기압 알림 프로젝트였습니다.

Friday, November 16, 2018

[Review] 모바일 트랜드 2019 - 커넥팅랩



모바일 트랜드 2019 - 커넥팅랩



"초고속, 초저지연, 초연결 5G 시대의 개막"


"킬러 콘텐츠가 될 가상현실과 증강현실"

AR과 VR의 개발 한계인 네트워크 한계를 5G가 해결 할 수 있음


"IoT를 넘어선 IoE"


"V2V 기술의 발전"


"모바일 엣지 컴퓨팅"

엣지 컴퓨팅의 장점을 취해 무선 기지국을 분산 클라우드 컴퓨팅 센서로 진화시키는 것

엣지 컴퓨팅이란, 중앙 집중식 데이터 처리가 아닌 
데이터가 생성되는 네트워크 엣지와 가까운 곳에서 데이터를 처리하는 방식

데이터 과부화 방지, 실시간 서비스 제공, 개인 정보 보호 강화의 장점이 있음


"네트워크 슬라이싱 기술"

네트워크 도로의 폭은 그대로 두고 차선을 늘리는 방식


"IoT의 보안을 위한 블록체인"

1세대 : AMPS 아날로그 방식의 이동통신 기술로 음성통화만 가능
2세대 : GSM 방식과 CDMA 방식으로 음성통화, 문자메세지, 간단한 이메일 가능
3세대 : W - CDMA 방식으로 영상통화 가능
4세대 : LTE방식으로 스마트폰 등장
5세대 : 5G NSA 방식은 LTE에 5G기술 융합한 것, 5G SA는 오직 5G 네트워크만으로 데이터 전송하는 방식


"5G의 방식이 기존의 LTE 방식보다 좋은 점이 있어야 사람들이 돈을 더 주고 이용할 것이다."

 LTE대신 5G를 이용할 이유가 뭐가 있는가? 
더 빨라서? 지금도 충분히 사용할만하지 않은가?


"몇년안에 자동차는 개인 소유물이 아니게 될 것이며 자동차 공유 시스템이 보편화 될 것이다."

과시하는 목적으로 자동차가 소유물이 될 수도 있겠지만 
나같으면 비싼 자동차를 사는 것보다 리스하는 개념으로 자동차를 이용할 것 같다.


"교통사고의 95%가 인간이 만들어 낸다고 하였는데, 이것만 잡아준다면 교통사고 발생률을 95% 감소시킬 수 있다는 것이다."


"5G 상용화 초기에는 B2C 보단 B2B 상품을 먼저 개발 할 계획이다"

실용성과 가격 때문에 스마트 공장처럼 소비자보다 기업들에게 5G를 제공할 것이다.


"망 중립성 원칙에서 보면, 네트워크 슬라이싱 기술은 이를 위배하는 기술이다."

망 중립성이란 인터넷 세상이 선착순이라는 법을 따라야 한다는 것이지만, 
네트워크 슬라이싱 기술은 네트워크를 사용하는 종류에 따라 
대역폭을 조정할 수 있어야 하기 때문에 망 중립성을 위반한다는 것이다.

네트워크 슬라이싱 기술이 효율성이 좋다면 당연히 해야하지만 
인간의 욕심이 끼어든 순간 그 효율성은 극히 떨어질 것이다.


"IoT의 신뢰구조를 확립하는 블록체인"

IoT의 문제점 중 하나가 바로 신뢰성인데 
이 문제점을 블록체인을 이용해서 극복할 수 있다고 하였다. 

블록체인을 공부해봐야 겠다.




Wednesday, October 31, 2018

[Arduino] <아두이노 프로젝트> 소음 감지 및 알림 IoT 프로젝트 Noise Detection and Notification IoT Project




프로젝트 목표는 주변에서 발생하는 소리를
스마트폰을 통해 눈으 혹은 진동으로 파악할 수 있게 하는 것입니다.


1. 부품

사용한 부품은 다음과 같습니다.

Wemos D1 R1 보드
이 보드는 wifi 모듈이 부착되어 있어 추가로 wifi모듈을 연결하지 않아도 됩니다.
MAX 9814
소리 증폭 감지 센서로 주변 소음측정을 위해 필요합니다.

2. 아두이노

아두이노와 연결은 다음과 같이 합니다.
아두이노      -     사운드 센서
GND             GND
5V                 VCC
A0         –        OUT
아두이노 코드는 다음과 같습니다. 


아두이노 3개 모두 알맞게 고쳐서 업로드 합니다.


빨간색 부분은 사용자에 맞게 고쳐야 됩니다.
/**
 * BasicHTTPClient.ino
 *
 *  Created on: 24.05.2015
 *
 */

#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <ESP8266HTTPClient.h>

#define USE_SERIAL Serial

ESP8266WiFiMulti WiFiMulti;

const int sampleWindow = 50;      // 샘플링한 시간 50ms
unsigned int value;               // 소리 증폭 감지 센서 값 받는 변수

void setup() {

    USE_SERIAL.begin(115200);
   // USE_SERIAL.setDebugOutput(true);

    USE_SERIAL.println();
    USE_SERIAL.println();
    USE_SERIAL.println();

    for(uint8_t t = 4; t > 0; t--) {
        USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
        USE_SERIAL.flush();
        delay(1000);
    }

    WiFi.mode(WIFI_STA);
    WiFiMulti.addAP("와이파이이름", "와이파이비번");    //와이파이 이름 비번 입력

}

void loop() {
    // wait for WiFi connection
      unsigned long startMillis= millis();  // 샘플링 시작
      unsigned int peakToPeak = 0;          // 음성 신호의 진폭

      unsigned int signalMax = 0;           // 최대 크기를 초기에는 0으로 설정
      unsigned int signalMin = 1024;        // 최소 크기를 초기에는 1024로 설정

      while (millis() - startMillis < sampleWindow){  // 데이터를 50ms마다 모으는 while문
        value = analogRead(A0);           // 소리 감지센서에더 데이터 받아오기
        if (value < 1024){                // 받아온 데이터의 값이 1024 이하일 때
           if (value > signalMax)         // 최대 크기 측정
              signalMax = value;          // 최대 크기 signalMax에 저장
           else if (value < signalMin)    // 최소 크기 측정
             signalMin = value;          // 최소 크기 sigmalMin에 저장
          }
        }
   
      peakToPeak = signalMax - signalMin;  // 최대- 최소 = 진폭값
      double volts = (peakToPeak * 5.0) / 1024;  // 전압 단위로 변환 = 소리 크기로 변환
   
    if((WiFiMulti.run() == WL_CONNECTED)) {

        HTTPClient http;

        int temp=volts*100;

        USE_SERIAL.print("[HTTP] begin...\n");
        // configure traged server and url
        //http.begin("https://192.168.1.12/test.html", "7a 9c f4 db 40 d3 62 5a 6e 21 bc 5c cc 66 c8 3e a1 45 59 38"); //HTTPS
        http.begin("http://서버 IP 입력/test1.php?d="+String(temp)); //HTTP

        USE_SERIAL.print("[HTTP] GET...\n");
        // start connection and send HTTP header
        int httpCode = http.GET();

        // httpCode will be negative on error
        if(httpCode > 0) {
            // HTTP header has been send and Server response header has been handled
            USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);

            // file found at server
            if(httpCode == HTTP_CODE_OK) {
                String payload = http.getString();
                USE_SERIAL.println(payload);
            }
        } else {
            USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
        }

        http.end();
    }

    delay(1000); 
}


test1.php는 뒤에서 추가할 것입니다.

다음은 케이스 입니다.


아두이노를 케이스에 연결하는 모습니다.



연결하고 정리하면 위와 같은 모습이 됩니다.


2. 데이터 베이스

데이터 베이스는 Mysql을 사용하였습니다.


thingspeak는 최소 업데이트 주기가 15초라서 패스했습니다.


설치나 실행은 제 다른 게시물에서 확인하실 수 있습니다.


mysql은 다음과 같이 test 데이터 베이스 안에

테이블 3개을 추가하였습니다.



그리고 그 테이블의 구조는 아래와 같습니다.



스케줄러를 이용하여 1분마다 데이터가 초기화 되게 하였습니다.



3. PHP 파일

PHP 파일은 아두이노에서 데이터베이스로, 데이터베이스에서 스마트폰으로

센서값을 전송하기위해서 사용하는 파일입니다.


설치와 사용방법은 다른 게시글에서 확인 가능하거나 검색가능합니다.


먼저 아두이노 데이터베이스로 센서값을 전송하기 위한 php파일입니다.


이름은 test1.php 입니다.

(다른 아두이노 2개를 위해서 test2.php, test3.php를 만들고 코드도 알맞게 고쳐야 합니다.)

<?php

$mysql_hostname = '서버 IP';
$mysql_username = 'mysql ID';
$mysql_password = 'mysql 비번';
$mysql_database = 'test';
$mysql_port = '3306';
$mysql_charset = 'utf8';



$dsn = 'mysql:host='.$mysql_hostname.';dbname='.$mysql_database.';port='.$mysql_port.';charset='.$mysql_charset;

$temp = $_GET['d'];

try
{
$connect = new PDO( $dsn, $mysql_username, $mysql_password );

$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "INSERT INTO sound1 (sound,created) VALUES ('$temp',now())";   //데이터 넣기

    

$connect->exec($sql);

    echo "New record created successfully";

    echo "$temp";


}
catch ( PDOException $e )
{
echo 'Connect failed : ' . $e->getMessage() . '';
return false;
}


$connect = null;

?>


다음은 데이터베이스에서 스마트폰으로 센서값을 전송하기 위한 php 파일입니다.


이름은 test4.php입니다.


<?php

$mysql_hostname = '서버 IP';
$mysql_username = 'mysql ID';
$mysql_password = 'mysql 비번';
$mysql_database = 'test';
$mysql_port = '3306';
$mysql_charset = 'utf8';



$dsn = 'mysql:host='.$mysql_hostname.';dbname='.$mysql_database.';port='.$mysql_port.';charset='.$mysql_charset;


try
{
$connect = new PDO( $dsn, $mysql_username, $mysql_password );

     $statement = $connect->query("select sound from sound1 order by id desc limit 1"); 
while($record1 = $statement->fetch(PDO::FETCH_ASSOC)){
//$result1 .= "<tr>"; 
foreach($record1 as $column){ 
$result1 .=/* "<td>" . */$column/* . "</td>"*/; 
/*$result1 .= "</tr>";*/ }


$statement = $connect->query("select sound from sound2 order by id desc limit 1"); 

while($record2 = $statement->fetch(PDO::FETCH_ASSOC)){
  
foreach($record2 as $column){ 
$result2 .=$column; 
}
     

     $statement = $connect->query("select sound from sound3 order by id desc limit 1"); 
while($record3 = $statement->fetch(PDO::FETCH_ASSOC)){
  
foreach($record3 as $column){ 
$result3 .=$column; 
  }



}
catch ( PDOException $e )
{
echo 'Connect failed : ' . $e->getMessage() . '';
return false;
}


$connect = null;

?>
<?php 
echo "sound1:";
echo 0+$result1;
echo "dB";
echo "sound2:";
echo 0+$result2;
echo "dB";
echo "sound3:";
echo 0+$result3;
echo "dB";
echo "finish" ?>


4. 앱

앱은 앱 인벤터를 이용하여 만들었습니다.

코드를 쓸 수 없으니 사진으로 대체하겠습니다.



입력 완료는 버튼, 장소입력 밑 같은 텍스트 이고 외는 레이블입니다.


시계 1은 1000, 시계 2 또한 1000입니다.




이 블럭을 실행 시키려면 thingspeak.txt파일을 스마트폰 저장공간 가장 바깥쪽에 넣어야 합니다.


thingspeak.txt 내용은 다음과 같습니다.

place1:1.place2:2.place3:3.&http://서버IP/test4.php





위 블록은 장소 텍스트를 변경하는 블록입니다.


위 블록은 소리 값을 화면에 출력하는 블록입니다.


 위 블록은 위위 블록에 이어지는 부분으로 일정 크기 이상 소리가 나면 진동과 배경값이 바뀌게 하는 블록입니다.

마지막으로 위 블록은 업데이트 시간을 알려주는 블록입니다.


다 되었으면 빌드-앱을 눌러 저장 후 핸드폰에 저장하여 설치합니다.


5. 결과

이 모든 것들을 성공적으로 하면

다음과 같은 화면이 나옵니다.


여기까지 소음 감지 및 알림 프로젝트였습니다.

Saturday, October 13, 2018

[Review] Cowin E7 ANC bluetooth headphone


어디선가 이어폰보다는 헤드폰이 귀의 건강에 좋다고 들어서

Cowin E7 블루투스 헤드폰을 충동구매해버렸습니다.


귀의 건강을 위해서 좋은 투자했다고 스스로 위안삼아봅니다.


먼저, 배송은 2일만에 온 것 같습니다. 


그리고 포장 박스는 아래와 같이 생겼습니다.


심플해서 좋았습니다.


포장박스 재질도 마음에 들었습니다.


박스를 열어보니 헤드폰이 빛을 반사하며 반겼습니다.



겉표면이 만지면 지문이 남는 그런 재질이여서 조심히 만졌습니다.


그리고 헤드폰을 보관하는 파누치도 왔습니다.


헤드폰이 꽉차서 잘 안잠궈졌습니다.


그냥 먼지쌓이지말라고 주는것 같습니다.



설명서는 한국어로 되어있지 않았습니다.


그래도 영어는 어느정도 알아서 다행이었습니다.


사실 그림만 봐도 이해가 돼서 사용에 지장이 없습니다.


간단한 스펙은 아래와 같습니다.


케이블은 총 2가지인데 하나는 충전용이고,

다른하나는 유선으로 헤드폰을 연결하게 하는 케이블이었습니다.



[사용 후기]

결론만 말하자면 아주 만족입니다.


헤드폰을 쓰자마자 주위 소음이 차단되고 소리도 잘들렸습니다.


ANC의 기능도 사용해봤는데 굳이 ANC를 안써도 될 정도였습니다.


게임을 하면서 사용해보았는데 3시간을 써도 귀가 아프지 않았습니다.


가성비가 아주 좋았습니다.


[장점]

1. 장시간 사용에도 편하다.

2. 주위 소음이 잘 차단된다.

3. ANC기능이 있다.

4. 입체 음향이 가능하다.


[단점]

1. 안경을 쓰면 장기간 사용시 불편하다.

2. 헤드폰에 지문이 잘 묻는다.




*2018.12.12 후기*

안경을 쓰고 헤드폰을 쓰다보니 장시간 사용 시 불편한건 똑같았습니다.

그래도 아직까지 고장없고 주변소음도 차단되어서 만족하고 있습니다.

ANC 기능을 사용하니 튀는 소리가 들리고, ANC 기능의 효과도 없어서

그냥 사용하지 않고 있습니다.






Wednesday, October 3, 2018

[Novel] 행복의 가치 the value of happiness



인간들이 하는 행동에 대해서 행복의 척도를 측정할 수 있는 기술이 발명되었다.

어떠한 한 사람이 하는 행동, 예를들어 밥을 먹거나, 게임을 하거나, 일을 하거나 하는 행동들에 대해서 행동에 관련한 사람들의 행복의 척도를 측정할 수 있다는 것이다.

세계는 인간이 가장 중요시하는 것이 행복으로 의견이 모아졌기 때문에 어떠한 행동을 했을 때 지구 전체적인 행복이 증가하였을 때만 그 행동을 적합한 행동으로 정했고, 지구 전체적인 행복이 감소한 행동은 불법으로 정하였다.

한 예로 어떤 사람이 노숙자들에게 큰돈을 기부한 사건이 있었는데 노숙자들의 행복증가수치가 다른 사람들의 행복감소수치보다 작아서 기부자는 불법행위를 한 대가로 처벌을 받게 되었다.

이러다보니 전 세계적으로 선의의 행동이 불법행위가 되고, 도덕적으로 문제가 되는 행위가 아무런 제재를 받지 않게 되었다.

그러던 어느 날 어느 학자가 의문을 제기하였다.

인간이 가장 중요시하는 것이 행복이지만, 인간에게 가장 중요한 것은 행복이 아니지 않냐? 는 주장이었다.

다른 학자들은 인간은 행복을 위해서 산다고 하면서 그런 주장을 터무니없다고 하였지만, 결국 인간은 생존을 위해 행복이란 감정을 이용한다는 연구결과가 나왔다.

그 결과 세계는 행복가치법률을 폐지하고 생존의 확률을 낮추는 행동을 불법행위로 정했다.

그 이후로 흡연을 불법이 되었다.



Technology has been invented to measure the measure of happiness in the way humans behave.


You can measure people's happiness with regard to their behavior, such as eating, playing games, or working.


Because the world's opinion that human beings are most important is happiness, when they do something, they only set it as appropriate and made it illegal to do something that was less than global happiness.


For example, there was an incident in which a person donated a large amount of money to the homeless, whose happiness increased less than others' happiness, which resulted in the donors being punished for their illegal acts.


As a result, good deeds became illegal and morally problematic all over the world.


Then one day, a scholar asked questions.


Happiness is what we value the most, but happiness is not what is most important to us? was a captain


Other scholars have called such arguments ridiculous, saying that humans live for happiness, but studies have found that humans use feelings of happiness to survive.


As a result, the world has made it illegal to abolish the happy value law and reduce the chances of survival.


Since then, smoking has been illegal.