M5StackシリーズのAtomic GPSで現在位置をAmbentに表示する


M5StackシリーズのAtomic GPSで現在位置をAmbentに表示する


元ネタ

必要なライブラリ

M5Stackの開発環境は公式を見てインストールしてください。

・Ambient

・M5Atom

・TinyGPS++
http://arduiniana.org/libraries/tinygpsplus/

ソース


M5Atomic_GPS
M5AtomicGPS_Ambient.ino

#include "M5Atom.h"
#include <TinyGPS++.h>
#include "Ambient.h"
unsigned long seconds = 1000L; // !!! SEE THE CAPITAL "L" USED!!!
unsigned long minutes = seconds * 60;
unsigned long hours = minutes * 60; 
unsigned long ambient_refresh_rate = 1 * minutes;

// Ambient Settings
unsigned int channelId = 100;
const char* writeKey = "ライトキー";

// WiFi Settings
const char* ssid = "...ssid...";
const char* password = "...password...";

TinyGPSPlus gps;

WiFiClient client;
Ambient ambient;

void setup()
{
    M5.begin(true,false,true); 
    Serial1.begin(9600,SERIAL_8N1,22,-1);
    Serial.begin(115200);

    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(100);
        Serial.println(WiFi.localIP());
    }
    void sendInfo2Ambient();
    ambient.begin(channelId, writeKey, &client);
}



void loop()
{
  while (Serial1.available() > 0) {
    if (gps.encode(Serial1.read())) {
       if (gps.location.isValid()) {
       ambient.clear(1);
       ambient.clear(2);
       ambient.clear(9);
       ambient.clear(10);

       char buf[16];
       char buffer_lat[16];
       char buffer_lng[16];
       dtostrf(gps.location.lat(),10,8,buffer_lat);
       ambient.set(9,buffer_lat);
       Serial.print(buffer_lat);
       Serial.print(":");
       dtostrf(gps.location.lng(),10,8,buffer_lng);
       ambient.set(10,buffer_lng);
       Serial.print(buffer_lng);
       Serial.print(":");
       Serial.print(gps.altitude.meters());   
       Serial.print(":");
       Serial.println(gps.hdop.hdop());
       ambient.set(1,gps.altitude.meters());
       ambient.set(2,gps.hdop.hdop());
       }
    }
 }
  sendInfo2Ambient();
  Serial.println("refresh!");
  delay(ambient_refresh_rate);
  Serial.println("Reload");
}


void sendInfo2Ambient()
{
 if (gps.location.isValid()) {
   ambient.send();
  }
}