Vertical Hydroponic Farm (9 / 13 étapes)

Étape 9: Automation suite : Intel XDK IoT Edition

Nous avons utilisé Intel XDK IoT Edition. Il vous permet d’écrire votre code en JavaScript à l’aide de bibliothèques de Node.js.

Le logiciel peut être trouvé à Intel XDK IoT Edition, il y a beaucoup de documents concernant la façon de s’initier à l’IDE.

Code :

/ * jslint nœud : true, vars:true, au niveau du bit : true, unparam:true * //*jshint inutilisés : true * / / * global ** une demande de node.js simple destinée à clignoter la LED embarquée sur l’Intel basé cartes de développement tels que les Intel (r) Galileo et Edison avec carte de dérivation Arduino. MRAA - faible niveau squelette bibliothèque pour la Communication sur les plate-formes GNU/Linux bibliothèque en C/C++ pour s’interfacer avec Galileo & autres plates-formes Intel, dans une API sain et structuré avec port nanmes/numérotation correspondant à planches & avec des fixations à javascript & python. Etapes pour l’installation de MRAA & bibliothèque UPM sur la plate-forme Intel IoT avec IoTDevKit Linux * image Using un ssh client: 1. echo « src maa-upm http://iotdk.intel.com/repos/1.1/intelgalactic » > /etc/opkg/intel-iotdk.conf 2. opkg mise à jour 3
. opkg upgradeArticle : https://software.intel.com/en-us/html5/articles/intel-xdk-iot-edition-nodejs-templates * / var mraa = require('mraa') ; nécessitent mraa / / UDP Options var options = {hôte: « 127.0.0.1 », port : 41234}; console.log ("MRAA Version:" + mraa.getVersion()) ; écrire la version mraa à l’Intel XDK console var dgram = require('dgram') ; var client = dgram.createSocket('udp4') ; demande de var = exiger ("demander"); var lcdDisplayTimer = 0 ; lumières de var = new mraa. GPIO(3) ; LED accroché jusqu'à la broche numérique 13 (ou broche intégré sur Galileo Gen2) lights.dir (mraa. DIR_OUT) ; définir la direction gpio en sortie de var ledState = true ; Boolean pour conserver l’état du voyant var groveSensor = require('jsupm_grove') ; var LCD = require('jsupm_i2clcd') ; var myLcd = new LCD.Jhd1313m1 (0, 0x3E, 0x62) ; var rotarySensor = new mraa. AIO(1) ; var MonBouton = new mraa. GPIO(6) ; servoModule var = exiger ("jsupm_servo"); //var digitalLightSensor = require("jsupm_tsl2561") ; lightSensor var = new digitalLightSensor.TSL2561 (); var lightSensor = require('jsupm_grove') ; lumière de var = new groveSensor.GroveLight(0) ; Éclairement var = 0 ; var lightLowCnt = 0 ; var lightTimeRemaining = 960 ; minutes à 16 heures var lightDay = 1440 ; minutes à 24 heures jour var lightsState = 0; var waterSensor = require('jsupm_grovewater') ; Niveau de var = new waterSensor.GroveWater(2) ; var waterLeverTimer = 0 ; var waterLevelValue = 0; var tempSensor = new groveSensor.GroveTemp(3) ; var tempBase = 23 ; objectif température var tempTheshold = 25 ; essayez de refroidir var Alarm = 27 ; alarme sonore trop chaud var louverOpened = 160 ; var louverClosed = 0 ; var tempValue = 0; var circulationPump = new mraa. GPIO(4) ; circulationPump.dir (mraa. DIR_OUT) ; définir la direction gpio en sortie de var circulationPumpState = 0 ; var circulationPumpTimer = 0 ; var CIRCULATION_PUMP_TIME_ON = 1 ; temps de pompe sur var CIRCULATION_PUMP_TIME_OFF = 1 ; pomper le temps / / module d’instancier Servo servo var port numérique 5 = new servoModule.Servo(5) ; servo.setMinPulseWidth(600) ; servo.setMaxPulseWidth(2200) var ecSensor = new mraa. AIO(1) ; var EC_reading = 0 ; var ecDoser = new mraa. GPIO(6) ; ecDoser.dir (mraa. DIR_OUT) ; définir la direction gpio en sortie de var ecDoserState = 0 ; var ecDoserTimer = 0 ; var ecDoserActivate = false ; var ecSampleTimer = 0 ; var EC_DOSER_INTERVAL = 2 ; secondes pour exécuter doseur var EC_SAMPLE_INTERVAL = 1 ; minutes d’attente avant d’utiliser la lecture EC de déterminer de dose var EC_LIMIT = 1500 ; la dose lorsque inférieure à cette valeur moins la EC_Band jusqu'à ce qu’il atteigne ce niveau var EC_BAND = 200 ; var EC_MS = 0 ; FanCooling micro/Svar EC = nouveau mraa. GPIO(7) ; fanCooling.dir (mraa. DIR_OUT) ; définir la direction gpio en sortie de var fanCoolingState = 0; var alarme = nouveau mraa. GPIO(8) ; Alarm.dir (mraa. DIR_OUT) ; définir la direction gpio en sortie de var alarmState = 0; var logTimer = 1; var localWeather = « Nuageux » ; var url = « http://api.wunderground.com/api/df5bd75178df2c09/conditions/q/RI/Providence.json » ; var weatherTimer = 1 ; attendre 1 minute avant le premier appel var données = [{sensorName: "light", SensorType%: "light.v1.0"}, {sensorName: "température", / / air sensorType temp: "temperature.v1.0"}]; / * data.forEach(function(item) {registerNewSensor (item.sensorName, item.sensorType, function () {});}) ; * / periodicActivity() ; appelez le periodicActivity functionfunction periodicActivity() {si (checkTimer(weatherTimer)) {getWeather() ; weatherTimer = setMinutesTimer(240);} / / chaque 4 heures growLights() ; tempControl() ; checkECDoser() ; waterEC() ; si (checkTimer(waterLeverTimer)) {waterCirculation() ; waterLeverTimer = setSecondsTimer(1);} si (checkTimer(lcdDisplayTimer)) {lcdDisplay() ; lcdDisplayTimer = setSecondsTimer(1);} si (checkTimer(logTimer)) {sendToCloud() ; logTimer = setMinutesTimer(1);} setTimeout(periodicActivity,500) ; //call la fonction indiquée après 1 seconde (1000 millisecondes)} function lcdDisplay() {var lums = 0; myLcd.clear() ; myLcd.setCursor(0,0) ; myLcd.write('Cond : "+ localWeather) ; myLcd.setCursor(1,0) ; myLcd.write ('EC:' + EC_MS) ; myLcd.setCursor(1,8) ; Si (éclairement < 100) {lums = « L »;} ElseIf (éclairement < 130) {lums = suis ';} else {lums = « H »;} myLcd.write ('L:' + lums) ; myLcd.setCursor(1,12) ; myLcd.write (' t: "+ tempSensor.value()) ; } / / lcdDisplayfunction getWeather() {demande ({url : url, json : false}, fonction (erreur, réponse, corps) {si (! erreur & & response.statusCode === 200) {/ / console.log(response.body) ; var foo = response.body; / / console.log(foo.substr(foo.indexOf('"weather":"') + 11,10)) ; localWeather = foo.substr(foo.indexOf('"weather":"') + 11,10);}});} getWeatherfunction waterEC() {EC_reading = ecSensor.read(); / / lecture de la tension d’entrée analogique / / 0 à 1024 = 0 à 5v / / 204 micro/S / v EC_MS = (EC_reading * 4.88).toFixed(); / / 5000 micro/S / 1024 = 4.88 si (EC_MS < (EC_LIMIT - EC_BAND)) {/ / à l’extérieur de la fourchette acceptable si (checkTimer(ecSampleTimer)) {/ / temps de re-doser ecSampleTimer = 0; / / console.log ("--ecDoserState ' + ecDoserState); if (ecDoserState != 1) {/ / si le doseur pas de suite puis mettez-le à ecDoserActivate = true ; ecSampleTimer = setMinutesTimer(EC_SAMPLE_INTERVAL); / / réinitialiser le temps jusqu’au prochain échantillon - dose console.log ("dose pour EC');}} Console.log (« inférieur à » + (EC_LIMIT - EC_BAND)) ; } / / console.log (« ecSampleTimer » + ecSampleTimer) ; Console.log ("EC =" + EC_MS);} waterEC () fonction waterCirculation() {waterLevelValue = waterLevel.isWet() ; if (waterLevelValue == true) {si (checkTimer(circulationPumpTimer)) {si (circulationPumpState == 1) {circulationPumpState = 0; circulationPumpTimer = setMinutesTimer(CIRCULATION_PUMP_TIME_OFF);} else {circulationPumpState = 1; circulationPumpTimer = setMinutesTimer(CIRCULATION_PUMP_TIME_ON);} circulationPump.write(circulationPumpState);}} d’autre {console.log ("eau faible"); circulationPumpTimer = 0; circulationPumpState = 0; circulationPump.write(circulationPumpState);} / / console.log (' pompe = ' + circulationPumpState);} / / waterCirculationfunction checkECDoser() {si (ecDoserState == 0 & & ecDoserActivate == true) / / si pas déjà de suite et a besoin d’être sur {ecDoserTimer = setSecondsTimer(EC_DOSER_INTERVAL) ; ecDoserState = 1; ecDoser.write(ecDoserState) ; console.log ("Ce doseur est" + ecDoserState + "pour" + EC_DOSER_INTERVAL + "secondes") ; } Si (checkTimer(ecDoserTimer)) {/ / minuterie a explosé ecDoserActivate = false ; ecDoserState = 0; / / turn doseur hors ecDoser.write(ecDoserState); / / console.log ("EC Doser Timer a tiré");} / / console.log (« ecDoserTimer » + ecDoserTimer) ; } / / checkECDoserfunction tempControl() {/ / quand temp pour haut ; allumer ventilateurs, open persiennes / / si temp au-dessus de seuil, restez sur jusqu'à abaissé à base temp / / mettez le vibreur à alarme tempValue temp = tempSensor.value(); / / console.log (« temp est = » + tempValue); if (tempValue > tempTheshold) {fanCoolingState = 1; servo.setAngle(louverOpened); / / console.log ("temp chaud');} ElseIf (tempValue < = tempBase) {fanCoolingState = 0; servo.setAngle(louverClosed); / / console.log ("temp normale');} fanCooling.write(fanCoolingState) ; if (tempValue > = Alarm) {alarmState = alarmState? 0:1 ; alarm.write(alarmState);} d’autre {alarm.write(0) ; alarmState = 0;} / / console.log (« alarme est = » + alarmState);} / / tempControl () fonction growLights() / / appelé chaque minute {//lightLevel = lightSensor.getLux() ; éclairement = light.value() ; if (éclairement < 100 & & lightTimeRemaining > 0) {si (lightLowCnt < 2) {lightLowCnt ++;} d’autre {lightsState = 1; lightLowCnt = 0;}} else {lightsState = 0; lightLowCnt = 0;} lights.write(lightsState) ; lightTimeRemaining--; lightDay--; si (lightDay < 1) {lightDay = 1440 ; lightRemaining = 640;} / / nouveau jour 24 heures jour avec 16 heures de luminothérapie si console.log (lightLowCnt > 0) ('lightLow: ' + lightLowCnt); console.log('LightLevel : ' + éclairement) ; } / / fin growLightsfunction setSecondsTimer(waitTime) {var endTime ; var d = new Date() ; endTime = d.getTime() + (waitTime * 1000); / / reconvertir en millisecondes de secondes retour endTime;} / / setSecondsTimerfunction setMinutesTimer(waitTime) {var endTime = 0; var d = new Date() ; endTime = d.getTime() + (waitTime * 60000); / / la reconvertir en millisecondes de minutes retour endTime;} / / setMinutesTimerfunction checkTimer(timer) {var d = new Date(); / / console.log (« heure actuelle » + d.getTime() + ' minuterie =' + minuterie); if (d.getTime() > minuterie) {return true;} d’autre {retourner false;}} / / checkTimerfunction registerNewSensor (nom type, rappel) {var msg = JSON.stringify ({n: nom, type t:}); var sentMsg = new Buffer(msg) ; console.log ("capteur de l’inscription:" + sentMsg) ; client.Send (sentMsg, 0, sentMsg.length, options.port, options.host, callback) ; }; int sendObservation (nom, valeur, sur) {var msg = JSON.stringify ({n: nom, v: valeur, sur : sur}); var sentMsg = new Buffer(msg) ; console.log ("envoi d’observation:" + sentMsg) ; client.Send (sentMsg, 0, sentMsg.length, options.port, options.host) ; }; int sendToCloud() {//sendObservation (« lumière », éclairement, nouvelle Date().getTime()) ; //sendObservation (« température », tempValue, nouvelle Date().getTime()) ; //sendObservation (« multiprises », circulationPumpState, new Date().getTime()) ; //sendObservation (« ecSensor », EC_MS, nouveau Date().getTime()); / / sendObservation (« ecDoser », ecDoserState, new Date().getTime()) ; //sendObservation (« coolingFan », fanCoolingState, new Date().getTime()) ; //sendObservation (« niveau », waterLevelValue, nouveau Date().getTime()) ; //sendObservation (« éclairages », lightsState, nouvelle Date().getTime()) ; //sendObservation ("persiennes", fanCoolingState, nouvelle Date().getTime());} //sendToCloud

