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

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Componentes e Materiais

Raspberry Pi 2 Model B 1
Arduino UNO 1
Módulo RFID JT2850 1
Antena RFID JT606 1

Ferramentas e Máquinas Necessárias

PC Microsoft rodando Windows 10 com Visual Studio 2015 instalado
Telefone Android

Aplicativos e Serviços Online

Microsoft Windows 10 IoT Core
Microsoft Azure
Microsoft Visual Studio 2015

Sobre o Projeto

Contexto

Você já entrou em uma situação onde tenta procurar algo, mas gasta muito tempo procurando e ainda não consegue encontrar? Aproveitando a tecnologia RFID, usando leitor RFID e múltiplas tags RFID anexadas ao item, podemos localizar facilmente o item armazenado. Sempre que compramos um novo item, simplesmente colamos uma tag RFID nele e registramos os detalhes do item no sistema. Uma vez que precisamos procurar um item em casa, mas não lembramos onde está, basta fazer uma busca no aplicativo móvel e você saberá em qual cômodo da sua casa ele está atualmente.

A Ideia Completa

Os componentes deste projeto consistirão em um módulo leitor UHF RFID, uma antena UHF RFID, um Arduino UNO, um Raspberry Pi 2 rodando Windows 10 IoT Core (você pode consultar aqui se não souber como instalar o Windows 10 IoT Core), um aplicativo móvel e serviço web Azure para armazenamento de dados. Haverá múltiplos módulos UHF RFID na casa, e cada módulo UHF RFID será conectado a um Arduino UNO, que então se conectará ao Raspberry Pi 2. Sempre que um item que se deseja rastrear pelo sistema, uma tag RFID será anexada. O detalhe do item e o valor RFID são necessários para registrar no sistema. Os dados de cada registro serão armazenados no banco de dados SQL Azure através da Web API Azure. Sempre que o usuário for procurar um item em casa, mas não tiver certeza de em qual cômodo da casa o item estará localizado. Ele/ela pode ligar o aplicativo móvel. O aplicativo móvel enviará a solicitação de busca ao Raspberry Pi 2 através da rede WiFi. Uma vez que o Raspberry Pi 2 receber a solicitação de busca, ele a enviará para todos os Arduino UNO conectados a ele. O Arduino UNO enviará um comando de leitura ao módulo UHF RFID. Uma vez que qualquer um dos leitores UHF RFID em diferentes locais consiga capturar o RFID necessário, ele retornará um valor de volta ao Arduino UNO. O Arduino UNO retornará a localização do leitor RFID de volta ao Raspberry Pi 2 e o Raspberry Pi 2 processará ainda mais o resultado da busca e retornará ao aplicativo móvel.

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Como Fazer?

Vou desenvolver um aplicativo em segundo plano rodando no Windows 10 IoT Core, podemos precisar saber o endereço IP do Raspberry Pi 2. Não é necessário ter um display. Graças ao todo-poderoso Windows IoT Core Watcher. Tudo que você precisa é conectar seu Raspberry Pi 2 modelo B como mostrado abaixo:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Conectando PC e Raspberry Pi 2 através de um cabo de rede, o todo-poderoso Windows IoT Core Watcher será capaz de dizer qual é o endereço IP do seu Raspberry Pi 2:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Criar um Projeto no Visual Studio 2015

Então você pode começar a desenvolver usando o Visual Studio 2015, simplesmente baixe os códigos que compartilhei aqui e execute usando o Visual Studio 2015.

Baixe o código do GitHub e você poderá rodar o projeto diretamente. Se você está tentando criar um novo projeto, pode tentar desta forma:

1. Vá em File > New > Project

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

2. Em templates Visual C#, procure por "Background Application (IoT)". Insira o nome do seu projeto, seu projeto é criado.

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

3. Uma vez criado o projeto, próximo é configurar a depuração. Clique com botão direito no projeto e selecione "Properties"

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

4. Na janela de propriedades do projeto, clique na aba debug e faça as seguintes configurações:

  1. Platform: ARM
  2. Target Device: Remote Machine
  3. Remote machine:
  4. Desmarque "Use authentication"

Salve a configuração e agora você pode começar a codificar no arquivo StartupTask.cs do seu projeto recém-criado.

Depuração no Visual Studio 2015

Uma vez que você completou a codificação e gostaria de começar a depurar, pode seguir os seguintes passos e capturas de tela:

