DHT22 tester (p21) (p22) 4,7kR pullup

Dependencies:   mbed

Fork of Solar by Skovbrynet

Committer:
Tuxitheone
Date:
Tue Mar 08 20:52:15 2016 +0000
Revision:
3:ae94f568bde5
Parent:
2:a347938f640b
Child:
4:e2c50e38f7e0
?ndret lidt forsk?lligt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Tuxitheone 3:ae94f568bde5 1 #include "mbed.h"
Tuxitheone 1:87df5ce85ede 2 #include "TextLCD.h"
Tuxitheone 1:87df5ce85ede 3 #include "DHT.h"
Tuxitheone 3:ae94f568bde5 4 #include "BH1750.h"
Tuxitheone 1:87df5ce85ede 5
Tuxitheone 1:87df5ce85ede 6 #define VoltDevider 16.0*3.3 // --- Voltade devider Solar Cell --1k--|---15k--- 50V "V"
Tuxitheone 1:87df5ce85ede 7 #define VoltBatDevider 9.2*3.3 // --- Voltade devider Battery --1k--|---8.2k--- 30V "V"
Tuxitheone 1:87df5ce85ede 8 #define ISensorFaktor 1*3.5 // --- ACS712T 5A "I"
Tuxitheone 1:87df5ce85ede 9
Tuxitheone 1:87df5ce85ede 10 RawSerial pc(USBTX, USBRX);//Serial LOG
Tuxitheone 1:87df5ce85ede 11
Tuxitheone 2:a347938f640b 12 I2C i2c(p28,p27); // SDA, SCL
Tuxitheone 2:a347938f640b 13 BH1750 lum(i2c); // BH1750 SDA, SCL (Data available every 120mSec)
Tuxitheone 2:a347938f640b 14
Tuxitheone 1:87df5ce85ede 15 AnalogIn Ain1(p20);// --- Voltade devider Battery --1k--|---8.2k--- 30V "V"
Tuxitheone 2:a347938f640b 16 AnalogIn Ain2(p16);// --- ACS712T 5A "I" Battery chr
Tuxitheone 2:a347938f640b 17 AnalogIn Ain3(p11);// --- ACS712T 5A "I" Solar
Tuxitheone 1:87df5ce85ede 18 AnalogIn CellLow1(p18);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V"
Tuxitheone 1:87df5ce85ede 19 AnalogIn CellLow2(p17);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V"
Tuxitheone 2:a347938f640b 20 AnalogIn CellTotal(p19);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V"
Tuxitheone 1:87df5ce85ede 21
Tuxitheone 1:87df5ce85ede 22 AnalogIn tempsensor1(p15);//AD22103 Sensor
Tuxitheone 1:87df5ce85ede 23 DHT dht22(p13,DHT22); //Udendørs temperatur
Tuxitheone 1:87df5ce85ede 24
Tuxitheone 1:87df5ce85ede 25 TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD20x4); // rs, e, d4-d7
Tuxitheone 1:87df5ce85ede 26
Tuxitheone 1:87df5ce85ede 27 InterruptIn Knap(p14);
Tuxitheone 1:87df5ce85ede 28 DigitalOut LCDBackLigth(p12);
Tuxitheone 1:87df5ce85ede 29 Timeout BL;
Tuxitheone 1:87df5ce85ede 30
Tuxitheone 1:87df5ce85ede 31 void LCDDisplay(int menu);
Tuxitheone 1:87df5ce85ede 32
Tuxitheone 1:87df5ce85ede 33 float VRaw; //This will store our raw ADC data
Tuxitheone 1:87df5ce85ede 34 float IRaw;
Tuxitheone 3:ae94f568bde5 35 float IRaw1;
Tuxitheone 1:87df5ce85ede 36
Tuxitheone 1:87df5ce85ede 37 float UdeTemp;
Tuxitheone 1:87df5ce85ede 38 float UdeHym;
Tuxitheone 1:87df5ce85ede 39 float Cells[4];
Tuxitheone 1:87df5ce85ede 40
Tuxitheone 1:87df5ce85ede 41 int menustate=1;
Tuxitheone 1:87df5ce85ede 42
Tuxitheone 1:87df5ce85ede 43 float ReadTempetur(void)
Tuxitheone 1:87df5ce85ede 44 {
Tuxitheone 1:87df5ce85ede 45 float tempreading=(tempsensor1.read()*3.3-0.25)/0.028;
Tuxitheone 1:87df5ce85ede 46 return tempreading;
Tuxitheone 1:87df5ce85ede 47 }
Tuxitheone 1:87df5ce85ede 48
Tuxitheone 1:87df5ce85ede 49
Tuxitheone 1:87df5ce85ede 50 void LEDOff()
Tuxitheone 1:87df5ce85ede 51 {
Tuxitheone 1:87df5ce85ede 52 LCDBackLigth=0;
Tuxitheone 1:87df5ce85ede 53 LCDDisplay(0);
Tuxitheone 1:87df5ce85ede 54 }
gert_lauritsen 0:40a765d1b46b 55
Tuxitheone 1:87df5ce85ede 56 void LEDON()
Tuxitheone 1:87df5ce85ede 57 {
Tuxitheone 1:87df5ce85ede 58 LCDBackLigth=1;
Tuxitheone 1:87df5ce85ede 59 BL.attach(&LEDOff,10.0);
Tuxitheone 1:87df5ce85ede 60 LCDDisplay(menustate);
Tuxitheone 1:87df5ce85ede 61 menustate++;
Tuxitheone 1:87df5ce85ede 62 if (menustate>3) menustate=1;
Tuxitheone 1:87df5ce85ede 63 }
Tuxitheone 1:87df5ce85ede 64
Tuxitheone 1:87df5ce85ede 65
Tuxitheone 1:87df5ce85ede 66 void LCDDisplay(int menu)
Tuxitheone 1:87df5ce85ede 67 {
Tuxitheone 1:87df5ce85ede 68 switch (menu) {
Tuxitheone 1:87df5ce85ede 69 case 0: {
Tuxitheone 1:87df5ce85ede 70 lcd.cls();
Tuxitheone 1:87df5ce85ede 71 lcd.printf("###################\n");
Tuxitheone 1:87df5ce85ede 72 lcd.printf("#### TuxiNet.dk ###\n");
Tuxitheone 1:87df5ce85ede 73 lcd.printf("### Solar Charger #\n");
Tuxitheone 1:87df5ce85ede 74 lcd.printf("###################");
Tuxitheone 1:87df5ce85ede 75 }
Tuxitheone 1:87df5ce85ede 76 break;
gert_lauritsen 0:40a765d1b46b 77
Tuxitheone 1:87df5ce85ede 78 case 1: {
Tuxitheone 1:87df5ce85ede 79 lcd.cls();
Tuxitheone 1:87df5ce85ede 80 lcd.printf("Battery\n");
Tuxitheone 1:87df5ce85ede 81 lcd.printf("%.2fV %.2fA %.2fW\n",VRaw,IRaw,IRaw*VRaw);
Tuxitheone 1:87df5ce85ede 82 }
Tuxitheone 1:87df5ce85ede 83 break;
Tuxitheone 1:87df5ce85ede 84
Tuxitheone 1:87df5ce85ede 85 case 2: {
Tuxitheone 1:87df5ce85ede 86 lcd.cls();
Tuxitheone 1:87df5ce85ede 87 lcd.printf("Temp:\n");
Tuxitheone 1:87df5ce85ede 88 lcd.printf("Inde %.2fC\n Ude: %.2fC %.1f%\n",ReadTempetur(),UdeTemp,UdeHym);
Tuxitheone 1:87df5ce85ede 89 }
Tuxitheone 1:87df5ce85ede 90 break;
Tuxitheone 1:87df5ce85ede 91
Tuxitheone 1:87df5ce85ede 92 case 3: {
Tuxitheone 1:87df5ce85ede 93 lcd.cls();
Tuxitheone 1:87df5ce85ede 94 lcd.printf("Solar Cell:\n");
Tuxitheone 1:87df5ce85ede 95 lcd.printf("C1 %.1f C2 %.1f\n C3 %.1f C4 %.1f\n",Cells[0],Cells[1],Cells[2],Cells[3]);
Tuxitheone 3:ae94f568bde5 96 lcd.printf("%.1fV %.1fA %.1fW\n",Cells[2],IRaw1,IRaw1*Cells[2]);
Tuxitheone 1:87df5ce85ede 97 }
Tuxitheone 1:87df5ce85ede 98 break;
Tuxitheone 1:87df5ce85ede 99
Tuxitheone 1:87df5ce85ede 100 case 4: {
Tuxitheone 1:87df5ce85ede 101 lcd.cls();
Tuxitheone 1:87df5ce85ede 102 lcd.printf("Reng / LUX");
Tuxitheone 2:a347938f640b 103 lcd.printf("LUM: %.2f [Lux]\n", lum.lux());
Tuxitheone 1:87df5ce85ede 104 }
Tuxitheone 1:87df5ce85ede 105 break;
Tuxitheone 1:87df5ce85ede 106 }
Tuxitheone 1:87df5ce85ede 107 }
gert_lauritsen 0:40a765d1b46b 108
gert_lauritsen 0:40a765d1b46b 109 int main()
gert_lauritsen 0:40a765d1b46b 110 {
Tuxitheone 1:87df5ce85ede 111 Knap.rise(&LEDON);
Tuxitheone 1:87df5ce85ede 112 LCDDisplay(0);
gert_lauritsen 0:40a765d1b46b 113 while(1) {
Tuxitheone 1:87df5ce85ede 114 VRaw = Ain1.read()*VoltBatDevider;
Tuxitheone 1:87df5ce85ede 115 IRaw = ((Ain2.read()*3.3)-2.5)*ISensorFaktor;
Tuxitheone 2:a347938f640b 116 IRaw1 = ((Ain3.read()*3.3)-2.5)*ISensorFaktor;
Tuxitheone 1:87df5ce85ede 117 Cells[0]=CellLow1.read()*VoltDevider;
Tuxitheone 1:87df5ce85ede 118 Cells[1]=CellLow2.read()*VoltDevider;
Tuxitheone 1:87df5ce85ede 119 Cells[2]=CellTotal.read()*VoltDevider-Cells[0];
Tuxitheone 1:87df5ce85ede 120 Cells[3]=CellTotal.read()*VoltDevider-Cells[1];
gert_lauritsen 0:40a765d1b46b 121
Tuxitheone 1:87df5ce85ede 122 int err=dht22.readData();
Tuxitheone 1:87df5ce85ede 123 wait(2.0);
Tuxitheone 1:87df5ce85ede 124 if (err==0) {
Tuxitheone 1:87df5ce85ede 125 UdeTemp=dht22.ReadTemperature(CELCIUS);
Tuxitheone 1:87df5ce85ede 126 UdeHym=dht22.ReadHumidity();
Tuxitheone 1:87df5ce85ede 127 }
gert_lauritsen 0:40a765d1b46b 128
Tuxitheone 1:87df5ce85ede 129 //Serial Log
Tuxitheone 1:87df5ce85ede 130 pc.printf("Bettery:\r\n");
Tuxitheone 1:87df5ce85ede 131 pc.printf("%.3f Volts %.3f Amps %.3f watt\r\n",VRaw,IRaw,IRaw*VRaw);
Tuxitheone 1:87df5ce85ede 132 pc.printf("Temp:\r\n");
Tuxitheone 1:87df5ce85ede 133 pc.printf("Inde %.2fC Ude: %.2fC %.1f% \n\r",ReadTempetur(),UdeTemp,UdeHym);
Tuxitheone 1:87df5ce85ede 134 pc.printf("Solar Cell:\r\n");
Tuxitheone 1:87df5ce85ede 135 pc.printf("C1 %.1f C2 %.1f C3 %.1f C4 %.1f \n\n\r",Cells[0],Cells[1],Cells[2],Cells[3]);
Tuxitheone 3:ae94f568bde5 136 pc.printf("%.3f Volt %.3f Amp %.3f Watt\r\n",Cells[2],IRaw1,IRaw1*Cells[2]);
Tuxitheone 2:a347938f640b 137 pc.printf("Illuminance: %+7.2f [Lux]\r\n", lum.lux());
Tuxitheone 1:87df5ce85ede 138
Tuxitheone 1:87df5ce85ede 139
Tuxitheone 1:87df5ce85ede 140
Tuxitheone 1:87df5ce85ede 141 wait(2.0);
gert_lauritsen 0:40a765d1b46b 142 }
gert_lauritsen 0:40a765d1b46b 143 }