|
|
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
-
-
AEL-2011 Power Supply Module
329 0 1 -
AEL-2011 50W Power Amplifier
301 0 1 -
-
-
Custom Mechanical Keyboard
570 0 0 -
Tester for Touch Screen Digitizer without using microcontroller
234 2 2 -
Audio reactive glow LED wristband/bracelet with NFC / RFID-Tags
240 0 1 -
-
-







