Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Voor het plotten van gegevens tegen datum/tijd met alleen Arduino's millis() zie deze InstructableArduino datum/tijd plotten/loggen met behulp van Millis() en PfodApp
Deze Instructable laat je zien hoe je Arduino-sensorgegevens op je Android-mobiel kunt plotten en vastleggen om later naar je computer te downloaden. Deze instructies zijn ook beschikbaar op www.pfod.com.au Er is geen Android-programmering vereist en er is heel weinig Arduino-programmering nodig. Het is een uitbreiding van Simple Mobile Data Logging met pfodApp
Stap 1: Snel aan de slag met plotten
a) Koop een Arduino-bord en een Bluetooth-module (zoals Uno en Bluetooth Shield of FioV3+Bluetooth) b) Installeer Arduino IDE c) Sluit het Arduino-bord (geen Bluetooth-module aangesloten) aan met een USB-kabel. d) Kopieer deze schets naar de Arduino IDE en compileer en laad deze in het Arduino-bord) e) Sluit de Bluetooth Shield-module aan op de Uno (het Bluetooth Shield is vooraf geconfigureerd voor 9600baud MAAR zet de 3V/5V-schakelaar op 5V en stel in de To Board/To FT232 schakelaar naar de To Board positie f) Laad uw Android Mobile met pfodApp. g) Breng een verbinding tot stand tussen uw mobiel en de Bluetooth-module zoals beschreven in pfodAppForAndroidGettingStarted.pdf h) Start de pfodApp en maak verbinding met uw Arduino-bord via de Bluetooth-module. ik ben klaar. Uw mobiel zal nu de Arduino AtoD-convertertellingen voor invoer A0. opslaan en plotten
Stap 2: De plottekening
Plotten met pfodApp vereist twee dingen: a) een gegevensstroom (in CSV-formaat) en b) een plotopdracht van het pfodDevice (Arduino) De schets, SimpleDataPlotting.ino, doet maar twee dingen. Eerst leest het eenmaal per seconde de A0 analoge ingang en verzendt het de huidige seconden en de tellingen in CSV-formaat. Ten tweede wanneer de pfodApp verbinding maakt en het hoofdmenu opvraagt, reageert de schets met het plotcommando om te beginnen met het plotten van de metingen. Hier is de code die eenmaal per seconde wordt uitgevoerd om de A0 analoge ingang te lezen en de huidige seconden te schrijven, telt af tot de Bluetooth-verbinding. // lees A0 eenmaal per seconde int val = analogRead (0); // A0 // voer de huidige tijd uit en lees in csv-formaat parser.print (thisMillis/1000); // eerste veld is tijd in seconden parser.print(", "); // komma scheidt velden parser.println(val); // nieuwe regel beëindigt gegevensrecord
Hier is de code die reageert op het pfodApp-verzoek voor het hoofdmenu van de pfodDevice (Arduino Uno).
byte cmd = parser.parse(); if (cmd != 0) { // heb een compleet bericht geparseerd { to } if ('.' == cmd) { // pfodApp heeft gevraagd om het hoofdmenu // stuur "open plotting screen" terug parser.print(F ("{=Analoge A0 Plot|Tijd(sec)|Aantal}")); // dit is het hoofdmenu } else if ('!' == cmd) { // CloseConnection commando closeConnection(parser.getPfodAppStream()); } else { // onbekende opdracht parser.print(F("{}")); // stuur altijd een pfod-bericht terug, anders wordt de verbinding met de pfodApp verbroken. } }
Wanneer de pfodApp van je mobiel verbinding maakt, vraagt deze automatisch om het hoofdmenu (door het {.}-bericht te verzenden), de parser in de schets (zie de code onderaan de schets) parseert de {.} en retourneert de '.' opdracht. De schets stuurt dan een plotcommando terug{=Analog A0 Plot|Time(sec)|A0 Counts} Dat commando instrueert de pfodApp om een scherm genaamd “Analog A0 Plot” te openen en de tijd uit te zetten tegen de tellingen. De pfodApp scant vervolgens de onbewerkte gegevens die binnenkomen en zoekt naar regels met twee velden en neemt het eerste veld als de x-waarde en het tweede als de y-waarde en voegt dat punt toe aan de plot. Telkens wanneer een plotscherm (of een scherm met onbewerkte gegevens) wordt geopend, begint de pfodApp alle onbewerkte gegevens op te slaan in een lokaal bestand op uw mobiel. De pfodApp blijft de gegevens opslaan totdat u de pfodApp afsluit. U kunt dit bestand downloaden naar uw computer voor verdere verwerking (zie een van de latere stappen). Er zijn een aantal andere opties voor het plot-commando waarmee u sommige velden kunt negeren, plotschalen kunt instellen, meerdere plots op één kaart kunt plotten, enz. Zie de pfodSpecification voor details en voorbeelden. De pfodApp kan veel meer dan alleen plotten, zie deze voorbeelden. De grafiek hierboven is een voorbeeld van twee grafieken waarvan er één twee grafieken heeft. Dit perceel is van ArduMower Doe het zelf robotmaaier! die dezelfde pfodApp gebruikt om een robotmaaier te besturen. Dezelfde pfodApp wordt gebruikt om alle pfodDevices te bedienen. Het zijn de pfodDevices die volledig bepalen welke schermen aan de gebruikers worden getoond.
Stap 3: Meer details
Met de nieuwste versie van pfodApp die beschikbaar is op de Android Market, kunnen onbewerkte gegevens die door een pfod-apparaat (bijv. Arduino) worden verzonden, worden geplot en opgeslagen in een bestand voor later gebruik. Zie de pfodAppForAndroidGettingStarted.pdf voor informatie over het downloaden van het bestand van uw Android-mobiel naar uw computer. Voor plotten zijn twee dingen nodig: a) een gegevensstroom (in CSV-indeling) en b) een plotopdracht van het pfodDevice Uw pfodDevice (Arduino) kan elk type gegevens buiten pfod-berichten verzenden. pfod-berichten die zijn omsloten door { } waardoor ze zich onderscheiden van andere gegevens. Als u gegevens wilt plotten, moet u de gegevens in CSV-formaat verzenden. Dat zijn gegevenswaarden gescheiden door komma's en afgesloten met een nieuwe regel (CR of LF of CR LF). Bijvoorbeeld105, 680 Wanneer het pfodDevice een plot wil weergeven aan de gebruiker, stuurt het pfodDevice een plotcommando. Je Arduino-schets heeft volledige controle over wat pfodApp plot. Het plotcommando geeft een titel aan het plotscherm en specificeert welke stroom onbewerkte gegevens moet worden geplot en welke velden uit die stroom. Verschillende stromen van onbewerkte gegevens hebben verschillende aantallen door komma's gescheiden velden. Het aantal maten | in de plot-opdracht moet overeenkomen met het aantal velden in de gegevensstroom die u wilt plotten. Dataregels met een ander aantal velden worden voor deze plot genegeerd. Er zijn een aantal opties voor het plotten commando om de te plotten velden te selecteren en om schalen en eenheden in te stellen en om meerdere plots op één kaart te zetten. Het eenvoudigst is om de x-waarden als het eerste veld en de y-waarden als de volgende velden te verzenden, en vervolgens in de plotopdracht de naam x-as en y-as te geven, b.v. {=Analoge A0-plot | Tijd(sec) | A0 telt } plottitel | x waarden veld | y-waardenveld U kunt ook de onbewerkte gegevens bekijken die naar uw mobiel worden verzonden. Het "Raw Data"-scherm kan worden geopend vanuit pfodApp met behulp van het menu van uw mobiel of het kan worden geopend door het pfodDevice dat een streamingRawData-bericht verzendt, {=Title Of the Screen Goes Here}, d.w.z. een ingekorte versie van de plotopdracht. Hoe dan ook, het pfodApp-scherm met onbewerkte gegevens wordt geopend en toont de gegevens die zijn verzonden vanaf het pfodDevice. Wanneer het scherm wordt geopend, zal pfodApp beginnen met het opslaan van de gegevens in een bestand. Telkens wanneer het scherm (of een plotscherm) wordt geopend, wordt de naam van het bestand weergegeven. Om te voorkomen dat uw mobiel vol raakt met gegevens die u niet wilde, begint pfodApp pas met het schrijven van gegevens naar de SD-kaart van de mobiel tot de eerste keer dat het Raw Data-scherm of plotscherm wordt geopend na elke nieuwe verbinding. De eerste keer dat het Raw Data-scherm wordt geopend na een nieuwe verbinding, wordt tot 4K bytes aan eerder ontvangen gegevens (sinds de verbinding is gemaakt) naar het bestand geschreven wanneer het wordt geopend. Deze gegevens zijn ook beschikbaar voor het perceel. In de meeste gevallen betekent dit dat alle onbewerkte gegevens die zijn verzonden sinds de verbinding tot stand is gebracht, worden opgeslagen. Wanneer de verbinding wordt verbroken, worden de laatste gegevens weggeschreven en wordt het bestand gesloten. Als het bestand al bestaat uit een eerdere verbinding, wordt het bij elke volgende verbinding toegevoegd. U kunt het bestand downloaden en verwijderen van uw computer. Zie de pfodAppForAndroidGettingStarted.pdf voor toegang tot het bestand vanaf uw computer.
Stap 4: Testen met de SerialMonitor
Voordat je verbinding maakt via bluetooth, kun je de schets testen met behulp van de Arduino IDE SerialMonitor. Verwijder eerst het bluetooth-bord, omdat het dezelfde TX/RX-verbindingen gebruikt als de USB-programmering en seriële monitorverbinding, en kopieer en plak de schets (SimpleDataPlotting.ino) in de Arduino IDE en programmeer het Arduino-bord. Open vervolgens de Arduino IDE SerialMonitor. U kunt de gegevens zien die door het Uno-bord worden verzonden. Typ vervolgens {.} en klik op "Verzenden" om het getMainMenu-commando te verzenden, {.} Dit is wat de pfodApp als eerste verzendt wanneer deze verbinding maakt. De schets reageert met het commando Plotten. {=Analog A0 Plot|Time(sec)|A0 Counts} die de pfodApp zal vragen om een plotscherm te openen en de data te plotten. Dit begint ook met het opslaan van de gegevens in een bestand. Zie de pfodSpecification voor details over alle berichten en schermen die pfod (Protocol for Operation Discovery) ondersteunt.
Stap 5: Verbinding maken met een Android-mobiel
Alles is goed, dus je kunt nu de Arduino IDE en SerialMonitor sluiten en het Bluetooth-schild bevestigen, zoals eerder getoond. Om verbinding te maken met uw Android Mobile, installeert u eerst pfodApp van Android Market en volgt u vervolgens de pfodAppForAndroidGettingStarted.pdf-gids om uw Bluetooth-shield te koppelen met uw mobiel en een Bluetooth pfodApp-verbinding in te stellen. Ik noemde mijn verbinding "Simple Data Logging". Selecteer vervolgens de verbinding “Simple Data Logging” om verbinding te maken met de eenvoudige datalogger. Zodra pfodApp verbinding maakt, stuurt het het {.}-bericht waarop de sketch reageert met het bericht {=Analog A0 Plot|Time(sec)|A0 Counts} dat de pfodApp vertelt dat de gegevens worden geplot en ook begint met het opslaan van de gegevens. In deze plot heb ik A0 aangesloten op Gnd en 5.5V en 3.3V en het ook laten zweven, alleen maar om ruis op te pikken.
Stap 6: De gegevens naar uw computer overbrengen
De pfodAppForAndroidGettingStarted.pdf beschrijft hoe u uw mobiele telefoon via USB op uw computer kunt aansluiten en hoe u de USB-massaopslag kunt inschakelen, zodat u er vanaf uw computer doorheen kunt bladeren. U vindt alle onbewerkte gegevensbestanden in de map pfodAppRawData. Zoals hierboven weergegeven, heeft de Simple Data Logger de gegevens opgeslagen in /pfodAppRawData/Simple Data Logging.txt pfodApp gebruikt de naam van de verbinding als bestandsnaam voor het opslaan van de gegevens. Uitbreidingen naar de Simple Data Logger Nu u een eenvoudige datalogger hebt dat zowel uw gegevens plot als opslaat, kunt u de schets wijzigen om uw eigen gegevens terug te sturen. Schrijf gewoon uw gegevens, in CSV-formaat, naar dezelfde seriële verbinding die is aangesloten op uw Bluetooth-module. Als u meer dan twee gegevensvelden heeft, moet u de plotopdracht wijzigen. Zie de pfodSpecificatie voor details en voorbeelden.