||

Zbuduj własną wagę na ESP32 z wyświetlaczem OLED

Zbuduj własną wagę na ESP32 z wyświetlaczem OLED

W tym artykule krok po kroku pokażemy, jak zbudować elektroniczną wagę opartą na mikrokontrolerze ESP32. Projekt wykorzystuje belkę tensometryczną o zakresie do 10 kg oraz popularny moduł wzmacniacza HX711, który zamienia sygnał z belki na dane cyfrowe. Wynik pomiaru masy jest wyświetlany na niewielkim ekranie OLED 0,96″ w formacie liczbowym w gramach. Waga posiada funkcję tarowania oraz umożliwia kalibrację za pomocą znanego obciążenia, aby zapewnić dokładne wyniki. Dzięki odpowiedniej filtracji i algorytmom uśredniania odczyt jest stabilny i dokładny, a całość można zbudować na płytce stykowej z zaledwie kilkoma elementami. To świetny projekt dla majsterkowiczów, pozwalający zrozumieć działanie czujnika tensometrycznego i stworzyć praktyczne urządzenie pomiarowe we własnym zakresie.

Założenia projektu i jego funkcjonalność

Nasz projekt wagi elektronicznej na ESP32 będzie posiadał następujące kluczowe funkcje:

Pomiar masy do 10 kg – wykorzystujemy belkę tensometryczną 10 kg, co pozwala ważyć przedmioty w tym zakresie.
Wyświetlanie wyniku na ekranie OLED – aktualna waga jest prezentowana na czytelnym wyświetlaczu OLED 0,96″ (128×64 px) w gramach, z dokładnością do jednego miejsca po przecinku.
Tarowanie jednym poleceniem – waga umożliwia wyzerowanie tara za pomocą komendy t, co pozwala np. zignorować masę pojemnika. Przy każdym włączeniu urządzenia wykonywane jest również automatyczne tarowanie.
Kalibracja wzorcowa – dostępny jest prosty tryb kalibracji z użyciem znanego odważnika. Dzięki temu możemy ustalić dokładny przelicznik z wartości surowych na gramy i zapisać go w pamięci nieulotnej ESP32. Po jednorazowej kalibracji waga działa poprawnie przy każdym kolejnym uruchomieniu.
Stabilizacja odczytu – zastosowano kombinację mediany z kilku próbek, lekkie wygładzanie, zaokrąglanie co 0,2 g oraz histerezę wyświetlania 0,05 g. Dzięki temu szybkie zmiany obciążenia są widoczne od razu, ale drobne wahania i szumy nie powodują „skakania” wskazań.
Niskie koszty i prosta rozbudowa – projekt bazuje na niedrogich, ogólnodostępnych elementach, a całość można zmontować na płytce stykowej . W przyszłości łatwo rozbudujesz układ np. o przyciski, zasilanie bateryjne czy łączność Wi-Fi/Bluetooth. To świetna baza do dalszych eksperymentów IoT!

Lista potrzebnych elementów

Zanim przystąpimy do budowy układu, warto przygotować wszystkie niezbędne komponenty. Poniżej znajduje się zestawienie elementów, które wykorzystaliśmy w naszym projekcie każdy z nich dostępny jest w ofercie naszego sklepu:

ElementOpis
ESP32 DevKit Mikrokontroler serce całego układu, odpowiada za odczyt danych z HX711 i wyświetlanie wyniku.
HX711 wzmacniacz do belki tensometrycznej24-bitowy przetwornik ADC specjalizowany do czujników wagowych, umożliwia precyzyjny odczyt sygnału z belki.
Belka tensometryczna 10 kg 100 NAluminiowy czujnik siły. Pozwala mierzyć obciążenia do 10 kg. Posiada 4 przewody: czerwony (E+), czarny (E−), zielony (A+), biały (A−).
Wyświetlacz OLED 0,96″ I2C 128×64 pxMały i czytelny ekran monochromatyczny. Obsługiwany przez interfejs I2C wymaga tylko dwóch pinów na ESP32.
Płytka stykowa (2×)400 otworów każda. Dwie płytki połączone razem zapewniają wystarczającą przestrzeń na ESP32, HX711 i OLED.
Przewody połączeniowe męsko-męskieZestaw 40 szt. przewodów o dł. ~10 cm, do wygodnego łączenia modułów na płytce stykowej.

👉 Przygotowaliśmy też gotowy koszyk z wszystkimi elementami wystarczy kliknąć przycisk poniżej i dodać całość do zamówienia.

Schemat połączeń komponentów