1. Clique na barra cinza do lado esquerdo para definir breakpoint na linha de código que pretende investigar:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

2. Em seguida, clique no botão verde "Remote machine" para iniciar a depuração:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

3. Uma vez entrado no modo de depuração, o botão verde "Remote Machine" será alterado para "Continue" ao mesmo tempo que os botões de passo serão habilitados:

Botão Continue com "Next", "Step Into", "Step Over" e "Step Out"

Durante a execução da depuração, você pode passar o mouse sobre o cursor para inspecionar certo valor da variável ou destacar e clicar com botão direito na variável e selecionar "Add Watch" para adicionar a variável à lista de observação:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente
Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Criar Web API no Azure para Servir Transações IoT e App Móvel

Criar Projeto Aplicação Web ASP.NET

1. Crie uma Aplicação Web ASP.NET, insira o nome do projeto e clique no botão OK na parte inferior

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

2. Na próxima tela, clique em Choose MVC sob template ASP.NET 4.5.2 (se você é aventureiro, fique à vontade para tentar template ASP.NET 5 preview com framework MVC6. Os passos serão os mesmos)

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

3. Em seguida, defina o método de autenticação para "No authentication"

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

4. Note também que se você deseja hospedar esta Web API em um servidor na nuvem, pode marcar a opção "Host in the cloud" como mostrado abaixo:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Se você não tem uma conta Microsoft Azure, pode se inscrever para teste gratuito e aproveitar $200 de crédito grátis. Simplesmente clique aqui: https://azure.microsoft.com/en-us/pricing/free-trial/

5. Se você escolher hospedar sua Web API no Azure Web App, uma vez clicado "OK", a próxima tela precisará que você faça login no Microsoft Azure.

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

6. Uma vez logado com sucesso, simplesmente insira o nome do seu web app e detalhes subsequentes como mostrado no formulário:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Uma vez preenchidas todas as informações, clique OK e aguarde um pouco para o VS2015 criar web app e banco de dados na sua conta Azure.

Usando Entity Framework

Vou usar o Console do Gerenciador de Pacotes NuGet para a instalação. Primeiro você precisará iniciar seu Gerenciador de Pacotes NuGet como abaixo: Tools > NuGet Package Manager > Package Manager Console

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

2. Em seguida, digite o comando "Install-Package EntityFramework" no seu console do gerenciador de pacotes abaixo:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

3. Em seguida, você precisará criar uma classe Model para descrever sua tabela de banco de dados e campos. Simplesmente clique com botão direito na pasta Models e clique "Add" > "Class.."

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Uma vez criada a nova classe, adicione as seguintes linhas:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Após a criação da classe model, próximo passo é criar seus controladores WebAPI junto com actions usando Entity Framework. Siga a captura de tela abaixo, clique com botão direito na pasta Controllers e selecione "Add" > "New Scaffolded Item":

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Selecione "Web API 2 Controller with actions, using Entity Framework" sob categoria Web API na próxima tela:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Uma vez clicado o botão "Add", a seguinte tela será mostrada:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Clique no botão '+' no campo Data context class para criar uma nova classe de contexto de dados:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Clique Add na próxima tela para criar:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Uma vez todos os campos preenchidos, clique "Add" para gerar o item scaffolded:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Após geração bem-sucedida do item scaffolded, você poderá ver o controller e a classe de contexto de dados nas pastas Controllers e Models:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Em seguida, execute o comando Enable-Migrations no Console do Gerenciador de Pacotes:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Após comando Enable-Migrations, siga com comando Add-Migration <Nome>:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Finalmente, comando Update-Database criará um banco de dados baseado no script de migração gerado dos Models. Você poderá encontrar o banco de dados recém-criado sob tabela App_Data:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente
Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Publicar sua WEB API

Uma vez que o banco de dados foi configurado com sucesso, a web api é considerada concluída (o controller scaffolded gerará funções básicas para chamadas RESTful). Apenas para garantir que as funções GetMything(GET), PostMything(POST), PutMything(PUT) e Deletemything(DELETE) existam no MyThingsController.

Uma vez que o projeto Web API foi concluído. Em seguida, você pode publicar a web API no Azure Web APP com os seguintes passos:

1. Selecione menu Build > Publish MyThingAPI como na captura de tela a seguir:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

2. O seguinte popup aparecerá e permitirá que você selecione um alvo de publicação. Você pode selecionar Microsoft Azure API Apps(Preview) se estiver usando template ASP.NET5 MVC 6 para sua Web API:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

