Stap 6: Upload de Arduino-Code
Bewerk de onderstaande sketch en controleren of bijwerken voor uw netwerkinstellingen, alsmede uw ThingTweet API-sleutel. Zie de inline commentaar te krijgen van een beter inzicht in wat het gaande.Ik heb ook een kopie van het bestand van de .pde dat kunt u ook downloaden bijgevoegd.
### Starten van Sketch ###
AlarmingTweet door willnue - www.nuewire.com
Tweet capabilties voegt aan het GE 45142 keuze-Alert Wireless Control Center
Ethernet-Shield vereist voor het verzenden van tweets
ThingTweet code details
//-----------------------
/*
ThingTweet App een Twitter Status Update
De schets van de ThingTweet is ontworpen voor de Arduino + Ethernet-Shield.
Deze sketch een Twitter status via de ThingTweet App bijgewerkt
(http://community.thingspeak.com/documentation/apps/thingtweet/) met behulp van HTTP POST.
ThingTweet is een Twitter proxy webapplicatie die de OAuth afhandelt.
Aan de slag met ThingSpeak en ThingTweet:
* Aanmelden voor een nieuwe gebruikersaccount voor ThingSpeak - https://www.thingspeak.com/users/new
* Je Twitter-account koppelen aan de ThingTweet App - Apps / ThingTweet
* Voer de ThingTweet API-sleutel in deze schets onder "ThingSpeak Settings"
Gemaakt: Maart 7, 2011 door Hans Scharler (http://www.iamshadowlord.com)
*/
Bibliotheken
//------------------------
#include < SPI.h >
#include < Ethernet.h >
Ethernet-shield instellingen
//------------------------
byte mac [] = {0xDE, 0xAD, 0xBE, 0xB2, 0xAD, 0xEF, 0xEF}; Moet uniek zijn op het lokale netwerk
byte ip [] = {192, 168, 1, 5}; Moet uniek zijn op het lokale netwerk
byte gateway [] = {192, 168, 1, 1};
byte subnet [] = {255, 255, 255, 0};
Define pinnen gebruikt
//-----------------------
#define pinPwr 5 //Analog pin voor de voedings-LED op Configuratiecentrum
#define pinArm 4 //Analog pin voor gewapende LED op Configuratiecentrum
#define pinZn1 0 //Analog pin voor Zone 1 LED op Configuratiecentrum
#define pinZn2 1 //Analog pin voor Zone 2 LED op Configuratiecentrum
#define pinZn3 2 //Analog pin voor Zone 3 LED op Configuratiecentrum
#define pinZn4 3 //Analog pin voor Zone 4 LED op Configuratiecentrum
Globale variabelen
//-----------------------
Boole prevPwr = false; Laatste stand van LED (= true, OFF = false)
Boole prevArm = false; Laatste stand van LED (= true, OFF = false)
Boole prevZn1 = false; Laatste stand van LED (= true, OFF = false)
Boole prevZn2 = false; Laatste stand van LED (= true, OFF = false)
Boole prevZn3 = false; Laatste stand van LED (= true, OFF = false)
Boole prevZn4 = false; Laatste stand van LED (= true, OFF = false)
LedReport koord = ""; tekenreeks voor het opslaan van LED statusbericht
Booleaanse pinAlerts [] {onwaar, onwaar, false, false, false, onwaar} =; Alert Status van pins
int i = 0; Teller
Twitter opties
//-----------------------
unsigned long tweetInterval = 300000; Minimale wachttijd tussen het verzenden van tweets (in milliseconden) - 60000 per minuut
unsigned long LastTweet = 0; Variabele voor laatste tweet keer (in milliseconden)
Boole sendTweet = waar; Vlag voor het verzenden van tweet
TweetText koord = ""; tekenreeks voor het opslaan van tweet
ThingSpeak instellingen
//-----------------------
byte server [] = {184, 106, 153, 149}; IP-adres voor de ThingSpeak API
ThingtweetAPIKey koord = "Uw API KEY hier"; Schrijven van API-sleutel voor een ThingSpeak kanaal
Cliënt (server, 80);
lange lastConnectionTime = 0;
Boole lastConnected = false;
int resetCounter = 0;
Debug opties
//-----------------------
Boole debugMode = waar; Inschakelen om te debuggen lezingen aan seriële console
VOID Setup {}
Ethernet.begin (mac, IP-gateway, subnet); Opstarten van de Ethernet-shield
delay(1000);
Update Twitter via ThingTweet
if(!client.Connected())
{
updateTwitterStatus ("AlarmingTweet opgestart!");
}
Als (debugMode == true) {}
Serial.begin (9600); Open de seriële poort voor debug output
tweetInterval = 60000; Overide de tweet interval voor het testen
}
}
void loop {}
Als (sendTweet == true) {}
Als (millis() > = (LastTweet + tweetInterval)) {//Check om te zien als voldoende tijd verstreken om opnieuw te verzenden
tweetText = "AlarmingTweet ALERT:";
Als (pinAlerts [0] == true) {}
tweetText += "Zone 1 /";}
Als (pinAlerts [1] == true) {}
tweetText += "Zone 2 /";}
Als (pinAlerts [2] == true) {}
tweetText += "Zone 3 /";}
Als (pinAlerts [3] == true) {}
tweetText += "Zone 4 /";}
Als (pinAlerts [4] == true) {}
tweetText += "ARM staat /";}
Als (pinAlerts [5] == true) {}
tweetText += "ALARM staat /";}
Update Twitter via ThingTweet
if(!client.Connected())
{
updateTwitterStatus(tweetText);
Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.Print ("Tweeting:");
Serial.println(tweetText);
Serial.println();
}
}
ThingSpeak verbreken
Als (! client.connected() & & lastConnected)
{
Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.println();
Serial.println("...disconnected.");
Serial.println();
}
client.stop();
}
lastConnected = client.connected();
LastTweet = millis(); Opnieuw instellen van de tijd van de laatste tweet
voor (ik = 0; ik < 6; i ++) {//Clear de waarschuwing vlaggen
pinAlerts [i] = false;
}
}
}
sendTweet = false; Reset Tweet vlag voor het controleren van de LEDs
prevPwr = checkLED (pinPwr, prevPwr); LED status controleren
prevArm = checkLED (pinArm, prevArm); LED status controleren
prevZn1 = checkLED (pinZn1, prevZn1); LED status controleren
prevZn2 = checkLED (pinZn2, prevZn2); LED status controleren
prevZn3 = checkLED (pinZn3, prevZn3); LED status controleren
prevZn4 = checkLED (pinZn4, prevZn4); LED status controleren
Update reactie op seriële Monitor afdrukken
Als (client.available())
{
char c = client.read();
Serial.Print(c);
}
delay(500); Algemene vertraging tussen lussen
}
Booleaanse checkLED (int ledPin, boolean prevVal) {}
Boole curVal = false; Huidige stand van LED (= true, OFF = false)
int ledReading = 1023; variabele op te slaan bij het lezen van LED (standaard ingesteld op 5v/1023)
ledReading = analogRead(ledPin); luiden naar de waarde van de LED
delay(10); vertraging 10ms om te laten herstellen van de ADC
Als (ledReading < 100) {//Check de LED te zien als het brandt (lezen < 0.5v)
curVal = true;
}
Als (prevVal! = curVal) {//Check om te zien als de waarde van de vorige lezing gewijzigd
sendTweet = true; Stel de vlag voor het verzenden van een tweet
pinAlerts [ledPin] = true; Een waarschuwing voor deze pin markeren
}
Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.Print ("Pin");
Serial.Print(ledPin);
Serial.Print(":");
Serial.Print(ledReading);
Serial.Print (",");
Als (prevVal == true)
Serial.Print("on");
anders
Serial.Print("off");
Serial.Print("/");
Als (curVal == true)
Serial.Print("on");
anders
Serial.Print("off");
Serial.Print (",");
Als (sendTweet == true)
Serial.Print("Tweet");
anders
Serial.Print("---");
Serial.println();
Serial.Print ("waarschuwingen:");
voor (ik = 0; ik < 6; i ++) {}
Als (pinAlerts [i] == true)
Serial.Print("Y");
anders
Serial.Print("N");
Serial.Print (",");
}
Serial.println();
Un-comment hieronder om te controleren van elk individueel geleid
sendTweet = false; Reset Tweet vlag afzonderlijk voor het testen
}
Return curVal; Terugkeer de huidige lezing
}
VOID updateTwitterStatus(String tsData)
{
Als (client.connect() & & tsData.length() > 0)
{
HTTP POST-gegevens maken
tsData = "api_key ="+ thingtweetAPIKey +"& status =" + tsData;
Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.println ("Connected to ThingTweet...");
Serial.println();
}
client.Print ("POST /apps/thingtweet/1/statuses/update HTTP/1.1\n");
client.Print ("Host: api.thingspeak.com\n");
client.Print ("verbinding: close\n");
client.Print ("Content-Type: application/x-1-800-www-Dell-vorm-urlencoded \n");
client.Print ("Content-Length:");
client.Print(tsData.length());
client.Print("\n\n");
client.Print(tsData);
}
anders
{
Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.println ("verbinding mislukt.");
Serial.println();
}
}
}
### Einde schets ###