Temperatura
Dependencies: mbed X_NUCLEO_IKS01A2
main.cpp@1:8d29427339c0, 2020-04-23 (annotated)
- Committer:
- Mefistofelico
- Date:
- Thu Apr 23 12:32:08 2020 +0000
- Revision:
- 1:8d29427339c0
- Parent:
- 0:1473d1ad6c5d
Temperatura
Who changed what in which revision?
| User | Revision | Line number | New 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 | } |