Smart Eco-Driving System (7 / 14 steg)
Steg 7: Arduino kod
#include "twApi.h"
#include "twLogger.h"
#include "twOSPort.h"
#include "WiFi.h"
#include "Ethernet.h"
#include "stdio.h"
#include "string.h"
#include "Wire.h"
char ssid [] = "wifi_network_name";
char passera [] = "wifi_password";
int status = WL_IDLE_STATUS;
/ * Namnet på sak skapad i moln * /
char * thingName = "Smart_Driving";
/ * IP/Hostname Server * /
char * servernamn = "cloud_name.com";
/ * port * /
int port = 80.
/ * API-nyckel skapade * /
char * apiKey = "key_name";
/ * uppdateringsfrekvens * /
int timeBetweenRefresh = 1000;
/ * Parametrar mäts * /
struct {dubbel Steer, dubbel Piezo_vibration;} egenskaper.
void sendPropertyUpdate()
{
propertyList * proplist = twApi_CreatePropertyList ("styra", twPrimitive_CreateFromNumber (egenskaper. Styra), 0); om (! proplist) {TW_LOG (TW_ERROR, "sendPropertyUpdate: fel inträffade fastighet lista"); return;} twApi_AddPropertyToList (proplist, "Piezo_vibration", twPrimitive_CreateFromNumber (egenskaper. Piezo_vibration), 0); twApi_PushProperties (TW_THING, thingName, proplist,-1, FALSE); twApi_DeletePropertyList(proplist);
}
void dataCollectionTask()
{
Motsvarande portar i styrelsen tilldelar egenskaper som skapas i koden
Någon sensor kan användas när det gäller syftet används
Därmed göra kalibreringar med värden
int en = analogRead(A0); Delay(500); egenskaper. Styra = a;
int b = analogRead(A1); Delay(500); egenskaper. Piezo_vibration = b;
Serial.Print("Time:"); Serial.Print(Millis()); Serial.Print ("Steering kontroll:"); Serial.Print (egenskaper. Steer, 1); Serial.Print(""); Serial.Print ("Piezo vibrationer intensitet:"); Serial.Print (egenskaper. Piezo_vibration, 1); Serial.Print(""); Serial.println();
sendPropertyUpdate();
}
enum msgCodeEnum propertyHandler (const char * entityName, const char * propertyName, twInfoTable ** värde, char isWrite, void * userdata)
{
char * asterisk = "*"; om (! propertyName) propertyName = asterisken. TW_LOG (TW_TRACE, "propertyHandler - funktionen kallas för entiteten %s, egenskapen %s", entityName, propertyName); om (värde) {
om (strcmp (propertyName, "Styra") == 0) * värde = twInfoTable_CreateFromNumber (propertyName, egenskaper. Steer); annars om (strcmp (propertyName, "Piezo_vibration") == 0) * värde = twInfoTable_CreateFromNumber (propertyName, egenskaper. Piezo_vibration); annars returnera TWX_NOT_FOUND; återvända TWX_SUCCESS; } annat {TW_LOG (TW_ERROR, "propertyHandler - NULL-pekaren för värde"); return TWX_BAD_REQUEST;}
}
void setup()
{int err = 0;
Serial.BEGIN(9600);
Delay(500);
om (WiFi.status() == WL_NO_SHIELD)
{Serial.println ("WiFi är inte ansluten");
inte fortsätta:
While(true); }
försök att ansluta till Wifi-nätverk:
om (status! = WL_CONNECTED)
{Serial.print ("Wifi ansluter till"); Serial.println(SSID);
Ansluta till WPA/WPA2-nätverk:
status = WiFi.begin (ssid, pass);
vänta 10 sekunder för anslutning: delay(10000);
} Serial.println("You're connected to the network");
Serial.println ("SMART ECO-DRIVING systemet);
Delay(500);
Serial.println ("Intel Edison kommunicera med cloud");
Delay(1000);
ERR = twApi_Initialize (servernamn, port, TW_URI, apiKey, NULL, MESSAGE_CHUNK_SIZE, MESSAGE_CHUNK_SIZE, TRUE); twApi_SetSelfSignedOk(); twApi_RegisterProperty (TW_THING, thingName, "styra", TW_NUMBER, NULL, "Alltid", 0, propertyHandler, NULL); twApi_RegisterProperty (TW_THING, thingName, "Piezo_vibration", TW_NUMBER, NULL, "Alltid", 0, propertyHandler, NULL); twApi_BindThing(thingName);
/ * Ansluter till server * /
om (! twApi_Connect (CONNECT_TIMEOUT, CONNECT_RETRIES))
{Serial.println ("Sucessefully ansluten till att moln!"); delay(1000);}
}
void loop()
{delay(1000);
dataCollectionTask();
}