Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Autoteller met Arduino + Processing + PHP

Componenten en benodigdheden

Arduino UNO
× 1
PIR-bewegingssensor (algemeen)
× 2
LED (generiek)
× 1
Jumperdraden (algemeen)
× 1

Apps en online services

Arduino IDE
Samsung ARTIK Cloud voor IoT
Verwerking
PHP

Over dit project

Inleiding

Dit project laat zien hoe u Arduino . kunt gebruiken om het aantal auto's dat in en uit een winkelcentrum komt te tellen met behulp van twee sensoren, de gegevens naar de cloud te sturen met behulp van Processing &PHP en later het aantal beschikbare slots op de parkeerplaats te bekijken. Je hebt geen Ethernet- of Wifi-shield nodig voor dit project!

Hoe het werkt

De sensoren moeten in de in- en uitgang van de parkeerplaats worden geplaatst om dit te laten werken zoals bedoeld. In principe verhoogt u de telling elke keer dat er een auto binnenkomt en verlaagt wanneer deze uitgaat. De LED in het systeem geeft eenvoudigweg aan dat het voertuig correct is geteld, aangezien het gaat branden telkens wanneer een auto door de sensor rijdt.

Verwerking

Verwerking is een open source taal/ontwikkelingstool voor het schrijven van programma's op andere computers. Handig als je die andere computers wilt laten "praten" met een Arduino, bijvoorbeeld om gegevens die door de Arduino zijn verzameld weer te geven of op te slaan.

