===== ITT OLED display module ===== This laboratory is located in the office of ITT Group in Tallinn, Estonia. ==== Introduction ==== This laboratory can be used to practice displaying messages on the OLED screen. {{:en:iot_homelab_kit:hardware:oled3.png?300|}} ==== Prerequisites ==== For this laboratory, the student should understand basic MQTT concepts like topics, broker, subscribing and publishing. Also, knowledge about I2C interface is recommended but not mandatory. ==== Technical details ==== This laboratory consists of an OLED display module attached to the ITT IoT controller module. Oled module contains an organic light-emitting diode, that is a light-emitting diode in which the emissive electroluminescent layer is a film of organic compound that emits light in response to an electric current. === Sensors ===Relay This laboratory does not have any sensors. === Specifications ===
#include
#include
#include
#include
#include
#include
#include
#include
#define OLED_RESET 0 // GPIO0
Ticker timeTicker;
Adafruit_SSD1306 display(OLED_RESET);
// ITT splashs screen bitmap. Generator: http://javl.github.io/image2cpp/
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0xc0, 0x00, 0x00, 0x00, 0x07, 0x1f, 0xe3, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x07, 0x1f, 0xe3, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x10,
0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x10, 0xe2, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x10, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x10, 0xe3, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x07, 0x10, 0xe0,
0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x10, 0xe0, 0x00, 0x00, 0x18,
0x00, 0x00, 0x07, 0x10, 0xe0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07,
0x10, 0xe3, 0xfc, 0xff, 0xf8, 0x00, 0x00, 0x07, 0x10, 0xe3, 0xfc,
0xff, 0xf8, 0x00, 0x00, 0x07, 0x10, 0xe2, 0x1c, 0x80, 0x00, 0x00,
0x00, 0x07, 0x10, 0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x07, 0x10,
0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x07, 0x10, 0xe2, 0x1c, 0x80,
0x00, 0x00, 0x00, 0x07, 0x10, 0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00,
0x07, 0x10, 0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x07, 0x10, 0xe2,
0x1c, 0x80, 0x00, 0x00, 0x00, 0x07, 0xf0, 0xe2, 0x1c, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x1c,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x1c, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x1c, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x1c, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfe, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#if (SSD1306_LCDHEIGHT != 48)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
bool isBootModeNormal;
bool sendDataFlag;
int i = 0;
// Ticker library callback, which will occur 0.5 second interval.
void sendData()
{
sendDataFlag=true;
}
// Function started after the connection to the server is established.
void iot_connected()
{
Serial.println("MQTT connected callback");
iot.log("IoT OLED screen example!");
isBootModeNormal = true;
}
void setup()
{
Serial.begin(115200);
Serial.println("Booting");
// initialize with the I2C addr 0x3C (for the 64x48)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// Since the buffer is intialized with an Adafruit splashscreen
// internally, we should clear it
display.clearDisplay();
// Load ITT splash screen into buffer
display.drawBitmap(0, 0, logo16_glcd_bmp, 64, 48, 1);
// Show image buffer on the display
display.display();
// Display splashscreen two second
delay(2000);
// print IoT json config to serial
iot.printConfig();
// Initialize IoT library
iot.setup();
// Initialize Ticker interval and callback
timeTicker.attach(0.5, sendData);
}
void loop()
{
// IoT behind the plan work, it should be periodically called
iot.handle();
// Increase counter value
i++;
// Display counter value and boot mode on the OLED screen
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Counter: ");
display.println(i);
display.setCursor(0,30);
if(isBootModeNormal)
{
display.println("Mode: NORM");
}
else
{
display.println("Mode: BOOT");
}
display.display();
// Send counter value to the server
if(WiFi.isConnected() && isBootModeNormal)
{
if(sendDataFlag)
{
sendDataFlag = false;
String msg = String(i);
iot.publishMsg("count", msg.c_str());
Serial.println(msg);
}
}
}
==== Support ====
info@ittgroup.ee