Att få Arduino data till en webbsida (2 / 5 steg)
Steg 2: Arduino skiss
Koden har ändrats för läsbarhet och denna ansökan. Jag vill ha flexibiliteten att använda uppgifterna för mest allmänna applikationer så jag kommer att hämta det med Kommateckens följande seriella produktionen för varje läsning. Detta kommer att tillåta mig att spara det till en MySql databas, CSV-fil eller txt-fil. Detta kommer att tillåta mig att uppbrottet eller separata seriella data i bearbetning samt PHP och de flesta andra programmering och scripting språk mycket lätt. Programvaran BMP085 från Adafruit var brukade läsa sensorn eftersom det var det mest kompletta exemplet jag kunde hitta och jag lagt länkarna ovan. Du kommer att behöva importera bibliotek i mappen skissbok. Jag vill också påpeka att jag ville ha min avläsningar i enheter som jag är mest bekant med så jag modifierade koden att läsa i "inHg" kvicksilver för tryck, Fahrenheit och fötter. Den ursprungliga koden var i hPa, Celsius och mäter.
Skiss filen:myurov_database-2.ino
#include
#include
#include
#include
// -----------------------------------------------------------------------------------------
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
HMC5883L kompass; BMP085 har ersatts med BMP180 men koden fungerar fortfarande.
int fel = 0;
void displaySensorDetails(void)
{
sensor_t sensor;
bmp.getSensor(&sensor);
Delay(500);
}
void setup(void)
{
Serial.BEGIN(9600);
Kompass = HMC5883L(); Konstruera en ny HMC5883 kompass.
IF(!bmp.BEGIN())
{
While(1);
}
displaySensorDetails();
fel = kompass. SetScale(1.3); Ange omfattningen av kompassen.
om (fel! = 0) / / om det finns ett fel, skriva ut den.
fel = kompass. SetMeasurementMode(Measurement_Continuous); Inställd kontinuerlig mätning läge
om (fel! = 0); Om det finns ett fel, skriva ut den.
}
void loop(void) {
sensors_event_t händelse;
bmp.getEvent(&event);
om (event.pressure)
{
int tryck = event.pressure;
flyta kvicksilver = 0;
kvicksilver = tryck * 0.029529980164712; Konvertera hPa till i kvicksilver.
Serial.Print(Mercury); inHg
Serial.Print(","); CSV-seperator
float temperatur;
bmp.getTemperature(&temperature);
int temp2 = temperatur * 1.8000 + 32.
Serial.Print(temp2);
Serial.Print(","); CSV-seperator
flyta seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
int alt = bmp.pressureToAltitude (seaLevelPressure, event.pressure)* 3.2808;
Serial.Print(alt); i Ft
Serial.Print(","); CSV-seperator
}
annat
{
}
Delay(1000);
MagnetometerRaw rå = kompass. ReadRawAxis();
MagnetometerScaled skalas = kompass. ReadScaledAxis();
int MilliGauss_OnThe_XAxis = skalas. XAxis; / / (eller YAxis eller ZAxis)
float rubrik = ARCTAN2 (skalas. YAxis, skalas. XAxis);
flyta declinationAngle = 0.0526; 0.0457
rubriken += declinationAngle;
IF(heading < 0)
rubrik + = 2 * PI;
om (rubrik > 2 * PI)
rubrik-= 2 * PI;
flyta headingDegrees = rubrik * 180/M_PI;
Utgång (rå, skalad, rubrik, headingDegrees);
}
void utgång (MagnetometerRaw raw, MagnetometerScaled skalas, rubrik, float float headingDegrees)
{
Serial.Print (rå. XAxis);
Serial.Print(","); CSV-seperator
Serial.Print (rå. YAxis);
Serial.Print(","); CSV-seperator
Serial.Print (rå. ZAxis);
Serial.Print(","); CSV-seperator
Serial.Print (skalas. XAxis);
Serial.Print(","); CSV-seperator
Serial.Print (skalas. YAxis);
Serial.Print(","); CSV-seperator
Serial.Print (skalas. ZAxis);
Serial.Print(","); CSV-seperator
Serial.Print(Heading);
Serial.Print(","); CSV-seperator
Serial.println(headingDegrees);
}