Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Contador de carros usando Arduino + Processing + PHP

Componentes e suprimentos

Arduino UNO
× 1
Sensor de movimento PIR (genérico)
× 2
LED (genérico)
× 1
Fios de jumpers (genérico)
× 1

Aplicativos e serviços online

Arduino IDE
Samsung ARTIK Cloud para IoT
Processamento
PHP

Sobre este projeto





Introdução


Este projeto demonstra como você pode usar o Arduino para contar o número de carros que entram e saem de um shopping usando dois sensores, envie os dados para a nuvem usando Processing e PHP e, posteriormente, visualize o número de vagas disponíveis no estacionamento. Você não precisa de um escudo Ethernet ou Wifi para este projeto!





Como funciona


Os sensores precisam ser colocados no ponto de entrada e saída do estacionamento para que funcione conforme o esperado. Basicamente, você incrementa a contagem toda vez que um carro entra e diminui quando ele sai. O LED no sistema simplesmente indica que o veículo está sendo contado corretamente, pois acende cada vez que um carro passa pelo sensor.





Processando


Processando é uma ferramenta de linguagem / desenvolvimento de código aberto para escrever programas em outros computadores. Útil quando você deseja que outros computadores "conversem" com um Arduino, por exemplo, para exibir ou salvar alguns dados coletados pelo Arduino.

Para este projeto, usamos o Processing para receber os dados (contagem de carros) enviado pelo Arduino via porta serial. Baixe e instale o IDE de processamento em seu computador. Você pode ver no esboço do Processing em anexo linhas de código muito simples e diretas. Aqui, chamamos o arquivo PHP usando o método loadStrings () .





PHP


O arquivo PHP post-message.php é o mesmo arquivo do tutorial encontrado aqui. Baixamos todo o arquivo zip da página do Github e editamos algumas linhas de código no arquivo original para que possamos usá-lo sem precisar fazer login em nossa conta Samsung. Para que isso funcione, você precisará seguir as instruções aqui sobre como alterar a porta de seu servidor WAMP ou XAMP e instalar o certificado CA para ARTIK Cloud. Como alternativa, você pode usar seu servidor remoto ou hospedado com certificado SSL instalado.

Copie os arquivos para uma pasta, por exemplo, acdemo para que ele possa ser acessado usando a URL http:// localhost:8000 / acdemo / post-message.php ou https://www.yourwebsite.com/acdemo/post-message.php

Existem apenas dois arquivos no PHP SDK que você precisa editar: ArtikCloudProxy.php e post-message.php . Você pode ver o seu cliente e ID do dispositivo aqui.

No post-message.php arquivo, você precisa obter seu token de acesso e ID do dispositivo. A maneira mais fácil de obter o token é seguindo as etapas aqui. Observe que os únicos dados que estamos enviando para a nuvem são o número de carros que entra e sai do shopping. Criamos um dispositivo na Artik Cloud e o batizamos de Car Counter com um campo chamado contagem que mantém esse valor.

Agora que tudo está configurado, é hora de começar! Siga as etapas simples abaixo:





Artik Cloud

  • 1. Faça login em sua conta Artik Cloud e vá para Aplicativos > Novo aplicativo
  • 2. Insira os detalhes necessários para seu aplicativo na próxima tela.
  • 3. Assim que terminar de criar seu aplicativo, ele será exibido em seu painel. Clique no nome do aplicativo e procure Mostrar ID do cliente e segredo . Você precisa desses códigos para os arquivos PHP.
  • 4. No menu lateral, selecione seu aplicativo e clique em Permissões . Adicionar balcão de automóveis na lista de tipos de dispositivos e marque Ler & Escrever permissões.





Codificação

  • 1. Faça upload do esboço para o seu Arduino UNO. Se esta é a primeira vez que usa o Arduino, siga estas etapas para entender como fazer este procedimento.
  • 2. Execute o Processamento esboço no IDE de processamento. Certifique-se de que seu servidor WAMP esteja ligado neste ponto, se você estiver usando seu computador local em vez de um servidor hospedado.
  • 3. Se você conectou com êxito as partes deste sistema com base no diagrama de conexão acima, passe pelo sensor PIR para ver se funciona.
  • 4. Faça login em sua conta do Artik Cloud para ver se os dados estão sendo enviados corretamente.





Solução de problemas

  • 1. Abra o link abaixo para ver se os dados estão sendo enviados corretamente para Artik Cloud. Se nada der errado, será exibido um arquivo Json. Se você não vir um arquivo Json, pode não ter instalado o certificado SSL conforme descrito acima. Tente voltar e certifique-se de seguir as instruções corretamente.

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





