Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Casa verde DasFilisera

Componentes y suministros

Sensor de temperatura DHT22
× 1
DS18B20
× 1
Sensor de temperatura y humedad del suelo FS200-SHT25
× 1
Módulo de relé de 4 canales
× 1
Módulo de relé de 2 canales
× 1
Sensor ultrasónico - HC-SR04 (genérico)
× 1
Arduino MKR1000
× 1

Aplicaciones y servicios en línea

DasData
Microsoft Visual Studio 2015

Acerca de este proyecto

Cultive plantas y hortalizas más conscientes de las condiciones ambientales. Simplemente usando un MKR1000

Requisitos para el crecimiento de las plantas

El crecimiento de las plantas depende de varias condiciones ambientales ideales, como la temperatura, la humedad, la luz y otros nutrientes minerales u oxígeno.

Proporcionar a las plantas una cantidad adecuada de agua o mantener la temperatura normal en el invernadero puede ser un proceso complicado, pero no si se puede hacer mucho más fácilmente.

Descripción general del hardware

Temperatura / Humedad

TH1 - Los valores de temperatura exterior se proporcionarán desde un sensor DS18B20 a prueba de agua - conexión de clavija D1

TH2 - Temp. Interior / hum. se puede encontrar en DHT22 - pin D0

TH3 - FS200 / SHT25:se introducirá en las condiciones del suelo. Las conexiones estarán en para los pines SCL y SDA 12/11

Palanca de agua

W1 - Para obtener el nivel del agua se utilizará un sensor de ultrasonido como HC - Conexiones SR04 en A0 - Echo y Trigger en A1. Con base en este valor, puede controlar una válvula usando R1 - relé de 4 canales.

Temperatura del aire / Oxígeno

A1 - En base a los valores de temperatura / humedad, puede ordenar cuándo abrir ventanas usando el relé R2. Según el clima, debe ajustarlo como desee.

Relés R1 / R2

Para configurar algunos comandos como abrir Windows o iniciar cualquier bomba, puede enviar comandos a los relés ... R1 está conectado a los pines digitales 7,8,9,10 y R2 5,6

MKR1000 - aRest

Ahora que conectamos todas las cosas, es hora de obtener algunos datos y hacer sentido usando una bibliotecaRest, que proporcionará una interfaz web para el dispositivo MKR1000 con una cadena de formato json. Utilice las bibliotecas, los archivos .ino que se proporcionan a continuación y cambie la conexión de su enrutador Wifi en consecuencia.

Datos e interfaz

Siempre que tengamos una interfaz en nuestro dispositivo también podríamos consumir estos datos y verlos en la red local.

Hemos estado usando Visual Studio 2015 y .net para crear una aplicación de Windows que lo ayudará a visualizar las condiciones de vida del invernadero, pero también un poco del historial diario o todo tipo de registros que desee integrar.

Para almacenar en la nube, simplemente usamos configuraciones de invernadero de DasData o puede crear sus propios canales de datos.

El siguiente paso será modificar la DsKey y AKey provistas en Settings.txt desde la carpeta de la aplicación. Si todo funciona, ya debería ver algunos datos en línea.

Siga el canal de piratas informáticos de DasData para obtener más actualizaciones futuras

Automatización de invernaderos

Debe decidir qué válvulas o motores generarán más acción en función de la configuración y los tamaños de su invernadero. Todo esto podría controlarse desde relés.

Código

  • Filisera_Arduino
  • libraries.zip
  • Filisera - vb.zip
  • Filisera - VS