3. Uma vez clicado Microsoft Azure Web Apps, a seguinte tela aparecerá e precisará que você faça login na sua conta Azure:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Insira suas credenciais Azure e faça login:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

4. Após login bem-sucedido, você poderá recuperar seu web app existente hospedado no Azure (deveria ter sido criado anteriormente ao criar este projeto no VS2015):

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

5. Uma vez selecionado o Web Apps e clicado "OK", a tela abaixo aparecerá:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

As configurações de conexão serão propagadas, simplesmente clique next para prosseguir

6. Na aba settings você verá a string de conexão do banco de dados, outras infos serão preenchidas automaticamente, mas certifique-se que ambas as checkboxes "Use this connection string at runtime" e "Execute Code First Migration" estão marcadas:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

6. Uma vez todas as configurações preenchidas, clique Publish e o Visual Studio lançará o Azure Web App imediatamente após publicação bem-sucedida:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Uma vez que a web api é publicada, você pode testar a API REST. Estou usando a extensão do Chrome "Advance REST Client" para testes:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Você pode tentar a string JSON abaixo para chamada POST:

{
  id:1,
  status: "0",
  rfid: "1009622005390623",
  image: "",
  name: "some tool",
  type: "tool",
  location: "bedroom",
  createdAt: "2015-10-13T10:26:01.14",
  lastUpdatedAt: "2015-10-13T10:26:01.14"
}

Criar Aplicativo Universal Windows

Como o app IoT em segundo plano e REST API estão prontos, o próximo é construir um Aplicativo Universal Windows como cliente. Universal App nos permite usar um conjunto de códigos para vários dispositivos. Criei um Universal App para Tablet como exemplo aqui (você pode simplesmente alterar a configuração de layout para telefone móvel ou laptop).

Para criar um Universal App, simplesmente clique File > New > Project no seu Visual Studio 2015, então selecione universal app como segue:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Uma vez criada nova solução, você pode substituir os scripts cs e arquivos .xaml com MyThingApp que compartilhei no GitHub.

Depuração no Windows Universal App:

Windows universal app fornece várias configurações de depuração incluindo plataformas ARM, x64 e x86. Se você está rodando depuração no seu PC local que está rodando Windows 64 bit, você precisará escolher x64 e clicar no botão verde (Selecionar "local machine")

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Se seu app está rodando sem erro, deve parecer algo como isto:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Configurar Notification Hub e Push Notification UWP

1. Uma vez Web API e Universal App prontos, você pode logar aqui https://dev.windows.com/en-us/dashboard/Application/New para reservar um nome de App.

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

2. Uma vez criado o nome do app, volte ao MyThingApp e clique com botão direito no seu projeto. Selecione Store > Associate App with the Store

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente
Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente
Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente
Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Para criação de notification hub, consulte aqui:

https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-started

3. Em seguida, adicione a seguinte função no App.xaml.cs

private async void InitNotificationsAsync()
{
  var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
  var hub = new NotificationHub("notification", "Endpoint=sb://smartwardrobe.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=MlHoVfn1Ub/c2ThUha+Crn7hHSGmqofrW3cJ6IK89Ok=");
  var result = await hub.RegisterNativeAsync(channel.Uri);
}

Também chame esta nova função dentro da função OnLaunched:

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
  InitNotificationsAsync();
}

Finalmente, adicione esta linha de código no MainPage.cs, função MainPage():

this.NavigationCacheMode = NavigationCacheMode.Required;

4. Finalmente, configure uma tarefa de threading dentro de MyThing Web API > MyThingController com os seguintes códigos:

