Nucleo STM32 F401RE , NodeMCU and TCP Conneciton
Dependencies: BufferedSerial mbed-rtos mbed
Fork of NucleoF401_ESP8622 by
Connection SCHEMA
SOCKET DATA
DETAIL DESCRIPTION
http://veyselkaradag.blogspot.com.tr/
main.cpp@0:515a38e245a4, 2015-01-13 (annotated)
- Committer:
- veyselka
- Date:
- Tue Jan 13 15:48:44 2015 +0000
- Revision:
- 0:515a38e245a4
- Child:
- 1:4a50b910342c
V.0001;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
veyselka | 0:515a38e245a4 | 1 | /* --------------------------------------------------------------------------- |
veyselka | 0:515a38e245a4 | 2 | ** This software is in the public domain, furnished "as is", without technical |
veyselka | 0:515a38e245a4 | 3 | ** support, and with no warranty, express or implied, as to its usefulness for |
veyselka | 0:515a38e245a4 | 4 | ** any purpose. |
veyselka | 0:515a38e245a4 | 5 | ** |
veyselka | 0:515a38e245a4 | 6 | ** main.ccp |
veyselka | 0:515a38e245a4 | 7 | ** Quectel M95 GPRS module with STM32F401RE Nucleo Board |
veyselka | 0:515a38e245a4 | 8 | ** |
veyselka | 0:515a38e245a4 | 9 | ** Author: <veyselka@hotmail.com> |
veyselka | 0:515a38e245a4 | 10 | ** -------------------------------------------------------------------------*/ |
veyselka | 0:515a38e245a4 | 11 | |
veyselka | 0:515a38e245a4 | 12 | |
veyselka | 0:515a38e245a4 | 13 | #include "mbed.h" |
veyselka | 0:515a38e245a4 | 14 | #include "rtos.h" |
veyselka | 0:515a38e245a4 | 15 | #include "ID_STM32F4.h" |
veyselka | 0:515a38e245a4 | 16 | #include "modem.h" |
veyselka | 0:515a38e245a4 | 17 | |
veyselka | 0:515a38e245a4 | 18 | |
veyselka | 0:515a38e245a4 | 19 | |
veyselka | 0:515a38e245a4 | 20 | //------------------------------------ |
veyselka | 0:515a38e245a4 | 21 | // Hyperterminal configuration |
veyselka | 0:515a38e245a4 | 22 | // 9600 bauds, 8-bit data, no parity |
veyselka | 0:515a38e245a4 | 23 | //------------------------------------ |
veyselka | 0:515a38e245a4 | 24 | |
veyselka | 0:515a38e245a4 | 25 | |
veyselka | 0:515a38e245a4 | 26 | Serial pc(USBTX, USBRX); |
veyselka | 0:515a38e245a4 | 27 | |
veyselka | 0:515a38e245a4 | 28 | Modem com(PA_9, PA_10); |
veyselka | 0:515a38e245a4 | 29 | |
veyselka | 0:515a38e245a4 | 30 | |
veyselka | 0:515a38e245a4 | 31 | |
veyselka | 0:515a38e245a4 | 32 | |
veyselka | 0:515a38e245a4 | 33 | |
veyselka | 0:515a38e245a4 | 34 | InterruptIn button(USER_BUTTON); |
veyselka | 0:515a38e245a4 | 35 | DigitalOut myled(LED1); |
veyselka | 0:515a38e245a4 | 36 | |
veyselka | 0:515a38e245a4 | 37 | int sms_flag; |
veyselka | 0:515a38e245a4 | 38 | |
veyselka | 0:515a38e245a4 | 39 | void GSM(void const *args); |
veyselka | 0:515a38e245a4 | 40 | void GPS(void const *args); |
veyselka | 0:515a38e245a4 | 41 | void SERIAL(void const *args); |
veyselka | 0:515a38e245a4 | 42 | void button_pressed(void); |
veyselka | 0:515a38e245a4 | 43 | |
veyselka | 0:515a38e245a4 | 44 | char command_buffer[255]; |
veyselka | 0:515a38e245a4 | 45 | |
veyselka | 0:515a38e245a4 | 46 | int main() |
veyselka | 0:515a38e245a4 | 47 | { |
veyselka | 0:515a38e245a4 | 48 | button.fall(&button_pressed); |
veyselka | 0:515a38e245a4 | 49 | pc.baud(115200); |
veyselka | 0:515a38e245a4 | 50 | com.baud(115200); |
veyselka | 0:515a38e245a4 | 51 | |
veyselka | 0:515a38e245a4 | 52 | |
veyselka | 0:515a38e245a4 | 53 | |
veyselka | 0:515a38e245a4 | 54 | |
veyselka | 0:515a38e245a4 | 55 | Thread GSM_THREAD(GSM); |
veyselka | 0:515a38e245a4 | 56 | Thread GPS_THREAD(GPS); |
veyselka | 0:515a38e245a4 | 57 | Thread SERIAL_THREAD(SERIAL); |
veyselka | 0:515a38e245a4 | 58 | |
veyselka | 0:515a38e245a4 | 59 | while(1); |
veyselka | 0:515a38e245a4 | 60 | |
veyselka | 0:515a38e245a4 | 61 | } |
veyselka | 0:515a38e245a4 | 62 | |
veyselka | 0:515a38e245a4 | 63 | |
veyselka | 0:515a38e245a4 | 64 | |
veyselka | 0:515a38e245a4 | 65 | void GSM(void const *args) { |
veyselka | 0:515a38e245a4 | 66 | |
veyselka | 0:515a38e245a4 | 67 | sms_flag=0; |
veyselka | 0:515a38e245a4 | 68 | com.printf("ATE1\r\n"); |
veyselka | 0:515a38e245a4 | 69 | Thread::wait(100); |
veyselka | 0:515a38e245a4 | 70 | |
veyselka | 0:515a38e245a4 | 71 | while(true) { |
veyselka | 0:515a38e245a4 | 72 | myled=!myled; |
veyselka | 0:515a38e245a4 | 73 | |
veyselka | 0:515a38e245a4 | 74 | |
veyselka | 0:515a38e245a4 | 75 | |
veyselka | 0:515a38e245a4 | 76 | com.printf("AT+GSN\r\n"); |
veyselka | 0:515a38e245a4 | 77 | Thread::wait(100); |
veyselka | 0:515a38e245a4 | 78 | memset(command_buffer,0,128); |
veyselka | 0:515a38e245a4 | 79 | com.read_buf(command_buffer,128); |
veyselka | 0:515a38e245a4 | 80 | pc.printf("Command ANs:%s:\r\n",command_buffer); |
veyselka | 0:515a38e245a4 | 81 | |
veyselka | 0:515a38e245a4 | 82 | if(sms_flag==1){ |
veyselka | 0:515a38e245a4 | 83 | |
veyselka | 0:515a38e245a4 | 84 | com.printf("AT+CMGF=1\r\n"); |
veyselka | 0:515a38e245a4 | 85 | Thread::wait(250); |
veyselka | 0:515a38e245a4 | 86 | com.printf("AT+CMGS=\"+905355948809\"\r\n"); |
veyselka | 0:515a38e245a4 | 87 | Thread::wait(1000); |
veyselka | 0:515a38e245a4 | 88 | com.puts("Hello WORLD"); |
veyselka | 0:515a38e245a4 | 89 | Thread::wait(250); |
veyselka | 0:515a38e245a4 | 90 | com.putc((char)0x1a); |
veyselka | 0:515a38e245a4 | 91 | Thread::wait(1000); |
veyselka | 0:515a38e245a4 | 92 | |
veyselka | 0:515a38e245a4 | 93 | sms_flag=0; |
veyselka | 0:515a38e245a4 | 94 | |
veyselka | 0:515a38e245a4 | 95 | } |
veyselka | 0:515a38e245a4 | 96 | Thread::wait(1000); |
veyselka | 0:515a38e245a4 | 97 | } |
veyselka | 0:515a38e245a4 | 98 | } |
veyselka | 0:515a38e245a4 | 99 | |
veyselka | 0:515a38e245a4 | 100 | |
veyselka | 0:515a38e245a4 | 101 | void GPS(void const *args) { |
veyselka | 0:515a38e245a4 | 102 | |
veyselka | 0:515a38e245a4 | 103 | |
veyselka | 0:515a38e245a4 | 104 | |
veyselka | 0:515a38e245a4 | 105 | while(true) { |
veyselka | 0:515a38e245a4 | 106 | |
veyselka | 0:515a38e245a4 | 107 | // Read a line from the large rx buffer from rx interrupt routine |
veyselka | 0:515a38e245a4 | 108 | |
veyselka | 0:515a38e245a4 | 109 | Thread::wait(500); |
veyselka | 0:515a38e245a4 | 110 | } |
veyselka | 0:515a38e245a4 | 111 | } |
veyselka | 0:515a38e245a4 | 112 | |
veyselka | 0:515a38e245a4 | 113 | |
veyselka | 0:515a38e245a4 | 114 | void SERIAL(void const *args) { |
veyselka | 0:515a38e245a4 | 115 | |
veyselka | 0:515a38e245a4 | 116 | int count=0; |
veyselka | 0:515a38e245a4 | 117 | int ID=0; |
veyselka | 0:515a38e245a4 | 118 | uint8_t uID[12]; |
veyselka | 0:515a38e245a4 | 119 | |
veyselka | 0:515a38e245a4 | 120 | ID= TM_ID_GetSignature() ; |
veyselka | 0:515a38e245a4 | 121 | |
veyselka | 0:515a38e245a4 | 122 | printf("ID:%X:\r\n",ID); |
veyselka | 0:515a38e245a4 | 123 | |
veyselka | 0:515a38e245a4 | 124 | |
veyselka | 0:515a38e245a4 | 125 | printf("uID:"); |
veyselka | 0:515a38e245a4 | 126 | for(count=0;count<12;count++){ |
veyselka | 0:515a38e245a4 | 127 | uID[count]=TM_ID_GetUnique8(count); |
veyselka | 0:515a38e245a4 | 128 | printf("0x%02X ",uID[count]); |
veyselka | 0:515a38e245a4 | 129 | |
veyselka | 0:515a38e245a4 | 130 | } |
veyselka | 0:515a38e245a4 | 131 | printf("\r\n"); |
veyselka | 0:515a38e245a4 | 132 | count=0; |
veyselka | 0:515a38e245a4 | 133 | |
veyselka | 0:515a38e245a4 | 134 | |
veyselka | 0:515a38e245a4 | 135 | |
veyselka | 0:515a38e245a4 | 136 | |
veyselka | 0:515a38e245a4 | 137 | while(true) { |
veyselka | 0:515a38e245a4 | 138 | |
veyselka | 0:515a38e245a4 | 139 | |
veyselka | 0:515a38e245a4 | 140 | Thread::wait(1000); |
veyselka | 0:515a38e245a4 | 141 | } |
veyselka | 0:515a38e245a4 | 142 | } |
veyselka | 0:515a38e245a4 | 143 | |
veyselka | 0:515a38e245a4 | 144 | |
veyselka | 0:515a38e245a4 | 145 | |
veyselka | 0:515a38e245a4 | 146 | void button_pressed() |
veyselka | 0:515a38e245a4 | 147 | { |
veyselka | 0:515a38e245a4 | 148 | sms_flag=1; |
veyselka | 0:515a38e245a4 | 149 | |
veyselka | 0:515a38e245a4 | 150 | |
veyselka | 0:515a38e245a4 | 151 | } |