Voor dit project hebben we Processing gebruikt om de gegevens te ontvangen (aantal auto's) verzonden door Arduino via seriële poort. Download en installeer de Processing IDE op uw computer. U kunt in de bijgevoegde Processing-schets een zeer eenvoudige en ongecompliceerde coderegel zien. Hier noemen we het PHP-bestand met de methode loadStrings() .

PHP

Het PHP-bestand post-message.php is hetzelfde bestand in de tutorial die hier te vinden is. We hebben het volledige zipbestand van de Github-pagina gedownload en een paar regels code in het originele bestand bewerkt, zodat we het kunnen gebruiken zonder in te loggen op ons Samsung-account. Om dit te laten werken, moet u de instructies hier volgen over het wijzigen van de poort van uw WAMP- of XAMP-server en het installeren van het CA-certificaat voor ARTIK Cloud. Als alternatief kunt u uw externe of gehoste server gebruiken met geïnstalleerd SSL-certificaat.

Kopieer de bestanden naar een map, bijvoorbeeld acdemo zodat het toegankelijk is via de URL http://localhost:8000/acdemo/post-message.php of https://www.yourwebsite.com/acdemo/post-message.php

Er zijn slechts twee bestanden in de PHP SDK die u hoeft te bewerken:ArtikCloudProxy.php en post-message.php . U kunt uw klant- en apparaat-ID hier bekijken.

In de post-message.php bestand, heeft u uw toegangstoken en apparaat-ID nodig. De eenvoudigste manier om het token te krijgen, is door de stappen hier te volgen. Houd er rekening mee dat de enige gegevens die we naar de cloud sturen het aantal auto's zijn die het winkelcentrum binnenkomt en verlaat. We hebben een apparaat in de Artik Cloud gemaakt en het Car Counter genoemd met een veld genaamd count die deze waarde heeft.

Nu alles is ingesteld, is het tijd om aan de slag te gaan! Volg de eenvoudige stappen hieronder:

Artik Cloud

  • 1. Log in op uw Artik Cloud-account en ga naar Applicaties> Nieuwe toepassing
  • 2. Voer in het volgende scherm de benodigde gegevens voor uw aanvraag in.
  • 3. Als u klaar bent met het maken van uw toepassing, wordt als weergegeven in uw dashboard. Klik op de applicatienaam en zoek naar Show Client ID &Secret . Deze codes heb je nodig voor de PHP-bestanden.
  • 4. Selecteer uw toepassing in het zijmenu en klik op Machtigingen . Autoteller toevoegen uit de lijst met apparaattypes en vink Lees . aan &Schrijven machtigingen.

Coderen

  • 1. Upload de schets naar je Arduino UNO. Als dit de eerste keer is dat u Arduino gebruikt, volg dan deze stappen om te begrijpen hoe u deze procedure uitvoert.
  • 2. Voer de Verwerking . uit schets in de Processing IDE. Zorg ervoor dat uw WAMP-server aan is op dit moment als u uw lokale computer gebruikt in plaats van een gehoste server.
  • 3. Als u de onderdelen voor dit systeem met succes hebt aangesloten op basis van het bovenstaande aansluitschema, gaat u door de PIR-sensor om te zien of deze werkt.
  • 4. Log in op uw Artik Cloud-account om te zien of de gegevens correct worden verzonden.

Problemen oplossen

  • 1. Open de onderstaande link om te zien of de gegevens correct naar Artik Cloud worden verzonden. Als er niets misgaat, wordt een Json-bestand weergegeven. Als u geen Json-bestand ziet, heeft u mogelijk het SSL-certificaat niet geïnstalleerd zoals hierboven beschreven. Probeer terug te gaan en zorg ervoor dat u de aanwijzingen goed volgt.

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

Wat nu te doen

Op basis van de bovenstaande gegevens over het aantal auto's kunt u een app voor een winkelcentrum maken, zodat shoppers het aantal beschikbare plaatsen op de parkeerplaats kunnen zien voordat ze naar het winkelcentrum gaan. Je kunt ook nog een lichtindicator toevoegen die aangaat wanneer de parkeerplaats vol is of niet.

Code

  • Arduino-code
  • Schets verwerken
  • post-bericht.php
  • ArtikCloudProxy.php
Arduino-codeArduino
Dit is de code die het aantal auto's in serie weergeeft en de LED aanzet om aan te geven dat een auto door de PIR-sensor gaat.
int pirPinIN =7;int pirPinOUT =10;int led =13;static long counter =0; ongeldige setup () { pinMode (pirPinIN, INPUT); pinMode(pirPinOUT, INPUT); pinMode (led, UITGANG); digitalWrite (led, LAAG); Serial.begin(9600);} void loop(){ lang nu =millis(); if (digitalRead (pirPinIN) ==HOOG) {counter++; Serial.println(teller); digitalWrite (led, HOOG); vertraging (500); digitalWrite (led, LAAG); } if (digitalRead (pirPinOUT) ==HOOG) { counter--; Serial.println(teller); digitalWrite (led, HOOG); vertraging (500); digitalWrite (led, LAAG); }}
Schets verwerkenJava
Deze verwerkingsschets leest de binnenkomende waarden op de analoge poorten en gebruikt vervolgens seriële communicatiefuncties om de waarden uit te voeren.
import processing.serial.*;Serial myPort; // Maak een object van Serial classString val; // Gegevens ontvangen van de seriële poortvoid setup(){ // Ik weet dat de eerste poort in de seriële lijst op mijn mac // Serial.list()[0] is. // Op Windows-machines opent dit over het algemeen COM1. // Open de poort die je gebruikt. String portName =Serial.list()[0]; // verander de 0 in een 1 of 2 enz. om overeen te komen met uw poort myPort =new Serial (this, portName, 9600);}void draw (){ if ( myPort.available ()> 0) { // If data is beschikbaar, val =myPort.readStringUntil('\n'); // lees het en sla het op in val int count =parseInt(val); if(count>=0){ loadStrings("http://localhost:8000/acdemo/post-message.php?count="+val); } } println(val); // print het uit in de console}
post-message.phpPHP
Deze code KRIJGT de waarde die is doorgegeven door de Processing-schets en POST de telling naar de 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:applicatie /json');echo json_encode($response);
ArtikCloudProxy.phpPHP
Dit is de ArtikCloudProxy-klasse die nodig is om verbinding te maken met de Artik-cloud. Sla het op in dezelfde map als post-message.php ergens toegankelijk voor internet. Breng de nodige wijzigingen aan in de configuratie.
&count="; const API_MESSAGES_POST ="/berichten"; # Leden openbaar $token =null; openbare $gebruiker =null; openbare functie __construct(){ } /** * Stelt het toegangstoken in en zoekt naar de gebruikersprofielinformatie */ openbare functie setAccessToken($someToken){ $this->token =$someToken; $this->user =$this->getUsersSelf(); } /** * API-aanroep GET */ openbare functie getCall($url){ $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPGET, waar); curl_setopt($ch, CURLOPT_RETURNTRANSFER, waar); 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); $respons =$json; } retourneer $antwoord; } /** * API-aanroep POST */ openbare functie postCall($url, $payload){ $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, waar); curl_setopt($ch, CURLOPT_POSTFIELDS, (String) $payload); curl_setopt($ch, CURLOPT_RETURNTRANSFER, waar); 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); $respons =$json; } retourneer $antwoord; } /** * GET /users/self API */ openbare functie 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 */ openbare functie getMessagesLast ($deviceCommaSeparatedList, $countByDevice){ $apiPath =ArtikCloudProxy::API_MESSAGES_LAST; $apiPath =str_replace("", $deviceCommaSeparatedList, $apiPath); $apiPath =str_replace("", $countByDevice, $apiPath); retourneer $this->getCall(ArtikCloudProxy::API_URL.$apiPath); }}

Schema's

Schema voor aansluiting van de 2 PIR-sensoren en de LED

Productieproces

  1. Licht dimmen met PWM met drukknop
  2. ULTRASONE LEVITATION-machine die ARDUINO gebruikt
  3. IOT - Smart Jar met ESP8266, Arduino en ultrasone sensor
  4. Iron Man
  5. Vind mij
  6. Hoe de massa van de aarde te meten met Arduino
  7. Arduino-luchtbevochtigerbediening
  8. Sonar met arduino en weergave op verwerkings-IDE
  9. De draagbare MAX30100-polssensor gebruiken met Arduino
  10. Idee voor Valentijnsdag - Teller van samen doorgebrachte dagen (foto)
  11. Hoe maak je een kompas met Arduino en Processing IDE?