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 Borja Tarazona

Committer:
BorjaTarazona
Date:
Thu Aug 10 11:07:42 2017 +0000
Revision:
1:85515946d42f
Parent:
0:60bc1892bfae
Creation

Who changed what in which revision?

UserRevisionLine numberNew 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 }