Pierwszy prototyp: Arduino + FSR
Pierwszy prototyp opierał się na chińskiej replice Arduino Uno oraz czujniku nacisku FSR402. Pomysł na takie połączenie wziąłem z podobnego projektu na Instructables.
Problemy pojawiły się szybko. ADC w Arduino ma tylko 10 bitów. FSR działa praktycznie zero-jedynkowo: albo jest nacisk, albo go nie ma. Ciężko z tego wyciągnąć użyteczne dane o sile.
Konstrukcja polegała na uginaniu się płyty OSB. Gdy płyta się uginała, dotykała czujnika FSR umieszczonego pod spodem. Czujnik leżał na stosie desek do krojenia, żeby ustawić odpowiednią wysokość. Lekkie przesunięcie i pomiar przestawał działać.
Górna płyta, na której się stało, ślizgała się po reszcie konstrukcji. Nie mogłem jej przymocować na stałe, bo ciągle musiałem grzebać w środku. Arduino nie mieściło się w platformie, więc od czujnika FSR (który był po środku) szedł długi kabel na zewnątrz. Arduino nie miało baterii, więc musiało być cały czas podłączone do laptopa.
Cały prototyp ledwo działał i szczerze był niebezpieczny. Połączenie FSR z Arduino do tego zastosowania się nie nadawało.
Obecna wersja: ESP32 + Tensometry
Research zajął mi sporo czasu, bo nie do końca wiedziałem czego potrzebuję. Ostatecznie wybrałem:
- Tensometry 50kg – takie jak w wagach łazienkowych. 8 sztuk z plastikowymi obudowami za około 50 zł. Pojedynczy przemysłowy tensometr kosztuje więcej. Jak wszystko będzie działać idealnie, przejdę na lepsze.
- CS1238 – przetwornik ADC. 24 bity, 1280 Hz odświeżania. Dużo szybszy niż popularny HX711. Łatwy w podłączeniu.
- ESP32 – popularny mikrokontroler z WiFi, Bluetooth i ESP-NOW. Mnóstwo zasobów w internecie. Wybrany model ma wbudowaną ładowarkę, więc mogę podłączyć baterię 3.7V i ładować przez USB-C.
Odbiornik bezprzewodowy
Początkowo platforma miała być w pełni samodzielna. Drugie ESP32 z wbudowanym ekranem LCD miało wyświetlać wyniki. Ten pomysł ostatecznie porzuciłem (więcej w wyzwaniach software'owych), ale sam odbiornik działał bez problemów.
Kable i lutowanie
Największym problemem w tym prototypie były kable. Był to mój pierwszy raz z lutownicą i nie jestem w tym najlepszy. Schemat był dość skomplikowany:
8 tensometrów → 4 pary (mostek Wheatstone'a):
- Para górna-lewa (TL): Czujniki 1 i 2
- Para górna-prawa (TR): Czujniki 3 i 4
- Para dolna-lewa (BL): Czujniki 5 i 6
- Para dolna-prawa (BR): Czujniki 7 i 8
Przewody czarne i żółte (pętla mostka):
- Czarny TL ↔ Czarny TR (góra)
- Czarny BL ↔ Czarny BR (dół)
- Żółty TL ↔ Żółty BL (lewa)
- Żółty TR ↔ Żółty BR (prawa)
Przewody czerwone → CS1238:
- Czerwony TL → E+
- Czerwony BR → E−
- Czerwony TR → A+
- Czerwony BL → A−
CS1238 → ESP32:
- DOUT → GPIO 19
- SCK → GPIO 18
- VDD → 3.3V
- GND → GND
To w połączeniu z rozmieszczeniem 8 tensometrów spowodowało niezłą plątaninę kabli. Na szczęście wszystko połączyłem dobrze i zadziałało od pierwszego uruchomienia.
Co się poprawiło
Problem ze ślizgającą się płytą zniknął. Plastikowe obudowy tensometrów mają gumowe antypoślizgowe elementy, więc górna płyta jest stabilna bez przymocowania na stałe. Mogę ją ściągać kiedy chcę.
Wiele problemów, które wydawały się hardwareowe, ostatecznie zostało rozwiązanych w oprogramowaniu. Więcej o tym w wyzwaniach software'owych.