Articles Liés

Jardin vertical hydroponique fenêtre

Jardin vertical hydroponique fenêtre

J'habite dans un appartement mais voulait une façon de cultiver des plantes pour la cuisson et les herbes. J'ai eu une petite boîte de fenêtre dans lequel j'ai grandit une poignée d'herbes mais voulait plus et pour qu'il soit un peu plus facile de pr
De croissance-pot de cuisson-pot

De croissance-pot de cuisson-pot

Quoi de plus mieux que soi cultivé des cultures biologiques qui peuvent amener à table ?Pour être en mesure d'obtenir des cultures biologiques, avec 100 % sûr sans pesticides ou tout autre agent chimique ajouté, la meilleure façon est de cultiver not
Économisez $500 ! Faites votre propre système de culture hydroponique/aquaponique vertical !

Économisez $500 ! Faites votre propre système de culture hydroponique/aquaponique vertical !

à la recherche en ligne j'ai été intriguée par les tours de croissance verticale qui vendent des gens.  Ils vous permettent de facilement cultiver vos propres produits sains, bio et prendre très, très peu d'espace.  Malheureusement, ils coûtent plus
Solar Powered Vertical goutte à goutte hydroponique avec détails ferronnerie Français * mise à jour! *

Solar Powered Vertical goutte à goutte hydroponique avec détails ferronnerie Français * mise à jour! *

