Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Autozähler mit Arduino + Processing + PHP

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
PIR-Bewegungssensor (generisch)
× 2
LED (generisch)
× 1
Jumper (generisch)
× 1

Apps und Onlinedienste

Arduino-IDE
Samsung ARTIK Cloud für IoT
Verarbeitung
PHP

Über dieses Projekt

Einführung

Dieses Projekt zeigt, wie Sie Arduino verwenden können mit zwei Sensoren die Anzahl der Autos zu zählen, die in ein Einkaufszentrum ein- und ausfahren, die Daten mit Processing &PHP in die Cloud senden und später die Anzahl der verfügbaren Parkplätze auf dem Parkplatz anzeigen. Sie benötigen für dieses Projekt kein Ethernet- oder Wifi-Shield!

So funktioniert's

Damit dies wie vorgesehen funktioniert, müssen die Sensoren an der Ein- und Ausfahrt des Parkplatzes platziert werden. Grundsätzlich erhöhen Sie die Zählung jedes Mal, wenn ein Auto hereinkommt und dekrementiert, wenn es ausgeht. Die LED im System zeigt einfach an, dass das Fahrzeug richtig gezählt wurde, da sie jedes Mal aufleuchtet, wenn ein Auto den Sensor passiert.

Verarbeitung

Verarbeitung ist ein Open-Source-Sprach-/Entwicklungstool zum Schreiben von Programmen auf anderen Computern. Nützlich, wenn Sie möchten, dass diese anderen Computer mit einem Arduino "sprechen", um beispielsweise einige vom Arduino gesammelte Daten anzuzeigen oder zu speichern.

Für dieses Projekt haben wir Processing verwendet, um die Daten (Anzahl der Autos) . zu erhalten von Arduino über serielle Schnittstelle gesendet. Laden Sie die Processing IDE herunter und installieren Sie sie auf Ihrem Computer. Sie können in der beigefügten Verarbeitungsskizze eine sehr einfache und unkomplizierte Codezeile sehen. Hier rufen wir die PHP-Datei mit der Methode loadStrings() . auf .

PHP

Die PHP-Datei post-message.php ist dieselbe Datei wie im Tutorial, das Sie hier finden. Wir haben die gesamte ZIP-Datei von der Github-Seite heruntergeladen und einige Codezeilen in der Originaldatei bearbeitet, damit wir sie verwenden können, ohne sich bei unserem Samsung-Konto anmelden zu müssen. Damit dies funktioniert, müssen Sie den Anweisungen hier folgen, um den Port Ihres WAMP- oder XAMP-Servers zu ändern und das CA-Zertifikat für ARTIK Cloud zu installieren. Alternativ können Sie Ihren entfernten oder gehosteten Server mit installiertem SSL-Zertifikat verwenden.

Kopieren Sie die Dateien in einen Ordner, z. B. acdemo damit über die URL http://localhost:8000/acdemo/post-message.php oder https://www.yourwebsite.com/acdemo/post-message.php

. darauf zugegriffen werden kann

Es gibt nur zwei Dateien im PHP SDK, die Sie bearbeiten müssen:ArtikCloudProxy.php und post-message.php . Sie können Ihre Client- und Geräte-ID hier einsehen.

In der post-message.php Datei benötigen Sie Ihr Zugriffstoken und Ihre Geräte-ID. Der einfachste Weg, um das Token zu erhalten, besteht darin, die Schritte hier zu befolgen. Beachten Sie, dass die einzigen Daten, die wir an die Cloud senden, die Anzahl der Autos sind die das Einkaufszentrum betritt und verlässt. Wir haben ein Gerät in der Artik Cloud erstellt und es Car Counter genannt mit einem Feld namens count die diesen Wert hält.

Jetzt, wo alles eingerichtet ist, ist es Zeit, es in Gang zu bringen! Befolgen Sie die folgenden einfachen Schritte:

