산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino + Processing + PHP를 사용한 자동차 카운터

구성품 및 소모품

Arduino UNO
× 1
PIR 모션 센서(일반)
× 2
LED(일반)
× 1
점퍼 와이어(일반)
× 1

앱 및 온라인 서비스

Arduino IDE
Samsung ARTIK Cloud for IoT
처리
PHP

이 프로젝트 정보

소개

이 프로젝트는 Arduino 를 사용하는 방법을 보여줍니다. 두 개의 센서를 사용하여 쇼핑몰을 드나드는 차량의 수를 세고 Processing &PHP를 사용하여 데이터를 클라우드로 보내고 나중에 주차장의 사용 가능한 슬롯 수를 확인합니다. 이 프로젝트에는 이더넷이나 와이파이 실드가 필요하지 않습니다!

작동 방식

이 센서가 의도한 대로 작동하려면 주차장 입구 및 출구 지점에 센서를 배치해야 합니다. 기본적으로 카운트 를 증가시킵니다. 차가 들어올 때마다 줄어들고 나갈 때마다 감소합니다. 시스템의 LED는 차량이 센서를 통과할 때마다 켜지므로 차량이 올바르게 계산되었음을 나타냅니다.

처리

처리 다른 컴퓨터에서 프로그램을 작성하기 위한 오픈 소스 언어/개발 도구입니다. 예를 들어 Arduino에서 수집한 일부 데이터를 표시하거나 저장하기 위해 다른 컴퓨터가 Arduino와 "대화"하기를 원할 때 유용합니다.

이 프로젝트에서는 Processing을 사용하여 (자동차 수) 데이터를 수신했습니다. Arduino에서 직렬 포트를 통해 전송합니다. Processing IDE를 다운로드하여 컴퓨터에 설치합니다. 첨부된 Processing 스케치에서 매우 간단하고 직관적인 코드 라인을 볼 수 있습니다. 여기에서는 loadStrings() 메서드를 사용하여 PHP 파일을 호출합니다. .

PHP

PHP 파일 post-message.php는 여기에 있는 튜토리얼과 동일한 파일입니다. Github 페이지에서 전체 zip 파일을 다운로드하고 원본 파일에서 몇 줄의 코드를 수정하여 삼성 계정에 로그인하지 않고도 사용할 수 있도록 했습니다. 이것이 작동하려면 WAMP 또는 XAMP 서버의 포트 변경 및 ARTIK Cloud용 CA 인증서 설치에 대한 지침을 따라야 합니다. 또는 SSL 인증서가 설치된 원격 또는 호스팅 서버를 사용할 수 있습니다.

파일을 폴더에 복사합니다(예:acdemo). URL http://localhost:8000/acdemo/post-message.php 또는 https://www.yourwebsite.com/acdemo/post-message.php

를 사용하여 액세스할 수 있도록

편집해야 하는 PHP SDK의 파일은 ArtikCloudProxy.php 2개뿐입니다. 및 post-message.php . 여기에서 클라이언트 및 장치 ID를 볼 수 있습니다.

post-message.php에서 파일에서 액세스 토큰과 장치 ID를 가져와야 합니다. 토큰을 얻는 가장 쉬운 방법은 여기의 단계를 따르는 것입니다. 클라우드로 보내는 유일한 데이터는 자동차 수입니다. 쇼핑몰에 들어오고 나가는 것입니다. Artik Cloud에서 장치를 만들고 이름을 Car Counter로 지정했습니다. count 필드 사용 이 값을 보유합니다.

이제 모든 것이 설정되었으므로 시작할 시간입니다! 아래의 간단한 단계를 따르십시오:

아틱 클라우드

