Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Componentes y materiales

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

Herramientas y máquinas necesarias

PC con Windows 10 y Visual Studio 2015 instalado
Teléfono Android

Aplicaciones y servicios online

Microsoft Windows 10 IoT Core
Microsoft Azure
Microsoft Visual Studio 2015

Sobre el proyecto

Contexto

¿Te has encontrado buscando algo mucho tiempo sin hallarlo? Aprovechando tecnología RFID, con lector RFID y múltiples etiquetas adheridas a objetos, podemos localizarlos fácilmente. Al comprar un artículo nuevo, pegas una etiqueta RFID y registras sus detalles en el sistema. Cuando necesites buscarlo pero no recuerdes dónde está, बस haz una búsqueda en la app móvil y sabrás en qué habitación de tu casa se encuentra.

La idea completa

Componentes: módulo lector UHF RFID, antena UHF RFID, Arduino UNO, Raspberry Pi 2 con Windows 10 IoT Core (ver guía instalación), app móvil y servicio web Azure para almacenamiento de datos.

Habrá múltiples módulos UHF RFID en la casa, cada uno conectado a un Arduino UNO, y estos a la Raspberry Pi 2. Para rastrear un objeto, se adhiere una etiqueta RFID y se registran sus detalles y valor RFID en el sistema. Los datos se guardan en Azure SQL Database vía Azure Web API.

Cuando el usuario busca un objeto sin saber su ubicación, abre la app móvil. Esta envía la petición a la Raspberry Pi 2 por WiFi. La Pi la reenvía a todos los Arduino UNO conectados. Cada Arduino envía comando de lectura a su módulo UHF RFID. Si algún lector capta el RFID buscado, devuelve el valor al Arduino, este devuelve la ubicación del lector a la Pi, y la Pi procesa y devuelve el resultado a la app.

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

¿Cómo hacerlo?

Desarrollaré una app en segundo plano (Background App) en Windows 10 IoT Core. Necesitaremos la IP de la Raspberry Pi 2. No hace falta pantalla gracias a Windows IoT Core Watcher. Conecta PC y Raspberry Pi 2 por cable de red:

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

El Watcher te dará la IP de tu Raspberry Pi 2:

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Crear proyecto en Visual Studio 2015

Descarga el código compartido y ejecútalo en VS2015. Si creas proyecto nuevo:

  1. File → New → Project
  2. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  3. En plantillas Visual C#, busca "Background Application (IoT)". Pon nombre al proyecto.
  4. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  5. Click derecho en proyecto → Properties.
  6. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  7. En pestaña Debug configura:
    • Platform: ARM
    • Target Device: Remote Machine
    • Remote machine: <tu IP del IoT Core Watcher>
    • Desmarca "Use authentication"

Guarda y empieza a programar en StartupTask.cs.

Depuración en Visual Studio 2015

  1. Click en barra gris izquierda para poner breakpoint.
  2. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  3. Click en botón verde "Remote Machine" para iniciar depuración.
  4. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  5. En modo debug, el botón cambia a "Continue" y se activan botones paso a paso: Next, Step Into, Step Over, Step Out.
  6. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  7. Pasa ratón sobre variable para inspeccionar valor, o click derecho → "Add Watch" para añadir a lista de observación.
  8. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Crear Web API en Azure para transacciones IoT y app móvil

Crear proyecto ASP.NET Web Application

  1. Crear ASP.NET Web Application, nombre proyecto, OK.
  2. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  3. Elige MVC bajo plantilla ASP.NET 4.5.2 (o ASP.NET 5 preview con MVC6).
  4. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  5. Autenticación: "No authentication".
  6. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  7. Si quieres hospedar en cloud, marca "Host in the cloud".
  8. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  9. Si no tienes cuenta Azure, regístrate gratis con $200 crédito: azure.microsoft.com
  10. Login en Azure, rellena nombre web app y detalles.
  11. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  12. Espera a que VS2015 cree web app y base de datos en Azure.

Usar Entity Framework

  1. Abre Package Manager Console: Tools → NuGet Package Manager → Package Manager Console.
  2. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  3. Ejecuta: Install-Package EntityFramework
  4. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  5. Crea clase Model: click derecho en carpeta Models → Add → Class. Añade:
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    
  6. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  7. Crea WebAPI Controller con Entity Framework: click derecho Controllers → Add → New Scaffolded Item → "Web API 2 Controller with actions, using Entity Framework".
  8. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  9. Rellena campos, click en + en Data context class para crear nuevo contexto.
  10. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  11. Click Add para generar scaffolded item. Verás controller y data context en carpetas Controllers y Models.
  12. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  13. Ejecuta en Package Manager Console:
    • Enable-Migrations
    • Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
    • Add-Migration <Nombre>
    • Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
    • Update-Database → crea BD según migraciones. La encontrarás en tabla App_Data.
    • Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Publicar Web API

