제조공정
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
| ||||
| ||||
| ||||
|
소개
이 프로젝트는 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 필드 사용 이 값을 보유합니다.
이제 모든 것이 설정되었으므로 시작할 시간입니다! 아래의 간단한 단계를 따르십시오:
아틱 클라우드 <울>
코딩 <울>
문제 해결 <울>
http://localhost:8000/acdemo/post-message.php?count=10
다음에 할 일
위의 차량 대수 데이터를 기반으로 쇼핑객이 쇼핑몰에 가기 전에 주차 공간의 여유 공간을 볼 수 있도록 쇼핑몰용 앱을 만들 수 있습니다. 주차장이 만차일 때 켜지는 다른 표시등을 추가할 수도 있습니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">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(발); //콘솔에서 출력}
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);
&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); }}
제조공정
구성품 및 소모품 Arduino Nano R3 × 1 회전 전위차계(일반) × 7 SparkFun 푸시버튼 스위치 12mm × 7 MIDI 포트 × 1 저항 221옴 × 4 LED(일반) × 2 이 프로젝트 정보 2019년 3월 11일 업데이트 안녕하세요, 저는 아르페지에이터를 위한 새 펌웨어를 만들었습니다. 소스 코드가 완전히 다시 작성되었습니다. 이제 모듈식 구조를 통해 Arduino뿐만
Arduino 자습서 시리즈의 여섯 번째 Arduino 자습서에 오신 것을 환영합니다. 이 튜토리얼에서는 Arduino를 Processing에 연결하는 방법과 직렬 포트를 사용하여 통신하는 방법을 배웁니다. 또한 Processing IDE를 사용하여 Arduino 보드에 명령을 보내고 그 반대의 경우도 마찬가지입니다. 이것은 따라하기 쉬운 단계별 비디오 자습서입니다. 또한 동영상 아래에서 이 튜토리얼에 필요한 부품과 동영상의 예제 소스 코드를 찾을 수 있습니다. 이 Arduino 튜토리얼에 필요한 구성요소 구성요소는 아래