Paso 7: Código de Arduino
#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";
pasa de Char [] = "wifi_password";
int estado = WL_IDLE_STATUS;
/ * Nombre de cosa creada en nube * /
char * thingName = "Smart_Driving";
/ * IP/nombre de host del servidor * /
char * nombre del servidor = "cloud_name.com";
/ * Puerto * /
int puerto = 80;
/ * API key creado * /
char * apiKey = "key_name";
/ * refresco * /
int timeBetweenRefresh = 1000;
/ * Parámetros a ser medidos * /
struct {doble buey; doble Piezo_vibration;} propiedades;
void sendPropertyUpdate()
{
listaDePropiedades * proplist = twApi_CreatePropertyList ("buey", twPrimitive_CreateFromNumber (propiedades. Dirigir), 0); Si (! proplist) {TW_LOG (TW_ERROR, "sendPropertyUpdate: Error al asignar lista de propiedad"); return;} twApi_AddPropertyToList (proplist, "Piezo_vibration", twPrimitive_CreateFromNumber (propiedades. Piezo_vibration), 0); twApi_PushProperties (TW_THING, thingName, proplist,-1, FALSE); twApi_DeletePropertyList(proplist);
}
void dataCollectionTask()
{
Asignar los puertos correspondientes en el tablero a propiedades en código
Cualquier sensor puede utilizarse en relación con el propósito de utilizar
Hacer calibraciones con valores por consiguiente
int a = analogRead(A0); Delay(500); propiedades. Buey = a;
int b = analogRead(A1); Delay(500); propiedades. Piezo_vibration = b;
Serial.Print("Time:"); Serial.Print(Millis()); Serial.Print ("control de dirección:"); Serial.Print (propiedades. Buey, 1); Serial.Print(""); Serial.Print ("intensidad de vibraciones piezoeléctrico:"); Serial.Print (propiedades. Piezo_vibration, 1); Serial.Print(""); Serial.println();
sendPropertyUpdate();
}
enum msgCodeEnum propertyHandler (const char * entityName, const char * propertyName, twInfoTable ** valor, char isWrite, void * userdata)
{
char * asterisco = "*"; Si (! propertyName) propertyName = asterisco; TW_LOG (TW_TRACE, "propertyHandler - función llama para entidad %s, %s de propiedad", entityName, propertyName); Si (valor) {}
Si (strcmp (propertyName, "Buey") == 0) * valor = twInfoTable_CreateFromNumber (propertyName, propiedades. Dirección); else if (strcmp (propertyName, "Piezo_vibration") == 0) * valor = twInfoTable_CreateFromNumber (propertyName, propiedades. Piezo_vibration); otro retorno TWX_NOT_FOUND; volver TWX_SUCCESS; } else {TW_LOG (TW_ERROR, "propertyHandler - puntero nulo valor"); return TWX_BAD_REQUEST;}
}
void setup()
{int err = 0;
Serial.Begin(9600);
Delay(500);
Si (WiFi.status() == WL_NO_SHIELD)
{Serial.println ("Wi-Fi no está conectado");
no siguen:
mientras; }
intento de conexión a la red Wifi:
Si (status! = WL_CONNECTED)
{Serial.print ("Wi-Fi es conectarse"); Serial.println(SSID);
Conectarse a la red WPA/WPA2:
Estado = WiFi.begin (ssid, paso);
Espere 10 segundos para la conexión: delay(10000);
} Serial.println("You're connected to the network");
Serial.println ("SMART ECO-sistema de conducción");
Delay(500);
Serial.println ("Edison Intel comunicarse con nube");
Delay(1000);
ERR = twApi_Initialize (nombre del servidor, puerto, TW_URI, apiKey, NULL, MESSAGE_CHUNK_SIZE, MESSAGE_CHUNK_SIZE, TRUE); twApi_SetSelfSignedOk(); twApi_RegisterProperty (TW_THING, thingName, "buey", TW_NUMBER, NULL, "Siempre", 0, propertyHandler, NULL); twApi_RegisterProperty (TW_THING, thingName, "Piezo_vibration", TW_NUMBER, NULL, "Siempre", 0, propertyHandler, NULL); twApi_BindThing(thingName);
/ * Se conecta al servidor * /
Si (! twApi_Connect (CONNECT_TIMEOUT, CONNECT_RETRIES))
{Serial.println ("Sucessefully conectado a la nube!"); delay(1000);}
}
void loop()
{delay(1000);
dataCollectionTask();
}