Stap 3: Arduino code in de Arduino IDE uploaden
Kluisje in Sandbox
Headerbestanden die nodig zijn
Indien niet beschikbaar, zorg ervoor om ze te vinden in de Github repositories
#include "LGPRS.h"
#include "LGPRSClient.h"
#include "LGPRSServer.h"
#include "LGPS.h"
#include "HttpClient.h"
#include "LTask.h"
#include "LWiFi.h"
#include "LWiFiClient.h"
#include "LDateTime.h"
Aanpassen van de gegevens die nodig zijn volgens uw specificaties
#define WIFI_AP "de naam van uw wifi"
#define WIFI_PASSWORD "uw wifi-wachtwoord"
#define DEVICEID "uw apparaat-id"
#define DEVICEKEY "uw apparaat sleutel"
#define SITE_URL "api.mediatek.com"
#define WIFI_AUTH LWIFI_WPA
#define per 50
#define per1 3
gpsSentenceInfoStruct info; char buff [256]; dubbele breedte; dubbele lengte; dubbele EPD; char buffer_latitude [8]; char buffer_longitude [8]; char buffer_spd [8]; char buffer_sensor [8]; statische unsigned char getComma (unsigned char num, const char * str) {unsigned char i, j = 0; int len=strlen(str); voor (ik = 0; ik < len; ik ++) {als (str [i] == ',') j ++; if(j == num) return ik + 1;} keren 0;} statische dubbele getDoubleNumber (const char * s) {char buf [10]; unsigned char ik dubbele rev; ik = getComma (1, s); ik = ik - 1; strncpy (buf s, ik); BUF [i] = 0; Rev=Atof(BUF); retourneren van rev; } statische dubbele getIntNumber (const char * s) {char buf [10]; unsigned char ik dubbele rev; ik = getComma (1, s); Ik = i - 1; strncpy (buf, s, i); buf [i] = 0; rev=atoi(buf); terugkeer rev;} //Esssential deel van de code //GPS gegevensverwerking //Determining hoeveelheden breedtegraad, lengtegraad en snelheid void parseDPAS (const char * DPASstr) {int tmp, uur, minuut, seconde, num; als (DPASstr [0] == '$') {tmp = getComma (1 DPASstr); uur = (DPASstr [tmp + 0] - '0') * 10 + (DPASstr [tmp + 1] - '0'); Minute = (DPASstr [tmp + 2] - '0') * 10 + (DPASstr [tmp + 3] - '0'); tweede = (DPASstr [tmp + 4] - '0') * 10 + (DPASstr [tmp + 5] - '0'); sprintf (buff, "UTC timer 2d-% 2d-% 2d", uur, minuut, seconde); tmp = getComma (2, DPASstr); breedte = getDoubleNumber(&DPASstr[tmp])/100.0; int latitude_int=floor(latitude); dubbele latitude_decimal =(latitude-latitude_int) *100.0/60.0; breedte = latitude_int + latitude_decimal; tmp = getComma (4, DPASstr); lengte = getDoubleNumber(&DPASstr[tmp])/100.0; int longitude_int=floor(longitude); dubbele longitude_decimal =(longitude-longitude_int) *100.0/60.0; lengte = longitude_int + longitude_decimal; sprintf (buff, "latitude % 10 .4f, lengte = %10.4f =", breedtegraad, lengtegraad); tmp = getComma (7, DPASstr); SPD = getDoubleNumber (& DPASstr[tmp]); sprintf (buff, "snelheid = %F", spd); } else {Serial.println ("geen gegevens ophalen");}} VOID recdat() {LGPS.getData (& info); //Serial.println ((char*) info. DPA); parseDPAS ((const char*) info. DPA); } //AP verbinding void AP_connect() {Serial.print ("verbinding maken met AP...'); terwijl (0 == LWiFi.connect (WIFI_AP, LWiFiLoginInfo (WIFI_AUTH, WIFI_PASSWORD))) {Serial.print("."); delay(500);} Serial.println("success!"); Serial.Print ("Connecting site...");
terwijl (! drivepar.connect (SITE_URL, 80)) {Serial.print("."); delay(500);} Serial.println("success!"); delay(100); } ongeldig getconnectInfo() {drivepar.print ("GET /mcs/v2/devices /"); drivepar.print(DEVICEID); drivepar.println ("/connections.csv HTTP/1.1"); drivepar.print ("Host:"); drivepar.println(SITE_URL); drivepar.Print ("deviceKey:"); drivepar.println(DEVICEKEY); drivepar.println ("verbinding: sluiten"); drivepar.println(); delay(500); int errorcount = 0; Serial.Print ("waiting for HTTPreactie..."); terwijl (! drivepar.available()) {errorcount += 1, Serial.print("."); delay(150);} Serial.println(); int err = http.skipResponseHeaders(); int bodyLen = http.contentLength(); char c; int ipcount = 0; int count = 0; int separater = 0; terwijl (drivepar) {int v = (int)drivepar.read(); als (v! = -1) {c = v; / / Serial.print(c), connection_info [ipcount] = c; if(c==',') separater = ipcount; ipcount ++;} else {Serial.println ("niet meer inhoud, verbinding verbreken"); drivepar.stop();}} int i; voor (ik = 0; ik} connectTCP() {c.stop(); void Serial.Print ("aansluiten op TCP..."); terwijl (0 == c.connect (ip, portnum)) {Serial.println ("opnieuw aansluiten op TCP"); delay(1000);} c.println(tcpdata); c.println(); Serial.println("success!"); } heartBeat() {Serial.println ("verzenden TCP heartBeat"); c.println(tcpdata); c.println();} ongeldig void uploadstatus() {terwijl (! drivepar.connect (SITE_URL, 80)) {Serial.print("."); delay(500);} delay(100); if(digitalRead(13)==1)-upload_led = "ENGINE_MODE_DISPLAY",, 1; anders upload_led = "ENGINE_MODE_DISPLAY,, 0"; int thislength = upload_led.length(); HttpClient http(drivepar); drivepar.Print ("POST /mcs/v2/devices /"); drivepar.Print(DEVICEID); drivepar.println ("HTTP/1.1 /datapoints.csv"); drivepar.Print ("Host:"); drivepar.println(SITE_URL); drivepar.Print ("deviceKey:"); drivepar.println(DEVICEKEY); drivepar.Print ("Content-Length:"); drivepar.println(thislength); drivepar.println ("Content-Type: tekst/csv"); drivepar.println ("verbinding: sluiten"); drivepar.println(); drivepar.println(upload_led); delay(500);
int errorcount = 0; terwijl (! drivepar.available()) {Serial.print("."); delay(100);} int err = http.skipResponseHeaders(); int bodyLen = http.contentLength(); terwijl (drivepar) {int v = drivepar.read(); als (v! = -1) {Serial.print(char(v));} else {Serial.println ("niet meer inhoud, verbinding verbreken"); drivepar.stop();}} Serial.println(); } //Data streaming naar Mediatek Cloud Sandbox nietig transdat() {terwijl (! drivepar.connect (SITE_URL, 80)) {Serial.print("."); delay(500);} delay(100); vlotter sensor = analogRead(A0); Serial.printf("Latitude=%.4f\tlongitude=%.4f\tspd=%.4f\tsensor=%.4f\n",Latitude,longitude,SPD,sensor); Als (latitude >-90 & & latitude < = 90 & & lengte > = 0 & & lengte < 360) {sprintf (buffer_latitude, "%.4f", latitude); sprintf (buffer_longitude, "%.4f", lengtegraad); sprintf (buffer_spd, "%.4f", spd); sprintf (buffer_sensor, "%.4f", sensor);} String upload_GPS = "GPS,,"+String(buffer_latitude)+","+String(buffer_longitude)+","+String(buffer_spd)+","+String(buffer_sensor)+","+"0"+"\n"+"LATITUDE,,"+buffer_latitude+"\n"+"LONGITUDE,,"+buffer_longitude+"\n"+"SPEED,,"+buffer_spd+"\n"+"STEERING_ANGLE,,"+buffer_sensor; int GPS_length = upload_GPS.length(); HttpClient http(drivepar); drivepar.Print ("POST /mcs/v2/devices /"); drivepar.Print(DEVICEID); drivepar.println ("HTTP/1.1 /datapoints.csv"); drivepar.Print ("Host:"); drivepar.println(SITE_URL); drivepar.Print ("deviceKey:"); drivepar.println(DEVICEKEY); drivepar.Print ("Content-Length:"); drivepar.println(GPS_length); drivepar.println ("Content-Type: tekst/csv"); drivepar.println ("verbinding: sluiten"); drivepar.println(); drivepar.println(upload_GPS); delay(500);
int errorcount = 0; terwijl (! drivepar.available()) {Serial.print("."); delay(100);} int err = http.skipResponseHeaders(); int bodyLen = http.contentLength(); terwijl (drivepar) {int v = drivepar.read(); als (v! = -1) {Serial.print(char(v));} else {Serial.println ("niet meer inhoud, verbinding verbreken"); drivepar.stop();}} Serial.println(); } LGPRSClient c; unsigned int rtc; unsigned int lrtc; unsigned int rtc1; unsigned int lrtc1; char poort [4] = {0}; char connection_info [21] = {0}; char ip [15] = {0}; int portnum; int val = 0; Tcpdata koord = String(DEVICEID) + "," + String(DEVICEKEY) + ", 0"; Tcpcmd_led_on koord = "ENGINE_MODE_CONTROL", 1; Tcpcmd_led_off koord = "ENGINE_MODE_CONTROL, 0"; String upload_led; LGPRSClient drivepar; HttpClient http(drivepar); Void setup setup {pinMode (13, OUTPUT); LTask.begin(); LWiFi.begin(); Serial.begin(115200); LGPS.powerOn(); AP_connect(); getconnectInfo(); connectTCP(); Serial.println("...");} Void loop lus {String tcpcmd = ""; terwijl (c.available()) {int v = c.read(); als (v! = -1) {Serial.print((char)v); tcpcmd += (char) v; als (tcpcmd.substring(40).equals(tcpcmd_led_on)) {digitalWrite (13, hoge); Serial.Print ("Switch LED op"); tcpcmd = ""; } else if(tcpcmd.substring(40).equals(tcpcmd_led_off)) {digitalWrite (13, laag); Serial.Print ("Schakel LED"); tcpcmd = ""; }}} LDateTime.getRtc(&rtc); Als ((rtc-lrtc) > = per) {heartBeat(); lrtc = rtc;} LDateTime.getRtc(&rtc1); Als ((rtc1-lrtc1) > = per1) {uploadstatus(); recdat(); transdat(); lrtc1 = rtc1;}}