Internet des objets (5 / 6 étapes)

Étape 5: Programme du Conseil

Il y a des choses importantes de seveal à modifier dans le code ci-dessous. Le premier est l’adresse IP. Chaque carte doit avoir une adresse IP unique sinon que le routeur obtiendra très confus. J’ai commencé à IPAddress ip(192,168,1,178) ; et puis en a ajouté une au dernier numéro. Certains routeurs ont un nombre différent par exemple 192.168.2.x et une vérification rapide sur un PC qui exécute IPCONFIG dans un shell DOS donnera les 3 premiers bons numéros.

L’autre nombre pour changer est la plage d’adresses MAC. La gamme byte mac [] = {}

0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE} ; est un numéro par défaut – peut-être changer un à un nombre hexadécimal de différent sur chaque carte, par exemple le dernier d'entre eux, comte en arrière dans hex 0xED, 0xEC.

La dernière chose à changer est de savoir si le jury est un uploader ou downloader. Ce code fait les deux et à mi-chemin vers le bas est la suivante

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

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

soit envoyer en commentaire ou obtenir des données

getData() ;

qui est configuré pour envoyer des données. Pour aller chercher de nouveau ces données, commentez senddata et décommenter getdata.

Il y a des restes de code en commentaire pour des choses comme le dumping sur la chaîne de texte entière de Xively qui est utile pour le débogage pour trouver comment couper vers le haut de la chaîne et extraire les lectures de différents capteurs.

Xively peut faire d’autres choses comme Envoyer un SMS ou autre message lorsque certaines conditions sont remplies.

Amusez-vous!

