1. boîtier de projet pour l’Arduino + Ethernet shield d’amazon.
2. Arduino, dans mon cas le vieux Diecimila. Vous savez tous et appréciez l’arduino, disponibles en ligne sur 23$
3. Arduino Ethernet shield ~ 40$
4. choix de GE Alert wireless control center
5. capteur de porte de garage sans fil GE choix-alerte
6. borne à vis
Étape 0: Synchronisation du moniteur de porte de garage à la station de base. Débranchez tout ensuite.
Étape 1 :
La première chose à faire est de dévisser les deux vis à l’arrière et celui sous le couvercle de la batterie. Puis vous pouvez soulever l’arrière (soyez prudent que d’obtenir les contacts de la batterie est reallyyyy sorta une douleur.
Étape 2 :
Retourner et trouver la LED pour la zone 1 (marqué 1!). Ensuite, revenez en arrière à la face du PCB et trouver les contacts. J’ai soudé un fil pour où j’ai trouvé le motif était (vert) et un autre fil rouge pour le-. J’ai trouvé qui était qui, par essais et erreurs en utilisant mon arduino.
NOTE : Brasage il est fils sont dures, je ne sais pas si c’était mon fer à souder merdique ou quoi, mais il était difficile de chauffer le métal déjà sur le circuit imprimé et obtenir mon fils soudés à elle sur une voie solide. Si vous êtes entreprenant assez vous pouvez souder les deux fils sur chacun des alarmes zone et avoir ce tweet vous quand dire quelqu'un est détecté par leur détecteur de mouvement sans fil, ou le capteur de porte s’éteigne etc....
Étape 3. J’ai utilisé un dremel à bord une partie du plastique sur le couvercle des piles donc les fils pourraient sortir de CCP dans le domaine de la batterie. C’est où j’ai également joint un (superficielle peut-être) Conseil pour connecter les fils plus à qui a mené aux borniers à vis attaché à l’arduino. L’idée du Conseil était s’assurer il était mou dans le système afin que les fils ne s’arrachés de la soudure délicat sur les broches de la LED sur le circuit imprimé de la station de base alarme.
Étape 4: Percer le couvercle de la batterie. Il s’agit d’une perceuse simple j’ai utilisé et fait les trous tellement les fils pourraient éclater hors de lui...
Étape 5: Marc où la borne à vis devrait aller dans la zone de projet et percer les trous, puis de l’autre côté la soudure dans la borne à vis avec les fils qui sera goto le contrôleur ethernet/arduino.
Étape 6: Enfin, mettre dans le bouclier de contrôleur ethernet et arduino dans la zone de projet et reliez les fils à la terre respectivement et analogique 0. Puis fermez la boîte vers le haut.
Étape 7: visser les deux fils de la station de base alerte de choix à l’arduino et vous êtes fait !
Donc j’ai le code pour l’arduino. Elle définit essentiellement les contrôleurs Ethernet, il utilise la bibliothèque de twitter (celui qui passe à travers un service proxy) et il envoie ses tweets de cette façon. Une chose que je devais a été créée l’Ethernet à une bonne adresse interne... qui a été la seule vrai hoquet. Le code est sorta laid, mais l’idée est il écoute sur le port analogique et si elle dépasse un seuil, il définit un état d’être en mode alarme, et si un certain temps de la FTO de montant ne se passe il envoie un twitter avec une valeur aléatoire en annexe (twitter Cause n’aime pas les tweets avec le même texte donc cela change il vers le haut. Je voudrais des utilisé une bibliothèque de minuterie et faire un horodatage mais cela a été faite comme un cadeau de Noël pour une personne donc je n’avais pas le temps de mettre en œuvre que). Ainsi, chaque minute ou pour qu’il envoie un tweet et vérifie toujours si la porte est faite donc il s’arrête. Il envoie son premier tweet après la première minute trop.
#if defined(ARDUINO) & & ARDUINO > 18 / / Arduino 0019 ou version ultérieure
#include
#endif
#include
#include nécessaire seulement en 0022 Arduino ou plus tôt
#include
la mac de Byte [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED} ;
la propriété intellectuelle de Byte [] = {192, 168, 0, 23} ;
Twitter twitter ("lire sur la façon de définir cette") ;
Char [] msg = "Garage porte ouvert" ;
char msgStartup [] = "moniteur de porte de Garage est en ligne!" ;
Boolean omis = false ;
blinkTime booléen = false ;
Enhaut booléen = false ;
int alertcounter = 0 ;
int resetcounter = 0 ;
int diodePin = 0 ;
int val ;
int randomValue ;
void setup()
{
Delay(1000) ;
Ethernet.Begin (mac, ip) ;
Serial.Begin(9600) ;
pinMode (13, sortie) ;
Serial.println ("connexion...") ;
sendStartupTweet() ;
}
Sub sendStartupTweet()
{
Si (twitter.post(msgStartup)) {}
État int = twitter.wait() ;
Si (statut == 200) {}
Serial.println("OK.") ;
} else {}
Serial.Print ("a échoué : code") ;
Serial.println(Status) ;
n’a pas pu = true ;
}
} else {}
Serial.println ("connexion a échoué. « « « Démarrage ») ;
n’a pas pu = true ;
}
}
Sub sendTweet(int ts)
{
convertir ts en chaîne et ajouter au MSG
Char [] msg2 = msg + ts ;
String theMsg = msg ;
theMsg.concat ("temps:" + ts) ;
char msg2[theMsg.length()] ;
theMsg.toCharArray (msg2, theMsg.length()) ;
char S [50] ; Définir le message twitter comme « S »
randomValue = random(HEX) ; Produire une valeur aléatoire
/**********
* SprintF « assemble » un string(msg) et un variable(randomVariable) en
* une autre chaîne, « S ».
**********/
sprintf (S, « la porte de Garage est ouverte (%i) tweets », randomValue) ; //
Serial.println (S) ;
Si (twitter.post(S)) {}
État int = twitter.wait() ;
Si (statut == 200) {}
Serial.println("OK.") ;
} else {}
Serial.Print ("a échoué : code") ;
Serial.println(Status) ;
n’a pas pu = true ;
}
} else {}
Serial.println ("connexion a échoué.") ;
n’a pas pu = true ;
}
}
int millisRollover() {}
obtenir la valeur actuelle de la millis() pour combien de temps le microcontrôleur a fonctionné
//
Pour éviter toute possibilité de manquer le retournement, nous utilisons un cabillot booléen qui obtient renversé
n’importe quel moment au cours de la première moitié de la période totale millis au large et
puis au cours de la seconde moitié de la période totale millis.
Cela fonctionnera même si la fonction ont été exécutés seulement une fois toutes les 4,5 heures, bien qu’en général,
la fonction doit être appelée aussi souvent que possible capturer le moment réel de retournement.
Le compteur de retournement est bon pour plus de 35 ans du runtime. --Rob Faludi http://rob.faludi.com
//
public static int numRollovers = 0 ; variable qui maintient en permanence le nombre de transferts depuis le démarrage
public static boolean readyToRoll = false ; titres que nous avons fait à mi-chemin au renversement
unsigned long maintenant = millis() ; le temps en ce moment
unsigned long halfwayMillis = 17179868 ; C’est à mi-chemin de la valeur max millis (17179868)
Si (maintenant > halfwayMillis) {/ / tant que la valeur est supérieure à mi-chemin au max
readyToRoll = true ; vous êtes prêt à rouler
}
Si (readyToRoll == true & & maintenant < halfwayMillis) {}
Si nous avons déjà fait à mi-chemin
et la valeur actuelle de millis() est maintenant _moins_ que la marque à mi-chemin
puis nous avons basculé
numRollovers = numRollovers ++ ; Add-on au comte le nombre de boutons animés
readyToRoll = false ; Nous ne sommes plus passé à mi-chemin
}
Return numRollovers ;
}
void loop()
{
les roulements int = millisRollover() ; obtenir le nombre de transferts jusqu'à présent
Serial.println(rollovers,DEC) ; //
checkDoor(rollovers) ;
Delay(100) ;
}
Sub checkDoor(int ts)
{
Val = analogRead(diodePin) ;
if(Val>300)
{
Enhaut = true ;
alertcounter = 0 ;
ResetCounter = 0 ;
}
if(doorOpen==true)
{
alertcounter += 1 ;
Serial.println(alertcounter) ;
if(alertcounter>600)
{
alertcounter = 0 ;
Serial.println ("envoi porte TWEET") ;
sendTweet(ts) ;
}
ResetCounter += 1 ;
if(ResetCounter>100)
{
ResetCounter = 0 ;
if(Val<250)
{
Enhaut = false ;
Serial.println ("porte fermée") ;
}
}
}
}