工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DasFilisera Green House

コンポーネントと消耗品

>
DHT22温度センサー
× 1
DS18B20
× 1
土壌温度および湿度センサーFS200-SHT25
× 1
4チャンネルリレーモジュール
× 1
2チャンネルリレーモジュール
× 1
超音波センサー-HC-SR04(汎用)
× 1
Arduino MKR1000
× 1

アプリとオンラインサービス

DasData
Microsoft Visual Studio 2015

このプロジェクトについて

植物や野菜を育て、環境条件をもっと意識してください。 MKR1000を使用するだけで

植物成長の要件

植物の成長は、温度、湿度、光、その他のミネラル栄養素や酸素など、いくつかの理想的な環境条件に依存します。

植物に十分な量の水を供給するか、温室内の常温を維持することは難しいプロセスになる可能性がありますが、それをはるかに簡単に行うことができればそうではありません。

ハードウェアの概要

温度/湿度

TH1- 外部温度値は、防水DS18B20センサーから提供されます-D1ピン接続

TH2- 内部温度/ハム。 DHT22から見つけることができます-ピンD0

TH3- FS200 / SHT25-土壌条件で導入されます。 SCLおよびSDAピンの接続は12/11になります

ウォーターレバー

W1- 水位を取得するには、HCのような超音波センサーを使用します-A0でのSR04接続-A1でのエコーとトリガー。この値に基づいて、R1-4チャンネルリレーを使用してバルブを制御できます。

気温/酸素

A1- R2リレーを使用してウィンドウを開くタイミングを指定できる温度/湿度値に基づいています。気候に基づいて、必要に応じて調整する必要があります。

リレーR1 / R2

Windowsを開く、ポンプを起動するなどのコマンドを設定するには、リレーにコマンドを送信できます... R1はデジタルピン7,8,9,10およびR25,6に接続されています

MKR1000-aRest

すべてを接続したので、データを取得し、aRestライブラリを使用してセンサーを作成します。これにより、json形式の文字列を使用してMKR1000デバイスへのWebインターフェイスが提供されます。以下に提供されているライブラリ、.inoファイルを使用し、それに応じてWifiルーターの接続を変更します。

データとインターフェース

デバイスにインターフェイスがある限り、このデータを消費してローカルネットワークで確認することもできます。

Visual Studio 2015と.netを使用して、温室の生活状況だけでなく、統合したい毎日の履歴やあらゆる種類のログを視覚化するのに役立つWindowsアプリケーションを構築してきました。

クラウドに保存するために、DasData温室構成を使用するか、独自のデータチャネルを作成することができます。

次のステップは、アプリケーションフォルダからSettings.txtで提供されるDsKeyとAKeyを変更することです。すべてが機能する場合は、すでにいくつかのデータがオンラインで表示されているはずです。

今後のアップデートについては、DasDataのハックスターチャンネルをフォローしてください

温室の自動化

温室の構成とサイズに基づいて、どのバルブまたはモーターがより多くのアクションを作成するかを決定する必要があります。これはすべてリレーから制御できます。

コード

  • Filisera_Arduino
  • libraries.zip
  • フィリセラ-vb.zip
  • フィリセラ-VS