Artik Cloud

  • 1. Melden Sie sich bei Ihrem Artik Cloud-Konto an und gehen Sie zu Anwendungen> Neue Anwendung
  • 2. Geben Sie im nächsten Bildschirm die notwendigen Details für Ihre Bewerbung ein.
  • 3. Sobald Sie mit der Erstellung Ihrer Anwendung fertig sind, wird sie in Ihrem Dashboard angezeigt. Klicken Sie auf den Anwendungsnamen und suchen Sie nach Client-ID und Geheimnis anzeigen . Sie benötigen diese Codes für die PHP-Dateien.
  • 4. Wählen Sie im Seitenmenü Ihre Anwendung aus und klicken Sie auf Berechtigungen . Autoschalter hinzufügen aus der Liste der Gerätetypen und aktivieren Sie Lesen &Schreiben Berechtigungen.

Codierung

  • 1. Laden Sie die Skizze auf Ihr Arduino UNO hoch. Wenn Sie Arduino zum ersten Mal verwenden, befolgen Sie diese Schritte, um zu verstehen, wie Sie dieses Verfahren ausführen.
  • 2. Führen Sie die Verarbeitung aus Sketch in der Verarbeitungs-IDE. Stellen Sie sicher, dass Ihr WAMP-Server an ist an dieser Stelle, wenn Sie Ihren lokalen Computer anstelle eines gehosteten Servers verwenden.
  • 3. Wenn Sie die Teile für dieses System basierend auf dem obigen Anschlussdiagramm erfolgreich angeschlossen haben, gehen Sie durch den PIR-Sensor, um zu sehen, ob er funktioniert.
  • 4. Melden Sie sich bei Ihrem Artik Cloud-Konto an, um zu sehen, ob die Daten ordnungsgemäß gesendet werden.

Fehlerbehebung

  • 1. Öffnen Sie den unten stehenden Link, um zu sehen, ob die Daten ordnungsgemäß an Artik Cloud gesendet werden. Wenn nichts schief geht, wird eine Json-Datei angezeigt. Wenn Sie keine Json-Datei sehen, haben Sie das SSL-Zertifikat möglicherweise nicht wie oben beschrieben installiert. Versuchen Sie, zurück zu gehen und stellen Sie sicher, dass Sie die Anweisungen richtig befolgen.

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

Was als nächstes zu tun ist

Basierend auf den obigen Daten zur Fahrzeuganzahl können Sie eine App für ein Einkaufszentrum erstellen, damit Käufer die Anzahl der verfügbaren Parkplätze auf dem Parkplatz sehen können, bevor sie zum Einkaufszentrum gehen. Sie können auch eine weitere Lichtanzeige hinzufügen, die sich einschaltet, wenn der Parkplatz voll ist oder nicht.

Code

  • Arduino-Code
  • Verarbeitungsskizze
  • post-message.php
  • ArtikCloudProxy.php
