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

Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Onderdelen en benodigdheden

Raspberry Pi 2 Model B 1
Arduino UNO 1
JT2850 RFID-module (UHF) 1
JT606 RFID-antenne 1

Benodigde tools

  • Windows 10 PC met Visual Studio 2015
  • Android-telefoon

Apps en online services

  • Microsoft Windows 10 IoT Core
  • Microsoft Azure (Web Apps, SQL Database, Notification Hub)
  • Microsoft Visual Studio 2015

Over dit project

Achtergrond

Ken je dat: je zoekt iets, spendeert er lang aan, en vindt het niet? Met RFID-technologie (reader + tags op items) kun je items gemakkelijk terugvinden. Nieuwe item? Plak een RFID-tag erop, registreer in de app. Zoek later via de mobiele app: je ziet direct in welke ruimte het item zich bevindt.

Heel het concept

Architectuur:

  • Meerdere UHF RFID-readers in het huis, elk verbonden met een Arduino UNO.
  • Arduino's verbonden met centrale Raspberry Pi 2 (Windows 10 IoT Core).
  • Items krijgen RFID-tag. Details + tag-ID worden geregistreerd via mobiele app → Azure Web API → Azure SQL Database.
  • Zoekopdracht: app stuurt verzoek via WiFi naar Pi → Pi stuurt leescommando naar alle Arduino's → RFID-reader die tag detecteert, rapporteert locatie terug → Pi → app.
Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Hoe te bouwen

Raspberry Pi 2 voorbereiden (Windows 10 IoT Core)

  1. Installeer Windows 10 IoT Core op Pi 2: stap-voor-stap gids.
  2. Vind IP-adres via Windows IoT Core Watcher (PC en Pi via netwerkkabel verbonden).
  3. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Background-app in Visual Studio 2015

  1. Nieuw project: Visual C# → Background Application (IoT).
  2. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  3. Debug-instellingen: Rechtermuisknop project → Properties → Debug tab:
    • Platform: ARM
    • Target Device: Remote Machine
    • Remote machine: IP-adres uit IoT Core Watcher
    • Uncheck "Use authentication"
  4. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  5. Codeer in StartupTask.cs. Download mijn code van GitHub of bouw zelf.

Debuggen in Visual Studio

  1. Breakpoint zetten (klik grijze balk).
  2. Druk groene "Remote Machine"-knop.
  3. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  4. In debug-modus: knop wordt "Continue", stap-knoppen actief (Next, Step Into, Step Over, Step Out).
  5. Variabelen inspecteren: muis hover of rechtermuis → "Add Watch".
  6. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Web API op Azure maken (voor IoT & mobiele app)

ASP.NET Web Application project

  1. Nieuw project: ASP.NET Web Application.
  2. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  3. Kies MVC onder ASP.NET 4.5.2 (of ASP.NET 5 preview).
  4. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  5. Authenticatie: No Authentication.
  6. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  7. Optie: "Host in the cloud" → Azure Web App. Gratis proef: $200 gratis tegoed.
  8. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  9. Na OK: Azure-login, Web App naam/locatie invullen.
  10. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Database met Entity Framework (Code First)

  1. NuGet Package Manager Console: Install-Package EntityFramework.
  2. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  3. Modelklasse aanmaken (bijv. MyThing met velden: Id, RFID, Name, Type, Location, CreatedAt, LastUpdatedAt).
  4. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  5. Controller scaffolden: Rechtermuis Controllers → Add → New Scaffolded Item → Web API 2 Controller with actions, using Entity Framework.
  6. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  7. Data Context klasse aanmaken via +-knop.
  8. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  9. Migraties activeren in Package Manager Console:
    Enable-Migrations
    Add-Migration InitialCreate
    Update-Database
    
  10. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  11. Database verschijnt in App_Data map.
  12. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Web API publiceren naar Azure

  1. Build → Publish → Microsoft Azure Web Apps.
  2. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  3. Login Azure, selecteer bestaande Web App.
  4. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  5. Settings: vink "Use this connection string at runtime" en "Execute Code First Migrations" aan.
  6. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  7. Publish → Visual Studio lanceert de live Web App.
  8. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Test REST API met bijv. Chrome-extensie "Advanced REST Client".

Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Voorbeeld JSON voor 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"
}

