工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino +処理+ PHPを使用したカーカウンター

コンポーネントと消耗品

>
Arduino UNO
× 1
PIRモーションセンサー(汎用)
× 2
LED(汎用)
× 1
ジャンパー線(汎用)
× 1

アプリとオンラインサービス

>
Arduino IDE
Samsung ARTIK Cloud for IoT
処理中
PHP

このプロジェクトについて

はじめに

このプロジェクトは、 Arduino の使用方法を示しています 2つのセンサーを使用してモールに出入りする車の数をカウントし、Processing&PHPを使用してデータをクラウドに送信し、後で駐車場で利用可能なスロットの数を表示します。このプロジェクトにはイーサネットやWifiシールドは必要ありません!

仕組み

これが意図したとおりに機能するためには、センサーを駐車場の入口と出口に配置する必要があります。基本的に、 カウントをインクリメントします 車が入ってくるたびに、出て行くときにデクリメントします。システムのLEDは、車がセンサーを通過するたびに点灯するため、車両が適切にカウントされていることを示しています。

処理中

処理 は、他のコンピューターでプログラムを作成するためのオープンソースの言語/開発ツールです。 Arduinoによって収集されたデータを表示または保存する場合など、他のコンピューターがArduinoと「通信」する場合に便利です。

このプロジェクトでは、Processingを使用してデータを受信しました(車の数) Arduinoからシリアルポート経由で送信されます。 ProcessingIDEをダウンロードしてコンピュータにインストールします。添付のProcessingスケッチで、非常に単純でわかりやすいコード行を確認できます。ここでは、メソッド loadStrings()を使用してPHPファイルを呼び出します。 。

<図>

PHP

PHPファイルpost-message.phpは、ここにあるチュートリアルの同じファイルです。 zipファイル全体をGithubページからダウンロードし、元のファイルの数行のコードを編集して、Samsungアカウントにログインしなくても使用できるようにしました。これを機能させるには、WAMPまたはXAMPサーバーのポートの変更とARTIKクラウドのCA証明書のインストールに関するここの指示に従う必要があります。または、SSL証明書がインストールされたリモートサーバーまたはホストサーバーを使用することもできます。

ファイルをフォルダにコピーします。たとえば、 acdemo URL http:// localhost:8000 / acdemo /post-message.phpまたはhttps://www.yourwebsite.com/acdemo/post-message.php

を使用してアクセスできるようにします。

PHP SDKには、編集する必要のあるファイルが2つだけあります。 ArtikCloudProxy.php および post-message.php 。ここでクライアントとデバイスIDを表示できます。

<図>

post-message.php ファイルの場合、アクセストークンとデバイスIDを取得する必要があります。トークンを取得する最も簡単な方法は、次の手順に従うことです。クラウドに送信するデータは、車の数のみであることに注意してください。 モールに出入りします。 Artik Cloudでデバイスを作成し、 Car Counter という名前を付けました。 count というフィールドがあります これはこの値を保持します。

すべてがセットアップされたので、それを実行する時が来ました!以下の簡単な手順に従ってください:

Artikクラウド

  • 1。 Artik Cloudアカウントにログインし、アプリケーションに移動します> 新しいアプリケーション
<図>
  • 2。次の画面で、アプリケーションに必要な詳細を入力します。
  • 3。アプリケーションの作成が完了すると、ダッシュボードに表示されます。アプリケーション名をクリックして、クライアントIDとシークレットを表示を探します。 。 PHPファイルにはこれらのコードが必要です。
<図>
  • 4。サイドメニューからアプリケーションを選択し、[権限]をクリックします 。 カーカウンターを追加 デバイスタイプのリストから、読み取りを確認します。 &書き込み 権限。
<図>

コーディング

  • 1。スケッチをArduinoUNOにアップロードします。 Arduinoを初めて使用する場合は、次の手順に従って、この手順を実行する方法を理解してください。
  • 2。 処理を実行します ProcessingIDEでスケッチします。 WAMPサーバーがオンになっていることを確認してください この時点で、ホストサーバーの代わりにローカルコンピューターを使用している場合。
  • 3。上記の接続図に基づいてこのシステムの部品を正常に接続した場合は、PIRセンサーを通過して機能するかどうかを確認してください。
  • 4。 Artik Cloudアカウントにログインして、データが正しく送信されているかどうかを確認してください。
<図>

