Sakernas Internet (5 / 6 steg)

Steg 5: Program styrelsen


Det finns seveal viktiga saker att ändra i koden nedan. Först är IP-adressen. Varje styrelse måste ha en unik IP-adress annars routern kommer att bli mycket förvirrad. Jag började på IP-adress ip(192,168,1,178); och sedan La man till det sista numret. Vissa routrar har olika nummer t.ex 192.168.2.x och en snabb kontroll på en PC som kör IPCONFIG i en DOS skal ger rätt 3 första nummer.

Andra numret för att ändra är MAC-adressintervall. Rad byte mac [] = {

0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE}; är ett standardnummer – kanske förändring man att ett annat hex nummer på varje bräda, t.ex den sista en, räkna bakåt i hex 0xED, 0xEC.

Den sista sak att ändra är om styrelsen är en uploader eller downloader. Denna kod gör både och ungefär halvvägs ner är detta

IF(!client.Connected() & & (millis() - lastConnectionTime > postingInterval)) {

sendData(Analog0,Analog1,Analog2,Analog3,Analog4);

kommentera ut antingen skicka eller hämta data

getData();

som är konfigurerad för att skicka data. För att hämta tillbaka informationen, kommentera ut senddata och avkommentera getdata.

Det finns några överblivna kod kommenteras ut för saker som dumpning ut hela textsträngen från Xively vilket är praktiskt för felsökning för att räkna ut hur man skär upp strängen och extrahera de enskilda sensormätningar.

Xively kan göra andra saker som att skicka ett SMS eller annat meddelande när vissa villkor är uppfyllda.

Ha det så kul!

/*
Pachube sensor klient

Denna skiss ansluter en analog sensor
till Pachube (http://www.pachube.com)
med hjälp av en Wiznet Ethernet shield. Du
kan använda Arduino Ethernet shield, eller
Ethernet-Adafruit sköld, antingen
en kommer att fungera, så länge som det har fått
en Wiznet Ethernet modul ombord.

Detta exempel har uppdaterats för att använda
version 2.0 av Pachube.com API.

Att göra det arbete, skapa en feed med en
Datastream, och ge den ID
sensor1. Eller ändra koden nedan för att
matcha din feed.

Krets:
* Analog sensor kopplad till analog i
0 för tryckknappar
* Ethernet shield bifogas stift 10,
11, 12, 13

LCD kretsen: standard är
12,11,5,4,3,2 förändring av 8,9,4,5,6,7
* LCD RS stift till digital stift 12
* LCD aktivera stift till digital stift 11
* LCD D4 stift till digital stift 5
* LCD D5 stift till digital stift 4
* LCD D6 stift till digital stift 3
* LCD D7 stift till digital stift 2

och skär huvudet stift till D10 kommer att
LCD-displayen (ethernet styrelsen behov här, och på LCD-skärmen
endast användas för att inaktivera bakgrundsljus
Serial debug kommenteras ut nu och
Skicka till LCD istället
Ändra IP-adress till en annan
nummer för varje bräda

skapad 15 mars 2010
modifierade 9 Apr 2012
av Tom Igoe med ingång från Usman
Haque och Joe Saavedra

http://Arduino.cc/en/tutorial/PachubeClient
Denna kod är i public domain.

*/
#include < SPI.h >
#include < Ethernet.h >
#include < LiquidCrystal.h >
#define APIKEY
"shsCNFtxuGELLZx8ehqglXAgDo9lkyBam5Zj22p3g3urH2FM" / /
Byt ut din pachube api-nyckel här
#define FEEDID 970253233 / /
ersätta din feed ID
#define USERAGENT "Arduino1"
förbrukaren agent är projektnamnet
tilldela en MAC-adress för den
Ethernet-styrenhet.
Nyare Ethernet sköldar har en MAC
Adress tryckt på ett klistermärke på skölden
Fyll i din adress här:
byte [mac] = {

0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE};
Fyll i en tillgänglig IP-adress på
ditt nätverk här,
för manuell konfiguration:
IP-adress ip(192,168,1,178);
initiera bibliotek instans:
EthernetClient klient;
initiera LCD-biblioteket med den
nummer av gränssnittet stiften
LiquidCrystal lcd(8,9,4,5,6,7);
Om du inte vill använda DNS (och
minska din skiss storlek)
använda de numeriska IP i stället för den
namn för servern:
IP-adress server(216,52,233,122);
numeriska IP för api.pachube.com
char server [] = "api.xively.com";
namn adress för xively API
osignerade långa lastConnectionTime = 0;
förra gången du ansluten till servern, i millisekunder
booleska lastConnected = false;
tillstånd för anslutningen förra gången genom huvudloop
CONST osignerade långa postingInterval =
10 * 1000; fördröjning mellan uppdateringar av Pachube.com
int counter;
Sträng stringOne, stringTwo; byggt
sträng när data kommer tillbaka
booleska stringData = false; återställa
När ett nytt block av data kommer tillbaka
void setup() {

Delay(1000); i fall seriella
Port orsakar en latchup

Öppna seriell kommunikation och vänta
för port att öppna:
Serial.BEGIN(9600);
tag (!. Serial) {
; vänta på serieporten till
Anslut. Behövs för Leonardo endast
}
Serial.println("API.xively.com");
om gå mer än? 32s då heltal calc fungerar inte

LCD.BEGIN (16, 2);
CLS(); Rensa skärmen

Delay(1000);
lcd.setCursor(0,1); x, y överst till vänster
hörnet är 0,0
LCD.Print("API.xively.com");
lcd.setCursor(0,0);
LCD.Print ("Start Ethernet");
Serial.println ("Start
Ethernet");
Delay(1000);
Starta Ethernet-anslutningen:
om (Ethernet.begin(mac) == 0) {
Serial.println ("misslyckades med att
att konfigurera Ethernet via DHCP");
DHCP misslyckades, så använd en fast IP
Adress:
lcd.setCursor(0,1);
LCD.Print ("kunde inte
Konfigurera");
Ethernet.BEGIN (mac, ip);
}
Serial.println ("vänta 10s");
lcd.setCursor(0,1);
LCD.Print ("vänta 10s");

}
void loop() {
Läs den analog sensorn:
int Analog0 = analogRead(A0); med
en LCD display analog0 är alla knappar
int Analog1 = analogRead(A1);
int Analog2 = analogRead(A2);
int Analog3 = analogRead(A3);
int Analog4 = analogRead(A4);

int sensorReading =
analogRead(A2);

om det inkommande data från den
netto-anslutning.
Skicka den seriella porten. Detta
är för felsökning
syfte:
om (client.available()) {
char c = client.read();
Serial.Print(c);
om (stringData == false)
{
stringData = sant; vissa data
har kommit i
}
om (stringData == true)
{
stringOne += c; bygga den
sträng
}

om ((c>32) och (c < 127))
{
LCD.Print(c);
räknaren + = 1;
}
om (counter == 16)
{
lcd.setCursor(0,1);
LCD.Print("
");
lcd.setCursor(0,1);
räknare = 0;
Delay(100);
}

}
om det finns ingen netto-anslutning, men
Det var en sista gång
genom öglan, sedan sluta den
klient:
om (! client.connected() & &
lastConnected) {
Serial.println();
Serial.println("Disconnect");
client.stop();
lcd.setCursor(0,0);
LCD.Print ("koppla");
lcd.setCursor(0,1);
räknare = 0;
om (stringData == true)
{
PrintResults(); extrahera den
värden och skriva ut
stringData = false; återställa den
flagga
stringOne = ""; //
Rensa strängen
}

}
Om du inte är ansluten, och tio
sekunder har gått sedan
din senaste anslutning och Anslut sedan
igen och skicka data:
IF(!client.Connected() & &
(millis() - lastConnectionTime > postingInterval)) {

sendData(Analog0,Analog1,Analog2,Analog3,Analog4);
kommentera ut antingen skicka eller hämta data
getData();

}
lagra tillståndet för anslutningen
för nästa gång genom
loopen:
lastConnected = client.connected();
}
void PrintResults() / / skriva ut resultaten av
Hämta från xively
{
int n = 292; börja på sensorn
data
int i;
char lf = 10;
int v.
CLS();

lcd.setCursor(0,0);
stringOne += lf; lägga till en avsluta av
tecknet för
för (jag = 0; jag < 5; i ++)
{
medan (stringOne.charAt(n)! = 44)
hitta första kommatecken
{
+ n = 1.
}

+ n = 1.
medan (stringOne.charAt(n)! = 44)
Hitta andra kommatecken
{
+ n = 1.
}

+ n = 1.
stringTwo = "";
medan (stringOne.charAt(n)! = 10)
hitta i slutet av den linje som är en linje foder ascii 10
{
LCD.Print(stringOne.charAt(n));
stringTwo += stringOne.charAt(n);
+ n = 1.
}
v=stringTwo.toInt();
LCD.Print(v);

LCD.Print(""); utrymme
på slutet
om (jag == 1)
{
lcd.setCursor(0,1);

}

}

}
void Cls() / / clear LCD-skärm
{
lcd.setCursor(0,0);
LCD.Print("");
tydlig LCD-skärm
lcd.setCursor(0,1);
LCD.Print("");
}

void PrintValues (int n0, int n1, n2 int,
int n3, int n4)
{
Serial.Print(N0);
Serial.Print("");
Serial.Print(N1);
Serial.Print("");
Serial.Print(N2);
Serial.Print("");
Serial.Print(N3);
Serial.Print("");
Serial.println(N4);
CLS();
lcd.setCursor(0,0);
LCD.Print(N0);
LCD.Print("");
LCD.Print(N1);
lcd.setCursor(0,1);
LCD.Print(N2);
LCD.Print("");
LCD.Print(N3);
LCD.Print("");
LCD.Print(N4);
Delay(2000);
}

med denna metod är en HTTP-anslutning
till servern:
void sendData (int data0 int data1, int
data2, int uppgifter3, int data4) {

PrintValues(data0,data1,data2,data3,data4);
Serial.println("Connecting...");
lcd.setCursor(0,0);
LCD.Print ("ansluta... ");
lcd.setCursor(0,1);
LCD.Print ("inget svar");
om det finns ett svar detta kommer mycket snabbt få över
lcd.setCursor(0,1);

räknare = 0;
om det finns en framgångsrik
anslutning:
om (client.connect (server, 80)) {
client.Print ("PUT
/v2/feeds / ");
client.Print(FEEDID);
client.println (".csv
HTTP/1.1 ");
client.println ("värd:
API.pachube.com");
client.Print ("X-PachubeApiKey:
");
client.println(APIKEY);
client.Print ("User-Agent:");
client.println(useragent);
client.Print ("Content-Length:
");
beräkna längden av den
sensor läsa i byte:
8 byte för "sensor1"
+ antal siffror av data:
int thisLength = 8 +
getLength(thisData);
client.println(thisLength);
8 är längd sensor1 och 2
mer för crlf
int stringLength = 8 +
getLength(data0) + 10 + getLength(data1) + 10 + getLength(data2) + 10
+ getLength(data3) + 10 + getLength(data4);
client.println(stringLength);
senaste bitar av HTTP sätta
begäran:
client.println ("Content-Type:
text/csv");
client.println ("anslutning:
Stäng");
client.println();
här är det faktiska innehållet i de
Placera begäran:
client.Print("sensor1,");
client.println(Data0);
client.Print("sensor2,");
client.println(Data1);

client.Print("sensor3,");
client.println(data2);

client.Print("sensor4,");
client.println(Data3);

client.Print("sensor5,");
client.println(Data4);

Serial.println ("vänta
svara"); xively svarar med text, om ingenting sedan
Det finns ett fel
lcd.setCursor(0,1);
LCD.Print ("vänta på svar
");

}

annat {
Om du inte kunde göra en
anslutning:
Serial.println ("anslutning
kunde inte");
Serial.println();
Serial.println ("så
Koppla loss.");
client.stop();
lcd.setCursor(0,1);
LCD.Print ("Anslut misslyckas");
}
Notera tid som anslutningen
var gjort eller försökt:
lastConnectionTime = millis();
}
med denna metod är en HTTP-anslutning
till servern:
void getData() {
om det finns en framgångsrik
anslutning:
om (client.connect (server, 80)) {
Serial.println ("ansluta
att begära data...");
lcd.setCursor(0,0);
LCD.Print ("Connect");
client.Print ("få
/v2/feeds / ");
client.Print(FEEDID);
client.println (".csv
HTTP/1.1 ");
client.println ("värd:
API.pachube.com");
client.Print ("X-PachubeApiKey:
");
client.println(APIKEY);
client.Print ("User-Agent:");
client.println(useragent);
client.println ("Content-Type:
text/csv");
client.println ("anslutning:
Stäng");
client.println();
Serial.println ("färdig
begär, vänta på svar. ");
lcd.setCursor(0,1);
LCD.Print ("Finish begäran");
}

annat {
Om du inte kunde göra en
anslutning:
Serial.println ("anslutning
kunde inte");
Serial.println();
Serial.println ("så
Koppla loss.");
client.stop();
}
Notera tid som anslutningen
var gjort eller försökt:
lastConnectionTime = millis();
}
Denna metod beräknar antalet
siffror i den
sensor läsning. Sedan varje siffra för
ASCII decimal
representation är en byte, antalet
av siffror lika med
antalet byte:
int getLength (int someValue) {
Det finns minst en byte:
int siffror = 1;
ständigt dividera värdet av
tio,

lägga till en till antalet siffror för
varje
tid du dela upp, tills du är på
0:
int utdelning = someValue /10;
medan (utdelning > 0) {
utdelning = utdelning /10;
siffror ++;
}
returnera antalet siffror:
siffrorna;
}

Se Steg
Relaterade Ämnen

Sakernas Internet Time Warp Dali klockan

Tiden flyger när du har roligt och drar när du är uttråkad. Tid är uppenbarligen relativ: vår uppfattning av tid ändras med våra sinnestillstånd, och det är enda mässa som klockor ska kunna anpassa sig till våra erfarna hastighet tid. Sakernas Intern...

CC3200 Wi-Fi styrelsen för Sakernas Internet

Goda nyheter för Sakernas Internet människor!Texas instrument CC3200-LAUNCHXL styrelsen stöds nu av Energia v.13+http://Energia.nu/PIN-Maps/guide_cc3200launchpad/http://Energia.nu/cc3200guide/Energia är Arduino miljö anpassad för Texas målning marker...

Sakernas Internet med Raspberry Pi-2

Detta är en uppföljning till mitt tidigare instructable Sakernas Internet med Raspberry Pi - 1.(Om inte du är bekant med webbservrar, PHP kodning och grundläggande begrepp för Sakernas Internet, bör du nog gå igenom del 1 första.)I den tidigare instr...

Sakernas Internet med Raspberry Pi - 1

När jag var ny på IOT (Internet Of Things), såg jag att det fanns knappt några tutorials som var tillräckligt enkelt för nybörjare att förstå och prova. Det var antingen till mycket tekniska jargong, eller hårdvaran var alltför komplex.Så nu när jag...

Sakernas Internet baserade giftig gas övervakning

Personer som arbetar i kloakerna och underjordiska gruvor eller andra gruvindustrin ofta har andningsbesvär på grund av typen av luft i arbetsklimat. Till exempel i mitt land har arbetarna ofta ange brunnar eller avlopp ska rengöras. Städmaskiner fin...

Mjölk i kylen - Sakernas Internet

Jag tror att en dag, alla livsmedel skåp och kylskåp/frysar blir smart. Alla produkter kommer att ha en RFID eller video igenkännlig etikett, som kommer att uppdatera en förteckning över produktens användning. Din lokala mataffär kommer att samla in...

Skapa din första IoT Ethernet-enhet. Del 5: Sakernas Internet, Home Automation

Detta är en "twofer" (två för en) är den första delen (A) Ethernet motsvarande sin WiFi ESP8266/DHT22 baserat föregångare med en extra I2C LCD-display för sammanfattningsdata (se andra bilden ovan). I del (B) vi kommer att utöka design (se först...

Att inrätta en MQTT mäklare. Del 2: Sakernas Internet, Home Automation

FörordOkej i "Del1: Sakernas Internet, Home Automation", du har skapat och konfigurerat din "Vanilj" Raspberry Pi (ursäkta ordvitsen) och kan fjärransluta till det med kitt. Nu ställer vi in en server som kommer att upprätta din huvuds...

Skapa din första IoT WiFi-enhet. Del 3: Sakernas Internet, Home Automation

Detta Instructable dokument hur man skapar en enkel IoT enhet (bilden ovan) baserat runt ESP8266-01 WiFi aktiverat modulen och är den tredje delen i en serie av Instructables beskriver hur du ställer in egna IoT hemnätverket.IoT enheten i fråga har e...

"Koppleri" din första IoT WiFi-enhet. Del 4: Sakernas Internet, Home Automation

OK, inte så mycket koppleri men att utvidga din första IoT enhetIntroduktionDetta Instructable dokumenterar hur enkelt det är att utvidga och ytterligare utveckla en IoT enhet (bilden ovan) och är uppbyggd kring ESP8266-01 WiFi aktiverat modulen från...

Sakernas Internet kontrollerad Smart lampa/Outlet med spark core och IFTTT

Jag ville ha en natt-lampa som kommer att slå på efter solnedgången och stänga av mitt i natten. Finns på homedepot eller andra järnhandeln timers kan bara ställa in en tid. Eftersom det finns sommartid i USA, fick det bytas. För att lösa detta, är u...

Bakåtkompilera RF fjärrkontrollen för Sakernas Internet!

I detta instructable, lär du hur du återför ingenjör Radio Frequency (RF) fjärrkontroller och implementera i en mycket billig WiFi aktiverat datorn, nod MCU. Med denna teknik kan du IoT aktivera äldre apparater och enheter!Jag köpte denna Harbor Bree...

Återanvända en gammal wifi router för-sakernas internet

Internet-anslutna enheter byggt med Arduino sköldar eller single-board dator som Raspberry Pi och Beaglebone popularitet har exploderat, men för enkla uppgifter som att styra ett relä, läsa en sensor, vattna din trädgård eller belysning LED finns en...

Sakernas Internet | Spåra din dators minne/CPU

Internet of Things (IoT) hänvisar till det växande nätverket av fysiska objekt som har en IP-adress för internet-anslutning och den kommunikation som sker mellan dessa objekt och andra Internet-aktiverade enheter och system. I detta instructable, ser...

Internet möjliggj橬一j kylskåp: En första razzia i sakernas Internet

Hej alla!Jag hade ett problem med frysen i vårt hus. Då och då, frysen skulle misslyckas att stänga helt, antingen studsar öppen eller få något stödd öppen. Denna lilla lucka var nog av en lucka så att varm och fuktig luft inne i frysen. Vattnet skul...

Lei: Sakernas Internet Wi-Fi omgivande lampan

I detta projekt, vi prototyper en 3x3W rgb IoT omgivande lampa som kan styras via internet, med Lelylan och vilken webbläsare som helst i världen.Lampan var från början avsedd att vara kickstarted, men brist på tid och en massa andra saker, vi stanna...

Sakernas Internet aktiverat Egg bricka

detta hackat ägg fack som har själv skrivs ut med 3D-skrivare, håller en sammanräkning av äggen i facket och uppdaterar den live på internet. Sedan visar en stöder Android applikation live scenariot av ägg tillgängligheten. Inte bara detta, men också...

Sakernas Internet: dusch kontroll

Minska varmvatten förbrukning med 40% och har fortfarande en bra dusch.I många år, jag undrar, hur jag att minska dusch tid för mina barn. de har numera, 14, 16 och 18 års ålder. De gillar att duscha i, åtminstone 5-10 min. 8 min är den genomsnittlig...

Installation och konfiguration av OpenHAB. Del 6: Sakernas Internet, Home Automation

FörordSå, om du har följt de tidigare delarna (IoT - "Intranät" saker: Home Automation. Del1: IoT, introduktion och framåt) du kommer att ha dig en IoT nätverk liknar den som visas ovan (bild 2 och 3). I denna del kommer vi lägga sista touch. An...