<울>
  • 1. Artik Cloud 계정에 로그인하고 응용 프로그램으로 이동합니다.> 새 애플리케이션
  • <울>
  • 2. 다음 화면에서 지원에 필요한 세부정보를 입력하세요.
  • <울>
  • 3. 애플리케이션 생성을 완료하면 대시보드에 가 표시됩니다. 애플리케이션 이름을 클릭하고 클라이언트 ID 및 암호 표시를 찾습니다. . PHP 파일에 이 코드가 필요합니다.
  • <울>
  • 4. 사이드 메뉴에서 애플리케이션을 선택하고 권한을 클릭합니다. . 자동차 카운터 추가 장치 유형 목록에서 읽기 를 확인하십시오. &쓰기 권한.
  • 코딩

    <울>
  • 1. 스케치를 Arduino UNO에 업로드하십시오. Arduino를 처음 사용하는 경우 이 절차를 수행하는 방법을 이해하려면 다음 단계를 따르세요.
  • <울>
  • 2. 처리 실행 Processing IDE에서 스케치합니다. WAMP 서버가 켜져 있는지 확인하세요. 이 시점에서 호스팅 서버 대신 로컬 컴퓨터를 사용하는 경우
  • <울>
  • 3. 위의 연결 다이어그램을 기반으로 이 시스템의 부품을 성공적으로 연결했다면 PIR 센서를 통과하여 작동하는지 확인하십시오.
  • <울>
  • 4. Artik Cloud 계정에 로그인하여 데이터가 제대로 전송되고 있는지 확인하십시오.
  • 문제 해결

    <울>
  • 1. 아래 링크를 열어 데이터가 Artik Cloud로 제대로 전송되고 있는지 확인하십시오. 아무 문제가 없으면 Json 파일이 표시됩니다. Json 파일이 표시되지 않으면 위에서 설명한 대로 SSL 인증서를 설치하지 않았을 수 있습니다. 돌아가서 지시 사항을 올바르게 따르십시오.
  • http://localhost:8000/acdemo/post-message.php?count=10

    다음에 할 일

    위의 차량 대수 데이터를 기반으로 쇼핑객이 쇼핑몰에 가기 전에 주차 공간의 여유 공간을 볼 수 있도록 쇼핑몰용 앱을 만들 수 있습니다. 주차장이 만차일 때 켜지는 다른 표시등을 추가할 수도 있습니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • Arduino 코드
  • 스케치 처리
  • post-message.php
  • ArtikCloudProxy.php
  • Arduino 코드Arduino
    차량 번호를 직렬로 표시하고 LED를 켜서 차량이 PIR 센서를 통과했음을 나타내는 코드입니다.
    int pirPinIN =7;int pirPinOUT =10;int led =13;static long counter =0; 무효 설정(){ pinMode(pirPinIN, INPUT); 핀모드(pirPinOUT, INPUT); 핀모드(LED, 출력); 디지털 쓰기(LED, LOW); Serial.begin(9600);} 무효 루프(){ long now =millis(); if (digitalRead(pirPinIN) ==HIGH) { 카운터++; Serial.println(카운터); 디지털 쓰기(led, HIGH); 지연(500); 디지털 쓰기(LED, LOW); } if (digitalRead(pirPinOUT) ==HIGH) { 카운터 --; Serial.println(카운터); 디지털 쓰기(led, HIGH); 지연(500); 디지털 쓰기(LED, LOW); }}
    스케치 처리자바
    이 처리 스케치는 아날로그 포트에서 들어오는 값을 읽은 다음 직렬 통신 기능을 사용하여 값을 출력합니다.
    import processing.serial.*;Serial myPort; // Serial에서 객체 생성 classString val; // 직렬 portvoid setup()에서 수신한 데이터{ // 내 Mac에서 직렬 목록의 첫 번째 포트가 // Serial.list()[0]이라는 것을 알고 있습니다. // Windows 시스템에서는 일반적으로 COM1을 엽니다. // 사용 중인 포트가 무엇이든 엽니다. 문자열 포트 이름 =Serial.list()[0]; // 포트와 일치하도록 0을 1 또는 2 등으로 변경합니다. myPort =new Serial(this, portName, 9600);}void draw(){ if ( myPort.available()> 0) { // 데이터가 다음과 같을 경우 사용 가능, val =myPort.readStringUntil('\n'); // 읽어서 val에 저장합니다. int count =parseInt(val); if(count>=0){ loadStrings("http://localhost:8000/acdemo/post-message.php?count="+val); } } println(발); //콘솔에서 출력}
    post-message.phpPHP
    이 코드는 처리 스케치에서 전달된 값을 가져오고 클라우드에 카운트를 POST합니다.
    setAccessToken("YOUR_ACCESS_TOKEN");$data ='{"count":'.$count.'}';$payload =array("data"=>$data,"sdid" =>"YOUR_DEVICE_ID","type"=>"message");$payload =json_encode($payload, JSON_HEX_QUOT | JSON_HEX_TAG);$response =$proxy->sendMessage($payload);header('콘텐츠 유형:애플리케이션 /json');에코 json_encode($response);
    ArtikCloudProxy.phpPHP
    Artik 클라우드 연결에 필요한 ArtikCloudProxy 클래스입니다. 웹에서 액세스할 수 있는 위치에 post-message.php와 동일한 폴더에 저장합니다. 필요에 따라 구성을 변경합니다.
    &count="; const API_MESSAGES_POST ="/메시지"; # 멤버 공개 $token =null; 공개 $ 사용자 =null; public function __construct(){ } /** * 액세스 토큰을 설정하고 사용자 프로필 정보를 찾습니다. */ public function setAccessToken($someToken){ $this->token =$someToken; $this->user =$this->getUsersSelf(); } /** * API 호출 GET */ public function getCall($url){ $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPGET, 참); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 거짓); curl_setopt($ch, CURLOPT_HTTPHEADER, array('콘텐츠 유형:애플리케이션/json', '권한 부여:전달자 '.$this->token)); $json =curl_exec($ch); $status =curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($status ==200){ $response =json_decode($json); } else{ var_dump($json); $ 응답 =$ json; } 반환 $ 응답; } /** * API 호출 POST */ public function postCall($url, $payload){ $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, (문자열) $페이로드); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 거짓); curl_setopt($ch, CURLOPT_HTTPHEADER, array('콘텐츠 유형:application/json', '권한:전달자 '.$this->token)); $json =curl_exec($ch); $status =curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($status ==200){ $response =json_decode($json); } else{ var_dump($json); $ 응답 =$ json; } 반환 $ 응답; } /** * GET /users/self API */ public function getUsersSelf(){ return $this->getCall(ArtikCloudProxy::API_URL . ArtikCloudProxy::API_USERS_SELF); } /** * POST /message API */ public function sendMessage($payload){ return $this->postCall(ArtikCloudProxy::API_URL . ArtikCloudProxy::API_MESSAGES_POST, $payload); } /** * GET /historical/normalized/messages/last API */ public function getMessagesLast($deviceCommaSeparatedList, $countByDevice){ $apiPath =ArtikCloudProxy::API_MESSAGES_LAST; $apiPath =str_replace("<장치>", $deviceCommaSeparatedList, $apiPath); $apiPath =str_replace("", $countByDevice, $apiPath); 반환 $this->getCall(ArtikCloudProxy::API_URL.$apiPath); }}

    회로도

    2개의 PIR 센서와 LED 연결 다이어그램

    제조공정

    1. 푸시 버튼을 사용하여 PWM으로 조명 디밍
    2. ARDUINO를 사용하는 초음파 부상 기계
    3. IOT - ESP8266, Arduino 및 초음파 센서를 사용하는 스마트 항아리
    4. 아이언맨
    5. 나를 찾기
    6. Arduino를 사용하여 지구의 질량을 측정하는 방법
    7. Arduino 가습기 제어
    8. arduino를 사용한 소나 및 IDE 처리 시 표시
    9. 발렌타인 데이 아이디어 - 함께 보낸 날 카운터(사진)
    10. Arduino 및 Processing IDE를 사용하여 나침반을 만드는 방법