public class NotificationClass {
  internal async System.Threading.Tasks.Task<ThreadStart> SendNotificationAsync(string rfid)
  {
    NotificationHubClient hub = NotificationHubClient
      .CreateClientFromConnectionString("<sua connection string>", "<hub name>");
    var toast = @"<toast launch=""" + rfid + @"""><visual><binding template=""ToastText01""><text id=""1"">New Mything need to update</text></binding></visual></toast>";
    await hub.SendWindowsNativeNotificationAsync(toast);
    return null;
  }
}

E os códigos abaixo após criação bem-sucedida de novo registro:

NotificationClass notClass = new NotificationClass();
Thread notificationThread = new Thread(async x => { await notClass.SendNotificationAsync(myThing.rfid); });
notificationThread.Start();

5. Após configuração bem-sucedida, uma notificação toast como abaixo será recebida após criação bem-sucedida de registro:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

6. Clique na notificação e ela iniciará o MyThingApp instalado no seu PC:

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Clique "OK" e você verá o novo RFID adicionado ao formulário de entrada. Preencha o resto das informações e atualize.

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

LINKS DE REFERÊNCIA:

  1. Guia passo a passo para configurar Windows 10 IoT Core: https://ms-iot.github.io/content/en-US/GetStarted.htm
  2. Configurando Visual Studio 2015 no seu PC: https://ms-iot.github.io/content/en-US/win10/SetupPCRPI.htm
  3. Instruções passo a passo para configurar Windows 10 IoT Core no Raspberry Pi 2: https://ms-iot.github.io/content/en-US/win10/SetupRPI.htm
  4. Como desenvolver aplicação IoT (exemplo Blinky): https://ms-iot.github.io/content/en-US/win10/samples/Blinky.htm
  5. Exemplo serial Windows IoT: https://ms-iot.github.io/content/en-US/win10/samples/SerialSample.htm
  6. Repositórios Ms-IoT no GitHub: https://github.com/ms-iot
  7. Windows no GitHub: https://microsoft.github.io/windows/
  8. Exemplo Software Serial Arduino (usando UART): https://www.arduino.cc/en/Tutorial/SoftwareSerialExample
  9. Tutorial comunicação serial SparkFun: https://learn.sparkfun.com/tutorials/serial-communication
  10. Introdução ao Azure Notification Hub: https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-android-get-started/
  11. Adicionar push notifications ao seu app Mobile Services: https://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-android-get-started-push/
  12. Code First Migrations: https://msdn.microsoft.com/en-sg/data/jj591621.aspx
  13. Publicar em Azure Web App usando Visual Studio: https://docs.asp.net/en/latest/tutorials/publish-to-azure-webapp-using-vs.html
  14. Publicar o App no Azure Azure App Service: https://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-10

Código

Código Arduino para módulo leitor RFID

/* comando de leitura será enviado ao módulo RFID uma vez que a tag é lida, retornará à porta serial */
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
  // Abre comunicações seriais e espera a porta abrir:
  Serial.begin(9600);
  while (!Serial) {
    ; // espera a porta serial conectar. Necessário apenas para Leonardo
  }
  // define a taxa de dados para a porta SoftwareSerial
  mySerial.begin(9600);
}
void loop() {
  // roda repetidamente
  if (mySerial.available()) {
    // envia o comando de leitura ao módulo RFID
    byte message[] = {0xA0,0x06,0x80,0x00,0x01,0x02,0x01,0xD6};
    mySerial.write(message, sizeof(message));
    // envia os dados de volta à serial
    if(Serial.available())
      Serial.write(mySerial.read());
  }
}

Where is my thing no GitHub

https://github.com/seeyouu87/where-is-my-thing

Peças Personalizadas e Gabinetes

Módulo leitor UHF RFID. Usado para ler tag RFID.
uhf_reader_jt2850.svg
uhf_reader_jt2850.svg
uhf_reader_jt2850.svg

Esquemáticos

Where is my thing no Fritzing

Esquemáticos no Fritzing.org A conexão para Arduino ao módulo UHF RFID.

Organize e Localize Seus Componentes Raspberry Pi, Arduino e RFID Eficientemente

Processo de manufatura

  1. Microsoft Azure Cheat Sheet 2020 – O Guia Definitivo para Serviços e Arquitetura Azure
  2. FDM Hoje: Estado Atual, Marcos e Perspectivas Futuras
  3. Definindo a Borda: Onde Edge Computing Realmente Acontece
  4. Indústria 4.0 Hoje: Cenário Atual e Perspectivas para 2017
  5. 4 Alternativas Avançadas ao RFID Passivo para Rastreamento Preciso de Ativos
  6. Sistema Integrado de Controle de Acesso com QR, RFID e Verificação de Temperatura
  7. Origens dos Metais: Das Estrelas à Indústria
  8. Escolhendo o Local de Desenvolvimento Certo: Makerspaces, Aceleradoras e Parceiros de Produção
  9. Origens do Conceito de Serragem: Das Ferramentas Antigas às Máquinas Modernas
  10. Onde o Ar Comprimido Alimenta Processos Cotidianos