|
ATMEGA328P-AUMicrochip
|
x 1 | |
![]() |
9B-16.000MBBK-BTXC CORPORATION
|
x 1 |
![]() |
DiptraceDiptrace
|
|
![]() |
Autodesk Fusion 360Autodesk
|
|
|
Creality Halot OneCreality
|
OLEDDuino-1.3 - OLED-oriented Devboard
This project is aimed at beginners and professional DIY makers.
The design feature is that the OLED is mounted on top of the board and fixed with nylon stands.
The bezel printed on a 3D printer gives the device a finished look.
Considering the design, it is very easy to create projects using an OLED screen: be it a voltmeter, thermostat or something else.
(The work is underway on GitHub, where the sketches will be located)
The board is based on the Arduino pro mini circuit with minor changes (see diagram):
- The sketch is uploaded via CP2102 FTDI USB-stick;
- The RAW, A6 and A7 pins are not available.
BOM-list
Actually circuit the same as Arduino Pro mini. I used smd 0805 and 16 MHz oscillator in dip package.
Only few thing I would like to draw your attention:
- RAW, A6 and A7 pins are not used in this revision;
- Side switch button (Google it as YD-3414) connected to the A0 and A1 and also duplicated as a pad. This pins has smd-1206 pull-up resistor places on the backside of the PCB. You can use it if needed;
- Input voltage only 5V and its duplicated to the upper row left side; and GND - on the right side.
Please, scroll-down to see the circuit and BOM.
AHTX0 Sensor demo sketch
/*
SAMPLE CODE FOR OLEDDUINO-1.3 BOARD BY MA35TR07
THIS SKETCH JUST A SAMPLE & FOR REFERENCE ONLY.
ALL ICONS ARE HANDMADE DRAWED AND YOU CAN MODIFY/UPDATE IT
LINK TO OLEDDUINO-1.3 PCB:
https://www.pcbway.com/project/shareproject/OLEDDuino1_3_3261bfe6.html
LINK TO WOKWI EMULATOR:
https://wokwi.com/projects/420753837318123521
❤︎ THANK YOU FOR SUPPORT ❤︎
*/
#include <OneWire.h> //
#include <Adafruit_AHTX0.h> // LIB FOR AHT10, AHT20 SENSORS
#include "U8g2lib.h" // U8G2 LIB
Adafruit_AHTX0 aht; // AHT SENSOR CONNECTS TO SDA/SCL PINS
sensors_event_t humidity, temp;
//I2C OLED 1.3" SETUP
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
// SPLASH ICON ARRAY
const uint8_t ico_splash[] PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xc7,0x3e,0x08,0xc3,0x2e,0xe8,0xc6,0xff,0xfe,0xe3,0x7f,0xfe,0xbb,0xbe,0xef,0xba,0xee,0xce,0xba,0x3f,0xfe,0xdd,0x7f,0xfe,0xbb,0xbe,0xef,0xba,0xee,0xae,0xba,0xff,0xfe,0xdf,0x7f,0xfe,0xbb,0x3e,0xec,0xba,0xee,0x6e,0xba,0xff,0xfe,0xe7,0x7f,0xfe,0xbb,0xbe,0xef,0xba,0xee,0xee,0xba,0xff,0xfe,0xdf,0x7f,0xfe,0xbb,0xbe,0xef,0xba,0xee,0xee,0xba,0xff,0xfe,0xdf,0x7f,0xfe,0xbb,0xbe,0xef,0xba,0xee,0xee,0xba,0xff,0x9e,0xdd,0x7f,0xfe,0xc7,0x20,0x08,0xc3,0x31,0xe8,0xc6,0x3f,0x98,0xe3,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
// TEMPERATURE ICON ARRAY
const uint8_t ico_temp[] PROGMEM = {
0xc0,0x3f,0xf0,0xf0,0xff,0xf0,0xf8,0xff,0xf1,0xfc,0xff,0xf3,0xfe,0xf8,0xf7,0xfe,0xf8,0xf7,0xff,0xf8,0xff,0xff,0xf8,0xff,0x3f,0xe0,0xff,0x3f,0xe0,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xff,0xf8,0xff,0xfe,0xc0,0xf7,0xfe,0xe1,0xf7,0xfc,0xff,0xf3,0xf8,0xff,0xf1,0xf0,0xff,0xf0,0xc0,0x3f,0xf0
};
// HUMIDITY ICON ARRAY
const uint8_t ico_hum[] PROGMEM = {
0xc0,0x3f,0xf0,0xf0,0xff,0xf0,0xf8,0xff,0xf1,0xfc,0xfb,0xf3,0xfe,0xf9,0xf7,0xfe,0xf9,0xf7,0xff,0xf0,0xff,0xff,0xf0,0xff,0x7f,0xe0,0xff,0x3f,0xc0,0xff,0x3f,0xc0,0xff,0x1f,0x80,0xff,0x1f,0x80,0xff,0x1f,0x80,0xff,0x3e,0xc0,0xf7,0x3e,0xc0,0xf7,0xfc,0xf0,0xf3,0xf8,0xff,0xf1,0xf0,0xff,0xf0,0xc0,0x3f,0xf0
};
// CELCIUS ICON ARRAY
const uint8_t ico_degreeC[] PROGMEM = {
0x00,0x00,0xf0,0x78,0xe0,0xf7,0xfc,0xf0,0xff,0xce,0x79,0xfc,0x86,0x39,0xf0,0x86,0x39,0xf0,0xce,0x39,0xf0,0xfc,0x38,0xf0,0x78,0x38,0xf0,0x00,0x38,0xf0,0x00,0x38,0xf0,0x00,0x38,0xf0,0x00,0x70,0xfc,0x00,0xe0,0xff,0x00,0xc0,0xf7,0x00,0x00,0xf0 // 20x16
};
//FAHRENHEIT ICON ARRAY
const uint8_t ico_degreeF[] PROGMEM = {
0x00,0x00,0xf0,0x78,0xf8,0xff,0xfc,0xf8,0xff,0xce,0x39,0xf0,0x86,0x39,0xf0,0x86,0x39,0xf0,0xce,0x39,0xf0,0xfc,0xf8,0xff,0x78,0xf8,0xff,0x00,0x38,0xf0,0x00,0x38,0xf0,0x00,0x38,0xf0,0x00,0x38,0xf0,0x00,0x38,0xf0,0x00,0x38,0xf0,0x00,0x00,0xf0
};
// PERCENT ICON ARRAY
const uint8_t ico_percent[] PROGMEM = {
0x00,0x00,0xf0,0x38,0x10,0xf0,0x7c,0x18,0xf0,0xc6,0x18,0xf0,0xc6,0x1c,0xf0,0xc6,0x0c,0xf0,0xc6,0x0c,0xf0,0x7c,0xc6,0xf1,0x38,0xe6,0xf3,0x00,0x37,0xf6,0x00,0x33,0xf6,0x80,0x33,0xf6,0x80,0x31,0xf6,0x80,0xe1,0xf3,0x80,0xc0,0xf1,0x00,0x00,0xf0
};
// INITIAL SETUP
void setup() {
Serial.begin(115200); // Serial monitor speed
u8g2.begin(); // Start U8G2
u8g2.firstPage(); // Draw 1st page as a splash screen
do {
u8g2.drawXBMP(16, 21, 96, 20, ico_splash); // Draw splash screen
u8g2.setFont(u8g2_font_5x8_mf);
u8g2.drawStr(36, 56, "AHT10 SENSOR"); // Short description
} while ( u8g2.nextPage() );
delay(5000);
if (aht.begin()) {
Serial.println("Found AHTX0 Sensor");
} else {
Serial.println("AHTX0 Sensor didn't find");
}
}
// DO FOREVER
void loop() {
u8g2.clearBuffer(); // Clear OLED buffer
aht.getEvent(&humidity, &temp); // Retrieving data from sensor
Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" °C");
Serial.print("Humidity: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");
u8g2.firstPage();
do
{
draw();
}
while ( u8g2.nextPage() );
delay(1000);
}
// DRAW DATA TO OLED
void draw(void)
{
u8g2.setFont(u8g2_font_helvB24_tf);
u8g2.drawHLine(0, 30, 127); // Draw line
u8g2.setDrawColor(1);
u8g2.setBitmapMode(1);
u8g2.drawXBMP(0, 2, 20, 20, ico_temp); // Draw volt icon
u8g2.drawXBMP(0, 38, 20, 20, ico_hum); // Draw temperature icon
if (temp.temperature>9.99) {
u8g2.setCursor(35,25);
}
else {
u8g2.setCursor(53,25);
}
u8g2.println(temp.temperature,1); // Print temperature
u8g2.drawXBMP(104, 0, 20, 16, ico_degreeC); // Draw °C symbol
u8g2.drawXBMP(104, 35, 20, 16, ico_percent); // Draw % symbol
if ((humidity.relative_humidity<0)&& (abs(humidity.relative_humidity)<9.9)){
u8g2.setCursor(28,60); // Shift line
u8g2.println(humidity.relative_humidity,1); // Print humidity
}
else if (humidity.relative_humidity<0) { // Shift line if
u8g2.setCursor(25,60); // data < 0
}
else if (humidity.relative_humidity>9.99){ // Shift line if
u8g2.setCursor(35,60); // data > 9.99
}
else{
u8g2.setCursor(53,60); // Shift line
}
u8g2.println(humidity.relative_humidity,1); // Print humidity
}
Assembling
Demo
Usage area: integrated head unit for DIY voltmeter, thermostat, clock, weather station and etc.
Thank you for support


OLEDDuino-1.3 - OLED-oriented Devboard
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.

- ✖ | No sharing or redistributing in any way of the 3D files or derivatives
- ✖ | No remixing
- ✖ | Non-commercial Use (only for personal use)
- Comments(4)
- Likes(0)
- 1 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10

-
9design
-
9usability
-
10creativity
-
9content
More by Rafael Aliyev
-
Instrumentation Input, high impedance with 16 bit 1MSPS ADC for SPI
47 0 0 -
RGB LED Matrix input module for the Framework Laptop 16
241 0 2 -
-
📦 StackBox: Modular MDF Storage Solution 📦
98 0 2 -
-
-