InfluxDB에 GPS 로깅
개요
NMEA를 토하는 GPS 모듈과 M5Atom이 UART로 통신하여 GPS 좌표, 고도, CPU?의 일련 번호를 influxDB에 기록한다.
소재
・M5 ATOM Lite
· NMEA를 내는 GPS 모듈
· UDP 통신 가능한 InfluxDB가 움직이는 서버
전제 조건
· GPS 모듈과의 통신
GPS 모듈과의 통신 속도는 115200bps입니다. 다른 경우에는 해당 부분을 변경하십시오.
또한 UART 통신을 GROVE 커넥터를 유용하게 사용하고 있습니다. 구체적으로는 다음과 같이 선언하고 있습니다. GROVE를 다른 용도로 사용하는 경우 해당 위치를 변경하십시오.
Serial2.begin(115200,SERIAL_8N1,26,32);
· influxDB 사전 준비
udp를 활성화하고 데이터베이스를 작성하십시오.
그리고 어쨌든 influxDB에 연결하는 IP 주소도 필요합니다.
참고 자료
htps //w w. 응 fㅅx였다. 코 m / b ぉ g / 호 w-- 센 d - 천식 r-data-to-in f-xdb-f m-an-a r-zu-no /
사용한 라이브러리
· ESP32 및 M5Stack 라이브러리
· Tiny GPS++ h tp // // r 즈이에아나. 오 rg / ぃ b 라리 s / chi nygpsp ぅ s /
소스 ATOM
출처
#include <TinyGPS++.h>
#include <WiFi.h>
#include <WiFiUDP.h>
#include "WiFiMulti.h"
WiFiMulti wifimulti;
#include "M5StickC.h"
const char* ssid1 = "wifi-1";
const char* password1 = "pass1";
const char* ssid2 = "wifi-2";
const char* password2 = "pass2";
// the IP address of your InfluxDB host
byte udphost[] = {192, 168, 1, 1};
int port = 8089;
WiFiUDP udp;
// The TinyGPS++ object
TinyGPSPlus gps;
void setup()
{
Serial2.begin(115200,SERIAL_8N1,26,32);
Serial.begin(115200);
delay(10);
wifimulti.addAP(ssid1,password1);
wifimulti.addAP(ssid2,password2);
if(wifimulti.run() == WL_CONNECTED){
delay(1000);
Serial.print(".");
}
Serial.println(WiFi.SSID());
}
void loop()
{
uint8_t chipid[6];
esp_efuse_read_mac(chipid);
while (Serial2.available() > 0) {
char c = Serial2.read();
gps.encode(c);
if (gps.location.isUpdated()) {
String latnum=String(gps.location.lat(),9);
String lngnum=String(gps.location.lng(),9);
String high=String(gps.altitude.meters());
String id=String(chipid[0],HEX)+String(chipid[1],HEX)+String(chipid[2],HEX)+String(chipid[3],HEX)+String(chipid[4],HEX)+String(chipid[5],HEX);
String line;
line="gps,device="+id+" lat="+latnum+",lng="+lngnum+",high="+high;
Serial.println(line);
Serial.println("Sending UDP packet...");
udp.beginPacket(udphost, port);
udp.print(line);
udp.endPacket();
delay(10000);
}
}
}
소스 M5Stack+M5Stack용 GPS 모듈 V2
출처
#include <TinyGPS++.h>
#include <WiFi.h>
#include <WiFiUDP.h>
#include "WiFiMulti.h"
WiFiMulti wifimulti;
#include "M5Stack.h"
//#include "M5StickC.h"
//#include "M5Atom.h"
#include <Wire.h>
const char* ssid1 = "WiFi1";
const char* password1 = "pass1";
const char* ssid2 = "WiFi2";
const char* password2 = "pass2";
// the IP address of your InfluxDB host
byte udphost[] = {192, 168, 1, 60};
int port = 8089;
WiFiUDP udp;
// The TinyGPS++ object
TinyGPSPlus gps;
void setup()
{
M5.begin();
M5.lcd.setBrightness(20);
M5.Lcd.fillScreen(BLUE); // 背景を青にする
M5.Lcd.setTextSize(2);
Serial2.begin(9600);
Serial.begin(115200);
delay(10);
wifimulti.addAP(ssid1,password1);
wifimulti.addAP(ssid2,password2);
if(wifimulti.run() == WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println(WiFi.SSID());
}
void loop()
{
uint8_t chipid[6];
esp_efuse_read_mac(chipid);
while (Serial2.available() > 0) {
char c = Serial2.read();
gps.encode(c);
if (gps.location.isUpdated()) {
String latnum=String(gps.location.lat(),9);
String lngnum=String(gps.location.lng(),9);
String high=String(gps.altitude.meters());
String id=String(chipid[0],HEX)+String(chipid[1],HEX)+String(chipid[2],HEX)+String(chipid[3],HEX)+String(chipid[4],HEX)+String(chipid[5],HEX);
String line;
line="gps,device="+id+" lat="+latnum+",lng="+lngnum+",high="+high;
Serial.println(line);
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.println(line);
udp.beginPacket(udphost, port);
udp.print(line);
udp.endPacket();
delay(1000);
}
}
}
Reference
이 문제에 관하여(InfluxDB에 GPS 로깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yasunori_oi/items/161b99a868effb206e2d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Serial2.begin(115200,SERIAL_8N1,26,32);
#include <TinyGPS++.h>
#include <WiFi.h>
#include <WiFiUDP.h>
#include "WiFiMulti.h"
WiFiMulti wifimulti;
#include "M5StickC.h"
const char* ssid1 = "wifi-1";
const char* password1 = "pass1";
const char* ssid2 = "wifi-2";
const char* password2 = "pass2";
// the IP address of your InfluxDB host
byte udphost[] = {192, 168, 1, 1};
int port = 8089;
WiFiUDP udp;
// The TinyGPS++ object
TinyGPSPlus gps;
void setup()
{
Serial2.begin(115200,SERIAL_8N1,26,32);
Serial.begin(115200);
delay(10);
wifimulti.addAP(ssid1,password1);
wifimulti.addAP(ssid2,password2);
if(wifimulti.run() == WL_CONNECTED){
delay(1000);
Serial.print(".");
}
Serial.println(WiFi.SSID());
}
void loop()
{
uint8_t chipid[6];
esp_efuse_read_mac(chipid);
while (Serial2.available() > 0) {
char c = Serial2.read();
gps.encode(c);
if (gps.location.isUpdated()) {
String latnum=String(gps.location.lat(),9);
String lngnum=String(gps.location.lng(),9);
String high=String(gps.altitude.meters());
String id=String(chipid[0],HEX)+String(chipid[1],HEX)+String(chipid[2],HEX)+String(chipid[3],HEX)+String(chipid[4],HEX)+String(chipid[5],HEX);
String line;
line="gps,device="+id+" lat="+latnum+",lng="+lngnum+",high="+high;
Serial.println(line);
Serial.println("Sending UDP packet...");
udp.beginPacket(udphost, port);
udp.print(line);
udp.endPacket();
delay(10000);
}
}
}
#include <TinyGPS++.h>
#include <WiFi.h>
#include <WiFiUDP.h>
#include "WiFiMulti.h"
WiFiMulti wifimulti;
#include "M5Stack.h"
//#include "M5StickC.h"
//#include "M5Atom.h"
#include <Wire.h>
const char* ssid1 = "WiFi1";
const char* password1 = "pass1";
const char* ssid2 = "WiFi2";
const char* password2 = "pass2";
// the IP address of your InfluxDB host
byte udphost[] = {192, 168, 1, 60};
int port = 8089;
WiFiUDP udp;
// The TinyGPS++ object
TinyGPSPlus gps;
void setup()
{
M5.begin();
M5.lcd.setBrightness(20);
M5.Lcd.fillScreen(BLUE); // 背景を青にする
M5.Lcd.setTextSize(2);
Serial2.begin(9600);
Serial.begin(115200);
delay(10);
wifimulti.addAP(ssid1,password1);
wifimulti.addAP(ssid2,password2);
if(wifimulti.run() == WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println(WiFi.SSID());
}
void loop()
{
uint8_t chipid[6];
esp_efuse_read_mac(chipid);
while (Serial2.available() > 0) {
char c = Serial2.read();
gps.encode(c);
if (gps.location.isUpdated()) {
String latnum=String(gps.location.lat(),9);
String lngnum=String(gps.location.lng(),9);
String high=String(gps.altitude.meters());
String id=String(chipid[0],HEX)+String(chipid[1],HEX)+String(chipid[2],HEX)+String(chipid[3],HEX)+String(chipid[4],HEX)+String(chipid[5],HEX);
String line;
line="gps,device="+id+" lat="+latnum+",lng="+lngnum+",high="+high;
Serial.println(line);
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.println(line);
udp.beginPacket(udphost, port);
udp.print(line);
udp.endPacket();
delay(1000);
}
}
}
Reference
이 문제에 관하여(InfluxDB에 GPS 로깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yasunori_oi/items/161b99a868effb206e2d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)