Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

DasFilisera Green House

Componentes e suprimentos

Sensor de temperatura DHT22
× 1
DS18B20
× 1
Sensor de temperatura e umidade do solo FS200-SHT25
× 1
Módulo de retransmissão de 4 canais
× 1
Módulo de retransmissão de 2 canais
× 1
Sensor ultrassônico - HC-SR04 (genérico)
× 1
Arduino MKR1000
× 1

Aplicativos e serviços online

DasData
Microsoft Visual Studio 2015

Sobre este projeto


Cultive plantas e vegetais mais conscientes das condições ambientais. Simplesmente usando um MKR1000





Requisitos para o crescimento da planta


O crescimento das plantas depende de várias condições ambientais ideais, como temperatura, umidade, luz e outros nutrientes minerais ou oxigênio.

Fornecer às plantas uma quantidade adequada de água ou manter a temperatura normal na estufa pode ser um processo complicado, mas não se você pudesse fazê-lo muito mais fácil.





Visão geral do hardware





Temperatura / Umidade


TH1 - Valores de temperatura externa serão fornecidos a partir de um sensor DS18B20 à prova d'água - conexão de pino D1

TH2 - Temp. Interna / zumbir. pode ser encontrado em DHT22 - pino D0

TH3 - FS200 / SHT25 - será introduzido nas condições do solo. As conexões serão para os pinos SCL e SDA 12/11





Alavanca de água


W1 - para obter o nível de água, usaremos um sensor de ultrassom como HC - SR04 Conexões em A0 - Eco e Trigger em A1. Com base neste valor, você pode controlar uma válvula usando o relé R1 - 4 canais.





Temperatura do ar / oxigênio


A1 - Baseie-se nos valores de temperatura / umidade que você pode comandar quando abrir janelas usando o relé R2. Com base no clima, você deve ajustá-lo como desejar.





Relés R1 / R2


Para definir alguns comandos, como abrir o Windows ou iniciar qualquer bomba, você pode enviar comandos para os relés ... R1 é conectado aos pinos digitais 7,8,9,10 e R2 5,6





MKR1000 - aRest


Agora que conectamos todas as coisas, é hora de obter alguns dados e fazer sentido usando uma biblioteca Rest, que fornecerá uma interface da web para o dispositivo MKR1000 com string de formato json. Use as bibliotecas, arquivos .ino fornecidos abaixo e altere a conexão do roteador Wifi de acordo.





Dados e interface


Contanto que tenhamos uma interface com nosso dispositivo, também poderíamos consumir esses dados e vê-los na rede local.

Temos usado o Visual Studio 2015 e .net para construir um aplicativo do Windows que ajudará você a visualizar as condições de vida da casa verde, mas também um pouco da história diária ou todos os tipos de logs que você deseja integrar.

Para armazenar na nuvem, simplesmente usamos as configurações de estufa DasData ou você pode criar seus próprios canais de dados.

A próxima etapa será modificar o DsKey e o AKey fornecidos no arquivo Settings.txt da pasta do aplicativo. Se tudo funcionar, você já deve ver alguns dados online.

Siga o canal de hackster da DasData para mais atualizações futuras





Automação de estufa


Você deve decidir quais válvulas ou motores criarão mais ação com base na configuração e nos tamanhos da sua estufa. Tudo isso pode ser controlado por relés.

Código

  • Filisera_Arduino
  • libraries.zip
  • Filisera - vb.zip
  • Filisera - VS