je voulais vraiment une façon de cultiver une quantité importante du produit sans n'importe quel courant nécessitant une fiche de le faire et pour rendre lui le sembler bon - plus comme les meubles que vous voudriez à l'intérieur de la maison. Donc,
Agriculture de fenêtre bricolage aquaponique Vertical

Agriculture de fenêtre bricolage aquaponique Vertical

Il s'agit pour l'inscription au concours de Instructables :Avez-vous une combinaison de projet-Hydroponique système ;-Système aqua-Culture ;-Air-Lift Technology ;Avantages-Recycler réutiliser + réduction des déchets (bouteilles de boissons gazeuses)
BRICOLAGE aquaponique Vertical système avec pompe à air comprimé de culture

BRICOLAGE aquaponique Vertical système avec pompe à air comprimé de culture

Avez-vous une combinaison de projet-Hydroponique système ;-Système aqua-Culture ;-Air-Lift Technology ;Avantages-Recycler réutiliser + réduction des déchets (bouteilles de boissons gazeuses) en lits utile de se développer,-Vertical Farming arrangemen
Culture hydroponique - à la maison et pour les débutants

Culture hydroponique - à la maison et pour les débutants

je pousse ce projet dès le début. Je veux effacer mes projets inédits donc c'est maintenant public. J'espère que cela forcera moi se termine très bientôt (tout ce que je dois faire maintenant est acheter plantes)Si vous avez entendu parler de ce mot,
Hydroponic ideas

