MQTT to OLED

Dependencies:   Adafruit_GFX 19E042PIM_MB_PINS

Committer:
filip_ste
Date:
Fri Dec 10 23:29:38 2021 +0000
Revision:
1:5992d7483ab2
Parent:
0:82908a60b720
Security bug fix;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
filip_ste 0:82908a60b720 1 #include "mb_pins.h"
filip_ste 0:82908a60b720 2 #include "mbed.h"
filip_ste 0:82908a60b720 3 #include "platform/mbed_thread.h"
filip_ste 0:82908a60b720 4 #include "MQTTClientMbedOs.h"
filip_ste 0:82908a60b720 5
filip_ste 0:82908a60b720 6 #include "Adafruit_GFX.h"
filip_ste 0:82908a60b720 7 #include "Adafruit_GFX_Config.h"
filip_ste 0:82908a60b720 8 #include "Adafruit_SSD1306.h"
filip_ste 0:82908a60b720 9
filip_ste 0:82908a60b720 10 ///////////////////////////////////////////////////////////////
filip_ste 0:82908a60b720 11
filip_ste 0:82908a60b720 12 #define SMALL_WAIT_MS 10
filip_ste 0:82908a60b720 13
filip_ste 0:82908a60b720 14 //I2C adress
filip_ste 0:82908a60b720 15 #define I2C_ADDRESS 0x3c
filip_ste 0:82908a60b720 16 #define I2C_ADD_MBED I2C_ADDRESS << 1
filip_ste 0:82908a60b720 17
filip_ste 0:82908a60b720 18 //OLED DIMENSIONS
filip_ste 0:82908a60b720 19 #define OLED_HEIGHT_PX 64
filip_ste 0:82908a60b720 20 #define OLED_WIDTH_PX 128
filip_ste 0:82908a60b720 21
filip_ste 0:82908a60b720 22 ///////////////////////////////////////////////////////////////
filip_ste 0:82908a60b720 23
filip_ste 0:82908a60b720 24 TCPSocket socket;
filip_ste 0:82908a60b720 25 MQTTClient client(&socket);
filip_ste 0:82908a60b720 26 MQTT::Message message;
filip_ste 0:82908a60b720 27 WiFiInterface *wifi;
filip_ste 0:82908a60b720 28
filip_ste 0:82908a60b720 29 I2C i2c_obj(MB_OLED_SDA, MB_OLED_SCL);
filip_ste 0:82908a60b720 30 Adafruit_SSD1306_I2c myOLED(i2c_obj, PB_5, I2C_ADD_MBED, OLED_HEIGHT_PX, OLED_WIDTH_PX);
filip_ste 0:82908a60b720 31
filip_ste 0:82908a60b720 32 char* topic_sub = "mbed-sample-sub";
filip_ste 0:82908a60b720 33 const char* hostname = "broker.hivemq.com";
filip_ste 0:82908a60b720 34 int port = 1883;
filip_ste 0:82908a60b720 35
filip_ste 0:82908a60b720 36 ///////////////////////////////////////////////////////////////
filip_ste 0:82908a60b720 37
filip_ste 0:82908a60b720 38 void messageArrived(MQTT::MessageData& md)
filip_ste 0:82908a60b720 39 {
filip_ste 0:82908a60b720 40 MQTT::Message &message = md.message;
filip_ste 0:82908a60b720 41 printf("Browser message: %.*s \n", message.payloadlen, (char*)message.payload);
filip_ste 0:82908a60b720 42
filip_ste 0:82908a60b720 43 myOLED.clearDisplay();
filip_ste 0:82908a60b720 44 //myOLED.setTextCursor(0, 0);
filip_ste 0:82908a60b720 45 myOLED.printf("%.*s \r", message.payloadlen, (char*)message.payload);
filip_ste 0:82908a60b720 46 myOLED.display();
filip_ste 0:82908a60b720 47 }
filip_ste 0:82908a60b720 48
filip_ste 0:82908a60b720 49 ///////////////////////////////////////////////////////////////
filip_ste 0:82908a60b720 50
filip_ste 0:82908a60b720 51 int main()
filip_ste 0:82908a60b720 52 {
filip_ste 0:82908a60b720 53 wifi = WiFiInterface::get_default_instance();
filip_ste 0:82908a60b720 54
filip_ste 0:82908a60b720 55 printf("Connecting to %s \n",MBED_CONF_APP_WIFI_SSID);
filip_ste 0:82908a60b720 56 int ret = wifi->connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
filip_ste 0:82908a60b720 57 if(ret != 0){
filip_ste 0:82908a60b720 58 printf("Greska u povezivanju");
filip_ste 0:82908a60b720 59 return -1;
filip_ste 0:82908a60b720 60 }
filip_ste 0:82908a60b720 61 printf("Success\n");
filip_ste 0:82908a60b720 62
filip_ste 0:82908a60b720 63 socket.open(wifi);
filip_ste 0:82908a60b720 64 socket.connect(hostname,port);
filip_ste 0:82908a60b720 65
filip_ste 0:82908a60b720 66 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
filip_ste 0:82908a60b720 67 data.MQTTVersion = 3;
filip_ste 0:82908a60b720 68 data.clientID.cstring = "Mustafa";
filip_ste 0:82908a60b720 69
filip_ste 0:82908a60b720 70 client.connect(data);
filip_ste 0:82908a60b720 71 client.subscribe(topic_sub, MQTT::QOS0, messageArrived);
filip_ste 0:82908a60b720 72
filip_ste 0:82908a60b720 73 myOLED.begin(); //pocetak
filip_ste 0:82908a60b720 74 i2c_obj.frequency(400000); //veca frekvencija slanja da ne bi ghostovalo
filip_ste 0:82908a60b720 75
filip_ste 0:82908a60b720 76 myOLED.clearDisplay();
filip_ste 0:82908a60b720 77 myOLED.display();
filip_ste 0:82908a60b720 78
filip_ste 0:82908a60b720 79
filip_ste 0:82908a60b720 80 while(1) {
filip_ste 0:82908a60b720 81 thread_sleep_for(SMALL_WAIT_MS);
filip_ste 0:82908a60b720 82 client.yield(1000);
filip_ste 0:82908a60b720 83 }
filip_ste 0:82908a60b720 84 }