http://Arduino.cc/en/Tutorial/PachubeClient Ce code se trouve dans le domaine public. * / #include < SPI.h > #include < Ethernet.h > #include < LiquidCrystal.h > #define APIKEY « shsCNFtxuGELLZx8ehqglXAgDo9lkyBam5Zj22p3g3urH2FM » / / remplacer votre clé api pachube ici #define ID_FLUX 970253233 / / remplacer votre flux ID #define USERAGENT « Arduino1 » / / agent d’utilisateur est le nom du projet / / assigner une adresse MAC pour l’ethernet controller.// Ethernet nouveaux boucliers ont une adresse MAC, imprimée sur un autocollant sur le bouclier / / Inscrivez votre adresse ici : mac Byte = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE}; / / remplir une adresse IP disponible sur votre réseau ici, / / pour la configuration manuelle : IPAddress ip(192,168,1,178); / / Initialise le client d’instance : EthernetClient bibliothèque; / / initialiser la bibliothèque de lcd avec le nombre de l’interface pinsLiquidCrystal lcd(8,9,4,5,6,7); / / si vous ne voulez pas utiliser DNS (et réduire la taille du croquis) / / utiliser l’adresse IP numérique au lieu du nom de la server(216,52,233,122) server://IPAddress; / / numérique IP pour api.pachube.comchar serveur [] = "api.xively.com"; / / nom adresse pour xively APIunsigned long lastConnectionTime = 0 ; la dernière fois vous connecté au serveur, dans millisecondsboolean lastConnected = false ; État de la connexion, la dernière fois par le biais de la loopconst principale unsigned long postingInterval = 10 * 1000 ; délai entre les mises à jour de Pachube.comint compteur ; Chaîne stringOne, stringTwo ; construit la chaîne lorsque les données proviennent de backboolean stringData = false ; remis à zéro quand un nouveau bloc de données vient backvoid setup() {/ / delay(1000); / / si le port série provoque une latchup / / ouvrir la communication série et attendez de port à ouvrir : Serial.begin(9600) ; while (! Série) {; / / attente pour port série pour se connecter. Besoin pour Leonardo seulement} Serial.println("api.xively.com") ; Si aller plus de? 32 s puis entier calc ne fonctionne pas lcd.begin (16, 2) ; CLS() ; effacer l’écran delay(1000) ; lcd.setCursor(0,1) ; x, y de coin supérieur gauche est 0,0 de lcd.print("api.xively.com") ; lcd.setCursor(0,0) ; LCD.Print ("Start Ethernet") ; Serial.println ("Start Ethernet") ; Delay(1000) ; Lancez la connexion Ethernet : si (Ethernet.begin(mac) == 0) {//Serial.println ("Impossible de configurer Ethernet à l’aide de DHCP"); / / DHCP a échoué, donc utiliser une adresse IP fixe: / / lcd.setCursor(0,1) ; //lcd.print ("Impossible de configurer ») ; Ethernet.Begin (mac, ip) ; } Serial.println("Wait 10s") ; lcd.setCursor(0,1) ; LCD.Print ("attendre 10 s");} void loop() {/ / lire le capteur analogique : int Analog0 = analogRead(A0); / / avec un affichage à cristaux liquides analog0 est tous le boutons int Analog1 = analogRead(A1) ; int Analog2 = analogRead(A2) ; int Analog3 = analogRead(A3) ; int Analog4 = analogRead(A4); / / int sensorReading = analogRead(A2); / / si il y a des données entrantes de la connexion net. / / envoyer sur le port série. Il s’agit pour le débogage / / uniquement à des fins : si (client.available()) {char c = client.read() ; Serial.Print(c) ; Si (stringData == false) {stringData = true; / / quelques données sont venu} si (stringData == true) {stringOne += c; / / construire la chaîne} si ((c>32) et (c < 127)) {lcd.print(c) ; counter += 1;} si (compteur == 16) {lcd.setCursor(0,1); / / lcd.print("") ; lcd.setCursor(0,1) ; compteur = 0 ; Delay(100) ; }} / / Si il n’y a aucune connexion au réseau, mais il y avait une dernière fois / / dans la boucle, puis arrêtez le client : si ()
! client.connected() & & lastConnected) {/ / Serial.println(); / / Serial.println("Disconnect") ; client.stop() ; lcd.setCursor(0,0) ; lcd.print ("Disconnect") ; lcd.setCursor(0,1) ; compteur = 0 ; Si (stringData == true) {PrintResults(); / / extraire les valeurs et les imprimer stringData = false; / / réinitialiser l’indicateur stringOne = "" ; effacer la chaîne}} / / si vous n’êtes pas connecté, et dix secondes se sont écoulées depuis / / votre dernière connexion, puis reconnectez-vous et envoyer des données : if(!client.connected() & & (millis() - lastConnectionTime > postingInterval)) {/ / sendData(Analog0,Analog1,Analog2,Analog3,Analog4); / / soit envoyer en commentaire ou obtenir des données getData();} / / stocker l’état de la connexion pour la prochaine fois par / / la boucle : lastConnected = client.connected();} void PrintResults() / / imprimer les résultats de l’EEG de xively {int n = 292; / / commencent au capteur données int i; char lf = 10 ; int v ; CLS() ; lcd.setCursor(0,0) ; stringOne += lf ; Ajouter un caractère de fin de ligne pour (j’ai = 0; j’ai < 5; i ++) {tandis que (stringOne.charAt(n)! = 44) / / trouver la première virgule {n += 1;} n += 1; tout en (stringOne.charAt(n)! = 44) / / trouver la deuxième virgule {n += 1;} n += 1; stringTwo = "" ; tandis que (stringOne.charAt(n) ! = 10) / / trouver l’extrémité de la ligne qui est une ligne de flux ascii 10 {/ / lcd.print(stringOne.charAt(n)) ; stringTwo += stringOne.charAt(n); n += 1;} v=stringTwo.toInt() ; LCD.Print(v) ; LCD.Print("") ; Si l’espace à la fin (j’ai == 1) {lcd.setCursor(0,1);}} } void Cls() / / Effacer écran LCD {lcd.setCursor(0,0) ; lcd.print("") ; Clear lcd écran lcd.setCursor(0,1) ; LCD.Print("");} void PrintValues (int n0, n1 de l’int, int n2, n3 int, 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);} Cette méthode permet une connexion HTTP pour la serveur : void sendData (data0 int, int data1, data2 int, int data3, int data4) {PrintValues(data0,data1,data2,data3,data4); / / Serial.println("Connecting...") ; lcd.setCursor(0,0) ; LCD.Print ("connexion... "); lcd.setCursor(0,1) ; LCD.Print ("aucune réponse"). s’il y a une réponse ceci obtiendra très rapidement écrasé lcd.setCursor(0,1) ; compteur = 0 ; s’il y a une connexion réussie : si (client.connect (serveur, 80)) {client.print ("PUT /v2/RSS /"); client.print(FEEDID) ; client.println (".csv HTTP/1.1"); client.println ("Host : api.pachube.com"); client.print ("X-PachubeApiKey:") ; client.println(apikey) ; client.Print ("User-Agent:") ; client.println(UserAgent) ; client.Print ("Content-Length:") ; calculer la longueur de la sonde de lecture en octets: / / 8 octets pour "Capteur1", + nombre de chiffres des données : //int thisLength = 8 + getLength(thisData) ; client.println(thisLength) ; 8 est longueur de Capteur1 et 2 autres pour crlf int stringLength = 8 + getLength(data0) + 10 + getLength(data1) + 10 + getLength(data2) + 10 + getLength(data3) + 10 + getLength(data4) ; client.println(stringLength) ; derniers morceaux de la requête HTTP PUT : client.println ("Content-Type : text/csv") ; client.println ("Connection : close") ; client.println() ; Voici le contenu de la requête PUT : 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 ("Wait for réponse") ; xively répond par un texte, si rien, il y a une erreur lcd.setCursor(0,1) ; LCD.Print ("Wait for réponse");} else {/ / si vous ne pouvait pas établir une connexion : //Serial.println ("connexion impossible"); / / Serial.println() ; //Serial.println ("donc déconnecter."); client.stop(); / / lcd.setCursor(0,1) ; //lcd.print (« échec de connexion");} / / note le temps que la connexion a été effectuée ou tentée : lastConnectionTime = millis();} Cette méthode permet une connexion HTTP pour le serveur : void GetData {/ / si il y a une connexion réussie : si (client.connect (serveur, 80)) {//Serial.println ("connexion aux données de la demande...") ; lcd.setCursor(0,0) ; LCD.Print ("se connecter") ; client.Print ("GET /v2/RSS /") ; client.Print(FEEDID) ; client.println (".csv HTTP/1.1") ; client.println ("Host : 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 ("Connection : close") ; client.println() ; Serial.println (« Finished requérant, attente réponse. ») ; lcd.setCursor(0,1) ; LCD.Print ("requête de finition") ; } else {/ / si vous ne pouvait pas établir une connexion : //Serial.println ("connexion impossible"); / / Serial.println() ; //Serial.println ("donc déconnecter."); client.stop();} / / note le temps que la connexion a été effectuée ou tentée : lastConnectionTime = millis();} Cette méthode calcule le nombre de chiffres dans le / / lecture du capteur. Depuis chaque chiffre après la virgule de ASCII / / représentation est un octet, le nombre de chiffres égal à / / le nombre d’octets int getLength (int someValue) {/ / il n’y a au moins un octet : int chiffres = 1; / / diviser continuellement la valeur de dix, / / en ajoutant un pour le nombre de chiffres pour chacun / / time vous divisez, jusqu'à ce que vous êtes à 0: int dividende = someValue 10 ; while (dividende > 0) {dividende = dividende 10 ; chiffres ++;} / / return le nombre de chiffres : retourner les chiffres;}

Articles Liés

HackerBoxes 0006 : Internet des objets (IDO) projets mettant en vedette le Photon particule

HackerBoxes 0006 : Internet des objets (IDO) projets mettant en vedette le Photon particule

Piratage Internet des choses! Ce mois-ci, abonnés à HackerBoxes travaillent avec l'IoT Photon aggloméré, de contrôler les périphériques via Internet, capteur collecte données sur Internet, stocker des données dans le nuage et bien plus encore.Ce Inst
Du CC3200 Wi-Fi pour l’Internet des objets

Du CC3200 Wi-Fi pour l’Internet des objets

Bonnes nouvelles pour les gens de l'Internet des objets !Conseil de Texas Instruments CC3200-LAUNCHXL est maintenant supporté par Energia v.13+http://Energia.nu/pin-Maps/guide_cc3200launchpad/http://Energia.nu/cc3200guide/Energia est Arduino environn
Contrôle Home Appliances avec téléphone et Internet des objets moins de 6 $

Contrôle Home Appliances avec téléphone et Internet des objets moins de 6 $

J'ai toujours voulu allumer mon téléviseur tout en jetant sur mon canapé, ou après une journée fatigante quand j'ai fini de lire un livre, d'éteindre ma lumière.Je l'ai fait avant avec un Hc-05 et tv à distance.Mise à jour : Cette entrée est acceptée
Internet activé frigo : Une première incursion dans l’Internet des objets

Internet activé frigo : Une première incursion dans l’Internet des objets

Bonjour tout le monde !J'ai eu un problème avec le congélateur dans notre maison. De temps en temps, le congélateur ne parviendrait pas à fermer complètement, soit rebondir ouvert ou obtenir légèrement entrouverte. Ce petit intervalle était suffisamm
Internet des objets (IDO) rallonge

Internet des objets (IDO) rallonge

Salut Makers !IntroIl est grand temps que j'ai partagé ce un avec vous tous. Ce projet dure depuis si longtemps, vous ne croiriez pas. J'ai commencé ce avant notre espace Hack existé [ish 2011?] et a continué d'être pour toujours dans un état transit
Réutiliser un ancien routeur wifi pour l’internet des objets

Réutiliser un ancien routeur wifi pour l’internet des objets

La popularité des appareils connectés à internet construit avec Arduino shields ou ordinateurs monocarte comme le Raspberry Pi et Beaglebone a explosé, mais pour des tâches simples comme contrôlant un relais, la lecture d'un capteur, arroser votre ja
Lait dans le réfrigérateur - Internet des objets

Lait dans le réfrigérateur - Internet des objets

Je pense qu'un jour, toutes les armoires de cuisine & réfrigérateurs/congélateurs sera intelligents. Tous les produits auront une RFID ou la vidéo label reconnaissable qui met à jour une liste d'utilisation du produit. Votre supermarché local allons
Internet des objets : contrôle de douche

Internet des objets : contrôle de douche

Réduire la consommation d'eau chaude de 40 % et ont encore une bonne douche.Pendant de nombreuses années, je me demandais, comment j'ai pour réduire le temps de la douche de mes enfants. de nos jours, ils ont l'âge de 14, 16 et 18 ans. Ils aiment pre
Internet des objets avec framboise Pi-2

Internet des objets avec framboise Pi-2

Il s'agit d'une suite à mon précédent instructable Internet of Things, avec Raspberry Pi - 1.(Si vous n'êtes pas familiarisé avec les serveurs web, codage PHP et les concepts de base de l'ITO, vous devez probablement passer par partie 1 première.)Lor
Internet des objets avec framboise Pi - 1

Internet des objets avec framboise Pi - 1

Quand j'étais nouveau à Ito (Internet Of Things), j'ai vu qu'il n'y a pratiquement aucun tutoriels qui étaient assez simples pour un débutant de comprendre et d'essayer. Il y avait soit de beaucoup jargon technique ou le matériel était trop complex.M
APDuinOS (clignotant)--arduino Ito (internet des objets)--aquaponique application

APDuinOS (clignotant)--arduino Ito (internet des objets)--aquaponique application

si vous lisez ce Instructable vous soyez ici pour deux raisons.PREMIÈRE RAISON :Est parce que tu ne sais rien de APDuinOS et intéressé par ce que c'est et comment il rapporte à l'ITO (Internet of Things).  Vous en apprendrez davantage sur APDuino en
Edison Intel basé réseau de capteurs mobiles pour l’Internet des objets

Edison Intel basé réseau de capteurs mobiles pour l’Internet des objets

Introduction et aperçu généralL'Edison Intel est un astucieux petit ordinateur qui combine de nombreux avantages des autres plateformes maker. Elle est cumulable avec les conseils de petits groupes de différentes tailles et fins.Dans cet article nous
Gestion intelligente du trafic avec l’Internet des objets

Gestion intelligente du trafic avec l’Internet des objets

Un smart device qui invite un chauffeur d'accélérer ou de ralentir afin de passer seulement les signaux verts. De cette façon, les économies de carburant de route peuvent être réalisés dans la ville, réduire la pollution jusqu'à 25 %Étape 1: Un bref
Connecter une Station météo sur Internet des choses

Connecter une Station météo sur Internet des choses

Bonjour et bienvenue pour les étapes à suivre pour faire votre part de la Station météo Davies de l'Internet des objets à l'aide de notre kit Intel ICRI.À l'aide de ce kit que vous allez pouvoir connecter votre Station météo de Davies à un Intel Gali