O que fazer a seguir


Com base nos dados de contagem de carros acima, você pode criar um aplicativo para um shopping para que os compradores possam ver o número de vagas disponíveis na vaga antes de ir ao shopping. Você também pode adicionar outro indicador luminoso que acende quando o estacionamento está cheio ou não.

Código

  • Código Arduino
  • Processando esboço
  • post-message.php
  • ArtikCloudProxy.php
Código Arduino Arduino
Este é o código que exibe a contagem de carros para o serial e acende o LED para indicar que um carro passa pelo sensor PIR.
 int pirPinIN =7; int pirPinOUT =10; int led =13; contador longo estático =0; configuração vazia () {pinMode (pirPinIN, INPUT); pinMode (pirPinOUT, INPUT); pinMode (led, OUTPUT); digitalWrite (led, BAIXO); Serial.begin (9600);} void loop () {long now =millis (); if (digitalRead (pirPinIN) ==HIGH) {contador ++; Serial.println (contador); digitalWrite (led, HIGH); atraso (500); digitalWrite (led, BAIXO); } if (digitalRead (pirPinOUT) ==HIGH) {contador--; Serial.println (contador); digitalWrite (led, HIGH); atraso (500); digitalWrite (led, BAIXO); }} 
Processando Sketch Java
Este esboço de processamento lê os valores de entrada nas portas analógicas e, em seguida, usa as funções de comunicação serial para gerar os valores.
 import processing.serial. *; Serial myPort; // Cria o objeto de Serial classString val; // Dados recebidos do serial portvoid setup () {// Eu sei que a primeira porta na lista serial no meu mac // é Serial.list () [0]. // Em máquinas Windows, isso geralmente abre COM1. // Abra qualquer porta que você está usando. String portName =Serial.list () [0]; // altere 0 para 1 ou 2 etc. para corresponder à sua porta myPort =new Serial (this, portName, 9600);} void draw () {if (myPort.available ()> 0) {// Se os dados forem disponível, val =myPort.readStringUntil ('\ n'); // lê-o e armazena-o em val int count =parseInt (val); if (count> =0) {loadStrings ("http:// localhost:8000 / acdemo / post-message.php? count =" + val); }} println (val); // imprima no console} 
post-message.php PHP
Este código obtém o valor passado pelo esboço de processamento e POST a contagem para a nuvem.
  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); cabeçalho ('Content-Type:application / json '); echo json_encode ($ resposta); 
ArtikCloudProxy.php PHP
Esta é a classe ArtikCloudProxy necessária para se conectar à nuvem Artik. Salve-o na mesma pasta que post-message.php em algum lugar acessível para a web. Faça as alterações necessárias na configuração.
  &count ="; const API_MESSAGES_POST ="/ mensagens"; # Membros public $ token =null; public $ user =null; public function __construct () {} / ** * Define o token de acesso e procura as informações do perfil do usuário * / public function setAccessToken ($ someToken) {$ this-> token =$ someToken; $ this-> user =$ this-> getUsersSelf (); } / ** * API chamada GET * / public function getCall ($ url) {$ ch =curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_HTTPGET, verdadeiro); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ ch, CURLOPT_HEADER, false); curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Tipo de conteúdo:aplicativo / json', 'Autorização:portador'. $ 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); $ resposta =$ json; } return $ resposta; } / ** * API chamada 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, (String) $ carga útil); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ ch, CURLOPT_HEADER, false); curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Tipo de conteúdo:aplicativo / json', 'Autorização:portador'. $ 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); $ resposta =$ json; } return $ resposta; } / ** * GET / users / self API * / public function getUsersSelf () {return $ this-> getCall (ArtikCloudProxy ::API_URL. ArtikCloudProxy ::API_USERS_SELF); } / ** * POST / API de mensagem * / 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); return $ this-> getCall (ArtikCloudProxy ::API_URL. $ apiPath); }} 

Esquemas

Diagrama para conectar os 2 sensores PIR e o LED

Processo de manufatura

  1. Luzes de dimerização com PWM usando o botão de ação
  2. Máquina de LEVITAÇÃO ULTRASÔNICA Usando ARDUINO
  3. IOT - Jar inteligente usando ESP8266, Arduino e sensor ultrassônico
  4. Homem de Ferro
  5. Encontre-me
  6. Como medir a massa da Terra usando o Arduino
  7. Controle do umidificador Arduino
  8. Sonar usando arduino e exibição no IDE de processamento
  9. Ideia para o dia dos namorados - Contador de dias passados ​​juntos (foto)
  10. Como fazer uma bússola usando Arduino e IDE de processamento