Hydroponic ideas

Bonjour à tousJe n'ai pas publié depuis un moment que j'ai été la conception de nouveaux systèmes hyroponic.Cette instructable n'est pas comment construire les systèmes mais de montrer ce qui peut être fait avec un peu de perspicacité et beaucoup de
IKEA Hack hydroponique système

IKEA Hack hydroponique système

un simple pour construire des reflux et débit système hydroponique fait (surtout) de contenants IKEA.Flux et reflux des systèmes hydroponiques sont un excellent moyen de se lancer dans la culture hydroponique et de faire un merveilleux projet éducati
Jardin de laitue hydroponique à partir de bouteilles en plastique (bouteilles de Grow)

Jardin de laitue hydroponique à partir de bouteilles en plastique (bouteilles de Grow)

je n'ai pas de terre pour cultiver un jardin, mais je n'ai pas windows qui reçoivent beaucoup de lumière du soleil.  Je voulais un moyen compact, peu d'entretien rapidement croissante de laitue et autres plantes croissants petits, rapides.Mes objecti
Le jardin Vertical de 72 plante

Le jardin Vertical de 72 plante

cette instructable couvrira les détails du jardin Vertical construit pour mon « hydroponique automatisé, Networking, climat contrôlé projet de serre ». Le jardin vertical est un moyen de faire pousser jusqu'à 72 petites plantes (telles que la laitue,
Mon système de culture hydroponique DWC intérieur

Mon système de culture hydroponique DWC intérieur

cette instructable portera sur la construction et l'exploitation d'un système de culture hydroponique culture eau profonde. Jusqu'ici, j'ai sucessfully cultivé poivrons banane dans cette configuration avec facilité complète étant donné que la majeure
BRICOLAGE aéroponique + aquaponique + Air-Lift pompe Vertical système agricole

BRICOLAGE aéroponique + aquaponique + Air-Lift pompe Vertical système agricole

AéroponiqueÀ l'aide d'un tuyau de PVC de diamètre 40mm, créer 2 tableaux de trous de 32mm pour accueillir net-pots aux légumes, herbes, comestibles, etc.using seule laine d'aquarium comme milieu de culture de plus en plus. Le système racinaire est la
Le collier de plante (Germination) étonnante pour aquaponique et culture hydroponique

Le collier de plante (Germination) étonnante pour aquaponique et culture hydroponique

Il s'agit d'un projet très court et facile.Tout en obtenant le système du radeau GL de verrouillage aquaponique (NIEGE) du projet du sol nous trompe d'expérimenter avec les colliers de la plante.Ils sont faits de mousse à cellule fermée avec une croi