Mihajlo Djordjevic 2020/438

Dependencies:   Adafruit_GFX 19E042PIM_MB_PINS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //MQTT & mbed libraries
00002 #include "mb_pins.h"
00003 #include "mbed.h"
00004 #include "platform/mbed_thread.h"
00005 #include "MQTTClientMbedOs.h"
00006 //Oled libraries
00007 #include "Adafruit_GFX.h"
00008 #include "Adafruit_GFX_Config.h"
00009 #include "Adafruit_SSD1306.h"
00010 
00011 //Macros
00012 #define WAIT_MS 10
00013  
00014 //I2C
00015 #define I2C_ADDRESS         0x3c
00016 #define I2C_ADD_MBED    I2C_ADDRESS << 1
00017 #define OLED_HEIGHT_PX 64
00018 #define OLED_WIDTH_PX 128
00019  
00020  
00021 TCPSocket socket;
00022 MQTTClient client(&socket);
00023 MQTT::Message message;
00024 WiFiInterface *wifi;
00025  
00026 I2C i2c_obj(MB_OLED_SDA, MB_OLED_SCL);
00027 Adafruit_SSD1306_I2c myOLED(i2c_obj, PB_5, I2C_ADD_MBED, OLED_HEIGHT_PX, OLED_WIDTH_PX);
00028  
00029 char* topic_sub = "subpim05";
00030 char* topic_pub = "pubpim05";
00031 const char* hostname = "broker.hivemq.com";
00032 int port = 1883;
00033  
00034 void messageArrived(MQTT::MessageData& md)
00035 {
00036     MQTT::Message &message = md.message;
00037     printf("Browser message: %.*s \n", message.payloadlen, (char*)message.payload);
00038     
00039     myOLED.clearDisplay();
00040     myOLED.setTextCursor(0, 0);
00041     myOLED.printf("%.*s \r", message.payloadlen, (char*)message.payload);
00042     myOLED.display();
00043 }
00044  
00045 int main()
00046 {
00047     wifi = WiFiInterface::get_default_instance();
00048     
00049     printf("Connecting to %s... \n",MBED_CONF_APP_WIFI_SSID);
00050     int ret = wifi->connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
00051     if(ret != 0){
00052         printf("Greska u povezivanju");
00053         return -1;
00054     }
00055     printf("Success!\n");
00056     
00057     socket.open(wifi);
00058     socket.connect(hostname,port);
00059     
00060     MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
00061     data.MQTTVersion = 3;
00062     data.clientID.cstring = "miksi";
00063  
00064     client.connect(data);
00065     client.subscribe(topic_sub, MQTT::QOS0, messageArrived);
00066     
00067     
00068     myOLED.begin();
00069     i2c_obj.frequency(400000);
00070     
00071     myOLED.clearDisplay();
00072     myOLED.display();
00073     
00074     
00075     while(1) {
00076         thread_sleep_for(WAIT_MS);
00077         client.yield(5000);
00078     }
00079 }