Filisera_Arduino C / C ++
Arduino / GenuinoMKR1000ボードにaRESTライブラリを使用するDASFilisera。
 / * Arduino / GenuinoMKR1000ボードにaRESTライブラリを使用するDASFilisera。 aREST- 2016年にGPLライセンスの下でMarcoSchwartzによって作成されました。* ///必要なライブラリをインポートします#include  #include  #include  #include "DHT.h" #include  #include  #include  #include  // ********************** *** // ** Senzori Temperatura ** // *************************#define DHTPIN 0 //内部の湿度/温度/熱index#define DHTTYPE DHT22 // DHT 22(AM2302)、AM2321#define ONE_WIRE_BUS 1OneWire oneWire(ONE_WIRE_BUS); DallasTemperatureセンサー(&oneWire); float umidSol =0; //土壌の湿度フロートumidAer =0; //空気湿度フロートtempIn =0; //温度インフロートtempOut =0; //温度アウトフロートtempSol =0; //コンテナvolumefloatumidexIn =0; // temp // VOLUM #define echoPin A0のように感じます//エコーピンA0#define trigPin A1 //トリガーピンA1longduration; // distanceintを計算する期間HR_dist =0; //計算されたdistanceintminimumRange =5; //最小ソナーrangeintmaximumRange =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; // aRESTインスタンスを作成aRESTrest =aREST(); // WiFiパラメータcharssid [] ="WIFI_AP"; char password [] ="WIFI_PASSW"; //着信TCP接続をリッスンするポート# define LISTEN_PORT 80 // serverWiFiServerサーバーのインスタンスを作成します(LISTEN_PORT); // INITIALIZARE SENZORI DHT dht(DHTPIN、DHTTYPE); // RELEE RELEEEint aVentil、aLateral; int inReleu1Ventil =6; int inReleu2Ventil =7; int inReleu3Ventil =; int inReleu4Ventil =9; int inReleu1Lateral =10; int inReleu2Lateral =11; // APIに公開する関数を宣言しますintledControl(String command); void setup(void){//シリアルSerial.begin(115200);を開始します。 //変数を初期化し、RESTAPIに公開します//rest.variable( "temperature"、&temperature); // rest.variable( "humidity"、&humidity); //公開する関数rest.function( "led"、ledControl); //デバイスに名前とIDを指定しますrest.set_id( "1"); rest.set_name( "mkr1000"); // WiFiに接続しますwhile(status!=WL_CONNECTED){Serial.print( "SSIDに接続しようとしています:"); Serial.println(ssid);ステータス=WiFi.begin(ssid、password); //接続を10秒待ちます:delay(10000); } Serial.println( "WiFi接続"); //サーバーを起動しますserver.begin(); Serial.println( "サーバーが起動しました"); // IPアドレスを出力しますIPAddressip =WiFi.localIP(); Serial.print( "IPアドレス:"); Serial.println(ip); //セットアップDHT-内部DHTdht(DHTPIN、DHTTYPE); // Sensors.begin(); // Pornire senzortemperatura exterioara DS-16B20 pinMode(trigPin、OUTPUT); pinMode(echoPin、INPUT); //変数を初期化し、REST APIに公開します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); // Sensors.requestTemperatures(); // Temperatura Out} void loop(){getmyDistance(); // getSoilVals(); getInsideVals(); // getOutSideVals(); // REST呼び出しを処理しますWiFiClientclient =server.available(); if(!client){return; } while(!client.available()){delay(1); } rest.handle(client);} void getmyDistance(){digitalWrite(trigPin、LOW); delayMicroseconds(2); digitalWrite(trigPin、HIGH); delayMicroseconds(10); digitalWrite(trigPin、LOW);期間=pulseIn(echoPin、HIGH); //距離を計算しますHR_dist =duration / 58.2; // sqrLevel =empty --HR_dist; if(HR_dist> =maximumRange || HR_dist <=minimumRange){sqrLevel =0; } else {sqrLevel =empty-H​​R_dist; Serial.println(HR_dist); } delay(100); } void getDistance(){digitalWrite(trigPin、LOW); delayMicroseconds(10); // 10uSパルスを送信してPingdigitalWrite(trigPin、HIGH);をアクティブにします。 delayMicroseconds(10); digitalWrite(trigPin、LOW); //最後に、着信パルスの長さを測定しますpulseduration =pulseIn(echoPin、HIGH); //パルス長をhalfpulseduration =pulseduration / 2で除算します; // centimetres.nivelRamasCm =int( pulseduration / 29); nivelCm =empty --nivelRamasCm; nivelVol =map(nivelRamasCm、full、empty、100、0); //センチメートル単位のTiparestenivelul 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){//音速は340 m / sまたは29マイクロ秒/ centimeter // pingは前後に移動するため、距離は移動距離の半分になりますreturn microseconds / 29/2;} void getInsideVals(){float h =dht.readHumidity(); //温度を摂氏(デフォルト)として読み取りますfloat t =dht.readTemperature(); //温度を華氏として読み取ります(isFahrenheit =true)// float f =dht.readTemperature(true); umidAer =h; tempIn =t; //読み取りが失敗したかどうかを確認し、早期に終了します(再試行します)。 if(isnan(h)|| isnan(t)){Serial.println( "DHTセンサーからの読み取りに失敗しました!");戻る; } //華氏で熱指数を計算します(デフォルト)// float hif =dht.computeHeatIndex(f、h); //摂氏で熱指数を計算します(isFahreheit =false)// float hic =dht.computeHeatIndex(t、h、false); // umidexIn =hic; } void getOutSideVals(){tempOut =センサー.getTempCByIndex(0); Serial.println( "Temperature Out:"); Serial.print(tempOut); } void getSoilVals(){umidSol =SHT2x.GetHumidity(); tempSol =SHT2x.GetTemperature(); Serial.println( "湿度土壌(%RH):"); Serial.print(umidSol); Serial.print( "温度土壌(C):"); Serial.print(tempSol); } // Sensors.requestTemperatures(); // Temperatura Out // APIintによってアクセス可能なカスタム関数ledControl(String command){//コマンドから状態を取得int state =command.toInt(); digitalWrite(6、state); 1を返す;} 