Filisera_Arduino C / C ++
DASFilisera usando aREST Library para la placa Arduino / Genuino MKR1000.
 / * DASFilisera usando aREST Library para la placa Arduino / Genuino MKR1000. aREST - Escrito en 2016 por Marco Schwartz bajo una licencia GPL. * /// Importar bibliotecas requeridas # incluir  #include  #include  #include "DHT.h" #include  #include  #include  #include  // ********************** *** // ** Senzori Temperatura ** // ************************* # define DHTPIN 0 // Humedad / temperatura / calor interior index # define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 # define ONE_WIRE_BUS 1OneWire oneWire (ONE_WIRE_BUS); DallasTemperature sensores (&oneWire); float umidSol =0; // Flotador de humedad del suelo umidAer =0; // Temperatura de flotación de humedad del aire =0; // Temperatura de flotación tempOut =0; // Temperatura de flotación superior a tempSol =0; // Contenedor volumefloat umidexIn =0; // Se siente como temp // VOLUM #define echoPin A0 // Echo pin A0 # define trigPin A1 // Disparador pin A1 de larga duración; // duración para calcular la distancia en HR_dist =0; // Distancia calculada en el rango mínimo =5; // Min Sonar rangeint maximumRange =200; // Max Sonar rangeunsigned long pulseduration =0; int nivelCm, nivelRamasCm; int nivelProc, nivelVol; int empty =100; int full =100; int sqrLevel, sqrInvertLevel; // Statusint status =WL_IDLE_STATUS; // Crear una instancia de RESTO aREST rest =aREST (); // Parámetros de WiFichar ssid [] ="WIFI_AP"; char contraseña [] ="WIFI_PASSW"; // El puerto para escuchar las conexiones TCP entrantes # define LISTEN_PORT 80 // Crea una instancia del servidorWiFiServer server (LISTEN_PORT); // INITIALIZARE SENZORI DHT dht (DHTPIN, DHTTYPE); // RELEE RELEEEint aVentil, aLateral; int inReleu1Ventil =6; int inReleuVentilleu3 =7; int inReleuVentilleu3; int inReleu4Ventil =9; int inReleu1Lateral =10; int inReleu2Lateral =11; // Declarar funciones para ser expuestas a APIint ledControl (comando String); void setup (void) {// Iniciar Serial Serial.begin (115200); // Iniciar variables y exponerlas a REST API // rest.variable ("temperatura", &temperature); // rest.variable ("humedad", &humedad); // Función a exponer rest.function ("led", ledControl); // Dar nombre e ID al dispositivo rest.set_id ("1"); rest.set_name ("mkr1000"); // Conéctese a WiFi mientras (status! =WL_CONNECTED) {Serial.print ("Intentando conectarse a SSID:"); Serial.println (ssid); status =WiFi.begin (ssid, contraseña); // Espere 10 segundos para la conexión:delay (10000); } Serial.println ("WiFi conectado"); // Inicie el servidor server.begin (); Serial.println ("Servidor iniciado"); // Imprime la dirección IP IPAddress ip =WiFi.localIP (); Serial.print ("Dirección IP:"); Serial.println (ip); // CONFIGURAR DHT - DENTRO DE DHT dht (DHTPIN, DHTTYPE); // sensores.begin (); // Temperatura externa del sensor de temperatura DS-16B20 pinMode (trigPin, OUTPUT); pinMode (echoPin, ENTRADA); // Iniciar variables y exponerlas a la API REST rest.variable ("Vol_container", &sqrLevel); rest.variable ("Umiditate_sol", &umidSol); rest.variable ("Umiditate_aer", &umidAer); rest.variable ("Temp_in", &tempIn); rest.variable ("Temp_out", &tempOut); rest.variable ("Temp_sol", &tempSol); // resto.variable ("Umidex_in", &umidexIn); // sensores.requestTemperatures (); // Salida de temperatura} void loop () {getmyDistance (); // getSoilVals (); getInsideVals (); // getOutSideVals (); // Manejo de llamadas REST WiFiClient client =server.available (); if (! cliente) {retorno; } while (! client.available ()) {retraso (1); } rest.handle (cliente);} void getmyDistance () {digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, BAJO); duración =pulseIn (echoPin, HIGH); // calcular la distancia HR_dist =duración / 58.2; // sqrLevel =vacío - HR_dist; if (HR_dist> =máximoRango || HR_dist <=mínimoRango) {sqrLevel =0; } else {sqrLevel =vacío - HR_dist; Serial.println (HR_dist); } retraso (100); } void getDistance () {digitalWrite (trigPin, LOW); delayMicroseconds (10); // ahora envía el pulso de 10uS para activar Ping digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); // finalmente, medir la longitud del pulso entrante pulseduration =pulseIn (echoPin, HIGH); // dividir la longitud del pulso por halfpulseduration =pulseduration / 2; // convertir a centimetres.nivelRamasCm =int ( pulseduration / 29); nivelCm =empty - nivelRamasCm; nivelVol =map (nivelRamasCm, full, empty, 100, 0); // Tipareste nivelul in centimetri if (nivelCm> =-5 &&nivelCm <=135) {double a =nivelCm / 100 * nivelVol; int sqrLevel =240 - nivelCm; int sqrInvertLevel =120 + nivelRamasCm; if (nivelCm> 65 &&nivelCm <=85) {} if (nivelCm> 85 &&nivelCm <=100) {}}} microsegundos largos a centímetros (microsegundos largos) {// La velocidad del sonido es de 340 m / so 29 microsegundos por centímetro // El ping viaja hacia adelante y hacia atrás, por lo que la distancia es la mitad de la distancia recorrida return microsegundos / 29/2;} void getInsideVals () {float h =dht.readHumidity (); // Lee la temperatura como Celsius (por defecto) float t =dht.readTemperature (); // Lee la temperatura como Fahrenheit (isFahrenheit =true) // float f =dht.readTemperature (true); umidAer =h; tempIn =t; // Compruebe si alguna lectura falló y salga antes (para volver a intentarlo). if (isnan (h) || isnan (t)) {Serial.println ("¡No se pudo leer el sensor DHT!"); regreso; } // Calcula el índice de calor en Fahrenheit (el valor predeterminado) // float hif =dht.computeHeatIndex (f, h); // Calcular el índice de calor en grados Celsius (isFahreheit =false) // float hic =dht.computeHeatIndex (t, h, false); // umidexIn =hic; } void getOutSideVals () {tempOut =sensores.getTempCByIndex (0); Serial.println ("Salida de temperatura:"); Serial.print (tempOut); } void getSoilVals () {umidSol =SHT2x.GetHumidity (); tempSol =SHT2x.GetTemperature (); Serial.println ("Humedad del suelo (% RH):"); Serial.print (umidSol); Serial.print ("Temperatura del suelo (C):"); Serial.print (tempSol); } // sensores.requestTemperaturas (); // Temperatura Out // Función personalizada accesible por APIint ledControl (comando String) {// Obtener el estado del comando int state =command.toInt (); digitalWrite (6, estado); return 1;} 
