adk-telemetrie.ino

Arduino Mega ADK (Rev3) · Fichier : adk-telemetrie.ino · Langage : Arduino · Usage : Envoyer des mesures de capteurs vers le téléphone en trames simples

Plutôt qu'un chat, des données structurées : la carte pousse une ligne CSV par seconde (entrée analogique + température approximative déduite de la bande passante interne) vers l'app Android qui trace la courbe.

Matériel requis

Une Arduino Mega ADK Rev3 (ATmega2560 + puce hôte USB MAX3421E avec port USB-A, broche D7 réservée au reset du MAX3421E). 1 téléphone Android + source sur A0 (potentiomètre conseillé).

Branchement

Câble USB-A → téléphone ; potentiomètre sur A0 (5 V/GND/curseur).

Fonctionnement

La lecture de la référence interne (AVR) donne une tension d'alimentation dont on tire une température d'ordre de grandeur ; chaque ligne terminée par \n est un échantillon. Carte « Arduino Mega ADK » dans l'IDE. Pour l'hôte USB/ADK, installez la bibliothèque USB Host Shield 2.0 ; ne pas utiliser D7. Le port USB-A alimente l'accessoire en 5 V.

Pour aller plus loin

Ajoutez des capteurs I2C (BME280) dans la trame, ou stockez sur EEPROM quand le téléphone est débranché.

adk-telemetrie.ino

// Telemetrie ADK : A0 + temperature interne -> trames CSV vers Android.
#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>

AndroidAccessory adk("Arduino", "Mega ADK", "Telemetrie", "1.0", "Fab", "Num");

void setup() {
  Serial.begin(9600);
  adk.Init();
}

void loop() {
  if (adk.isReady()) {
    int a0 = analogRead(A0);
    float vcc = 1100.0 * 1023.0 / analogRead(14); // A14 = bande passante interne
    float temp = (vcc - 500.0) / 10.0;            // approximation 5V
    String trame = String(a0) + "," + String(temp, 1) + "
";
    adk.write(trame.length(), (uint8_t *)trame.c_str());
    Serial.print(trame);
  }
  delay(1000);
}

← Retour à la fiche