i have this - inside module with 3 sensors-
#include <Wire.h>
#include <BH1750FVI.h>
int tmp102Address = 0x48;
BH1750FVI LightSensor;
void setup() {
Serial.begin(9600);
LightSensor.begin();
LightSensor.SetAddress(Device_Address_H);//Address 0x5C
LightSensor.SetMode(Continuous_H_resolution_Mode);
Serial.println("Running...");
{
Serial.begin(9600);
Wire.begin();
}
}
void loop() {
uint16_t lux = LightSensor.GetLightIntensity();// Get Lux value
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lux");
Serial.println("==================");
delay(3000);
{
Serial.println(analogRead(A0));
Serial.println("==================");
delay(3000);
}
{
float celsius = getTemperature();
Serial.print("Temperatura este: ");
Serial.println(celsius);
Serial.println("==================");
delay(3000);
}
}
float getTemperature(){
Wire.requestFrom(tmp102Address,2);
byte MSB = Wire.read();
byte LSB = Wire.read();
int TemperatureSum = ((MSB << 8) | LSB) >> 4;
float celsius = TemperatureSum*0.0625;
return celsius;
}
and this - outside module with 3 sensors-
#include <Wire.h>
#include "Adafruit_SI1145.h"
#include "HTU21D.h"
#include <SFE_BMP180.h>
Adafruit_SI1145 uv = Adafruit_SI1145();
HTU21D myHumidity;
SFE_BMP180 pressure;
#define ALTITUDE 80.0 // Altitude of Bucharest, Sea level in meters
void setup() {
Serial.begin(9600);
if (! uv.begin()) {
Serial.println("Didn't find Si1145");
while (1);
}
//Serial.println("OK!");
{
myHumidity.begin();
}
{
if (pressure.begin())
Serial.println("BMP180 init success");
else
{
Serial.println("BMP180 init fail\n\n");
while(1); // Pause forever.
}
}
}
void loop() {
Serial.print("Vis: "); Serial.println(uv.readVisible());
float UVindex = uv.readUV();
// the index is multiplied by 100 so to get the
// integer index, divide by 100!
UVindex /= 100.0;
Serial.print("UV: "); Serial.println(UVindex);
delay(3000);
{
float humd = myHumidity.readHumidity();
float temp = myHumidity.readTemperature();
Serial.print(" Temperature:");
Serial.print(temp, 1);
Serial.print("C");
Serial.print(" Humidity:");
Serial.print(humd, 1);
Serial.print("%");
Serial.println();
delay(3000);
}
{
char status;
double T,P,p0,a;
Serial.println();
Serial.print("provided altitude: ");
Serial.print(ALTITUDE,0);
Serial.print(" meters, ");
Serial.print(ALTITUDE*3.28084,0);
Serial.println(" feet");
status = pressure.startPressure(1);
if (status != 0)
{
delay(status);
status = pressure.getPressure(P,T);
if (status != 0)
{
Serial.print("absolute pressure: ");
Serial.print(P,2);
Serial.print(" mb, ");
Serial.print(P*0.0295333727,2);
Serial.println(" inHg");
p0 = pressure.sealevel(P,ALTITUDE);
Serial.print("relative (sea-level) pressure: ");
Serial.print(p0,2);
Serial.print(" mb, ");
Serial.print(p0*0.0295333727,2);
Serial.println(" inHg");
Serial.println("===================");
}
else Serial.println("error retrieving pressure measurement\n");
}
else Serial.println("error starting pressure measurement\n");
delay(5000); // Pause for 5 seconds.
}
}
outside
inside
for this 2 modules i use arduino pro mini combined with a ftdi232, in this form the systems works but i don't know how to implement those sensors for transmit data to an arduino uno combined with a rfm12b
// Transmitter
#include <JeeLib.h>
#define myNodeID 10
#define network 210
#define RF_freq RF12_433MHZ
typedef struct { int power1, power2, power3, battery; } PayloadTX;
PayloadTX emontx;
void setup() {
rf12_initialize(myNodeID,RF_freq,network);
Serial.begin(9600);
Serial.println("Transmitter");
}
void loop() {
emontx.power1=emontx.power1+1;
emontx.power2=emontx.power2+2;
emontx.power3=emontx.power3+3;
emontx.battery=emontx.battery+4;
rf12_sendNow(0, &emontx, sizeof emontx);
rf12_sendWait(2);
Serial.print("power1: "); Serial.println(emontx.power1);
Serial.print("power2: "); Serial.println(emontx.power2);
Serial.print("power3: "); Serial.println(emontx.power3);
Serial.print("battery: "); Serial.println(emontx.battery);
Serial.println(" ");
delay(4000);
}
// Receiver
#include <JeeLib.h>
#define myNodeID 2
#define network 210
#define RF_freq RF12_433MHZ
typedef struct { int power1, power2, power3, battery; } PayloadTX;
PayloadTX emontx;
const int emonTx_NodeID=10;
void setup() {
rf12_initialize(myNodeID,RF_freq,network);
Serial.begin(9600);
Serial.println("Receiver ");
}
void loop() {
if (rf12_recvDone()){
if (rf12_crc == 0 && (rf12_hdr & RF12_HDR_CTL) == 0) {
int node_id = (rf12_hdr & 0x1F);
if (node_id == emonTx_NodeID) {
emontx=*(PayloadTX*) rf12_data;
Serial.print("power1: "); Serial.println(emontx.power1);
Serial.print("power2: "); Serial.println(emontx.power2);
Serial.print("power3: "); Serial.println(emontx.power3);
Serial.print("battery: "); Serial.println(emontx.battery);
Serial.println(" ");
}
}
}
}
so arduino pro mini from inside/outside module act like transmitter and arduino(with rfm12b) act like receiver and i dont know how to combine the code exactly for show the data. i think the outside module need to be poered by baterry not connected at laptop, (port conflict).
Can help me anyone? any hints any ideas are welcome.
Thanks!