Zanim przystąpimy do montażu, warto zapoznać się ze schematem połączeń wszystkich elementów. Układ składa się z czujnika belki tensometrycznej podłączonego do modułu HX711 oraz mikrokontrolera ESP32, a także z wyświetlacza OLED do prezentacji wyników. Poniższa tabela pokazuje krok po kroku, jak połączyć wszystkie elementy:

ElementWyprowadzeniePodłączenie doUwagi
Belka tensometryczna 10 kgCzerwony (E+)E+ na HX711Zasilanie mostka tensometrycznego
Czarny (E−)E− na HX711Masa mostka
Zielony (A+)A+ na HX711Sygnał +
Biały (A−)A− na HX711Sygnał −
Moduł HX711VCC3,3 V na ESP32Zasilanie układu
GNDGND na ESP32Masa wspólna
DT (DOUT)GPIO19 na ESP32Linia danych
SCK (CLK)GPIO18 na ESP32Linia zegara
Wyświetlacz OLED 0,96″ I2CVCC3,3 V na ESP32Zasilanie wyświetlacza
GNDGND na ESP32Masa
SDAGPIO21 na ESP32Linia danych I2C
SCLGPIO22 na ESP32Linia zegara I2C

Montaż belki

Belkę tensometryczną najlepiej zamontować w uchwycie wydrukowanym na drukarce 3D, co zapewnia stabilność i prawidłowe przenoszenie siły na czujnik. My skorzystaliśmy z przykładowego modelu uchwytu inspirowanego projektami opublikowanymi przez użytkowników na Bambu Lab – sprawdza się idealnie jako baza do budowy prototypowej platformy wagi.
Warto dodać, że modeli takich uchwytów jest w sieci naprawdę sporo, więc każdy może wybrać sobie taki, który najbardziej odpowiada jego potrzebom i sposobowi montażu.

Montaż układu i rozmieszczenie elementów

Mając przygotowane połączenia zgodnie ze schematem, możemy zmontować fizyczny układ na płytkach stykowych. Warto zacząć od zamocowania belki tensometrycznej jeden koniec belki przykręcamy do stałej podstawy, a na drugim końcu wolnym montujemy platformę lub talerzyk, na którym kładzione będą ważone przedmioty. Dzięki temu belka będzie się minimalnie uginać pod obciążeniem, co pozwoli tensometrom zmierzyć deformację jest to niewidoczne gołym okiem mikrozgięcie, ale wystarczające do zmiany sygnału elektrycznego.

Na płytce stykowej umieszczamy moduł HX711 oraz ESP32. Ze względu na rozmiar ESP32 wyprowadzenia w dwóch rzędach najczęściej potrzeba drugiej płytki stykowej można ją złączyć z pierwszą, aby uzyskać szerszą powierzchnię. Moduł HX711 jest niewielki wpinamy go tak, aby jego wyjścia pasowały do planowanego podłączenia z ESP32. Następnie łączymy wszystkie przewody zgodnie z opisanym wyżej schematem. Na koniec dokładamy wyświetlacz OLED moduł tego wyświetlacza można wygodnie wpiąć w rząd wolnych pinów na płytce, pamiętając o odpowiednim podłączeniu SDA, SCL, zasilania i masy.

Na fotografii widać, że belka tensometryczna została zamocowana między dwiema płytkami użyto wydrukowanego modelu 3D skręconych śrubami, co pozwala na stabilne przenoszenie siły ciężaru. Taki sposób montażu zapewnia, że belka jest obciążana tylko na jednym końcu drugi jest przymocowany na stałe do podstawy. W warunkach prototypowych można belkę przykręcić do stołu lub innej sztywnej powierzchni, a na wolnym końcu położyć małą tackę. Ważne jest, aby nie przekraczać maksymalnego obciążenia 10 kg w tym przypadku, gdyż grozi to uszkodzeniem czujnika.

Kod źródłowy programu

Gdy hardware jest już złożony, pora na oprogramowanie mikrokontrolera. Poniższy kod wykorzystuje bibliotekę HX711 do odczytu tensometru oraz biblioteki Adafruit GFX i Adafruit SSD1306 do obsługi wyświetlacza OLED. Przed wgraniem programu do ESP32, zainstaluj te biblioteki poprzez Menedżer Bibliotek Arduino IDE kolejno: “HX711”, “Adafruit SSD1306” oraz “Adafruit GFX”.