Verifica que existan GetMything(GET), PostMything(POST), PutMything(PUT), DeleteMything(DELETE) en MyThingsController.

  1. Build → Publish MyThingAPI.
  2. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  3. Selecciona Microsoft Azure Web Apps, login, elige web app existente.
  4. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  5. En Settings, verifica connection string y marca ambas casillas: "Use this connection string at runtime" y "Execute Code First Migration".
  6. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  7. Click Publish. VS lanzará la Web App en Azure tras éxito.
  8. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Prueba REST API con extensión Chrome "Advanced REST Client":

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

JSON para 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"
}

Crear App Universal Windows (UWP)

File → New → Project → Universal App (ej. Tablet). Reemplaza scripts .cs y .xaml con MyThingApp de GitHub.

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Depuración: elige plataforma (ARM/x64/x86). En PC local 64-bit: x64 + "Local Machine".

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Si todo va bien, verás la app funcionando:

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Configurar Notification Hub y Push Notifications UWP

  1. Reserva nombre app en Windows Dev Center.
  2. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  3. En MyThingApp: click derecho proyecto → Store → Associate App with the Store.
  4. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
  5. Crear Notification Hub: guía Azure
  6. Añade a 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);
    }
    
    Llama en OnLaunched: InitNotificationsAsync(); En MainPage.cs constructor: this.NavigationCacheMode = NavigationCacheMode.Required;
  7. En MyThingController (Web API), añade hilo para notificación tras crear registro:
    public class NotificationClass {
      internal async System.Threading.Tasks.Task<ThreadStart> SendNotificationAsync(string rfid) {
        NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("<tu 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;
      }
    }
    // En PostMything tras éxito:
    NotificationClass notClass = new NotificationClass();
    Thread notificationThread = new Thread(async x => { await notClass.SendNotificationAsync(myThing.rfid); });
    notificationThread.Start();
    
  8. Recibirás notificación toast al crear registro. Click para abrir app y completar datos.
  9. Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
    Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente
    Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

ENLACES DE REFERENCIA

  1. Guía paso a paso Windows 10 IoT Core: ms-iot.github.io
  2. Configurar VS2015 en PC: ms-iot.github.io
  3. Instalar Windows 10 IoT Core en Raspberry Pi 2: ms-iot.github.io
  4. Desarrollar app IoT (Blinky): ms-iot.github.io
  5. Ejemplo serial Windows IoT: ms-iot.github.io
  6. Repositorios Ms-IoT GitHub: GitHub
  7. Windows en GitHub: microsoft.github.io
  8. Ejemplo SoftwareSerial Arduino (UART): arduino.cc
  9. Tutorial comunicación serial SparkFun: learn.sparkfun.com
  10. Primeros pasos Azure Notification Hub: azure.microsoft.com
  11. Añadir push notifications a Mobile Services: azure.microsoft.com
  12. Code First Migrations: msdn.microsoft.com
  13. Publicar en Azure Web App con VS: docs.asp.net
  14. Publicar en Azure App Service: asp.net

Código

Código Arduino para módulo lector RFID

/* Comando lectura enviado a módulo RFID; al leer tag, retorna a puerto serie */
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  while (!Serial) { ; } // esperar puerto serie (solo Leonardo)
  mySerial.begin(9600);
}

void loop() {
  if (mySerial.available()) {
    // enviar comando lectura a módulo RFID
    byte message[] = {0xA0,0x06,0x80,0x00,0x01,0x02,0x01,0xD6};
    mySerial.write(message, sizeof(message));
    // enviar datos de vuelta a serie
    if(Serial.available()) Serial.write(mySerial.read());
  }
}

Repositorio "Where is my thing" en GitHub

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

Piezas personalizadas y envolventes

Módulo lector UHF RFID JT2850. Para leer etiquetas RFID.

Esquemáticos

Esquemático en Fritzing

Conexión Arduino a módulo UHF RFID.

Organiza y Localiza Componentes Raspberry Pi, Arduino y RFID Eficientemente

Proceso de manufactura

  1. Sistema de control de acceso integrado con QR, RFID y verificación de temperatura
  2. Elegir el Sitio de Desarrollo Adecuado: Makerspaces, Aceleradoras y Socios de Producción
  3. Orígenes del Concepto de Aserrado: De Herramientas Antiguas a Máquinas Modernas
  4. Impresión 3D FDM hoy: Estado actual, hitos y perspectivas futuras
  5. Industria 4.0 hoy: Panorama actual y perspectivas 2017
  6. Dónde el aire comprimido impulsa procesos cotidianos
  7. Chuleta Microsoft Azure 2020: guía definitiva de servicios y arquitectura Azure
  8. Definiendo el Edge: Dónde ocurre realmente el Edge Computing
  9. 4 alternativas avanzadas al RFID pasivo para rastreo preciso de activos
  10. RFID activo: Visión general completa y casos de uso prácticos
  11. Orígenes de los metales: de las estrellas a la industria