libraries.zip C / C ++
Filiseraで使用されるライブラリ
プレビューなし(ダウンロードのみ)。
Filisera-vb.zip VBScript
.net Visual Studio Project
プレビューなし(ダウンロードのみ)。
Filisera-VS VBScript
arduinoからデータを読み取り、インターフェイスを表示する.netファイル
 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 _dasResult As String =" 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 ) '5 SECONDS UPDATE AddHandler Count.Tick、AddressOf Count_Tick AddHandler Count.TimesOut、AddressOf Times_up Try' READ SETTINGS FROM .txt FILE Dim path As String =Directory.GetCurrentDirectory( )Dim FILE_NAME As String =path& "\ 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 =" 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 ="設定: "&myText objReader.Dispose ()objReader.Close()End If Catch ex As Exception lblDevice.Text =ex.Message.ToString End Try cmdCheckDevice() 'ローカル設定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")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)cbxEnabledを処理します。 CheckedChanged cmdCheckDevice()End Sub Private Sub cmdCheckDevice()Try If cbxDemo.Checked =False Then lblDevice.Text =( "Enable device!")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 =("ローカルネットワークでデバイスを使用できません! ")cbxEnabled.Checked =False btnTemperatura.Enabled =False btnVolumContainer.Enabled =False Count.Reset()Count.Pause()MessageBox.Show(" Device at "&_​​deviceIP&" not found! ")Else lblDevice.Text =("デバイスが接続されています! ")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)Handles btnVolumContainer.Click'http ://192.168.0.102/digital/7/1 'ボタンから水を閉じる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)cmdRelay(_ItemsR1 (3)、0)btnVolumContainer.Text ="Close water" 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)Handles btnTemperatura.Click 'CLOSE WINDOW FROM BUTTON Dim _ItemsR2()As String =strR2.Split( "、")If btnTemperatura.Text.Contains( "Open")Then cmdRelay(_ItemsR2(0)、1)cmdRelay(_ItemsR2(1)、1)btnTemperatura.Text ="Close window "Else cmdRelay(_ItemsR2(0)、0)cmdRelay(_ItemsR2(1)、0)btnTemperatura.Text ="ウィンドウを開く "End If End Sub Private Sub Timer1_Tick(sender As Object、e As EventArgs)Handles Timer1.Tick cmdAddData ()End Sub Private Sub btnTestCloud_Click(sender As Object、e As EventArgs)btnTestCloudを処理します。 [試行]をクリックしますcmdStartFilisera()Catch ex As Exception MessageBox.Show( "Lost connection with 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(互換性; 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)Handles dtFrom.ValueChanged Try '日付選択に基づく値の取得_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 ''デバイスからセンサー値を取得IfcbxDemo.Checked =False Then Dim client As New WebClient()client.Headers.Add( "user-agent"、 "Arduino /4.0(互換性; 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 New 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))intTempAf 4))intTempSol =cmdGetVal(sItems(5))data.Close()reader.Close()Else intVolumContainer =_rnd(60)intUmidSol =_rnd(80)intUmidSera =_rnd(20)intTempSera =_rnd(45)intTempAf (57)intTempSol =_rnd(66)End If ggVolum.Value =intVolumContainer rgVolum.Value =intVolumContainer ggUmidSol.Value =intUmidSol ggUmidSera.Value =intUmidSera ggTempSera.Value =intTempSera ggTemp.Value =intTempSera ggTemp '{"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 () 'SEND DATA TO DASDATA CLOUD STORAGE 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()Try'FILL INTERFACE WILL ALL SORT OF DATA 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 For Each table In dataSet.Tables For Each rowInテーブル。 Table.Columnsの各colの行DimcolName As String =col.ColumnName.ToString If colName <> "id" And colName <> "AIDate" Then Try Dim serieName As String =RTrim(colName) 'VOLUME If colName.Contains( "Nivel")次に、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 'チャートを入力ChartTemp.DataBind()ChartTemp.Visible =True chartUmid.DataBind()chartUmid.Visible =True chartVolum.DataBind()chartVolum.Visible =True Catch ex As例外cmdLogMe( "ERROR ..."&ex.Message.ToString()、 "error")End Try End Sub Private Sub cmdTriggers() 'トリガーを設定してログを保存SelectCase intVolumContain er Case> 80 cmdLogMe( "HIGH HIGH-コンテナ容量-停止水"、 "0")Case> 70'cmdLogMe( "HIGH-コンテナ容量-水が開始します"、 "1")Case <20 'cmdLogMe( "LOW -コンテナの容量が少ない-水が止まる "、" 1 ")ケース<10 cmdLogMe(" LOW LOW-コンテナの容量が高い高高い-開始水 "、" 0 ")終了選択選択ケースintTempSeraケース> 38 cmdLogMe(" HIGH HIGH -グリーンハウスの温度-開いているウィンドウ "、" 0 ")ケース> 30'cmdLogMe(" HIGH-グリーンハウスの温度-ウィンドウの準備 "、" 1 ")ケース<10 'cmdLogMe(" LOW-グリーンハウスの温度-ウィンドウの準備 "、" 1 ")ケース<10 cmdLogMe(" LOW LOW-コンテナボリューム高高高-開始水 "、" 0 ")End Select End Sub Public Function _rnd(ByVal n As Integer)As Integer '乱数を初期化しますジェネレータDimr 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) 'ログをDASDATAに保存_myDas.sendDas(message& "|"&_ type、_strLog、_AKey)Catch ex As Exception cmdLogMe( "ERROR ..."&ex.Message.ToString()、 "error")End Try End SubEnd Class 
ソースファイル-Filisera
https://github.com/dasdata/DasFilisera

回路図

接続付きのPDFファイル-センサーとリレー

製造プロセス

  1. RaspberryPi温度ロガー
  2. 1線式DS18B20センサーとRaspberryPiを使用して温度を測定します
  3. Raspberry piを使用したTMP006温度センサーPythonライブラリ、
  4. PythonとRaspberryPiの温度センサー
  5. Raspberry Piの1線式温度センサーDS1820(GPIO直接)
  6. Raspberry Pi 1-Wireデジタル温度計センサー(DS18B20)
  7. ラズベリーパイ温度および光センサー
  8. ラズベリーパイ温度センサー
  9. ベアリング温度センサー|検出器
  10. ラボオンチップフローおよび温度センサー
  11. 赤外線センサーの温度測定