トラブルシューティング

  • 1。以下のリンクを開いて、データがArtikCloudに適切に送信されているかどうかを確認してください。何も問題がなければ、Jsonファイルが表示されます。 Jsonファイルが表示されない場合は、上記のSSL証明書がインストールされていない可能性があります。戻って、指示に正しく従うようにしてください。

http:// localhost:8000 / acdemo / post-message.php?count =10

次に行うこと

上記の車の数のデータに基づいて、買い物客がモールに行く前に駐車スペースの利用可能なスロットの数を確認できるように、モールのアプリを作成できます。駐車場が満車かどうかにかかわらず点灯する別のライトインジケーターを追加することもできます。

コード

  • Arduinoコード
  • スケッチの処理
  • post-message.php
  • ArtikCloudProxy.php
Arduinoコード Arduino
これは、車の数をシリアルに表示し、LEDをオンにして、車がPIRセンサーを通過したことを示すコードです。
 intpirPinIN =7; int pirPinOUT =10; int led =13; static long counter =0; void setup(){pinMode(pirPinIN、INPUT); pinMode(pirPinOUT、INPUT); pinMode(led、OUTPUT); digitalWrite(led、LOW); Serial.begin(9600);} void loop(){long now =millis(); if(digitalRead(pirPinIN)==HIGH){counter ++; Serial.println(counter); digitalWrite(led、HIGH); delay(500); digitalWrite(led、LOW); } if(digitalRead(pirPinOUT)==HIGH){counter--; Serial.println(counter); digitalWrite(led、HIGH); delay(500); digitalWrite(led、LOW); }} 
Sketch Java の処理
この処理スケッチは、アナログポートで入力値を読み取り、シリアル通信機能を使用して値を出力します。
 importprocessing.serial。*; Serial myPort; //シリアルからオブジェクトを作成しますclassStringval; //シリアルポートから受信したデータvoidsetup(){// Macのシリアルリストの最初のポートが//Serial.list()[0]であることを知っています。 // Windowsマシンでは、これは通常COM1を開きます。 //使用しているポートを開きます。文字列portName =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(val); //コンソールで印刷します} 
post-message.php PHP
このコードは、Processingスケッチによって渡された値を取得し、カウントをクラウドにPOSTします。
 <?php $ count =filter_input(INPUT_GET、 'count'、FILTER_SANITIZE_NUMBER_INT); require( 'ArtikCloudProxy.php'); $ proxy =new ArtikCloudProxy(); $ proxy-> 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( 'Content-Type:application / json '); echo json_encode($ response); 
ArtikCloudProxy.php PHP
これは、Artikクラウドに接続するために必要なArtikCloudProxyクラスです。 Webにアクセスできる場所にあるpost-message.phpと同じフォルダーに保存します。構成に必要な変更を加えます。
 <?php / ** * ARTIKCloudと通信するARTIKCloudヘルパークラス** / class ArtikCloudProxy {#一般的な構成const CLIENT_ID ="YOUR_CLIENT_ID"; const DEVICE_ID ="YOUR_DEVICE_ID"; const API_URL ="https://api.artik.cloud/v1.1"; #APIパスconst API_USERS_SELF ="/ users / self"; const API_MESSAGES_LAST ="/ messages / last?sdids =&count ="; const API_MESSAGES_POST ="/ messages"; #メンバーpublic $ token =null; public $ user =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、true); curl_setopt($ ch、CURLOPT_RETURNTRANSFER、true); curl_setopt($ ch、CURLOPT_HEADER、false); curl_setopt($ ch、CURLOPT_HTTPHEADER、array( 'Content-Type:application / json'、 'Authorization:bearer'。$ 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); $ response =$ json; } return $ response; } / ** * 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、(文字列)$ payload); curl_setopt($ ch、CURLOPT_RETURNTRANSFER、true); curl_setopt($ ch、CURLOPT_HEADER、false); curl_setopt($ ch、CURLOPT_HTTPHEADER、array( 'Content-Type:application / json'、 'Authorization:bearer'。$ 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); $ response =$ json; } return $ response; } / ** * 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 / history / 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. Find Me
  6. Arduinoを使用して地球の質量を測定する方法
  7. Arduino加湿器制御
  8. arduinoを使用したソナーと処理IDEでの表示
  9. ArduinoでMAX30100ウェアラブルパルスセンサーを使用する
  10. バレンタインデーのアイデア-一緒に過ごした日数カウンター(写真)
  11. ArduinoとProcessingIDEを使用してコンパスを作成する方法