Kilka słów wyjaśnienia do powyższego kodu: na początku definiujemy piny i inicjujemy obiekty dla czujnika i wyświetlacza. W funkcji setup() uruchamiamy komunikację z HX711, wykonujemy tarowanie wyzerowanie wskazania przy pustej wadze oraz inicjalizujemy wyświetlacz OLED. W pętli loop() odczytujemy kilka próbek z HX711, uśredniamy je i przeliczamy na masę w gramach. Następnie wyświetlamy wynik na ekranie z dokładnością do jednego miejsca po przecinku np. 123,4 g. Taki format prezentacji jest kompromisem: cyfra po przecinku daje lepszy wgląd w drobne zmiany masy, a jednocześnie odczyt pozostaje stabilny i czytelny. W przypadku belki 10 kg uzyskujemy wiarygodne wartości co do grama, ale trzeba pamiętać, że bardzo małe obciążenia i tak będą mniej dokładne ze względu na ograniczoną czułość czujnika.

Kalibracja i dokładność pomiaru

Aby waga wskazywała poprawne wartości, konieczna jest kalibracja układu. W naszym projekcie odbywa się to automatycznie z poziomu terminala wystarczy wywołać komendę c w Monitorze Portu Szeregowego 115200 bps, aby uruchomić procedurę runCalibration().

Przebieg kalibracji wygląda następująco:

  1. Program najpierw wykonuje zerowanie tare należy zdjąć wszystkie przedmioty z wagi, a układ sam ustawi aktualny odczyt jako punkt zerowy.
  2. Następnie wyświetla w terminalu prośbę o położenie wzorca o znanej masie np. 1000 g i wciśnięcie Enter.
  3. Po zebraniu odczytów należy wpisać w terminalu dokładną masę wzorca w gramach i zatwierdzić Enterem.
  4. Program automatycznie obliczy nowy współczynnik kalibracji, zapisze go w pamięci nieulotnej ESP32 i poinformuje użytkownika o powodzeniu kalibracji.

Dzięki temu cała procedura jest prosta i nie wymaga ręcznej edycji kodu w razie potrzeby kalibrację można powtórzyć w dowolnym momencie.

Dokładność

Trzeba jednak pamiętać, że belka 10 kg ma ograniczoną czułość dla bardzo małych obciążeń. Jeśli zależy Ci na precyzji w zakresie np. do kilkuset gramów, lepiej wybrać belkę o mniejszym nominale np. 1 kg lub 5 kg wtedy ta sama metoda kalibracji pozwoli uzyskać wskazania z dokładnością nawet do dziesiątych czy setnych części grama.

Co można rozbudować?

Ten projekt to dopiero punkt wyjścia. Jeśli chcesz, możesz łatwo dodać kolejne funkcje, np.:

🔘 Przyciski do tarowania i kalibracji – dzięki nim obsługa wagi byłaby możliwa bez terminala.
⚖️ Zmiana jednostek pomiaru – przełączanie między gramami, kilogramami czy uncjami.
📊 Zapis i logowanie wyników – np. do pliku CSV na karcie SD lub w pamięci ESP32.
📡 Łączność bezprzewodowa – wysyłanie odczytów przez Wi-Fi (MQTT, HTTP) lub BLE do telefonu.
🔋 Zasilanie bateryjne – z pomiarem poziomu baterii i automatycznym uśpieniem.
🚨 Funkcje dodatkowe – np. alarm przeciążeniowy, tryb liczenia sztuk czy integracja z systemem smart home.

Takich możliwości jest naprawdę sporo możesz rozwinąć tę wagę w kierunku prostego urządzenia kuchennego, mobilnej wagi przenośnej albo elementu większego systemu IoT.

Podsumowanie

Zbudowaliśmy prostą, a jednocześnie bardzo funkcjonalną wagę elektroniczną na ESP32 z wykorzystaniem belki tensometrycznej, modułu HX711 oraz wyświetlacza OLED. Projekt pokazuje, jak w łatwy sposób połączyć ze sobą popularne moduły i uzyskać praktyczne urządzenie do codziennego użytku.

Dzięki procedurze kalibracji obsługiwanej z terminala waga może być szybko dostosowana do użytego czujnika i zakresu pomiarowego. Wynik wyświetlany z dokładnością do jednego miejsca po przecinku jest czytelny i wystarczający do większości zastosowań.

Co ważne, konstrukcję można łatwo rozbudować o dodatkowe funkcje od przycisków tarowania i zmiany jednostek, przez zapis danych czy zasilanie bateryjne, aż po integrację z systemami IoT. To sprawia, że projekt świetnie nadaje się do dalszych eksperymentów i rozwijania swoich umiejętności w pracy z ESP32.


Prezentowaną w artykule elektronikę znajdziesz oczywiście w naszym sklepie 👉 sklep.msalamon.pl 👈Zapraszamy również na nasze social media, gdzie na bieżąco informujemy o nowych produktach oraz o najciekawszych promocjach 😎👇


Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *