Stap 7: Arduino code
#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 doorgeven [] = "wifi_password";
int status = WL_IDLE_STATUS;
/ * Naam van ding gemaakt in wolk * /
char * thingName = "Smart_Driving";
/ * IP/hostnaam van de server * /
char * serverName = "cloud_name.com";
/ * haven * /
int poort = 80;
/ * API-sleutel gemaakt * /
char * apiKey = "key_name";
/ * vernieuwingsfrequentie * /
int timeBetweenRefresh = 1000;
/ * Parameters te meten * /
struct {dubbele Steer; dubbele Piezo_vibration;} eigenschappen;
VOID sendPropertyUpdate()
{
Eigenschappenlijst * proplist = twApi_CreatePropertyList ("Steer", twPrimitive_CreateFromNumber (eigenschappen. Sturen), 0); Als (! proplist) {TW_LOG (TW_ERROR, "sendPropertyUpdate: fout toewijzen eigenschappenlijst"); terugkeer;} twApi_AddPropertyToList (proplist, "Piezo_vibration", twPrimitive_CreateFromNumber (eigenschappen. Piezo_vibration), 0); twApi_PushProperties (TW_THING, thingName, proplist,-1, FALSE); twApi_DeletePropertyList(proplist);
}
VOID dataCollectionTask()
{
De overeenkomstige poorten in bestuur toewijzen aan eigenschappen gemaakt in code
Een sensor kan worden gebruikt met betrekking tot het doel gebruikt
Kalibraties met waarden dienovereenkomstig doen
int een = analogRead(A0); delay(500); Eigenschappen. Sturen = een;
int b = analogRead(A1); delay(500); Eigenschappen. Piezo_vibration = b;
Serial.Print("time:"); Serial.Print(Millis()); Serial.Print ("Steering controle:"); Serial.Print (eigenschappen. STEER, 1); Serial.Print(""); Serial.Print ("Piezo trillingen intensiteit:"); Serial.Print (eigenschappen. Piezo_vibration, 1); Serial.Print(""); Serial.println();
sendPropertyUpdate();
}
Enum msgCodeEnum propertyHandler (const char * entityName, const char * propertyName, twInfoTable ** waarde, char isWrite, void * userdata)
{
char * sterretje = "*"; Als (! propertyName) propertyName = asterisk; TW_LOG (TW_TRACE, "propertyHandler - functie aangeroepen voor entiteit eigenschap %s %s", entityName, propertyName); Als (waarde) {}
Als (killerid (propertyName, "Steer") == 0) * waarde = twInfoTable_CreateFromNumber (propertyName, eigenschappen. STEER); else if (killerid (propertyName, "Piezo_vibration") == 0) * waarde = twInfoTable_CreateFromNumber (propertyName, eigenschappen. Piezo_vibration); anders return TWX_NOT_FOUND; Return TWX_SUCCESS; } else {TW_LOG (TW_ERROR, "propertyHandler - NULL pointer voor waarde"); return TWX_BAD_REQUEST;}
}
VOID Setup
{int err = 0;
Serial.begin(9600);
delay(500);
Als (WiFi.status() == WL_NO_SHIELD)
{Serial.println ('WiFi is niet verbonden");
Ga niet verder:
while (true); }
poging om te verbinden met wifinetwerk:
Als (status! = WL_CONNECTED)
{Serial.print ("de Wifi is aansluiten op"); Serial.println(SSID);
Verbinding maken met WPA/WPA2-netwerk:
Status = WiFi.begin (ssid, pass);
wacht 10 seconden voor verbinding: delay(10000);
} Serial.println("You're connected to the network");
Serial.println ("slimme ECO-DRIVING systeem");
delay(500);
Serial.println ('Intel Edison communicating with wolk');
delay(1000);
Err = twApi_Initialize (servernaam, poort, TW_URI, apiKey, NULL, MESSAGE_CHUNK_SIZE, MESSAGE_CHUNK_SIZE, TRUE); twApi_SetSelfSignedOk(); twApi_RegisterProperty (TW_THING, thingName, "sturen", TW_NUMBER, NULL, 0, propertyHandler, "ALWAYS", NULL); twApi_RegisterProperty (TW_THING, thingName, TW_NUMBER, "Piezo_vibration", NULL, "ALWAYS", 0, propertyHandler, NULL); twApi_BindThing(thingName);
/ * Verbinden met server * /
Als (! twApi_Connect (CONNECT_TIMEOUT, CONNECT_RETRIES))
{Serial.println ("Sucessefully aangesloten op cloud!"); delay(1000);}
}
void loop
{delay(1000);
dataCollectionTask();
}