Kassaskåp i sand (3 / 5 steg)
Steg 3: Ladda upp Arduino kod i Arduino IDE
Kassaskåp i sandlådan
Header-filer som krävs
Om sådana inte finns, se till att hitta dem i Github databaser
#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"
Anpassa data som behövs enligt dina specifikationer
#define WIFI_AP "ditt wifi namn"
#define WIFI_PASSWORD "din wifi lösenord"
#define DEVICEID "ditt enhets-id"
#define DEVICEKEY "din enhet nyckel"
#define SITE_URL "api.mediatek.com"
#define WIFI_AUTH LWIFI_WPA
#define per 50
#define per1 3
gpsSentenceInfoStruct info; röding buff [256]; dubbel bredd. dubbel longitud; dubbla spd; char buffer_latitude [8]. char buffer_longitude [8]. char buffer_spd [8]. char buffer_sensor [8]. statiska unsigned char getComma (unsigned char num, const char * str) {unsigned char i, j = 0; int len=strlen(str); för (jag = 0; jag < len; jag ++) {om (str [i] == ',') j ++; if(j == num) återvända i + 1.} return 0;} statiska dubbel getDoubleNumber (const char * s) {char buf [10], unsigned char jag dubbla rev; jag = getComma 1, s; jag = i - 1; strncpy (buf s, jag); BUF [i] = 0; rev=ATOF(BUF); returnera rev; } statiska dubbel getIntNumber (const char * s) {char buf [10], unsigned char jag dubbla rev; jag = getComma 1, s; jag = i - 1; strncpy (buf, s, i); buf [i] = 0; rev=atoi(buf); return rev;} //Esssential del av koden //GPS databehandling //Determining kvantiteter latitud, longitud och hastighet void parseDPAS (const char * DPASstr) {int tmp, timme, minut, sekund, num, om (DPASstr [0] == '$') {tmp = getComma (1 DPASstr); timme = (DPASstr [tmp + 0] - '0') * 10 + (DPASstr [tmp + 1] - '0'); minut = (DPASstr [tmp + 2] - '0') * 10 + (DPASstr [tmp + 3] - '0'); för det andra = (DPASstr [tmp + 4] - '0') * 10 + (DPASstr [tmp + 5] - '0'); sprintf (buff, "UTC timer 2d-% 2d-% 2d", timme, minut, sekund); tmp = getComma (2, DPASstr). Latitude = getDoubleNumber(&DPASstr[tmp])/100,0; int latitude_int=floor(latitude); dubbel latitude_decimal =(latitude-latitude_int) *100.0/60.0; Latitude = latitude_int + latitude_decimal; tmp = getComma (4, DPASstr). longitud = getDoubleNumber(&DPASstr[tmp])/100,0; int longitude_int=floor(longitude); dubbel longitude_decimal =(longitude-longitude_int) *100.0/60.0; longitud = longitude_int + longitude_decimal; sprintf (buff, "latitud = % 10 .4f, longitud = %10.4f", latitud, longitud); tmp = getComma (7, DPASstr). SPD = getDoubleNumber (& DPASstr[tmp]); sprintf (buff, "hastighet = %F", spd); {} annat {Serial.println ("inte få data");}} void recdat() {LGPS.getData (& info); //Serial.println ((char*) information. DATASKYDDSMYNDIGHETERNA); parseDPAS ((const char*) information. DATASKYDDSMYNDIGHETERNA); } //AP anslutning void AP_connect() {Serial.print ("ansluter till AP..."), medan (0 == LWiFi.connect (WIFI_AP, LWiFiLoginInfo (WIFI_AUTH, WIFI_PASSWORD))) {Serial.print("."); delay(500);} Serial.println("success!"); Serial.Print ("ansluta webbplatsen...");
medan (! drivepar.connect (SITE_URL, 80)) {Serial.print("."); delay(500);} Serial.println("success!"); Delay(100); } void 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 ("anslutning: Stäng"); drivepar.println(); Delay(500); int errorcount = 0; Serial.Print ("väntar för HTTP-svar..."); medan (! drivepar.available()) {Serial.print("."); errorcount += 1; delay(150);} Serial.println(); int err = http.skipResponseHeaders(); int bodyLen = http.contentLength(); char c; int ipcount = 0; int count = 0; int separater = 0; samtidigt (drivepar) {int v = (int)drivepar.read(); om (v! = -1) {c = v; / / Serial.print(c), connection_info [ipcount] = c; if(c==',') separater = ipcount; ipcount ++;} annat {Serial.println (inte mer innehåll, koppla bort"); drivepar.stop();}} int i; för (jag = 0; jag} void connectTCP() {c.stop(); Serial.Print ("ansluta till TCP..."); medan (0 == c.connect (ip, portnum)) {Serial.println ("åter ansluta till TCP"); delay(1000);} c.println(tcpdata); c.println(); Serial.println("success!"); } void heartBeat() {Serial.println ("Skicka TCP heartBeat"); c.println(tcpdata); c.println();} void uploadstatus() {medan (! drivepar.connect (SITE_URL, 80)) {Serial.print("."); delay(500);} delay(100); if(digitalRead(13)==1) upload_led = "ENGINE_MODE_DISPLAY,, 1", annan 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 ("/datapoints.csv HTTP/1.1"); drivepar.Print ("Host:"); drivepar.println(SITE_URL); drivepar.Print ("deviceKey:"); drivepar.println(DEVICEKEY); drivepar.Print ("Content-Length:"); drivepar.println(thislength); drivepar.println ("Content-Type: text/csv"); drivepar.println ("anslutning: Stäng"); drivepar.println(); drivepar.println(upload_led); Delay(500);
int errorcount = 0; medan (! drivepar.available()) {Serial.print("."); delay(100);} int err = http.skipResponseHeaders(); int bodyLen = http.contentLength(); samtidigt (drivepar) {int v = drivepar.read(); om (v! = -1) {Serial.print(char(v));} annat {Serial.println (inte mer innehåll, koppla bort"); drivepar.stop();}} Serial.println(); } //Data streaming till Mediatek Cloud sandlåda void transdat() {medan (! drivepar.connect (SITE_URL, 80)) {Serial.print("."); delay(500);} delay(100); float sensor = analogRead(A0); Serial.printf("Latitude=%.4f\tlongitude=%.4f\tspd=%.4f\tsensor=%.4f\n",Latitude,Longitude,SPD,sensor); om (latitud > -90 & & latitude < = 90 & & longitud > = 0 & & longitud < 360) {sprintf (buffer_latitude, "%.4f", latitud); sprintf (buffer_longitude, "%.4f", longitud); 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 ("/datapoints.csv HTTP/1.1"); 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: text/csv"); drivepar.println ("anslutning: Stäng"); drivepar.println(); drivepar.println(upload_GPS); Delay(500);
int errorcount = 0; medan (! drivepar.available()) {Serial.print("."); delay(100);} int err = http.skipResponseHeaders(); int bodyLen = http.contentLength(); samtidigt (drivepar) {int v = drivepar.read(); om (v! = -1) {Serial.print(char(v));} annat {Serial.println (inte mer innehåll, koppla bort"); drivepar.stop();}} Serial.println(); } LGPRSClient c; unsigned int rtc; unsigned int lrtc; unsigned int rtc1; unsigned int lrtc1; char port [4] = {0}. char connection_info [21] = {0}. char ip [15] = {0}. int portnum; int val = 0; String tcpdata = String(DEVICEID) + "," + String(DEVICEKEY) + ", 0"; String tcpcmd_led_on = "ENGINE_MODE_CONTROL, 1"; String tcpcmd_led_off = "ENGINE_MODE_CONTROL, 0"; Sträng upload_led; LGPRSClient drivepar; HttpClient http(drivepar); Setup void setup() {pinMode (13, OUTPUT); LTask.begin(); LWiFi.begin(); Serial.BEGIN(115200); LGPS.powerOn(); AP_connect(); getconnectInfo(); connectTCP(); Serial.println("...");} Loop void loop() {String tcpcmd = ""; samtidigt (c.available()) {int v = c.read(); om (v! = -1) {Serial.print((char)v); tcpcmd += (char) v; om (tcpcmd.substring(40).equals(tcpcmd_led_on)) {digitalWrite 13, hög. Serial.Print ("Switch LED på"); tcpcmd = ""; } annat if(tcpcmd.substring(40).equals(tcpcmd_led_off)) {digitalWrite 13, låg. Serial.Print ("avstängning LED"); tcpcmd = ""; {}}} LDateTime.getRtc(&rtc); om ((rtc-lrtc) > = per) {heartBeat(); lrtc = rtc;} LDateTime.getRtc(&rtc1); om ((rtc1-lrtc1) > = per1) {uploadstatus(); recdat(); transdat(); lrtc1 = rtc1;}}