Digital kitchen / lab scale firmware using HX711 load-cell amplifier, SSD1306 OLED (128×32), Arduino Nano, DS18B20 temperature sensor, battery gauge, charging indicator, tare, temperature-aware calibration, and EEPROM storage of the calibration factor.
Author: @serialprint
Step-by-step build (photos & instructions): Precision Weighing With OLED Display on Instructables — same project, detailed walkthrough.
All project assets (Fritzing, Gerber, schematics, many photos, OLED bitmap sources, G-code, extra STLs at repo root, etc.) are not only in this README — they live in the repository folder below. Open this path on GitHub to browse and download everything:
| Location | What you will find |
|---|---|
Bitmap/ |
OLED PNG/BMP sources, calibration screen graphics, build photos, WhatsApp/test images, Fritzing PDF copy, etc. |
Proje Resimleri/ |
Same kind of photos duplicated for convenience |
Şematik/ (folder Şematik) |
Schematic PDFs (MCU.pdf, SENS.pdf) |
| Repo root in that folder | Fritzing.pdf, Loadcell.fzz, Hassas_Tarti GERBER.zip, İnfo.pdf, top_3d.gcode, bottom_3d.gcode, top_3d.stl, bottom_3d.stl, … |
3B Modeller/Tartı_Scad/ |
3D-printable enclosure caps only: Üst_Kapak.stl, Alt_Kapak.stl (+ top.scad / bottom.scad) |
Large file note: one huge STL (Tartı5.stl, ~103 MB) is not in the repo — see docs/hardware/GITHUB_SIZE_LIMIT.md.
| PCB render | Test photo |
|---|---|
![]() |
![]() |
Schematic overview:
| Feature | Description |
|---|---|
| Weight | HX711 + load cell; scale.get_units() in grams |
| Display | SSD1306 128×32, I²C (0x3C typical) |
| Temperature | DS18B20; used in calibration compensation |
| Battery | Analog read on A0, averaged, mapped to %; icon on the right |
| Charging | When CHARGE_PIN (D10) reads HIGH, charging bitmap is shown |
| Tare | D5 button → scale.tare() |
| Calibration | D6 or invalid EEPROM; on-screen flow K1→K4 |
| Persistence | float calibration_factor at EEPROM address 0 |
- MCU: Arduino Nano (ATmega328) —
nanoatmega328newinplatformio.ini - Load cell + HX711: see pin table
- OLED: SSD1306 128×32, SDA→A4, SCL→A5
- DS18B20: 1-Wire (4.7 kΩ pull-up recommended)
- Buttons: normally INPUT_PULLUP (pressed = LOW)
- Battery / charge: divider to A0; charge sense on D10 (depends on your PCB)
| Signal | Pin | Macro |
|---|---|---|
| HX711 DOUT | D2 | LOADCELL_DOUT_PIN |
| HX711 SCK | D3 | LOADCELL_SCK_PIN |
| DS18B20 data | D4 | DS18B20_PIN |
| Tare button | D5 | DARA_BUTTON_PIN |
| Calibration button | D6 | KALIBRASYON_BUTTON_PIN |
| Battery voltage | A0 | VOLTAGE_PIN / analogPin |
| Charge status | D10 | CHARGE_PIN |
| LED (optional) | D13 | HIGH in setup |
PlatformIO + Arduino. Libraries are listed in platformio.ini (lib_deps):
- Adafruit SSD1306, Adafruit GFX
- HX711
- OneWire, DallasTemperature
- EEPROM (AVR)
Serial: 9600 baud.
- Open this folder in PlatformIO.
- Select env
nanoatmega328new. - Build / Upload to the Nano.
git clone https://github.com/serialprint/Electronic_Scale.git
cd Electronic_Scale- Splash bitmap ~5 s, then measurement unless EEPROM needs calibration.
- D5: tare (shows D bitmap briefly).
- D6: full calibration (K1…K4 screens).
Calibration core:
calibration_factor = (reading / numeric_value) * (1 + 0.0008 * (28.12 - temperature))
Default reference mass in code: 100 g (numeric_value).
Same as the big table above. Short list:
- Instructables tutorial: Precision Weighing With OLED Display
- Fritzing:
Fritzing.pdf,Loadcell.fzz - Gerber:
Hassas_Tarti GERBER.zip - 3D: G-code (
top_3d.gcode,bottom_3d.gcode),top_3d.stl/bottom_3d.stlin bundle root; enclosure caps in3B Modeller/Tartı_Scad/→ onlyÜst_Kapak.stlandAlt_Kapak.stl - Bitmap: PNG/BMP assets for OLED, many project photos under
Bitmap/ - Photos: also
Proje Resimleri/
See docs/hardware/GITHUB_SIZE_LIMIT.md for the >100 MB STL not stored on GitHub.
MIT — see LICENSE.
HX711 yük hücresi modülü, SSD1306 OLED (128×32) ve Arduino Nano ile çalışan dijital tartı projesi. Ağırlık gösterimi, pil seviyesi, şarj durumu, dara (tare), sıcaklığa bağlı kalibrasyon ve kalibrasyon değerinin EEPROM’da saklanması desteklenir.
Geliştirici: @serialprint
Adım adım yapım (fotoğraf ve anlatım): Precision Weighing With OLED Display — Instructables — aynı proje, detaylı anlatım.
Bu README’deki birkaç görsel dışında tüm proje dosyaları (Fritzing, Gerber, şemalar, çok sayıda fotoğraf, OLED bitmap kaynakları, G-code, vb.) repoda şu klasörde:
| Konum | İçerik |
|---|---|
Bitmap/ |
OLED PNG/BMP kaynakları, kalibrasyon ekran görselleri, test/build fotoğrafları, Fritzing PDF kopyası vb. |
Proje Resimleri/ |
Ek proje fotoğrafları (benzer içerik) |
Şematik/ |
Şema PDF’leri (MCU.pdf, SENS.pdf) |
| Bu klasörün kökü | Fritzing.pdf, Loadcell.fzz, Hassas_Tarti GERBER.zip, İnfo.pdf, top_3d.gcode, bottom_3d.gcode, top_3d.stl, bottom_3d.stl, … |
3B Modeller/Tartı_Scad/ |
Sadece üst/alt kapak STL: Üst_Kapak.stl, Alt_Kapak.stl (yanında top.scad / bottom.scad) |
Büyük dosya: ~103 MB Tartı5.stl GitHub’da yok — docs/hardware/GITHUB_SIZE_LIMIT.md.
| PCB görünümü | Test fotoğrafı |
|---|---|
![]() |
![]() |
Şema özeti:
| Özellik | Açıklama |
|---|---|
| Ağırlık | HX711 + yük hücresi; gram |
| OLED | SSD1306 128×32, I²C |
| Sıcaklık | DS18B20; kalibrasyon düzeltmesi |
| Pil | A0 voltajı, ortalama, yüzde; sağda ikon |
| Şarj | D10 = HIGH → şarj bitmap’i |
| Dara | D5 |
| Kalibrasyon | D6 veya geçersiz EEPROM; K1–K4 |
| Saklama | EEPROM adres 0 — calibration_factor (float) |
- Nano —
platformio.ini:nanoatmega328new - OLED: SDA→A4, SCL→A5
- DS18B20: 4.7 kΩ pull-up önerilir
| Sinyal | Pin |
|---|---|
| HX711 DOUT | D2 |
| HX711 SCK | D3 |
| DS18B20 | D4 |
| Dara | D5 |
| Kalibrasyon | D6 |
| Pil (ADC) | A0 |
| Şarj | D10 |
| LED | D13 (isteğe bağlı) |
- PlatformIO ile bu klasörü açın.
- Ortam:
nanoatmega328new. - Upload ile Nano’ya yükleyin.
- Seri port: 9600 baud.
git clone https://github.com/serialprint/Electronic_Scale.git
cd Electronic_Scalecalibration_factor = (reading / numeric_value) * (1 + 0.0008 * (28.12 - temperature))
Referans ağırlık varsayılan: 100 g (numeric_value).
Yukarıdaki tabloya bakın. Kısa liste:
- Instructables anlatımı: Precision Weighing With OLED Display
- Fritzing, Gerber, şemalar, G-code,
top_3d/bottom_3dSTL’leri (klasör kökünde) 3B Modeller/Tartı_Scad/içinde yalnızcaÜst_Kapak.stlveAlt_Kapak.stl(diğer STL’ler repo boyutu için kaldırıldı)- 103 MB
Tartı5.stlrepoda yok —docs/hardware/GITHUB_SIZE_LIMIT.md
MIT — bakınız LICENSE.
Repository: github.com/serialprint/Electronic_Scale