Filisera_Arduino C / C ++
DASFilisera usando a biblioteca aREST para a placa Arduino / Genuino MKR1000.
 / * DASFilisera usando a biblioteca aREST para a placa Arduino / Genuino MKR1000. aREST - Escrito em 2016 por Marco Schwartz sob uma licença GPL. * /// Importar bibliotecas necessárias # include  #include  #include  #include "DHT.h" #include  #include  #include  #include  // ********************** *** // ** Senzori Temperatura ** // ************************* # define DHTPIN 0 // Umidade interna / temperatura / calor índice # define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 # define ONE_WIRE_BUS 1OneWire oneWire (ONE_WIRE_BUS); Sensores de temperatura Dallas (&oneWire); float umidSol =0; // Humidade do solofloat umidAer =0; // Umidade do arfloat tempIn =0; // Temperatura inflada tempOut =0; // Flutuação de temperatura tempSol =0; // Contêiner volumefloat umidexIn =0; // Parece temp // VOLUM #define echoPin A0 // Echo pin A0 # define trigPin A1 // Trigger pin A1long duration; // duração para calcular a distânciaint HR_dist =0; // distanceint calculado minimumRange =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; // Criar aREST instanceaREST rest =aREST (); // WiFi parameterschar ssid [] ="WIFI_AP"; char password [] ="WIFI_PASSW"; // A porta para escutar as conexões TCP de entrada # define LISTEN_PORT 80 // Cria uma instância do servidor serverWiFiServer (LISTEN_PORT); // INITIALIZARE SENZORI DHT dht (DHTPIN, DHTTYPE); // RELEE RELEEEint aVentil, aLateral; int inReleu1Ventil =6;; int inReleu4Ventil =9; int inReleu1Lateral =10; int inReleu2Lateral =11; // Declara funções a serem expostas ao APIint ledControl (comando String); void setup (void) {// Start Serial Serial.begin (115200); // Iniciar variáveis ​​e expô-las à API REST // rest.variable ("temperature", &temperature); // rest.variable ("umidade", &umidade); // Função a ser exposta rest.function ("led", ledControl); // Dê nome e ID ao dispositivo rest.set_id ("1"); rest.set_name ("mkr1000"); // Conectar ao WiFi enquanto (status! =WL_CONNECTED) {Serial.print ("Tentando conectar ao SSID:"); Serial.println (ssid); status =WiFi.begin (ssid, senha); // Aguarde 10 segundos pela conexão:delay (10000); } Serial.println ("WiFi conectado"); // Inicie o servidor server.begin (); Serial.println ("Servidor iniciado"); // Imprime o endereço IP IPAddress ip =WiFi.localIP (); Serial.print ("Endereço IP:"); Serial.println (ip); // CONFIGURAÇÃO DHT - DHT DHT DENTRO (DHTPIN, DHTTYPE); // sensores.begin (); // Pornire senzor temperatura exterioara DS-16B20 pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); // Inicie as variáveis ​​e as exponha à 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); // rest.variable ("Umidex_in", &umidexIn); // sensores.requestTemperatures (); // Temperatura Out} void loop () {getmyDistance (); // getSoilVals (); getInsideVals (); // getOutSideVals (); // Lidar com chamadas REST WiFiClient client =server.available (); if (! cliente) {return; } while (! client.available ()) {delay (1); } rest.handle (client);} void getmyDistance () {digitalWrite (trigPin, LOW); atrasoMicrosegundos (2); digitalWrite (trigPin, HIGH); atrasoMicrosegundos (10); digitalWrite (trigPin, LOW); duração =pulseIn (echoPin, HIGH); // calcula a distância HR_dist =duration / 58,2; // sqrLevel =empty - HR_dist; if (HR_dist> =maximumRange || HR_dist <=minimumRange) {sqrLevel =0; } else {sqrLevel =empty - HR_dist; Serial.println (HR_dist); } atraso (100); } void getDistance () {digitalWrite (trigPin, LOW); delayMicroseconds (10); // agora envia o pulso de 10uS para ativar Ping digitalWrite (trigPin, HIGH); atrasoMicrosegundos (10); digitalWrite (trigPin, LOW); // finalmente, meça o comprimento do pulso de entrada pulseduration =pulseIn (echoPin, HIGH); // divida o comprimento do pulso por halfpulseduration =pulseduration / 2; // converter para centimetres.nivelRamasCm =int ( pulseduration / 29); nivelCm =empty - nivelRamasCm; nivelVol =map (nivelRamasCm, full, empty, 100, 0); // Tipareste nivelul em 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) {}}} microssegundosToCentímetros longos (microssegundos longos) {// A velocidade do som é 340 m / s ou 29 microssegundos por centímetro // O ping viaja para frente e para trás, portanto, a distância é a metade da distância percorrida return microssegundos / 29/2;} void getInsideVals () {float h =dht.readHumidity (); // Lê a temperatura como Celsius (o padrão) float t =dht.readTemperature (); // Lê a temperatura como Fahrenheit (isFahrenheit =true) // float f =dht.readTemperature (true); umidAer =h; tempIn =t; // Verifique se alguma leitura falhou e saia mais cedo (para tentar novamente). if (isnan (h) || isnan (t)) {Serial.println ("Falha ao ler do sensor DHT!"); Retorna; } // Computa o índice de calor em Fahrenheit (o padrão) // float hif =dht.computeHeatIndex (f, h); // Computa o índice de calor em Celsius (isFahreheit =false) // float hic =dht.computeHeatIndex (t, h, false); // umidexIn =hic; } void getOutSideVals () {tempOut =sensores.getTempCByIndex (0); Serial.println ("Saída de temperatura:"); Serial.print (tempOut); } void getSoilVals () {umidSol =SHT2x.GetHumidity (); tempSol =SHT2x.GetTemperature (); Serial.println ("Umidade do solo (% UR):"); Serial.print (umidSol); Serial.print ("Temperatura do solo (C):"); Serial.print (tempSol); } // sensores.requestTemperatures (); // Temperatura Out // Função personalizada acessível pelo APIint ledControl (String command) {// Obtém o estado do comando int state =command.toInt (); digitalWrite (6, estado); return 1;} 
