Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Maison verte DasFilisera

Composants et fournitures

Capteur de température DHT22
× 1
DS18B20
× 1
Capteur de température et d'humidité du sol FS200-SHT25
× 1
Module relais 4 canaux
× 1
Module relais 2 canaux
× 1
Capteur à ultrasons - HC-SR04 (Générique)
× 1
Arduino MKR1000
× 1

Applications et services en ligne

DasData
Microsoft Visual Studio 2015

À propos de ce projet

Cultivez des plantes et des légumes plus conscients des conditions de leur environnement. Simplement en utilisant un MKR1000

Exigences pour la croissance des plantes

La croissance des plantes dépend de plusieurs conditions environnementales idéales telles que la température, l'humidité, la lumière et d'autres nutriments minéraux ou l'oxygène.

Fournir aux plantes une quantité d'eau adéquate ou maintenir la température normale dans la serre peut être un processus délicat, mais pas si vous pouviez le faire beaucoup plus facilement.

Présentation du matériel

Température / Humidité

TH1 - Les valeurs de température extérieure seront fournies à partir d'un capteur étanche DS18B20 - connexion à broche D1

TH2 - Température intérieure / Hum. peut être trouvé à partir de DHT22 - broche D0

TH3 - FS200/SHT25 - sera introduit dans les conditions du sol. Les connexions seront pour les broches SCL et SDA 12/11

Levier d'eau

W1 - afin d'obtenir le niveau d'eau, vous utiliserez un capteur à ultrasons comme les connexions HC - SR04 à A0 - Echo et Trigger à A1. Sur la base de cette valeur, vous pouvez contrôler une vanne à l'aide du relais R1 - 4 canaux.

Température de l'air / Oxygène

A1 - Sur la base des valeurs de température/humidité, vous pouvez commander quand ouvrir les fenêtres à l'aide du relais R2. En fonction du climat, vous devez l'ajuster comme vous le souhaitez.

Relais R1 / R2

Pour définir certaines commandes comme ouvrir Windows ou démarrer n'importe quelle pompe, vous pouvez envoyer des commandes aux relais... R1 est connecté aux broches numériques 7,8,9,10 et R2 5,6

MKR1000 - aRest

Maintenant que nous avons tout connecté ensemble, il est temps d'obtenir des données et de donner un sens à l'aide de la bibliothèque aRest, qui fournira une interface Web au périphérique MKR1000 avec une chaîne au format json. Utilisez les bibliothèques, les fichiers .ino fournis ci-dessous et modifiez la connexion de votre routeur Wifi en conséquence.

Données et interface

Tant que nous avons une interface avec notre appareil, nous pouvons également consommer ces données et les voir sur le réseau local.

Nous avons utilisé Visual Studio 2015 et .net pour créer une application Windows qui vous aidera à visualiser les conditions de vie des serres, mais aussi un peu d'historique quotidien ou toutes sortes de journaux que vous souhaitez intégrer.

Pour le stockage dans le cloud, nous avons simplement utilisé les configurations de serre DasData ou vous pouvez créer vos propres canaux de données.

La prochaine étape consistera à modifier la DsKey et la AKey fournies dans le fichier Settings.txt du dossier de l'application. Si tout fonctionne, vous devriez déjà voir certaines données en ligne.

Suivez le canal hackster de DasData pour plus de mises à jour futures

Automatisation de la serre

Vous devez décider quelles vannes ou moteurs créeront plus d'action en fonction de la configuration et de la taille de votre serre. Tout cela pourrait être contrôlé à partir de relais.

Code

  • Filisera_Arduino
  • libraries.zip
  • Filisera - vb.zip
  • Filisera - VS
