for test
Dependencies: mbed STM32F4_RNG DHT BMP180
main.cpp@1:2be15f3211a7, 2020-05-13 (annotated)
- Committer:
- zeroking5
- Date:
- Wed May 13 06:03:38 2020 +0000
- Revision:
- 1:2be15f3211a7
- Parent:
- 0:8e7ad44f2e4b
wetherMeter first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zeroking5 | 0:8e7ad44f2e4b | 1 | #include "mbed.h" |
zeroking5 | 0:8e7ad44f2e4b | 2 | #include "STM32F4_RNG.h" |
zeroking5 | 0:8e7ad44f2e4b | 3 | #include "DHT.h" |
zeroking5 | 0:8e7ad44f2e4b | 4 | #include "BMP180.h" |
zeroking5 | 0:8e7ad44f2e4b | 5 | Serial pc(USBTX, USBRX); |
zeroking5 | 0:8e7ad44f2e4b | 6 | Serial esp(D8, D2); // tx D8, rx D2 |
zeroking5 | 0:8e7ad44f2e4b | 7 | DigitalOut reset(D4); |
zeroking5 | 0:8e7ad44f2e4b | 8 | Timer t; |
zeroking5 | 0:8e7ad44f2e4b | 9 | |
zeroking5 | 0:8e7ad44f2e4b | 10 | STM32F4_RNG RANDOM1; |
zeroking5 | 0:8e7ad44f2e4b | 11 | |
zeroking5 | 0:8e7ad44f2e4b | 12 | int mycount,ended,timeout; |
zeroking5 | 0:8e7ad44f2e4b | 13 | char buf[1024]; |
zeroking5 | 0:8e7ad44f2e4b | 14 | char snd[255]; |
zeroking5 | 0:8e7ad44f2e4b | 15 | char ssid[32] = "King5"; // enter WiFi router ssid inside the quotes |
zeroking5 | 0:8e7ad44f2e4b | 16 | char pwd [32] = "88888888"; // enter WiFi router password inside the quotes |
zeroking5 | 0:8e7ad44f2e4b | 17 | |
zeroking5 | 0:8e7ad44f2e4b | 18 | char apiKey[32] = "UADVBX13ELBYAO7M"; |
zeroking5 | 0:8e7ad44f2e4b | 19 | |
zeroking5 | 0:8e7ad44f2e4b | 20 | unsigned long ranval; |
zeroking5 | 0:8e7ad44f2e4b | 21 | |
zeroking5 | 0:8e7ad44f2e4b | 22 | #define TEMPVAL 23 |
zeroking5 | 0:8e7ad44f2e4b | 23 | #define HUMIVAL 67 |
zeroking5 | 0:8e7ad44f2e4b | 24 | #define RAYVAL 45 |
zeroking5 | 0:8e7ad44f2e4b | 25 | #define PREVAL 340 |
zeroking5 | 0:8e7ad44f2e4b | 26 | |
zeroking5 | 0:8e7ad44f2e4b | 27 | int tempVal = 23; |
zeroking5 | 0:8e7ad44f2e4b | 28 | int humiVal = 67; |
zeroking5 | 0:8e7ad44f2e4b | 29 | int rayVal = 45; |
zeroking5 | 0:8e7ad44f2e4b | 30 | int pressVal = 340; |
zeroking5 | 0:8e7ad44f2e4b | 31 | unsigned long randVal; |
zeroking5 | 0:8e7ad44f2e4b | 32 | unsigned char shortrandVal= 0; |
zeroking5 | 0:8e7ad44f2e4b | 33 | float fhumi,ftemp,fray,fpress; |
zeroking5 | 0:8e7ad44f2e4b | 34 | |
zeroking5 | 0:8e7ad44f2e4b | 35 | |
zeroking5 | 0:8e7ad44f2e4b | 36 | void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(),HTTPConfig(),PostData(); |
zeroking5 | 0:8e7ad44f2e4b | 37 | AnalogIn analog_value(A0); |
zeroking5 | 0:8e7ad44f2e4b | 38 | |
zeroking5 | 0:8e7ad44f2e4b | 39 | |
zeroking5 | 0:8e7ad44f2e4b | 40 | |
zeroking5 | 0:8e7ad44f2e4b | 41 | DHT devDht(D7,DHT11); |
zeroking5 | 0:8e7ad44f2e4b | 42 | BMP180 bmp180(PB_14, PB_13); |
zeroking5 | 0:8e7ad44f2e4b | 43 | |
zeroking5 | 0:8e7ad44f2e4b | 44 | |
zeroking5 | 0:8e7ad44f2e4b | 45 | |
zeroking5 | 0:8e7ad44f2e4b | 46 | int main() |
zeroking5 | 0:8e7ad44f2e4b | 47 | { |
zeroking5 | 0:8e7ad44f2e4b | 48 | reset=0; //hardware reset for 8266 |
zeroking5 | 0:8e7ad44f2e4b | 49 | pc.baud(115200); // set what you want here depending on your terminal program speed |
zeroking5 | 1:2be15f3211a7 | 50 | pc.printf("\f\n\r-------------ESP8266 Hardware Rese444t-------------\n\r"); |
zeroking5 | 0:8e7ad44f2e4b | 51 | wait(0.5); |
zeroking5 | 0:8e7ad44f2e4b | 52 | reset=1; |
zeroking5 | 0:8e7ad44f2e4b | 53 | timeout=2; |
zeroking5 | 0:8e7ad44f2e4b | 54 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 55 | esp.baud(115200); // change this to the new ESP8266 baudrate if it is changed at any time. |
zeroking5 | 0:8e7ad44f2e4b | 56 | //ESPsetbaudrate(); //****************** include this routine to set a different ESP8266 baudrate ****************** |
zeroking5 | 0:8e7ad44f2e4b | 57 | //ESPconfig(); //****************** include Config to set the ESP8266 configuration *********************** |
zeroking5 | 0:8e7ad44f2e4b | 58 | |
zeroking5 | 0:8e7ad44f2e4b | 59 | |
zeroking5 | 0:8e7ad44f2e4b | 60 | HTTPConfig(); |
zeroking5 | 0:8e7ad44f2e4b | 61 | |
zeroking5 | 0:8e7ad44f2e4b | 62 | |
zeroking5 | 0:8e7ad44f2e4b | 63 | // continuosly get AP list and IP |
zeroking5 | 0:8e7ad44f2e4b | 64 | while(1) |
zeroking5 | 0:8e7ad44f2e4b | 65 | { |
zeroking5 | 0:8e7ad44f2e4b | 66 | //pc.printf("get data from server\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 67 | |
zeroking5 | 0:8e7ad44f2e4b | 68 | |
zeroking5 | 0:8e7ad44f2e4b | 69 | PostData(); |
zeroking5 | 0:8e7ad44f2e4b | 70 | |
zeroking5 | 0:8e7ad44f2e4b | 71 | |
zeroking5 | 0:8e7ad44f2e4b | 72 | |
zeroking5 | 0:8e7ad44f2e4b | 73 | } |
zeroking5 | 0:8e7ad44f2e4b | 74 | |
zeroking5 | 0:8e7ad44f2e4b | 75 | } |
zeroking5 | 0:8e7ad44f2e4b | 76 | // Sets new ESP8266 baurate, change the esp.baud(xxxxx) to match your new setting once this has been executed |
zeroking5 | 0:8e7ad44f2e4b | 77 | void ESPsetbaudrate() |
zeroking5 | 0:8e7ad44f2e4b | 78 | { |
zeroking5 | 0:8e7ad44f2e4b | 79 | strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate |
zeroking5 | 0:8e7ad44f2e4b | 80 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 81 | } |
zeroking5 | 0:8e7ad44f2e4b | 82 | // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++ |
zeroking5 | 0:8e7ad44f2e4b | 83 | void ESPconfig() |
zeroking5 | 0:8e7ad44f2e4b | 84 | { |
zeroking5 | 0:8e7ad44f2e4b | 85 | |
zeroking5 | 0:8e7ad44f2e4b | 86 | } |
zeroking5 | 0:8e7ad44f2e4b | 87 | void SendCMD() |
zeroking5 | 0:8e7ad44f2e4b | 88 | { |
zeroking5 | 0:8e7ad44f2e4b | 89 | esp.printf("%s", snd); |
zeroking5 | 0:8e7ad44f2e4b | 90 | } |
zeroking5 | 0:8e7ad44f2e4b | 91 | void getreply() |
zeroking5 | 0:8e7ad44f2e4b | 92 | { |
zeroking5 | 0:8e7ad44f2e4b | 93 | memset(buf, '\0', sizeof(buf)); |
zeroking5 | 0:8e7ad44f2e4b | 94 | t.start(); |
zeroking5 | 0:8e7ad44f2e4b | 95 | ended=0; |
zeroking5 | 0:8e7ad44f2e4b | 96 | mycount=0; |
zeroking5 | 0:8e7ad44f2e4b | 97 | while(!ended) { |
zeroking5 | 0:8e7ad44f2e4b | 98 | if(esp.readable()) { |
zeroking5 | 0:8e7ad44f2e4b | 99 | buf[mycount] = esp.getc(); |
zeroking5 | 0:8e7ad44f2e4b | 100 | mycount++; |
zeroking5 | 0:8e7ad44f2e4b | 101 | } |
zeroking5 | 0:8e7ad44f2e4b | 102 | if(t.read() > timeout) { |
zeroking5 | 0:8e7ad44f2e4b | 103 | ended = 1; |
zeroking5 | 0:8e7ad44f2e4b | 104 | t.stop(); |
zeroking5 | 0:8e7ad44f2e4b | 105 | t.reset(); |
zeroking5 | 0:8e7ad44f2e4b | 106 | } |
zeroking5 | 0:8e7ad44f2e4b | 107 | } |
zeroking5 | 1:2be15f3211a7 | 108 | buf[mycount]=0; |
zeroking5 | 1:2be15f3211a7 | 109 | pc.printf("At respon:%s\r\n",buf); |
zeroking5 | 1:2be15f3211a7 | 110 | |
zeroking5 | 1:2be15f3211a7 | 111 | |
zeroking5 | 0:8e7ad44f2e4b | 112 | } |
zeroking5 | 0:8e7ad44f2e4b | 113 | |
zeroking5 | 0:8e7ad44f2e4b | 114 | void HTTPConfig() |
zeroking5 | 0:8e7ad44f2e4b | 115 | { |
zeroking5 | 0:8e7ad44f2e4b | 116 | pc.printf("\n---------- Get Version ----------\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 117 | strcpy(snd,"AT+GMR\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 118 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 119 | timeout=4; |
zeroking5 | 0:8e7ad44f2e4b | 120 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 121 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 122 | wait(3); |
zeroking5 | 0:8e7ad44f2e4b | 123 | // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station) |
zeroking5 | 0:8e7ad44f2e4b | 124 | pc.printf("\n---------- Setting Mode ----------\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 125 | strcpy(snd, "AT+CWMODE_DEF=1\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 126 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 127 | timeout=4; |
zeroking5 | 0:8e7ad44f2e4b | 128 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 129 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 130 | wait(2); |
zeroking5 | 0:8e7ad44f2e4b | 131 | |
zeroking5 | 0:8e7ad44f2e4b | 132 | pc.printf("\n---------- Connecting to AP ----------\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 133 | pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd); |
zeroking5 | 0:8e7ad44f2e4b | 134 | strcpy(snd, "AT+CWJAP_DEF=\""); |
zeroking5 | 0:8e7ad44f2e4b | 135 | strcat(snd, ssid); |
zeroking5 | 0:8e7ad44f2e4b | 136 | strcat(snd, "\",\""); |
zeroking5 | 0:8e7ad44f2e4b | 137 | strcat(snd, pwd); |
zeroking5 | 0:8e7ad44f2e4b | 138 | strcat(snd, "\"\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 139 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 140 | timeout=10; |
zeroking5 | 0:8e7ad44f2e4b | 141 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 142 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 143 | wait(5); |
zeroking5 | 0:8e7ad44f2e4b | 144 | |
zeroking5 | 0:8e7ad44f2e4b | 145 | pc.printf("\n-----------set to auto connect -----\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 146 | strcpy(snd,"AT+CWAUTOCONN=1\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 147 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 148 | timeout=4; |
zeroking5 | 0:8e7ad44f2e4b | 149 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 150 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 151 | wait(2); |
zeroking5 | 0:8e7ad44f2e4b | 152 | |
zeroking5 | 0:8e7ad44f2e4b | 153 | pc.printf("\n-----------set sigle connect -----\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 154 | strcpy(snd,"AT+CIPMUX=0\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 155 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 156 | timeout=4; |
zeroking5 | 0:8e7ad44f2e4b | 157 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 158 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 159 | wait(2); |
zeroking5 | 0:8e7ad44f2e4b | 160 | |
zeroking5 | 0:8e7ad44f2e4b | 161 | pc.printf("\n------------connect to server --------\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 162 | strcpy(snd,"AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 163 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 164 | timeout=4; |
zeroking5 | 0:8e7ad44f2e4b | 165 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 166 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 167 | wait(2); |
zeroking5 | 0:8e7ad44f2e4b | 168 | |
zeroking5 | 0:8e7ad44f2e4b | 169 | |
zeroking5 | 0:8e7ad44f2e4b | 170 | pc.printf("\n------------set to touchuan --------\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 171 | strcpy(snd,"AT+CIPMODE=1\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 172 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 173 | timeout=4; |
zeroking5 | 0:8e7ad44f2e4b | 174 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 175 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 176 | wait(2); |
zeroking5 | 0:8e7ad44f2e4b | 177 | |
zeroking5 | 0:8e7ad44f2e4b | 178 | pc.printf("\n-----------starting send--------\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 179 | strcpy(snd,"AT+CIPSEND\r\n"); |
zeroking5 | 0:8e7ad44f2e4b | 180 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 181 | timeout=4; |
zeroking5 | 0:8e7ad44f2e4b | 182 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 183 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 184 | wait(2); |
zeroking5 | 0:8e7ad44f2e4b | 185 | |
zeroking5 | 0:8e7ad44f2e4b | 186 | |
zeroking5 | 0:8e7ad44f2e4b | 187 | |
zeroking5 | 0:8e7ad44f2e4b | 188 | |
zeroking5 | 0:8e7ad44f2e4b | 189 | } |
zeroking5 | 0:8e7ad44f2e4b | 190 | char postStr[256]; |
zeroking5 | 0:8e7ad44f2e4b | 191 | void PostData() |
zeroking5 | 0:8e7ad44f2e4b | 192 | { |
zeroking5 | 0:8e7ad44f2e4b | 193 | int len; |
zeroking5 | 0:8e7ad44f2e4b | 194 | |
zeroking5 | 0:8e7ad44f2e4b | 195 | |
zeroking5 | 0:8e7ad44f2e4b | 196 | if(devDht.readData() == ERROR_NONE) |
zeroking5 | 0:8e7ad44f2e4b | 197 | { |
zeroking5 | 0:8e7ad44f2e4b | 198 | fhumi = devDht.ReadHumidity(); |
zeroking5 | 0:8e7ad44f2e4b | 199 | ftemp = devDht.ReadTemperature(CELCIUS); |
zeroking5 | 0:8e7ad44f2e4b | 200 | pc.printf("temp:%4.1f\thumi:%4.1f\n",ftemp,fhumi); |
zeroking5 | 0:8e7ad44f2e4b | 201 | } |
zeroking5 | 1:2be15f3211a7 | 202 | fray = analog_value.read()*3300; |
zeroking5 | 0:8e7ad44f2e4b | 203 | |
zeroking5 | 0:8e7ad44f2e4b | 204 | bmp180.normalize(); |
zeroking5 | 0:8e7ad44f2e4b | 205 | fpress = bmp180.read_pressure(); |
zeroking5 | 0:8e7ad44f2e4b | 206 | //pressVal = bmp180.read_temperature(); |
zeroking5 | 0:8e7ad44f2e4b | 207 | |
zeroking5 | 0:8e7ad44f2e4b | 208 | wait(2); |
zeroking5 | 0:8e7ad44f2e4b | 209 | //len = sprintf(snd,"GET https://api.thingspeak.com/update?api_key=07A5WIB5QT14WRGV&field1=%d&field2=%d&field3=%d&field4=%d\r\n",tempVal,humiVal,pressVal,rayVal); |
zeroking5 | 0:8e7ad44f2e4b | 210 | len = sprintf(snd,"GET https://api.thingspeak.com/update?api_key=07A5WIB5QT14WRGV&field1=%.1f&field2=%.1f&field3=%.1f&field4=%.2f\r\n",ftemp,fhumi,fpress,fray); |
zeroking5 | 0:8e7ad44f2e4b | 211 | |
zeroking5 | 0:8e7ad44f2e4b | 212 | SendCMD(); |
zeroking5 | 0:8e7ad44f2e4b | 213 | |
zeroking5 | 0:8e7ad44f2e4b | 214 | timeout=10; |
zeroking5 | 0:8e7ad44f2e4b | 215 | getreply(); |
zeroking5 | 0:8e7ad44f2e4b | 216 | pc.printf(buf); |
zeroking5 | 0:8e7ad44f2e4b | 217 | |
zeroking5 | 0:8e7ad44f2e4b | 218 | pc.printf("\r\n%s",snd); |
zeroking5 | 0:8e7ad44f2e4b | 219 | wait(28); |
zeroking5 | 0:8e7ad44f2e4b | 220 | |
zeroking5 | 0:8e7ad44f2e4b | 221 | } |
zeroking5 | 0:8e7ad44f2e4b | 222 |