libraries.zip C / C ++
Bibliotecas usadas no Filisera
 Sem visualização (somente download). 
Filisera - vb.zip VBScript
.net Visual Studio Project
 Sem visualização (somente download). 
Filisera - VS VBScript
Arquivo .net que irá ler dados do arduino e mostrar a interface
 Imports System.GlobalizationImports System.IOImports System.NetImports System.ThreadingImports System.Windows.Forms.DataVisualization.ChartingImports Newtonsoft.JsonPublic Classe Form1 Private _deviceIP As String ="" ' DEVICE IP Privado intVolumContainer, intUmidSol, intUmidSera, intTempAfara, intTempSera, intTempSol, intUmidex As String 'VARIABILES Privado strR1, strR2 As String' RELAYS Público Contagem As CountDown 'COUNTDOWN TIRADA Privada CITIZREVICE' _dasVARIO_Resultado Privado _dasSENTIDADE "RESULTADO ' String ="" 'USER KEY DASDATA Private _DSKey As String =""' DATASET KEY DASDATA Private _myDas As New dasData.das Private Sub Form1_Load (sender As Object, e As EventArgs) Handles MyBase.Load Count =New CountDown (50, 0 ) 'ATUALIZAÇÃO DE 5 SEGUNDOS AddHandler Count.Tick, AddressOf Count_Tick AddHandler Count.TimesOut, AddressOf Times_up Try' LEIA AS CONFIGURAÇÕES DO ARQUIVO .txt Dim path As String =Directory.GetCurrentDirectory ( ) Dim FILE_NAME As String =caminho &"\ Settings.txt" Dim myText As String ="" 'If System.IO.File.Exists (FILE_NAME) =True Then Dim objReader As New 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 ="Device:" &_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 =" Configurações:"&myText objReader.Dispose () objReader.Close () End If Catch ex As Exception lblDevice.Text =ex.Message.ToString End Try cmdCheckDevice () 'CONFIGURAÇÕES LOCAIS Thread.CurrentThread.CurrentCulture =New CultureInfo ("en-US") 'Thread.CurrentThread.CurrentUICulture =New CultureInfo ("ro-RO") cmdStartFilisera () End 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") Então 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 () Try 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 Privado Sub cbxEnabled_CheckedChanged (remetente As Object, e As EventArgs) Manipula cbxEnabled. CheckedChanged cmdCheckDevice () End Sub Private Sub cmdCheckDevice () Try If cbxDemo.Checked =False Then lblDevice.Text =("Habilitar dispositivo!") LblEvenimente.Text =Date.Now.ToString ("dd.MM .yyyy HH:mm:ss ") If cbxEnabled.Checked =True Then Dim pingsender As New Net.NetworkInformation.Ping If Not pingsender.Send (_deviceIP) .Status =Net.NetworkInformation.IPStatus.Success Then lblDevice.Text =(" Dispositivo não disponível na rede local! ") CbxEnabled.Checked =False btnTemperatura.Enabled =False btnVolumContainer.Enabled =False Count.Reset () Count.Pause () MessageBox.Show (" Dispositivo em "&_deviceIP &" não encontrado! ") 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.Enabled =True btnVolumContainer.Enabled =True cmdGetSensorValues ​​() Timer1.Enabled =True cmdAddData () Count.Start () End If Catch ex As Exceção End Try End Sub Private Sub btnVolumContainer_Click (sender As Object, e As EventArgs) Manipula btnVolumContainer 'http.Click.Click ://192.168.0.102/digital/7/1 'FECHAR ÁGUA DO BOTÃO Dim _ItemsR1 () As String =s trR1.Split (",") If btnVolumContainer.Text.Contains ("Open") Then cmdRelay (_ItemsR1 (0), 1) cmdRelay (_ItemsR1 (1), 1) cmdRelay (_ItemsR1 (2), 0) cmdRelay1 (_ItemsRelay1 (_ItemsRelay1) (3), 0) btnVolumContainer.Text ="Fechar água" 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) Manipula btnTemperatura.Click' FECHAR JANELA DO BOTÃO Dim _ItemsR2 () As String =strR2.Split (",") If btnTemperatura.Text.Contains ("Open") Then cmdRelay (_ItemsR2 (0), 1) cmdRelay (_ItemsR2 (1), 1) btnTemperatura.Text ="Fechar janela "Else cmdRelay (_ItemsR2 (0), 0) cmdRelay (_ItemsR2 (1), 0) btnTemperatura.Text =" Abrir janela "End If End Sub Privado Sub Timer1_Tick (sender As Object, e As EventArgs) Manipula Timer1.Tick cmdAddData () End Sub Private Sub btnTestCloud_Click (sender As Object, e As EventArgs) Manipula btnTestCloud. Clique em Try cmdStartFilisera () Catch ex As Exception MessageBox.Show ("Conexão perdida com DasData!") End Try End Sub Função privada cmdRelay (ByVal _DPin As String, ByVal _cmd As Int16) Try Dim _urlCommand As String =_deviceIP &"/ digital / "&_DPin &" / "&_cmd Dim client As New WebClient () client.Headers.Add (" user-agent "," Arduino / 4.0 (compatível; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;) ") Dim data As Stream =client.OpenRead (_urlCommand) Dim reader As New StreamReader (data) 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) Manipula dtFrom.ValueChanged Try 'OBTER VALORES COM BASE NA SELEÇÃO DE DATA _dasResult =_myDas.getDas (_DSKey, "jsondDas (_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 '' OBTER VALORES DE SENSOR DO DISPOSITIVO If cbxDemo.Checked =False Then Dim client As New WebClient () client.Headers.Add ("user-agent", "Arduino /4.0 (compatível; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;) ") Dim data As Stream =client.OpenRead (" http:// "&_deviceIP &" /index.html ") Dim reader As Novo StreamReader (dados) 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 (sItemsVal (sItems) (sItems) 4)) intTempSol =cmdGetVal (sItems (5)) data.Close () reader.Close () Else intVolumContainer =_rnd (60) intUmidSol =_rnd (80) intUmidSera =_rnd (20) intTempSera =_rnd (45) intTempSera =_rnd (45) intTempAfara (57) intTempSol =_rnd (66) End If ggVolum.Value =intVolumContainer rgVolum.Value =intVolumContainer ggUmidSol.Value =intUmidSol ggUmidSera.Value =intUmidSera ggTempSera.Value =intTempSera ggTempOut.Value =intTempAfara ggTempSol.Value =intTempSol captura ex como excepção '{"variáveis" {"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 "," nome ":" FiliSera "," hardware ":" arduino "," conectado ":verdadeiro} Fim Tente E nd Sub Função privada cmdGetVal (ByVal _sItem As String) Try 'SPLIT STRING E OBTER VALORES VOLTAR Dim _s () As String =_sItem.Split (":") Return _s (1) Capturar ex como Exceção End Try End Função Private Sub cmdAddData () Tente 'ENVIAR DADOS PARA ARMAZENAMENTO EM NUVEM DASDATA Dim _strFiliseraDataSend As String =intVolumContainer &"|" &intUmidSol &"|" &intUmidSera &"|" &intTempAfara &"|" &intTempSera &"|" &intTempSera &"| "&intUmidex &" | "&Dim _dasResult As String =_myDas.sendDas (_strFiliseraDataSend, _DSKey, _AKey) Catch ex As Exception cmdLogMe (" ERROR ... "&ex.Message.ToString ()," error ") Fim da tentativa End Sub Private Sub cmdFillData () Try 'FILL INTERFACE VAI TODOS OS CLASSES DE DADOS Dim dataSet As DataSet =JsonConvert.DeserializeObject (Of DataSet) (_ dasResult) Dim dataTable As DataTable =dataSet.Tables (0)' GRIDVIEW DataGridView1.DataSource =dataSet. Tabelas (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 tabela Em dataSet.Tables Para Cada Linha Na tabela. Linhas para cada coluna em table.Columns Dim colName As String =col.ColumnName.ToString If colName <> "id" E colName <> "AIDate" Then Try Dim serieName As String =RTrim (colName) 'VOLUME If colName.Contains ( "Nivel") Então 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") Then 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 Try End If Next Exit For Next Next 'FILL THE CHARTS ChartTemp.DataBind () ChartTemp.Visible =True chartUmid.DataBind () chartUmid.Visible =True chartVolum.DataBind () chartVolum.Visible =True Catch ex As Exceção cmdLogMe ("ERROR ..." &ex.Message.ToString (), "error") End Try End Sub Private Sub cmdTriggers () 'SET TRIGGERS AND STORE THE LOG Select Case intVolumContain er Case> 80 cmdLogMe ("HIGH HIGH - Container volume - stop water", "0") Case> 70 'cmdLogMe ("HIGH - Container Volume - water will start", "1") Case <20' cmdLogMe ("LOW - Volume do recipiente baixo - a água irá parar "," 1 ") Caso <10 cmdLogMe (" BAIXO BAIXO - Volume do recipiente alto alto alto - iniciar água "," 0 ") Fim Selecionar Caso intTempSera Caso> 38 cmdLogMe (" ALTO ALTO - Temperatura em casa de vegetação - janelas abertas "," 0 ") Case> 30 'cmdLogMe (" HIGH - Temperatura em casa de vegetação - preparar janelas "," 1 ") Case <10' cmdLogMe (" LOW - Temperatura em casa de vegetação - prepare windows "," 1 ") Case <10 cmdLogMe (" LOW LOW - Container volume high high high - start water "," 0 ") End Select End Sub Public Function _rnd (ByVal n As Integer) As Integer 'inicializa o número aleatório gerador Dim r As New Random (System.DateTime.Now.Millisecond) Return r.Next (1, n) Função Final Privada Sub cmdLogMe (mensagem As String, _type As String) Try Dim _strLog As String ="adeewdf4-4aa34-14ass24 -8436-aea1 "'LOG DASDATA DS KEY lstEv enimente.Items.Add ((System.DateTime.Now &"" &message) + Constants.vbNewLine) 'ARMAZENAR LOGS TO DASDATA _myDas.sendDas (message &"|" &_type, _strLog, _AKey) Capture ex As Exception cmdLogMe ( "ERROR ..." &ex.Message.ToString (), "error") End Try End SubEnd Class 
Arquivos fonte - Filisera
https://github.com/dasdata/DasFilisera

Esquemas

Arquivo PDF com conexões - sensores e relés

Processo de manufatura

  1. Registrador de temperatura Raspberry Pi
  2. Meça temperaturas com um sensor DS18B20 de 1 fio e Raspberry Pi
  3. Biblioteca Python do sensor de temperatura TMP006 usando Raspberry pi,
  4. Sensor de temperatura Python e Raspberry Pi
  5. Sensor de temperatura de 1 fio DS1820 em Raspberry Pi (GPIO diretamente)
  6. Sensor de termômetro digital de 1 fio Raspberry Pi (DS18B20)
  7. Temperatura do Raspberry Pi e sensor de luz
  8. Sensor de temperatura Raspberry Pi
  9. Sensor de temperatura do rolamento | detector
  10. Sensor de fluxo e temperatura Lab-On-Chip