Filisera_Arduino C/C++
DASFilisera utilisant une bibliothèque REST pour la carte Arduino/Genuino MKR1000.
/* DASFilisera utilisant une bibliothèque REST pour la carte Arduino/Genuino MKR1000. aREST - Écrit en 2016 par Marco Schwartz sous licence GPL.*/// Importation des bibliothèques requises#include #include #include #include "DHT.h"#include #include #include #include // ************************ ***// ** Senzori Temperatura **// *************************#define DHTPIN 0 // humidité/temp/chaleur à l'intérieur index#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321#define ONE_WIRE_BUS 1OneWire oneWire(ONE_WIRE_BUS);DallasCapteurs de température(&oneWire);float umidSol =0; // Humidité du solfloat umidAer =0; // Humidité de l'airfloat tempIn =0; // Infloat de température tempOut =0; // Dépassement de température tempSol =0; // Conteneur volumefloat umidexIn =0; // Ressemble à temp//VOLUM #define echoPin A0 // Echo pin A0#define trigPin A1 // Trigger pin A1long duration; // durée pour calculer distanceint HR_dist =0; // Distance calculéeint 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;// Créer une instance aRESTaREST rest =aREST();// Paramètres WiFichar ssid[] ="WIFI_AP";char password[] ="WIFI_PASSW";// Le port pour écouter les connexions TCP entrantes# define LISTEN_PORT 80// Crée une instance du serveurWiFiServer server(LISTEN_PORT);//INITIALIZARE SENZORI DHT dht(DHTPIN, DHTTYPE);// RELEE RELEEEint aVentil, aLateral;int inReleu1Ventil =6;int inReleu2VentVentil =7;int;int inReleu4Ventil =9;int inReleu1Lateral =10;int inReleu2Lateral =11;// Déclare les fonctions à exposer à l'APIint ledControl(String command);void setup(void){ // Démarrer Serial Serial.begin(115200); // Init les variables et les expose à l'API REST // rest.variable("temperature",&temperature);// rest.variable("humidity",&humidity); // Fonction à exposer rest.function("led",ledControl); // Donnez le nom et l'ID à l'appareil rest.set_id("1"); rest.set_name("mkr1000"); // Se connecter au WiFi while (status !=WL_CONNECTED) { Serial.print("Tentative de connexion au SSID :"); Serial.println(ssid); status =WiFi.begin(ssid, mot de passe); // Attendre 10 secondes pour la connexion :delay(10000); } Serial.println("WiFi connecté"); // Démarrer le serveur server.begin(); Serial.println("Serveur démarré"); // Imprimer l'adresse IP IPAddress ip =WiFi.localIP(); Serial.print("Adresse IP :"); Serial.println(ip); // CONFIGURATION DHT - À L'INTÉRIEUR DHT dht(DHTPIN, DHTTYPE); // capteurs.begin(); // Pornire senzor temperature exterioara DS-16B20 pinMode (trigPin, OUTPUT); pinMode(echoPin, INPUT); // Init les variables et les expose à l'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 ); // capteurs.requestTemperatures(); // Température en sortie }boucle vide() { getmyDistance(); // getSoilVals(); getInsideVals();// getOutSideVals(); // Gérer les appels REST WiFiClient client =server.available(); if (!client) { return; } while(!client.available()){ delay(1); } rest.handle(client);}void getmyDistance() { digitalWrite(trigPin,LOW); délaiMicrosecondes(2) ; digitalWrite(trigPin,HIGH); délaiMicrosecondes(10) ; digitalWrite(trigPin,LOW); durée =pulseIn(echoPin,HIGH); //calculer la distance HR_dist =duration/58.2;// sqrLevel =empty - HR_dist; if (HR_dist>=maximumRange || HR_dist <=minimumRange) { sqrLevel =0; } else { sqrLevel =vide - HR_dist; Serial.println(HR_dist); } retard (100); } void getDistance() {digitalWrite(trigPin, LOW);delayMicroseconds(10);// envoie maintenant l'impulsion de 10uS pour activer Ping digitalWrite(trigPin, HIGH); délaiMicrosecondes(10) ; digitalWrite(trigPin, LOW); // enfin, mesurer la longueur de l'impulsion entrante pulseduration =pulseIn(echoPin, HIGH); // diviser la longueur d'impulsion par halfpulseduration =pulseduration/2; // convertir en centimètres.nivelRamasCm =int( pulseduration/29);nivelCm =vide - 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){ } } }long microsecondsToCentimeters (long microseconds) { // La vitesse du son est de 340 m/s ou 29 microsecondes par centimeter // Le ping va et vient, donc, la distance est la moitié de la distance parcourue return microsecondes / 29 / 2;}void getInsideVals() { float h =dht.readHumidity(); // Lecture de la température en Celsius (valeur par défaut) float t =dht.readTemperature(); // Lire la température en Fahrenheit (isFahrenheit =true) // float f =dht.readTemperature(true); umidAer =h; tempIn =t; // Vérifiez si des lectures ont échoué et quittez plus tôt (pour réessayer). if (isnan(h) || isnan(t)) { Serial.println("Échec de la lecture depuis le capteur DHT !"); retourner; } // Calcule l'indice de chaleur en Fahrenheit (par défaut) // float hif =dht.computeHeatIndex(f, h); // Calcule l'indice de chaleur en Celsius (isFahreheit =false) // float hic =dht.computeHeatIndex(t, h, false); // umidexIn =hic; }void getOutSideVals() { tempOut =capteurs.getTempCByIndex(0); Serial.println("Temperature Out :"); Serial.print(tempOut); } void getSoilVals() { umidSol =SHT2x.GetHumidity(); tempSol =SHT2x.GetTemperature(); Serial.println("Humidité du sol(%RH):"); Serial.print(umidSol); Serial.print(" Température du sol (C):"); Serial.print(tempSol); } // capteurs.requestTemperatures(); // Temperatura Out // Fonction personnalisée accessible par l'APIint ledControl(String command) { // Obtenir l'état à partir de la commande int state =command.toInt(); digitalWrite(6,état); return 1;} 
libraries.zipC/C++
Bibliothèques utilisées dans Filisera
Aucun aperçu (téléchargement uniquement).
Filisera - vb.zipVBScript
Projet .net Visual Studio
Aucun aperçu (téléchargement uniquement).
Filisera - VS VBScript
.net qui lira les données d'arduino et affichera l'interface
Imports System.GlobalizationImports System.IOImports System.NetImports System.ThreadingImports System.Windows.Forms.DataVisualization.ChartingImports Newtonsoft.JsonPublic Class Form1 Private _deviceIP As String ="" ' DEVICE IP Private intVolumContainer, intUmidSol, intUmidSera, intTempAfara, intTempSera, intTempSol, intUmidex As String ' VARIABILES Private strR1, strR2 As String 'RELAYS Public Count As CountDown 'COUNTDOWN TICK Private _dasATRESult AsIRE 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) Gère MyBase.Load Count =New CountDown(50, 0 ) '5 SECONDS UPDATE AddHandler Count.Tick, AddressOf Count_Tick AddHandler Count.TimesOut, AddressOf Times_up Essayez 'READ SETTINGS FROM .txt FILE Dim path As String =Directory.GetCurrentDirectory( ) Dim FILE_NAME As String =chemin &"\Settings.txt" Dim myText As String ="" ' Si 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 =" Périphérique 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 ="Settings:" &myText objReader.Dispose () objReader.Close() End If Catch ex As Exception lblDevice.Text =ex.Message.ToString End Try cmdCheckDevice() 'LOCAL SETTINGS 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() Si CDate(dtFrom.Text).ToString("dd.MM.yyyy") =Date.Now().ToString("dd.MM.yyyy") Then 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 Private Sub cbxEnabled_CheckedChanged(sender As Object, e As EventArgs) Gère cbxEnabled. CheckedChanged cmdCheckDevice() End Sub Private Sub cmdCheckDevice() Try If cbxDemo.Checked =False Then lblDevice.Text =("Activer le périphérique !") lblEvenimente.Text =Date.Now.ToString ("dd.MM) .yyyy HH:mm:ss") Si cbxEnabled.Checked =True Then Dim pingsender As New Net.NetworkInformation.Ping Sinon pingsender.Send(_deviceIP).Status =Net.NetworkInformation.IPStatus.Success Then lblDevice.Text =(" Périphérique non disponible sur le réseau local !") cbxEnabled.Checked =False btnTemperatura.Enabled =False btnVolumContainer.Enabled =False Count.Reset() Count.Pause() MessageBox.Show("Device at " &_deviceIP &" not found! ") Else lblDevice.Text =("Périphérique connecté!") 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 Exception End Try End Sub Private Sub btnVolumContainer_Click(sender As Object, e As EventArgs) Gère btnVolumContainer.Click ' http ://192.168.0.102/digital/7/1 'FERMER L'EAU DU BOUTON Dim _ItemsR1() As String =s trR1.Split(",") Si btnVolumContainer.Text.Contains("Open") Alors cmdRelay(_ItemsR1(0), 1) cmdRelay(_ItemsR1(1), 1) cmdRelay(_ItemsR1(2), 0) cmdRelay(_ItemsR1 (3), 0) btnVolumContainer.Text ="Fermer l'eau" Sinon 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) Gère btnTemperatura.Click 'CLOSE WINDOW FROM BUTTON Dim _ItemsR2() As String =strR2.Split(",") Si btnTemperatura.Text.Contains("Open") Then cmdRelay(_ItemsR2(0), 1) cmdRelay(_ItemsR2(1), 1) btnTemperatura.Text ="Fermer window" Else cmdRelay(_ItemsR2(0), 0) cmdRelay(_ItemsR2(1), 0) btnTemperatura.Text ="Open window" End If End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Gère Timer1.Tick cmdAddData () End Sub Private Sub btnTestCloud_Click(sender As Object, e As EventArgs) Gère btnTestCloud. Cliquez sur Try cmdStartFilisera() Catch ex As Exception MessageBox.Show("Connexion perdue avec DasData!") End Try End Sub Private Function 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 (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(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) Gère dtFrom.ValueChanged Try 'GET VALUES BASED ON DATE SELECTION _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 ''GET SENSOR VALUES FROM DEVICE If cbxDemo.Checked =False Then 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("http://" &_deviceIP &"/index.html") Dim reader As Nouveau StreamReader(data) 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)) intTempAfara(sItemsGet 4)) intTempSol =cmdGetVal(sItems(5)) data.Close() reader.Close() Else intVolumContainer =_rnd(60) intUmidSol =_rnd(80) intUmidSera =_rnd(20) intTempSera =_rnd(45) =intTempAfara (57) intTempSol =_rnd(66) Fin Si ggVolum.Value =intVolumContainer rgVolum.Value =intVolumContainer ggUmidSol.Value =intUmidSol ggUmidSera.Value =intUmidSera ggTempTempSera.Value =intGTempSera Exception int. '{"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", "name":"FiliSera", "hardware":"arduino", "connected":true} End Try E nd Sub Private Function cmdGetVal(ByVal _sItem As String) Try 'SPLIT STRING AND GET VALUES BACK Dim _s() As String =_sItem.Split(":") Return _s(1) Catch ex As Exception End Try End Function Private Sub cmdAddData () Essayez 'ENVOYER DES DONNÉES AU STOCKAGE DE CLOUD DE DONNÉES Dim _strFiliseraDataSend As String =intVolumContainer &"|" &intUmidSol &"|" &intUmidSera &"|" &intTempAfara &"|" &intTempSera &"|" &"|" TempSol '&"&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() Essayez 'FILL INTERFACE VA TOUT TRIER DE DONNÉES Dim dataSet As DataSet =JsonConvert.DeserializeObject(Of DataSet)(_dasResult) Dim dataTable As DataTable =dataSet.Tables(0) 'GRIDVIEW DataGridView1.DataSource =dataSet. Tables(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 Pour chaque table dans dataSet.Tables Pour chaque ligne dans la table. Rows For Each col In table.Columns Dim colName As String =col.ColumnName.ToString If colName <> "id" And colName <> "AIDate" Then Try Dim serieName As String =RTrim(colName) 'VOLUME If colName.Contains( "Nivel") Puis 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 'REMPLISSEZ LES GRAPHIQUES ChartTemp.DataBind() ChartTemp.Visible =True chartUmid.DataBind() chartUmid.Visible =True chartVolum.DataBind() chartVolum.Visible =True Capture ex As Exception cmdLogMe("ERREUR..." &ex.Message.ToString(), "erreur") End Try End Sub Private Sub cmdTriggers() 'SET TRIGGERS AND STORE THE LOG Select Case intVolumContain er Case> 80 cmdLogMe("HIGH HIGH - Volume du conteneur - arrêter l'eau", "0") Case> 70 ' cmdLogMe("HIGH - Volume du conteneur - l'eau commencera", "1") Case <20 ' cmdLogMe("LOW - Volume du conteneur bas - l'eau s'arrêtera", "1") Cas <10 cmdLogMe("LOW LOW - Volume du conteneur élevé haut haut - eau de démarrage", "0") End Select Select Case intTempSera Case> 38 cmdLogMe("HIGH HIGH - Température dans la serre - fenêtres ouvertes", "0") Cas> 30' cmdLogMe("HIGH - Température dans la serre - préparer les fenêtres", "1") Cas <10' cmdLogMe("LOW - Température dans la serre - prepare windows", "1") Case <10 cmdLogMe("LOW LOW - Volume du conteneur high high high - start water", "0") End Select End Sub Public Function _rnd(ByVal n As Integer) As Integer 'initialise le nombre aléatoire générateur 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) Try Dim _strLog As String ="adeewdf4-4aa34-14ass24 -8436-aea1" 'LOG DASDATA DS KEY lstEv enimente.Items.Add((System.DateTime.Now &" " &message) + Constants.vbNewLine) 'STOCKEZ LES JOURNAUX DANS DASDATA _myDas.sendDas(message &"|" &_type, _strLog, _AKey) Catch ex As Exception cmdLogMe( "ERREUR..." &ex.Message.ToString(), "error") End Try End SubEnd Class
Fichiers sources - Filisera
https://github.com/dasdata/DasFilisera

Schémas

Fichier PDF avec connexions - capteurs &relais

Processus de fabrication

  1. Enregistreur de température Raspberry Pi
  2. Mesure des températures avec un capteur DS18B20 1 fil et Raspberry Pi
  3. Bibliothèque Python du capteur de température TMP006 utilisant Raspberry pi,
  4. Capteur de température Python et Raspberry Pi
  5. Capteur de température 1 fil DS1820 au Raspberry Pi (GPIO directement)
  6. Capteur de thermomètre numérique Raspberry Pi à 1 fil (DS18B20)
  7. Capteur de température et de luminosité Raspberry Pi
  8. Capteur de température Raspberry Pi
  9. Capteur de température de roulement | détecteur