Mihajlo Djordjevic 2020/438
Dependencies: Adafruit_GFX 19E042PIM_MB_PINS
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 }
Generated on Fri Aug 5 2022 09:23:50 by 1.7.2