Windows Universal App (Client)

Maak een Universal App (Tablet-layout, aanpasbaar voor telefoon/laptop). Vervang code/XAML met mijn GitHub-repo.

Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Debuggen Universal App

  • Lokaal (x64): kies "Local Machine".
  • Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  • Resultaat: werkende app met zoekinterface.
  • Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Push-notificaties (Notification Hub)

  1. App-naam reserveren: Windows Dev Center.
  2. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  3. Project → Store → Associate App with the Store.
  4. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
  5. Notification Hub aanmaken: Azure docs.
  6. Voeg in App.xaml.cs toe:
    private async void InitNotificationsAsync() {
      var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
      var hub = new NotificationHub("notification", "Endpoint=sb://...SharedAccessKey=...");
      await hub.RegisterNativeAsync(channel.Uri);
    }
    protected override void OnLaunched(LaunchActivatedEventArgs e) {
      InitNotificationsAsync();
      // ...
    }
    
  7. In MainPage.xaml.cs constructor: this.NavigationCacheMode = NavigationCacheMode.Required;
  8. In Web API Controller (MyThingController) na succesvolle POST:
    public class NotificationClass {
      internal async Task SendNotificationAsync(string rfid) {
        var hub = NotificationHubClient.CreateClientFromConnectionString("...", "hubname");
        var toast = $@"New Mything need to update";
        await hub.SendWindowsNativeNotificationAsync(toast);
      }
    }
    // Na create:
    var notClass = new NotificationClass();
    new Thread(async x => await notClass.SendNotificationAsync(myThing.rfid)).Start();
    
  9. Toast-notificatie verschijnt → klik → app opent met RFID ingevuld.
  10. Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren
    Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Referentielinks

  1. Windows 10 IoT Core setup
  2. Visual Studio 2015 setup
  3. IoT Core op Pi 2
  4. Blinky sample
  5. Serial sample
  6. MS-IoT GitHub
  7. Windows on GitHub
  8. Arduino SoftwareSerial
  9. SparkFun Serial
  10. Azure Notification Hub
  11. Mobile Services Push
  12. Code First Migrations
  13. Publish to Azure
  14. Web API + EF

Code

Arduino-code voor RFID-reader

/* Leescommando naar RFID-module, resultaat terug via seriële poort */
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  while (!Serial) { ; } // Wacht op Leonardo
  mySerial.begin(9600);
}

void loop() {
  if (mySerial.available()) {
    // Stuur leescommando
    byte message[] = {0xA0,0x06,0x80,0x00,0x01,0x02,0x01,0xD6};
    mySerial.write(message, sizeof(message));
    // Doorsturen naar hardware serial
    if (Serial.available()) Serial.write(mySerial.read());
  }
}

GitHub Repository

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

Aangepaste onderdelen (CAD)

  • uhf_reader_jt2850.svg – UHF RFID-reader module (3x)

Schema's

Fritzing-schema: Arduino ↔ UHF RFID-module.

Raspberry Pi, Arduino en RFID-componenten efficiënt organiseren en lokaliseren

Productieproces

  1. Geïntegreerde QR, RFID en Temperatuurverificatie Toegangscontrolesysteem
  2. De juiste ontwikkellocatie kiezen: Makerspaces, accelerators en productiepartners
  3. Oorsprong van het Zaagconcept: Van Oude Gereedschappen Tot Moderne Machines
  4. FDM 3D-printing vandaag: Huidige stand, mijlpal en toekomstperspectief
  5. Industry 4.0 Vandaag: Huidig Landschap en 2017 Uitblik
  6. Waar gecomprimeerde lucht alledaagse processen aandraait
  7. Microsoft Azure Cheat Sheet 2020 – De Definitieve Gids tot Azure-services & Architectuur
  8. De Edge Definiëren: Waar Edge Computing Echt Plaatsvindt
  9. 4 geavanceerde alternatieven voor passieve RFID voor nauwkeurige asset tracking
  10. Actieve RFID: uitgebreid overzicht & praktische use cases
  11. Oorsprong van metalen: van sterren tot industrie