smartfarm

Committer:
s1710879
Date:
Mon Jun 13 08:58:02 2022 +0000
Revision:
0:8ea9795d19b5
77

Who changed what in which revision?

UserRevisionLine numberNew contents of line
s1710879 0:8ea9795d19b5 1 // ======================================================================
s1710879 0:8ea9795d19b5 2
s1710879 0:8ea9795d19b5 3 #include "mbed.h"
s1710879 0:8ea9795d19b5 4 #include "ESP-call.h"
s1710879 0:8ea9795d19b5 5
s1710879 0:8ea9795d19b5 6
s1710879 0:8ea9795d19b5 7
s1710879 0:8ea9795d19b5 8 // ======================================================================
s1710879 0:8ea9795d19b5 9
s1710879 0:8ea9795d19b5 10 RawSerial PC(USBTX, USBRX); // PC = (USBTX=TX, USBRX=RX)
s1710879 0:8ea9795d19b5 11 RawSerial ESP(D1, D0); // ESP = (D1=TX, D0=RX)
s1710879 0:8ea9795d19b5 12 DigitalOut ESP_reset_pin(D2); // ESP_reset_pin = D2
s1710879 0:8ea9795d19b5 13
s1710879 0:8ea9795d19b5 14 // ======================================================================
s1710879 0:8ea9795d19b5 15
s1710879 0:8ea9795d19b5 16 char ESP_recv_buffer[1028]; // ESP receive buffer
s1710879 0:8ea9795d19b5 17 int ESP_recv_buffer_index; // ESP receive buffer index
s1710879 0:8ea9795d19b5 18
s1710879 0:8ea9795d19b5 19 // ======================================================================
s1710879 0:8ea9795d19b5 20 // ISR for redirecting PC RX to ESP TX
s1710879 0:8ea9795d19b5 21
s1710879 0:8ea9795d19b5 22 void ISR_PC_to_ESP()
s1710879 0:8ea9795d19b5 23 {
s1710879 0:8ea9795d19b5 24 while(PC.readable()) {
s1710879 0:8ea9795d19b5 25 ESP.putc(PC.getc());
s1710879 0:8ea9795d19b5 26 }
s1710879 0:8ea9795d19b5 27 }
s1710879 0:8ea9795d19b5 28
s1710879 0:8ea9795d19b5 29 // ======================================================================
s1710879 0:8ea9795d19b5 30 // ISR for redirecting ESP RX to PC TX
s1710879 0:8ea9795d19b5 31
s1710879 0:8ea9795d19b5 32 void ISR_ESP_to_PC()
s1710879 0:8ea9795d19b5 33 {
s1710879 0:8ea9795d19b5 34 while(ESP.readable()) {
s1710879 0:8ea9795d19b5 35 PC.putc(ESP.getc());
s1710879 0:8ea9795d19b5 36 }
s1710879 0:8ea9795d19b5 37 }
s1710879 0:8ea9795d19b5 38
s1710879 0:8ea9795d19b5 39 // ======================================================================
s1710879 0:8ea9795d19b5 40 // ISR for redirecting ESP RX to ESP_recv_buffer[]
s1710879 0:8ea9795d19b5 41
s1710879 0:8ea9795d19b5 42 void ISR_ESP_to_recv_buffer()
s1710879 0:8ea9795d19b5 43 {
s1710879 0:8ea9795d19b5 44 while(ESP.readable()) {
s1710879 0:8ea9795d19b5 45 ESP_recv_buffer[ESP_recv_buffer_index++] = ESP.getc();
s1710879 0:8ea9795d19b5 46 }
s1710879 0:8ea9795d19b5 47 }
s1710879 0:8ea9795d19b5 48
s1710879 0:8ea9795d19b5 49 // ======================================================================
s1710879 0:8ea9795d19b5 50 // Reset ESP and wait for 1 second
s1710879 0:8ea9795d19b5 51
s1710879 0:8ea9795d19b5 52 void ESP_reset(void)
s1710879 0:8ea9795d19b5 53 {
s1710879 0:8ea9795d19b5 54 ESP_reset_pin = 0;
s1710879 0:8ea9795d19b5 55 ESP_reset_pin = 1;
s1710879 0:8ea9795d19b5 56 thread_sleep_for(1000);
s1710879 0:8ea9795d19b5 57 }
s1710879 0:8ea9795d19b5 58
s1710879 0:8ea9795d19b5 59 // ======================================================================
s1710879 0:8ea9795d19b5 60 // Setup ESP echo/noecho mode
s1710879 0:8ea9795d19b5 61 // ======================================================================
s1710879 0:8ea9795d19b5 62
s1710879 0:8ea9795d19b5 63 void ESP_echo(void)
s1710879 0:8ea9795d19b5 64 {
s1710879 0:8ea9795d19b5 65 NodeMCU_PGM uart_setup_echo = {
s1710879 0:8ea9795d19b5 66 "uart.setup(0, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1, 1)\r\n", 1,
s1710879 0:8ea9795d19b5 67 };
s1710879 0:8ea9795d19b5 68
s1710879 0:8ea9795d19b5 69 ESP_call_single(uart_setup_echo);
s1710879 0:8ea9795d19b5 70 }
s1710879 0:8ea9795d19b5 71
s1710879 0:8ea9795d19b5 72 void ESP_noecho(void)
s1710879 0:8ea9795d19b5 73 {
s1710879 0:8ea9795d19b5 74 NodeMCU_PGM uart_setup_noecho = {
s1710879 0:8ea9795d19b5 75 "uart.setup(0, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1, 0)\r\n", 1,
s1710879 0:8ea9795d19b5 76 };
s1710879 0:8ea9795d19b5 77
s1710879 0:8ea9795d19b5 78 ESP_call_single(uart_setup_noecho);
s1710879 0:8ea9795d19b5 79 }
s1710879 0:8ea9795d19b5 80
s1710879 0:8ea9795d19b5 81 // ======================================================================
s1710879 0:8ea9795d19b5 82 // Send NodeMCU_PGM to ESP and execute
s1710879 0:8ea9795d19b5 83
s1710879 0:8ea9795d19b5 84 char *ESP_call_single(NodeMCU_PGM pgm)
s1710879 0:8ea9795d19b5 85 {
s1710879 0:8ea9795d19b5 86 ESP_recv_buffer_index = 0;
s1710879 0:8ea9795d19b5 87 ESP.attach(&ISR_ESP_to_recv_buffer, Serial::RxIrq);
s1710879 0:8ea9795d19b5 88 ESP.printf("%s\r\n", pgm.code);
s1710879 0:8ea9795d19b5 89 thread_sleep_for((pgm.delay) * 100);
s1710879 0:8ea9795d19b5 90 ESP.attach(NULL, Serial::RxIrq);
s1710879 0:8ea9795d19b5 91 ESP_recv_buffer[ESP_recv_buffer_index] = '\0';
s1710879 0:8ea9795d19b5 92
s1710879 0:8ea9795d19b5 93 return ESP_recv_buffer;
s1710879 0:8ea9795d19b5 94 }
s1710879 0:8ea9795d19b5 95
s1710879 0:8ea9795d19b5 96 void ESP_call_multi(NodeMCU_PGM pgms[])
s1710879 0:8ea9795d19b5 97 {
s1710879 0:8ea9795d19b5 98 int i;
s1710879 0:8ea9795d19b5 99 char *p;
s1710879 0:8ea9795d19b5 100
s1710879 0:8ea9795d19b5 101 for(i = 0; pgms[i].code != NULL; i++) {
s1710879 0:8ea9795d19b5 102 PC.printf("%s\r\n", pgms[i].code);
s1710879 0:8ea9795d19b5 103 p = ESP_call_single(pgms[i]);
s1710879 0:8ea9795d19b5 104 PC.printf("%s", p);
s1710879 0:8ea9795d19b5 105 }
s1710879 0:8ea9795d19b5 106 }
s1710879 0:8ea9795d19b5 107
s1710879 0:8ea9795d19b5 108 // ======================================================================