Temperatura

Dependencies:   mbed X_NUCLEO_IKS01A2

Committer:
Mefistofelico
Date:
Thu Apr 23 12:32:08 2020 +0000
Revision:
1:8d29427339c0
Parent:
0:1473d1ad6c5d
Temperatura

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rschiano75 0:1473d1ad6c5d 1 #include "mbed.h"
rschiano75 0:1473d1ad6c5d 2 #include "string.h"
Mefistofelico 1:8d29427339c0 3 #include "XNucleoIKS01A2.h"
rschiano75 0:1473d1ad6c5d 4
rschiano75 0:1473d1ad6c5d 5 void modem_at_cmd(char*,int);
rschiano75 0:1473d1ad6c5d 6 void wait4join(void);
Mefistofelico 1:8d29427339c0 7 void lora_conn(void);
rschiano75 0:1473d1ad6c5d 8
Mefistofelico 1:8d29427339c0 9 static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);
Mefistofelico 1:8d29427339c0 10 static HTS221Sensor *temperature = mems_expansion_board -> ht_sensor;
rschiano75 0:1473d1ad6c5d 11
rschiano75 0:1473d1ad6c5d 12 char* msg1 = {"AT"};
rschiano75 0:1473d1ad6c5d 13 char* msg2 = {"AT+APPEUI=0000000000000001"};
rschiano75 0:1473d1ad6c5d 14 char* msg3 = {"AT+AK=00000000000000000000000000000001"};
rschiano75 0:1473d1ad6c5d 15 char* msg4 = {"AT+JOIN=1"};
Mefistofelico 1:8d29427339c0 16 char msg5[64];
Mefistofelico 1:8d29427339c0 17 char msg6[80];
Mefistofelico 1:8d29427339c0 18
Mefistofelico 1:8d29427339c0 19 char c;
Mefistofelico 1:8d29427339c0 20 float val_temperature;
Mefistofelico 1:8d29427339c0 21 uint8_t id;
Mefistofelico 1:8d29427339c0 22
Mefistofelico 1:8d29427339c0 23 Serial pc(D1, D0, 115200);
Mefistofelico 1:8d29427339c0 24 Serial lora(PB_6, PA_10, 115200);
rschiano75 0:1473d1ad6c5d 25
rschiano75 0:1473d1ad6c5d 26 int main()
rschiano75 0:1473d1ad6c5d 27 {
Mefistofelico 1:8d29427339c0 28 temperature->enable();
Mefistofelico 1:8d29427339c0 29 pc.printf("\r\n--- Starting new run ---\r\n");
Mefistofelico 1:8d29427339c0 30 temperature->read_id(&id);
Mefistofelico 1:8d29427339c0 31 pc.printf("HTS221 Sensor = 0x%X\r\n", id);
Mefistofelico 1:8d29427339c0 32 lora_conn();
Mefistofelico 1:8d29427339c0 33 while(1) {
Mefistofelico 1:8d29427339c0 34 int i = 0;
Mefistofelico 1:8d29427339c0 35 pc.printf("\r\n");
Mefistofelico 1:8d29427339c0 36 temperature -> get_temperature(&val_temperature);
Mefistofelico 1:8d29427339c0 37 pc.printf("temperatura [Celsius]:\t%f\n\r", val_temperature);
Mefistofelico 1:8d29427339c0 38 memset(msg5, 0, 64*sizeof(char)); // fill msg5 of zeros
Mefistofelico 1:8d29427339c0 39 sprintf(msg5, "{\"temp\": %f}", val_temperature); // converte in stringa c msg5
Mefistofelico 1:8d29427339c0 40 pc.printf(msg5);
Mefistofelico 1:8d29427339c0 41 pc.printf("\r\n");
Mefistofelico 1:8d29427339c0 42 pc.printf("Lunghezza messaggio %d", (int)strlen(msg5));
Mefistofelico 1:8d29427339c0 43 pc.printf("\r\n");
Mefistofelico 1:8d29427339c0 44 sprintf(msg6, "AT+SEND=15,");
Mefistofelico 1:8d29427339c0 45 for(i = 0; i<strlen(msg5); i++) {
Mefistofelico 1:8d29427339c0 46 sprintf(msg6+11+2*i, "%X", *(msg5+i));
Mefistofelico 1:8d29427339c0 47 }
Mefistofelico 1:8d29427339c0 48 sprintf(msg6+11+2*i,",0");
Mefistofelico 1:8d29427339c0 49 modem_at_cmd(msg6,(int)strlen(msg6));
Mefistofelico 1:8d29427339c0 50 pc.printf("Inviato send\r\n");
Mefistofelico 1:8d29427339c0 51 wait(3);
Mefistofelico 1:8d29427339c0 52 }
Mefistofelico 1:8d29427339c0 53 }
Mefistofelico 1:8d29427339c0 54
Mefistofelico 1:8d29427339c0 55 void modem_at_cmd(char* buffer, int n) {
Mefistofelico 1:8d29427339c0 56 for(uint8_t i=0; i<n; i++) {
Mefistofelico 1:8d29427339c0 57 lora.putc(buffer[i]);
Mefistofelico 1:8d29427339c0 58 pc.putc(buffer[i]);
Mefistofelico 1:8d29427339c0 59 }
Mefistofelico 1:8d29427339c0 60 lora.putc(13);
Mefistofelico 1:8d29427339c0 61 pc.putc(13);
Mefistofelico 1:8d29427339c0 62 pc.printf("\n");
Mefistofelico 1:8d29427339c0 63 c = 0;
Mefistofelico 1:8d29427339c0 64 do {
Mefistofelico 1:8d29427339c0 65 if (lora.readable()) {
Mefistofelico 1:8d29427339c0 66 c = lora.getc();
Mefistofelico 1:8d29427339c0 67 pc.putc(c);
Mefistofelico 1:8d29427339c0 68 }
Mefistofelico 1:8d29427339c0 69 } while(c!=' ');
Mefistofelico 1:8d29427339c0 70 }
Mefistofelico 1:8d29427339c0 71
Mefistofelico 1:8d29427339c0 72 void wait4join() {
Mefistofelico 1:8d29427339c0 73 c = 0;
Mefistofelico 1:8d29427339c0 74 do {
Mefistofelico 1:8d29427339c0 75 if (lora.readable()) {
Mefistofelico 1:8d29427339c0 76 c = lora.getc();
Mefistofelico 1:8d29427339c0 77 pc.putc(c);
Mefistofelico 1:8d29427339c0 78 }
Mefistofelico 1:8d29427339c0 79 } while(c != 'd');
Mefistofelico 1:8d29427339c0 80 }
Mefistofelico 1:8d29427339c0 81
Mefistofelico 1:8d29427339c0 82 void lora_conn() {
Mefistofelico 1:8d29427339c0 83 pc.printf("Connessione al modem\r\n");
rschiano75 0:1473d1ad6c5d 84 modem_at_cmd(msg1,(int)strlen(msg1));
rschiano75 0:1473d1ad6c5d 85 pc.printf("Inviato AT\r\n");
rschiano75 0:1473d1ad6c5d 86 wait(1);
rschiano75 0:1473d1ad6c5d 87 modem_at_cmd(msg2,(int)strlen(msg2));
rschiano75 0:1473d1ad6c5d 88 pc.printf("Inviato EUI\r\n");
rschiano75 0:1473d1ad6c5d 89 wait(1);
rschiano75 0:1473d1ad6c5d 90 modem_at_cmd(msg3,(int)strlen(msg3));
rschiano75 0:1473d1ad6c5d 91 pc.printf("Inviato AK\r\n");
rschiano75 0:1473d1ad6c5d 92 wait(1);
Mefistofelico 1:8d29427339c0 93 modem_at_cmd("AT+ADR=1",(int)strlen("AT+ADR=1"));
Mefistofelico 1:8d29427339c0 94 pc.printf("Inviato AK\r\n");
Mefistofelico 1:8d29427339c0 95 wait(1);
Mefistofelico 1:8d29427339c0 96 modem_at_cmd("AT+DC=0",(int)strlen("AT+DC=0"));
Mefistofelico 1:8d29427339c0 97 pc.printf("Inviato AK\r\n");
Mefistofelico 1:8d29427339c0 98 wait(1);
rschiano75 0:1473d1ad6c5d 99 modem_at_cmd(msg4,(int)strlen(msg4));
rschiano75 0:1473d1ad6c5d 100 pc.printf("Inviato JOIN\r\n");
rschiano75 0:1473d1ad6c5d 101 wait4join();
rschiano75 0:1473d1ad6c5d 102 }