Arduino-CodeArduino
Dies ist der Code, der die Fahrzeugzählung auf der Seriennummer anzeigt und die LED einschaltet, um anzuzeigen, dass ein Fahrzeug den PIR-Sensor passiert.
int pirPinIN =7;int pirPinOUT =10;int led =13;statischer langer Zähler =0; ungültiges Setup () { PinMode (pirPinIN, INPUT); pinMode (pirPinOUT, INPUT); pinMode (led, AUSGANG); digitalWrite (LED, NIEDRIG); Serial.begin (9600);} void loop () { long now =millis (); if (digitalRead (pirPinIN) ==HIGH) { counter++; Serial.println (Zähler); digitalWrite (led, HIGH); Verzögerung (500); digitalWrite (LED, NIEDRIG); aufrechtzuerhalten. Wenn (digitalRead (pirPinOUT) ==HIGH) {counter--; Serial.println (Zähler); digitalWrite (led, HIGH); Verzögerung (500); digitalWrite (LED, NIEDRIG); }}
VerarbeitungsskizzeJava
Diese Verarbeitungsskizze liest die eingehenden Werte an den analogen Ports und verwendet dann serielle Kommunikationsfunktionen, um die Werte auszugeben.
import processing.serial.*;Serial myPort; // Objekt aus Serial erstellen classString val; // Daten vom seriellen Portvoid setup () empfangen { // Ich weiß, dass der erste Port in der seriellen Liste auf meinem Mac // Serial.list () [0] ist. // Auf Windows-Rechnern öffnet dies im Allgemeinen COM1. // Öffnen Sie den Port, den Sie verwenden. String portName =Serial.list()[0]; // Ändern Sie die 0 in eine 1 oder 2 usw., um sie Ihrem Port anzupassen myPort =new Serial (this, portName, 9600);}void draw () { if ( myPort.available ()> 0) { // Wenn die Daten sind verfügbar, val =myPort.readStringUntil('\n'); // lesen und in val speichern int count =parseInt(val); if(count>=0){ loadStrings("http://localhost:8000/acdemo/post-message.php?count="+val); } } println(val); //in der Konsole ausdrucken}
post-message.phpPHP
Dieser Code ruft den von der Verarbeitungsskizze übergebenen Wert ab und POST die Zählung an die Cloud.
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.phpPHP
Dies ist die ArtikCloudProxy-Klasse, die für die Verbindung mit der Artik-Cloud erforderlich ist. Speichern Sie es im selben Ordner wie post-message.php, wo das Internet zugänglich ist. Nehmen Sie die erforderlichen Änderungen an der Konfiguration vor.
&count="; const API_MESSAGES_POST ="/messages"; # Mitglieder öffentlich $token =null; öffentlich $user =null; öffentliche Funktion __construct(){ } /** * Setzt das Zugriffstoken und sucht nach den Benutzerprofilinformationen */ öffentliche Funktion setAccessToken($someToken){ $this->token =$someToken; $this->user =$this->getUsersSelf(); } /** * API-Aufruf GET */ öffentliche Funktion 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){ $antwort =json_decode($json); } sonst{var_dump($json); $antwort =$json; } Rückgabe von $antwort; } /** * API-Aufruf POST */ öffentliche Funktion postCall($url, $payload){ $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, (String) $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){ $antwort =json_decode($json); } sonst{var_dump($json); $antwort =$json; } Rückgabe von $antwort; } /** * GET /users/self API */ öffentliche Funktion getUsersSelf(){ return $this->getCall(ArtikCloudProxy::API_URL . ArtikCloudProxy::API_USERS_SELF); } /** * POST /message API */ öffentliche Funktion sendMessage($payload){ return $this->postCall(ArtikCloudProxy::API_URL . ArtikCloudProxy::API_MESSAGES_POST, $payload); } /** * GET /historical/normalized/messages/last API */ öffentliche Funktion getMessagesLast($deviceCommaSeparatedList, $countByDevice){ $apiPath =ArtikCloudProxy::API_MESSAGES_LAST; $apiPath =str_replace("", $deviceCommaSeparatedList, $apiPath); $apiPath =str_replace("", $countByDevice, $apiPath); return $this->getCall(ArtikCloudProxy::API_URL.$apiPath); }}

Schaltpläne

Schema zum Anschluss der 2 PIR-Sensoren und der LED

Herstellungsprozess

  1. Dimmen von Lichtern mit PWM über Drucktasten
  2. ULTRASCHALLLEVITATION-Maschine mit ARDUINO
  3. IOT - Smart Jar mit ESP8266, Arduino und Ultraschallsensor
  4. Iron Man
  5. Finde mich
  6. So misst man die Masse der Erde mit Arduino
  7. Arduino-Befeuchtersteuerung
  8. Sonar mit Arduino und Anzeige bei der Verarbeitung von IDE
  9. Valentinstag-Idee – Zusammen verbrachte Tage Counter (Foto)
  10. So erstellen Sie einen Kompass mit Arduino und Processing IDE