家庭内気象台・・・できたかも?
ソーラー発電所の箱に気圧計を組み込みました。BMP180大陸からの発送でしたが思ったより早く到着です。5個購入しました最初の1個をもっていろいろ試してみましたが思うような・・・・ネットで見るような結果が得られませんでした、気圧は大きく変化900~1200hpa気温も駄目でした、やっぱり安物と思ったのですが、次の1個を試してみますとちゃんと1020hpsを表示気温も20℃正常です、残り3個を試すと同じようなデーター・・・正常です。この小さなものソーラー発電所に設置しました。送信側に気圧を測るプログラムを追加しました、小さいけど優れものです。受信側にLCD表示プログラムを追加しました。正月、お菓子の箱で受信側LCDとArduinoのケースを作りました。LCDの表示は左上からソーラー発電所のインバーターの温度、50℃位まで上がります、次はDHT11温湿度センサーソーラー発電所の箱の気温と、湿度です。下左からソーラー発電所の出力、次が今回設置したBMP-180の気温と気圧です。3つの温度表示はそれぞれに適当な値を送ってきます、気圧はデーターが大きいので送信側で900を引き算して受信側で900を足しています。下の方にプログラムを書いてあります、本日は楽天ブログ調子が悪そうです・・・。何度もフリーズしますので調子のいい時に整理してみます。送信プログラム//4_data_snd 2020.01.16//発電出力・温度データーDHT11・BMP-180気圧を追加した。#include <nRF24L01.h>#include <printf.h>#include <RF24.h>#include <RF24_config.h>#include <SPI.h> #include <DHT.h> const int PIN_DHT = 8; DHT dht(PIN_DHT,DHT11); #include <Wire.h> #include <Adafruit_BMP085.h> Adafruit_BMP085 bmp; #define variableresistor0 0 //A0ソーラー発電 #define variableresistor1 1 //A1LM35温度RF24 myRadio (9, 10);byte addresses[][6] = {"1Node"};struct Pack { int data0;//発電出力 int data1;//LM35温度 int data2;//DHT11温度 int data3;//DHT11湿度 int data4;//BMP180温度 float data5;//BMP180気圧 } packet;void setup() { Serial.begin(9600); Serial.print(F("RF24/Simple Transmit data Test")); Serial.println(" DHT11"); dht.begin(); !bmp.begin();pinMode(7,OUTPUT); pinMode(6,OUTPUT); pinMode(5,OUTPUT);//発電制御 myRadio.begin(); myRadio.setChannel(105); myRadio.setPALevel(RF24_PA_MAX); myRadio.setDataRate(RF24_250KBPS); myRadio.openWritingPipe(addresses[0]);}void loop() {for(int i=0; i<312; i=i+1) { //1分タイマーkiteiti394/311でちょっと速い packet.data0 = analogRead(variableresistor0);//発電所出力 packet.data1 = analogRead(variableresistor1);//LM35温度 packet.data2 = dht.readHumidity();//HDT11温度 packet.data3 = dht.readTemperature();//HDT11湿度 packet.data4 = bmp.readTemperature();//BMP180温度 packet.data5 = bmp.readSealevelPressure() / 100.0 - 950.0;//BMP180気圧hpa-950 //発電出力制御 if (packet.data0>650){digitalWrite(7,LOW);}else{digitalWrite(7,HIGH);//650W } delay(50); if (packet.data0>660){digitalWrite(6,LOW);}else{digitalWrite(6,HIGH);//660W } delay(50); if (packet.data0>670){digitalWrite(5,LOW);}else{digitalWrite(5,HIGH);//670W } delay(50); } if (myRadio.write(&packet, sizeof(packet))) { Serial.print(packet.data0); Serial.print(": "); Serial.print(packet.data1); Serial.print(" "); Serial.print(packet.data2); Serial.print(": "); Serial.print(packet.data3); Serial.print(" "); Serial.print(packet.data4); Serial.print(": "); Serial.print(packet.data5 + 900.0 , 1 ); Serial.println(": "); } else { Serial.print(F("Send failed.")); } }受信プログラム//4_data_rec 2020.01.16//発電出力・温度データーにDHT11・BMP180気圧を追加した。//LCD表示あり#include <SPI.h>#include <RF24.h>#include <Wire.h> #include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x3F, 16, 2); // I2C: 0x3F, 16x2 LCDRF24 myRadio (9, 10);byte addresses[][6] = {"1Node"}; struct Pack { int data1; int data2; int data3; int data4; int data5; float data6; } packet;void setup() { lcd.init(); lcd.backlight(); Serial.begin(9600); Serial.println(F("RF24/Simple Receive data Test")); myRadio.begin(); myRadio.setChannel(105); myRadio.setPALevel(RF24_PA_MAX); myRadio.setDataRate(RF24_250KBPS); myRadio.openReadingPipe(1, addresses[0]); myRadio.startListening();}void loop() { if ( myRadio.available()) { myRadio.read( &packet, sizeof(packet) ); //Serial.print("R1="); Serial.print(packet.data1);//ソーラー発電 Serial.print(","); Serial.print(packet.data2/2);//LM35温度 Serial.print(","); Serial.print(packet.data3);//DHT11湿度 Serial.print(","); Serial.print(packet.data4);//DHT11温度 Serial.print(","); Serial.print(packet.data5);//BMP180温度 Serial.print(","); Serial.println(packet.data6 + 950);//BMP180気圧//発電所の出力と気圧・湿度をアナログポートに出しロガーで記録するanalogWrite(3, packet.data1 / 3.7 );//ソーラー発電所出力analogWrite(5, packet.data6 * 2.55 );//BMP180発電所気圧analogWrite(6, packet.data3 * 2.55 );//HDT11発電所湿度 lcd.clear(); lcd.setCursor(0, 0); lcd.print(packet.data2/2);//LM35温度 lcd.print("'C "); lcd.print(packet.data4);//DHT11温度 lcd.print("'C "); lcd.print(packet.data3);//DHT11湿度 lcd.print("%"); lcd.setCursor(0, 1); lcd.print(packet.data1 * 1.1 , 0 );//発電 lcd.print("W "); lcd.print(packet.data5);//BMP180温度 lcd.print("' "); lcd.print(packet.data6 + 950 , 1 );//BMP180気圧 lcd.print("hp"); }}