This program sends data to your Azure IoT Hub account using SIMCOM Modules like SIM800 or SIM900. It establishes the communication via HTTPS. For this reason make sure that your module supports HTTPS.
Dependencies: SIMInterface mbed
Fork of Azure_SIM800_HelloWorld by
main.cpp@1:85515946d42f, 2017-08-10 (annotated)
- Committer:
- BorjaTarazona
- Date:
- Thu Aug 10 11:07:42 2017 +0000
- Revision:
- 1:85515946d42f
- Parent:
- 0:60bc1892bfae
Creation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
BorjaTarazona | 0:60bc1892bfae | 1 | #include "mbed.h" // mbed library |
BorjaTarazona | 0:60bc1892bfae | 2 | #include "HTTPSConnection.h" // SIM800/SIM900 HTTPS library |
BorjaTarazona | 0:60bc1892bfae | 3 | #include "SIMInterface.h" // SIM800/SIM900 interface |
BorjaTarazona | 0:60bc1892bfae | 4 | #include <string> // C string library |
BorjaTarazona | 0:60bc1892bfae | 5 | |
BorjaTarazona | 0:60bc1892bfae | 6 | #define SERIAL_TX PTC4 // SIM serial port TX pin |
BorjaTarazona | 0:60bc1892bfae | 7 | #define SERIAL_RX PTC3 // SIM serial port RX pin |
BorjaTarazona | 0:60bc1892bfae | 8 | #define SERIAL_BAUDRATE 19200 // SIM serial port baudrate |
BorjaTarazona | 0:60bc1892bfae | 9 | #define SIM_PWRKEY PTC6 // SIM PWRKEY pin |
BorjaTarazona | 0:60bc1892bfae | 10 | |
BorjaTarazona | 0:60bc1892bfae | 11 | char* POST_response; // Response from Azure after a POST request |
BorjaTarazona | 0:60bc1892bfae | 12 | SIMInterface sim(SERIAL_TX,SERIAL_RX,SERIAL_BAUDRATE,SIM_PWRKEY); // SIM Interface Definition |
BorjaTarazona | 0:60bc1892bfae | 13 | HTTPSConnection simHTTPS(SERIAL_TX,SERIAL_RX,SERIAL_BAUDRATE); // SIM HTTPS Definition |
BorjaTarazona | 0:60bc1892bfae | 14 | |
BorjaTarazona | 0:60bc1892bfae | 15 | // <apn> A string parameter to indicate the GPRS access point name. |
BorjaTarazona | 0:60bc1892bfae | 16 | // Ex: For VODAFONE ES it is "airtelwap.es" |
BorjaTarazona | 0:60bc1892bfae | 17 | static const char* gprs_apn = ""; |
BorjaTarazona | 0:60bc1892bfae | 18 | |
BorjaTarazona | 0:60bc1892bfae | 19 | // <URL> A string parameter to indicate the connection URL. |
BorjaTarazona | 0:60bc1892bfae | 20 | // Ex: "https://XXXXXXXX.azure-devices.net/devices/XXXXX/messages/events?api-version=2016-02-03" |
BorjaTarazona | 0:60bc1892bfae | 21 | static const char* gprs_url = ""; |
BorjaTarazona | 0:60bc1892bfae | 22 | |
BorjaTarazona | 0:60bc1892bfae | 23 | // <SAS> A string parameter to indicate the Shared Access Signature. |
BorjaTarazona | 0:60bc1892bfae | 24 | // Ex: "Authorization: SharedAccessSignature sr=XXXXX.azure-devices.net&sig=rCD5ZWvjblAl20djcEdtuL40vpKmdjvQH7lTphIRtJo%3D&se=1530094422" |
BorjaTarazona | 0:60bc1892bfae | 25 | static const char* gprs_sas = ""; |
BorjaTarazona | 0:60bc1892bfae | 26 | |
BorjaTarazona | 0:60bc1892bfae | 27 | // <SAS> A string parameter to indicate the Shared Access Signature |
BorjaTarazona | 0:60bc1892bfae | 28 | // Ex: "{\"temperature\":0.01123046875}\r\n" |
BorjaTarazona | 0:60bc1892bfae | 29 | char gprs_data [1000] = ""; |
BorjaTarazona | 0:60bc1892bfae | 30 | |
BorjaTarazona | 0:60bc1892bfae | 31 | |
BorjaTarazona | 0:60bc1892bfae | 32 | // Main function |
BorjaTarazona | 0:60bc1892bfae | 33 | int main() |
BorjaTarazona | 0:60bc1892bfae | 34 | { |
BorjaTarazona | 0:60bc1892bfae | 35 | // Hello |
BorjaTarazona | 0:60bc1892bfae | 36 | printf("Hola\r\n"); |
BorjaTarazona | 0:60bc1892bfae | 37 | |
BorjaTarazona | 0:60bc1892bfae | 38 | // Wake up the module |
BorjaTarazona | 0:60bc1892bfae | 39 | printf("Wake up, SIM!\r\n"); |
BorjaTarazona | 0:60bc1892bfae | 40 | sim.wakeUp(); |
BorjaTarazona | 0:60bc1892bfae | 41 | |
BorjaTarazona | 0:60bc1892bfae | 42 | // Initializes HTTP and SSL on the module |
BorjaTarazona | 0:60bc1892bfae | 43 | printf("Initializing HTTPS\r\n"); |
BorjaTarazona | 0:60bc1892bfae | 44 | simHTTPS.HTTPS_initialization(gprs_apn); |
BorjaTarazona | 0:60bc1892bfae | 45 | |
BorjaTarazona | 0:60bc1892bfae | 46 | // Sets our Azure account parameters |
BorjaTarazona | 0:60bc1892bfae | 47 | printf("Setting Azure IoT Hub Parameters\r\n"); |
BorjaTarazona | 0:60bc1892bfae | 48 | simHTTPS.HTTPS_setAzureParameters(gprs_url, gprs_sas, gprs_data); |
BorjaTarazona | 0:60bc1892bfae | 49 | |
BorjaTarazona | 0:60bc1892bfae | 50 | // Infinite loop |
BorjaTarazona | 0:60bc1892bfae | 51 | while (true) |
BorjaTarazona | 0:60bc1892bfae | 52 | { |
BorjaTarazona | 0:60bc1892bfae | 53 | |
BorjaTarazona | 0:60bc1892bfae | 54 | // HTTPS POST |
BorjaTarazona | 0:60bc1892bfae | 55 | printf("HTTPS POST\r\n"); |
BorjaTarazona | 0:60bc1892bfae | 56 | POST_response = simHTTPS.HTTPS_post(10000); |
BorjaTarazona | 0:60bc1892bfae | 57 | printf("%s\r\n", POST_response); |
BorjaTarazona | 0:60bc1892bfae | 58 | |
BorjaTarazona | 0:60bc1892bfae | 59 | wait_ms(1000); // 1 second delay |
BorjaTarazona | 0:60bc1892bfae | 60 | |
BorjaTarazona | 0:60bc1892bfae | 61 | } |
BorjaTarazona | 0:60bc1892bfae | 62 | } |