libraries.zip C / C ++
Bibliotecas utilizadas en Filisera
 Sin vista previa (solo descarga). 
Filisera - vb.zip VBScript
.net Visual Studio Project
 Sin vista previa (solo descarga). 
Filisera - VS VBScript
Archivo .net que leerá datos de arduino y mostrará la interfaz
 Imports System.GlobalizationImports System.IOImports System.NetImports System.ThreadingImports System.Windows.Forms.DataVisualization.ChartingImports Newtonsoft.JsonPublic Class Form1 Private _deviceIP As String ="" ' DISPOSITIVO IP Privado intVolumContainer, intUmidSol, intUmidSera, intTempAfara, intTempSera, intTempSol, intUmidex As String 'VARIABILES Private strR1, strR2 As String' RELAYS Public Count as Countdown 'COUNTDOWN TICK Private _dasResult AsAK Private String ="DEV" RESULTADO String ="" 'USER KEY DASDATA Private _DSKey As String =""' DATASET KEY DASDATA Private _myDas As New dasData.das Private Sub Form1_Load (remitente como objeto, e como EventArgs) Maneja MyBase.Load Count =New Countdown (50, 0 ) 'ACTUALIZACIÓN DE 5 SEGUNDOS AddHandler Count.Tick, AddressOf Count_Tick AddHandler Count.TimesOut, AddressOf Times_up Try' LEER CONFIGURACIÓN DE .txt FILE Dim path As String =Directory.GetCurrentDirectory ( ) Dim FILE_NAME As String =ruta &"\ Settings.txt" Dim myText As String ="" 'Si System.IO.File.Exists (FILE_NAME) =True, entonces Dim objReader como nuevo System.IO.StreamReader (FILE_NAME, System. Text.Encoding.Default) Do While objReader.Peek () <> -1 myText &=objReader.ReadLine () Loop Dim _settingItems () As String =myText.Split ("") _deviceIP =_settingItems (0) 'IP-ul DEVICE _AKey =_settingItems (1) .Replace ("akey:", "") _DSKey =_settingItems (2) .Replace ("dskey:", "") cbxEnabled.Text ="Dispositivo:" &_deviceIP txtInfo.Text =" Dispositivo IP:"&_deviceIP &vbNewLine &" AKey:"&_AKey &vbNewLine &" DSKey:"&_DSKey &vbNewLine strR1 =_settingItems (3) .Replace (" relay1:"," ") txtInfo.Text + =" Relay1 :"&strR1 &vbNewLine strR2 =_settingItems (4) .Replace (" relay2:"," ") txtInfo.Text + =" Relay2:"&strR2 &vbNewLine 'txtInfo.Text =" Configuración:"&myText objReader.Dispose () objReader.Close () End If Catch ex As Exception lblDevice.Text =ex.Message.ToString End Try cmdCheckDevice () 'CONFIGURACIÓN LOCAL Thread.CurrentThread.CurrentCulture =New CultureInfo ("en-US") 'Thread.CurrentThread.CurrentUICulture =New CultureInfo ("ro-RO") cmdStartFilisera () Fin Sub Private Sub Count_Tick (ByVal sender As System.Object, ByVal e As System.EventArgs) cmdGetSensorValues ​​() cmdTriggers () If CDate (dtFrom.Text) .ToString ("dd.MM.yyyy") =Date.Now (). ToString ("dd.MM.yyyy") Entonces cmdStartFilisera () End If End Sub Private Sub Times_up (ByVal sender As System.Object, ByVal e As System.EventArgs) 'Count.Reset ()' Count.Pause () End Sub Private Sub cmdStartFilisera () Intente dtFrom.MaxDate =DateTime.Now _dasResult =_myDas.getDas (_DSKey, "json", 0, 100) cmdFillData () Catch ex As Exception lblDevice.Text + =ex.Message.ToString End Try End Sub Private Sub cbxEnabled_CheckedChanged (remitente como objeto, e como EventArgs) Maneja cbxEnabled. CheckedChanged cmdCheckDevice () Finalizar Sub Private Sub cmdCheckDevice () Intentar si cbxDemo.Checked =False Entonces lblDevice.Text =("¡Habilitar dispositivo!") LblEvenimente.Text =Date.Now.ToString ("dd.MM .yyyy HH:mm:ss ") Si cbxEnabled.Checked =True Entonces Dim pingsender As New Net.NetworkInformation.Ping Si no es pingsender.Send (_deviceIP) .Status =Net.NetworkInformation.IPStatus.Success Entonces lblDevice.Text =(" ¡Dispositivo no disponible en la red local! ") CbxEnabled.Checked =False btnTemperatura.Enabled =False btnVolumContainer.Enabled =False Count.Reset () Count.Pause () MessageBox.Show (" Device at "&_deviceIP &" not found! ") Else lblDevice.Text =(" ¡Dispositivo conectado! ") BtnTemperatura.Enabled =True btnVolumContainer.Enabled =True cmdGetSensorValues ​​() Timer1.Enabled =True cmdAddData () Count.Start () End If Else End If Else btnTemperatura. True btnVolumContainer.Enabled =True cmdGetSensorValues ​​() Timer1.Enabled =True cmdAddData () Count.Start () End If Catch ex As Exception End Try End Sub Private Sub btnVolumContainer_Click (remitente como objeto, e como EventArgs) Handles btnVolum 'http ://192.168.0.102/digital/7/1 'CERRAR AGUA DEL BOTÓN Dim _ItemsR1 () As String =s trR1.Split (",") Si btnVolumContainer.Text.Contains ("Open") Entonces cmdRelay (_ItemsR1 (0), 1) cmdRelay (_ItemsR1 (1), 1) cmdRelay (_ItemsR1 (2), 0) cmdRelay (_ItemsR1 (3), 0) btnVolumContainer.Text ="Cerrar agua" Else cmdRelay (_ItemsR1 (0), 0) cmdRelay (_ItemsR1 (1), 0) cmdRelay (_ItemsR1 (2), 1) cmdRelay (_ItemsR1 (3), 1 ) btnVolumContainer.Text ="Open water" End If 'Dim _url As String =_deviceIP &"digital / 7/1" End Sub Private Sub btnTemperatura_Click (sender As Object, e As EventArgs) Maneja btnTemperatura.Click' CLOSE WINDOW FROM BUTTON Dim _ItemsR2 () As String =strR2.Split (",") Si btnTemperatura.Text.Contains ("Open") Entonces cmdRelay (_ItemsR2 (0), 1) cmdRelay (_ItemsR2 (1), 1) btnTemperatura.Text ="Cerrar window "Else cmdRelay (_ItemsR2 (0), 0) cmdRelay (_ItemsR2 (1), 0) btnTemperatura.Text =" Abrir ventana "End If End Sub Private Sub Timer1_Tick (remitente como objeto, e como EventArgs) Maneja Timer1.Tick cmdAddData () Finalizar Sub Private Sub btnTestCloud_Click (remitente como objeto, e como EventArgs) Maneja btnTestCloud. Haga clic en Probar cmdStartFilisera () Catch ex As Exception MessageBox.Show ("¡Conexión perdida con DasData!") End Try End Sub Private Function cmdRelay (ByVal _DPin As String, ByVal _cmd As Int16) Intente Dim _urlCommand As String =_deviceIP &"/ digital / "&_DPin &" / "&_cmd Dim client As New WebClient () client.Headers.Add (" user-agent "," Arduino / 4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;) ") Dim data As Stream =client.OpenRead (_urlCommand) Dim reader As New StreamReader (datos) Dim s As String =reader.ReadToEnd () 'txtInfo.Text + =(s) data. Close () reader.Close () Catch ex As Exception End Try End Function Private Sub dtFrom_ValueChanged (sender As Object, e As EventArgs) Maneja dtFrom.ValueChanged Try 'OBTENER VALORES BASADOS EN LA SELECCIÓN DE FECHA _dasResult =_myDas.getDas (_DSKey, "jsond ", CDate (dtFrom.Text) .ToString (" dd.MM.yyyy "), CDate (dtFrom.Text) .ToString (" dd.MM.yyyy ")) cmdFillData () Catch ex As Exception MessageBox.Show (ex .Message.ToString) End Try End Sub Private Sub cmdGetSensorValues ​​() Try '' OBTENER LOS VALORES DEL SENSOR DEL DISPOSITIVO Si cbxDemo.Checked =False Entonces atenuar el cliente como nuevo cliente WebClient () .Headers.Add ("user-agent", "Arduino /4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;) ") Atenuar datos As Stream =client.OpenRead (" http:// "&_deviceIP &" /index.html ") Atenuar lector As Nuevo StreamReader (datos) Dim s As String =reader.ReadToEnd () s =s.Replace ("" "", "") .Replace ("}", "") .Replace ("{", "") .Replace ("", "") .Replace ("variables:", "") Dim sItems () As String =s.Split (",") intVolumContainer =cmdGetVal (sItems (0)) intUmidSol =cmdGetVal (sItems (1)) intUmidSera =cmdGetVal (sItems (2)) intTempSera =cmdGetVal (sItems (3)) intTempGetVal (sItems (3)) intTempGetVal (sItems (3)) 4)) intTempSol =cmdGetVal (sItems (5)) data.Close () reader.Close () Else intVolumContainer =_rnd (60) intUmidSol =_rnd (80) intUmidSera =_rnd (20) intTempSera =_rnd (45) intTempAfara =_rnd (57) intTempSol =_rnd (66) End If ggVolum.Value =intVolumContainer rgVolum.Value =intVolumContainer ggUmidSol.Value =intUmidSol ggUmidSera.Value =intUmidSera ggTempSera.SeraValueGemp. '{"variables" {"Volum_container":0, "Umiditate_sol":0.00, "Umiditate_aer":36.60, "Temp_in":26.50, "Temp_out":0.00, "Temp_sol":0.00, "Umidex_in":26.37}, " id ":" 1 "," nombre ":" FiliSera "," hardware ":" arduino "," conectado ":verdadero} Finalizar Prueba E nd Sub Función privada cmdGetVal (ByVal _sItem As String) Intente 'SPLIT STRING Y OBTENGA VALORES ATRÁS Dim _s () As String =_sItem.Split (":") Return _s (1) Catch ex As Exception End Try End Function Private Sub cmdAddData () Intente 'ENVIAR DATOS AL ALMACENAMIENTO EN LA NUBE DE DASDATA Dim _strFiliseraDataSend As String =intVolumContainer &"|" &intUmidSol &"|" &intUmidSera &"|" &intTempAfara &"|" &intTempSera &"|" &intTempSol' &"| "&intUmidex &" | "&Dim _dasResult As String =_myDas.sendDas (_strFiliseraDataSend, _DSKey, _AKey) Catch ex As Exception cmdLogMe (" ERROR ... "&ex.Message.ToString ()," error ") End Try End Sub Private Sub cmdFillData () Intente 'FILL INTERFACE HARÁ TODO EL TIPO DE DATOS Dim dataSet As DataSet =JsonConvert.DeserializeObject (Of DataSet) (_ dasResult) Dim dataTable As DataTable =dataSet.Tables (0)' GRIDVIEW DataGridView1.DataSet =dataSet. Tablas (0) DataGridView1.AutoGenerateColumns =True 'CHARTS ChartTemp.DataSource =dataTable ChartTemp.Series.Clear () chartUmid.DataSource =dataTable ch artUmid.Series.Clear () chartVolum.DataSource =dataTable chartVolum.Series.Clear () Dim i As Integer =0 Dim j As Integer =0 Dim k As Integer =0 Para cada tabla en dataSet.Tables Para cada fila en la tabla. Filas para cada columna en la tabla.Columnas Dim colName As String =col.ColumnName.ToString Si colName <> "id" Y colName <> "AIDate", intente Dim serieName As String =RTrim (colName) 'VOLUME Si colName.Contains ( "Nivel") Luego chartVolum.Series.Add (serieName) chartVolum.Series (serieName) .LabelFormat ="N1" chartVolum.Series (i) .ChartType =SeriesChartType.Line chartVolum.Series (i) .BorderWidth =2 chartVolum.Series (i) .Color =Color.Aqua chartVolum.Series (i) .BorderDashStyle =ChartDashStyle.Solid chartVolum.Series (serieName) .YValueMembers =RTrim (colName) chartVolum.Series (serieName) .XValueMember ="AIDate" i + =1 End If 'HUMIDITY If colName.Contains ("Umid") Entonces chartUmid.Series.Add (serieName) chartUmid.Series (serieName) .LabelFormat ="N1" chartUmid.Series (j) .ChartType =SeriesChartType.Line chartU mid.Series (j) .BorderWidth =2 chartUmid.Series (j) .BorderDashStyle =ChartDashStyle.Solid chartUmid.Series (serieName) .YValueMembers =RTrim (colName) chartUmid.Series (serieName) .XValueMember ="AIDate" j + =1 End If 'TEMP If colName.Contains ("Temp") Then ChartTemp.Series.Add (serieName) ChartTemp.Series (serieName) .LabelFormat ="N1" ChartTemp.Series (k) .ChartType =SeriesChartType.Line ChartTemp.Series (k) .BorderWidth =2 ChartTemp.Series (k) .BorderDashStyle =ChartDashStyle.Solid ChartTemp.Series (serieName) .YValueMembers =RTrim (colName) ChartTemp.Series (serieName) .XValueMember ="AIDate" k + =1 End If Catch ex As Exception End Intente End If Next Exit For Next Next 'LLENE LOS GRÁFICOS ChartTemp.DataBind () ChartTemp.Visible =True chartUmid.DataBind () chartUmid.Visible =True chartVolum.DataBind () chartVolum.Visible =True Catch ex As Excepción cmdLogMe ("ERROR ..." &ex.Message.ToString (), "error") End Try End Sub Private Sub cmdTriggers () 'ESTABLECER DISPARADORES Y ALMACENAR EL REGISTRO Seleccionar caso intVolumContain er Caso> 80 cmdLogMe ("ALTO ALTO - Volumen del recipiente - detener el agua", "0") Caso> 70 'cmdLogMe ("ALTO - Volumen del recipiente - el agua comenzará", "1") Caso <20' cmdLogMe ("BAJO - Volumen del contenedor bajo - el agua se detendrá "," 1 ") Caso <10 cmdLogMe (" BAJO BAJO - Volumen del contenedor alto alto alto - agua de inicio "," 0 ") Fin Seleccionar Seleccione Caso intTempSera Caso> 38 cmdLogMe (" ALTO ALTO - Temperatura en invernadero - ventanas abiertas "," 0 ") Caso> 30 'cmdLogMe (" ALTA - Temperatura en invernadero - preparar ventanas "," 1 ") Caso <10' cmdLogMe (" BAJA - Temperatura en invernadero - preparar ventanas "," 1 ") Caso <10 cmdLogMe (" BAJO BAJO - Volumen del contenedor alto alto alto - iniciar agua "," 0 ") Finalizar Seleccionar Finalizar Sub Función pública _rnd (ByVal n As Integer) As Integer 'inicializar número aleatorio generador Dim r As New Random (System.DateTime.Now.Millisecond) Return r.Next (1, n) End Function Private Sub cmdLogMe (message As String, _type As String) Prueba Dim _strLog As String ="adeewdf4-4aa34-14ass24 -8436-aea1 "'LOG DASDATA DS KEY lstEv enimente.Items.Add ((System.DateTime.Now &"" &message) + Constants.vbNewLine) 'ALMACENAR REGISTROS EN DASDATA _myDas.sendDas (message &"|" &_type, _strLog, _AKey) Catch ex As Exception cmdLogMe ( "ERROR ..." &ex.Message.ToString (), "error") End Try End SubEnd Class 
Archivos de origen:Filisera
https://github.com/dasdata/DasFilisera

Esquemas

Archivo PDF con conexiones:sensores y relés

Proceso de manufactura

  1. Registrador de temperatura Raspberry Pi
  2. Mide temperaturas con un sensor DS18B20 de 1 cable y Raspberry Pi
  3. Biblioteca Python del sensor de temperatura TMP006 con Raspberry pi,
  4. Sensor de temperatura Python y Raspberry Pi
  5. Sensor de temperatura de 1 cable DS1820 en Raspberry Pi (GPIO directamente)
  6. Sensor de termómetro digital de 1 cable Raspberry Pi (DS18B20)
  7. Sensor de temperatura y luz Raspberry Pi
  8. Sensor de temperatura Raspberry Pi
  9. Sensor de temperatura del rodamiento | detector
  10. Sensor de temperatura y flujo de laboratorio en chip
  11. Medición de temperatura del sensor infrarrojo