I Opis ogólny urządzenia:
Chciałbym przedstawić mój projekt bazujący na mikrokontrolerze STM32 dokładnie na modelu STM32F11RET6 http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f4-series/stm32f411/stm32f411re.html. Jest to sterownik dla urządzenia popularnie zwanego „wytrawiarką” przydatnego podczas prototypowania płytek PCB, czyli przyrządu podgrzewającego nadsiarczan sodu (B327) do temperatury 40 stopni i utrzymującym go na tym poziomie zapewniając przy tym ruch kąpieli trawiącej miedzianą płytkę PCB, w przedstawianym przeze mnie projekcie za pomocą napowietrzania.
Samo urządzenie nie jest innowacyjne i jego zasada działania jest ogólnie znana natomiast zastosowanie mikrokontrolera STM32 w roli układu wykonawczego wg. mnie już tak, korzystając z popularnej przeglądarki zasobów internetowych „Google” nie udało mi się znaleźć podobnego urządzenia wykorzysującego ten typ mikrokontroler`a np. jako projekt DIY, aczkolwiek nie twierdzę że takowe urządzenie oparte o ten mikrokontroler nie istnieje. Myślę również że sporą innowacją jest zastosowanie modułu Wi-Fi w sterowniku tego typu umożliwiającym komunikacje ze światem zewnętrznym. W przedstawianej przeze mnie aplikacji urządzenie łączy się z telefonem komórkowym opartym o system Android, pokazując na ekranie podstawowe informacje o stanie jego pracy, temperaturze B327, a także dając możliwość kontroli jego pracy. Dodatkowym urozmaiceniem są komunikaty głosowe podające np. osiągniętą zadaną temperaturę, potwierdzające wystąpienie zdarzenia, a największym rzekłbym jak dla mnie „bajerem” i chyba nie spotykaną innowacją w takim sterowniku jest wydawanie komend głosowych. Może to trochę dziwić, zastanawiać po co to w sumie jednakże dla mnie jest to dość praktyczne ponieważ ja mam swój hobbystyczny warsztat w przydomowym garażu i zamiast pilnować, chodzić sprawdzać czy czekać, aż zostanie osiągnięta pożądana temperatura nadsiarczanu (mimo zastosowania zmodyfikowanej akwariowej grzałki 300W w okresie zimowym zwykle to trochę twa) to wolę wykonywać inne czynności, będąc nawet w innym pomieszczeniu w domu i otrzymując komunikat na telefon.
Całe urządzenie zostało tak pomyślane nie jak to zwykle robione jest w projektach DIY różnych „wytrawiarek” jakie można znaleźć w sieci Internet, że układ sterowania, napowietrzania i akwarium stanowią jedność, ja zrobiłem specjalnie osobny sterownik i peryferia dołączane do niego by w razie jakiejkolwiek awarii wymienić tylko grzałkę, akwarium czy moduł termometru lub napowietrzacza jak również zastąpić je innymi modelami. W ogóle na potrzeby pokazania jak urządzenie pracuje na filmie i zdjęć stało ono przy akwarium z B327 docelowo jednak będzie ono znajdowało się z boku na biurku i sterowało tylko hermetycznym gniazdami prądowym dla napowietrzania i grzałki w takim jakby dygestorium z podświetleniem specjalnie do tego celu przeze mnie zrobionym. Głownie to ze względu na niekorzystne warunki panujące związane z wilgocią i unoszącymi się oparami nadsiarczanu wokół akwarium, jak i również pracy z wodą podczas płukania PCB po wyjęciu.
Tutaj właśnie też się przydaje proponowana przeze mnie innowacja związana z obsługą urządzenia przez telefon. Mianowicie użyty model Sony M4 Aqua jest hermetyczny zgodny z normami IP65 oraz IP68 więc podczas pracy z zakładaniem czy wyciąganiem płytki PCB z trawienia można go ze spokojem trzymać obok urządzenia i nim zarządzać nie przejmując się jego zalaniem czy zamoczeniem, a sam serownik stoi sobie bezpiecznie z boku.
II Opis części elektronicznej:
1. PCB sterownika:
Sercem całego urządzenia jak wspomniałem jest mikrokontroler STM32F11RET6 w obudowie LQFP64, który jest może trochę nadmiarowy jak na specyfikę tego urządzenia ja jednakże chciałem żeby był szybki (zwłaszcza dla magistrali SPI wyświetlacza) i miał sporą ilość pamięć FLASH, RAM dla użytych bitmap i czcionek, zmiennych oraz posiadał jeden z najnowszych rdzeni ARM jakie są obecnie dostępne, a także był przyszłościowy jak bym chciał rozwijać dalej obecne oprogramowanie w urządzeniu czy dodając jeszcze jakieś dodatkowe funkcjonalności. O jego wyborze miało również znaczenie dostępności platform sprzętowych do testów takich jak NUCLEO-F411RE czy STM32F411-DISCO.
Użyty model wyświetlacza to 3,5 calowy ekran dotykowy TFT 320x480 firmy ADAFRUIT model 2050 ze sterownikiem HXD8357D https://botland.com.pl/wyswietlacze-lcd-tft/2666-wyswietlacz-dotykowy-tft-lcd-35-320-x-480-z-czytnikiem-microsd.html. Można było oczywiście skorzystać z innego bardziej nowoczesnego, szybszego wykorzystującego potencjał mikrokontrolerów ST takich jak MIPI-DSI i Chrom-ART (wówczas nie było by tak długiego odświeżania) jednakże ja osobiście mam wielki sentyment do niego ponieważ otrzymałem go na walentynki od bliskiej mi osoby

Za pomiar temperatury odpowiada znany powszechnie i lubiany wśród hobbystów czujnik DS18b20, normlanie korzystam z innych zdecydowanie wg. mnie lepszych, szybszych, dokładniejszych jednakże w tym projekcie został użyty ten model ponieważ można go otrzymać jako moduł w specjalnej wodoodpornej obudowie ze stali nierdzewnej np. tu: https://botland.com.pl/czujniki-temperatury/1713-sonda-wodoodporna-z-czujnikiem-temperatury-ds18b20-1m.html?search_query=ds18b20&results=31, który wręcz idealnie nadaje się do użycia dla budowy „wytrawiarki” (ja jeszcze go dodatkowo zabezpieczyłem koszulka termokurczliwą z klejem). Dodatkowo w przypadku jakiejkolwiek jego awarii wg. mnie jest on nie drogi i nawet na szybko do ewentualnego zastąpienia własną „samoróbką”.
Za komunikacje z telefonem odpowiada moduł ATNEL-WIFI232-T firmy ATNEL https://sklep.atnel.pl/pl/p/ATNEL-WIFI232-T-ant/110 użyty w jego podstawowej aplikacji komunikujący się z mikrokontrolerem za pomocą UART. Zdecydowałem się na niego ponieważ dzięki wsparciu producenta, a zwłaszcza dedykowanemu oprogramowaniu jest łatwy w konfiguracji, zarządzaniu oraz obsłudze i tak naprawdę problematyka jego używania sprowadza się do uruchomienia obsługi UART. Dodatkowo na płycie sterownika znalazł się jeszcze BUZZER informujący o wciśnięciu danego klawisza jak i dioda informacyjna LED pierwotnie służąca do debugowania aplikacji, a finalnie informuje dodatkowo o pracy urządzenia przy otwartej obudowie.
Sposób połączenia omówionych wyżej peryferii i modułów można zobaczyć na schemacie oraz poglądowych zdjęciach:





2. PCB zasilania i triak`ów:
Płyta sterownika łączy się z drugą płytką, która stanowi moduł zasilania wraz z triakami sterującymi. Napięcie 230V idzie do transformatora 9V, a po wyprostowaniu trafia na moduł przetwornicy ATB-PWR-3 firmy ATNEL https://sklep.atnel.pl/pl/p/ATB-PWR3-przetwornica/20, która to daje 5V na wyjściu. Dzięki jej wykorzystaniu w obudowie nie podnosi się temperatura natomiast dodatkowa jej funkcjonalność wykorzystywana jest do załączania urządzenia przez przełącznik na przednim panelu. Do załączania grzałki i napowietrzacza służą triaki firmy ST BTA08-600C o wydajności prądowej 8A więc ze sporym zapasem mocy aniżeli podłączone urządzenia. Mikrokontroler komunikuje się z nimi przez optotriaki MOC3043 firmy Fairchild Semiconductor z wbudowanym układem przejścia przez zero. Zastanawiałem się pierwotnie czy nie zrobić własnego pomiaru tego przejścia oraz dać inne optotraki by sterować intensywnością napowietrzania jednakże mam takowe w budowane już w napowietrzacz ACO-9602 firmy HAILEA http://hailea.pl/pl/napowietrzacz-hailea-aco-9602.html, a z mojego doświadczenia wynika, że używam praktycznie jednej nastawy bliskiej pełnej mocy więc zrezygnowałem z tego pomysłu. Dodatkowo dodałem kondensator filtrujący na wejściu do transformatora oraz w ramach zabezpieczenia w urządzeniu występują dwa bezpieczniki osobny 6A znajdujący się w gnieździe wprowadzającym zasilanie 230V i osobny 1A dla części logicznej. W całej sekcji zasilania jak i na PCB sterownika występują kondensatory tantalowe i ceramiczne MLCC by zapewnić jak najlepszą filtracje zasilania dla mikrokontrolera. Warto też wspomnieć że przy triakach znajdują się 1W metalowe rezystory pracujące w roli gasików.
Płytki zaprojektowałem w programie Eagle w wersji 7.6 Maker firmy Autodesk Inc., a po przetestowaniu prototypów zleciłem ich wykonanie w firmie MERKAR z Katowic http://www.merkar.pl/.


3. Opis programu:
Program dla mikrokontrolera został napisany w języku „C” w środowisku TrueSTUDIO w wersji 5.5.2 Lite firmy ATOLLIC http://atollic.com/truestudio/z wykorzystaniem bibliotek HAL i uprzednio wygenerowanym kodem konfiguracyjnym w STM32CubeMX. Zegar STM32F11RET6 pochodzący z PLL rezonatora kwarcowego 8Mhz skonfigurowany jest na jego maksymalną moc 100Mhz, do odliczania czasu wykorzystywany jest również zewnętrzny rezonator dla RTC 32,768KHz. W CubeMx zostały skonfigurowane takie peryferia mikrokontrolera jak RTC, TIM2, TIM10, I2C1, SPI1 i USART2 oraz odpowiednie przerwania i porty GPIO dla poszczególnych wyjść wg. dołączonego schematu. Plik wynikowy konfiguracji z programu CubeMX dołączam jako załacznik do wglądu podobnie jak plik main.c który teraz skrótowo omówię tutaj:
Code: c
Program działa w następujący sposób, iż po załadowaniu i skonfigurowaniu zegarów oraz poszczególnych peryferii mikrokontrolera inicjalizuje wyświetlacz po SPI oraz uruchamia kontroler dotyku STMPE811 na I2C1. Następnie po przywitaniu się krótkim „intro” i wydaniu komunikatu dźwiękowego załącza menu główne i w tym momencie mikrokontroler zaczyna oczekiwać na przerwanie EXTI9_5_IRQHandler zgłaszane przez dotkniecie ekranu. Następnie po przeanalizowaniu danych odebranych z STMPE811 wylicza miejsce dotknięcia i na tej podstawie załącza wybraną opcję. W tle na przerwaniach wykonuje się cały czas pomiar temperatury oraz odbieranie i wysyłanie danych przez WiFi za pomocą UART dla telefonu o ile jest od włączony, jego podłączenie sygnalizowane jest zmiana stanu ikony w menu głównym. Cała obsługa ekranu i tego co jest na nim wyświetlane zachodzi w pliku "interface.c" Sama obsługa klawiszy jest natomiast w pętli głównej programu. Za odliczanie czasu dla Timer`a po wciśnięciu klawisza „AIR” odpowiedzialny jest układ RTC i wykorzystanie z niego przerwania RTC_WKUP_IRQHandler, w nim również znajduje się obsługa animacji termometru wówczas gdy pracuje grzałka. SysTick_Handler używany jest dla wydawania komunikatów dźwiękowych po wciśnięciu klawisza przez BUZZER, a w momencie wybrania klawisza „HOT” czyli uruchomienia grzania dla dwu stopniowej histerezy. Po wybraniu menu „SETUP” dostajemy możliwość ustawienia temperatury w zakresie 20-60 stopni (domyślnie po włączeniu na 40 stopni) oraz wybrania funkcji pracy TIMER`a, jako zwykły zegar odmierzający czas, a także odmierzający czas w dół w ustawionym zakresie od 1 do 90 minut po którym to nastąpi wyłączenie zarówno grzania jak i napowietrzania. Osobną nastawą jest załączanie sekwencyjne napowietrzania w zakresie 2-9 sekund, przydatne podczas podgrzewania B327. Klawiszem „BACK” wracamy z powrotem do menu głównego. W zależności od wybranych ustawień w menu setup zmienia się na nim opis i sposób pracy TIMER`a. Po włączeniu klawiszy „HOT” czy „AIR” oprócz zmiany ich kolorów dodatkowo podawany jest stan pracy zmiennymi ON/OFF. Gdy temperatura osiągnie zadany próg, termometr zmienia kolor na zielony i wyświetlany jest napis OK.
Użyte biblioteki do obsługi poszczególnych peryferii zostały prze zemnie przeportowane bądź napisane od nowa jednakże wykorzystując znalezione fragmenty kodów w sieci Internet bądź książkach czy notach katalogowych. Niektóre jej fragmenty zwłaszcza do obsługi czcionek z systemu Windows i wyświetlania ich na urządzeniu są kodami komercyjnymi chronionymi prawami autorskimi, mianowicie do ich wygenerowania użyłem programu PixelFactory firmy ATNEL https://sklep.atnel.pl/pl/p/Pixel-Factory/35 oraz fragmentów kodów pochodzącego z książki „Język C. Pasja programowania mikrokontrolerów 8-bitowych" Mirosław Kardaś https://sklep.atnel.pl/pl/p/Jezyk-C-Pasja-programowania-mikrokontrolerow-8-bitowych-Ksiazka-PENDRIVE-/138 by ich używać w moim programie. W związku z tym nie chciałbym publikować i udostępniać pełnego kodu programu by nie zostać posądzonym o łamanie praw autorskich. Jednakże jak najbardziej gdyby ktoś chciał wykonać sobie taki sterownik jako DIY udostępnię plik wynikowy HEX w załączniku.
Wspomnieć należy także o programie napisanym na telefon z systemem Android współpracującym z programem sterownika. Jest on stworzony w programie B4A firmy Anywhere Software Link w wersji 6.00 czyli w języku „Basic for Android”.Oprogramowanie to stanowi swego rodzaju nakładkę na Java SDK i Android SDK umożliwiającym w dość szybki i prosty sposób napisanie działającej aplikacji na system Android. Pokazywaną aplikację z jakiś czas jak zakończę jej testy na innych telefonach udostępnię do pobrania w sklepie Android „Play”. Samo działanie aplikacji jest uproszczoną wersją tego co widzimy na sterowniku wykrawarki tematycznie, kolorystycznie i layoutem nawiązującym do menu głównego na niej. Jak wspomniałem wcześniej mikrokontroler nadaje paczkę danych w postaci tzw. „stringa” po UART przez moduł Atnel WiFi, która to jest odbierana przez telefon i odpowiednio obrabiana. Do sterowania głosem używany jest aplet firmy Google łączący się przez Internet i analizujący wypowiedziane słowo. Po uruchomieniu programu na telefonie łączymy się z urządzeniem co jest sygnalizowane na nim sygnałem dźwiękowym oraz zmianą ikony „VOICE”. Kiedy urządzenia są ze sobą połączone to to co dzieje się na jednym dzieje się również i na drugim. Program telefoniczny stanowi tylko uzupełnienie projektu więc nie posiada możliwości zmiany nastaw urządzenia, to zachodzi tylko w samym urządzeniu.
4. Podsumowanie:
Na koniec dodam jeszcze że sam sterownik mimo, iż tworzony na potrzeby sterowania „wytrawiarką” PCB nawet bez specjalnych modyfikacji programowych jest jak dla mnie dość ciekawą, innowacyjną i uniwersalną platformą do sterowania czymkolwiek załączanym na 230V np. może posłużyć do zdalnego bądź czasowego wyłączania oświetlania jakiś stojących lamp w pokoju, żaluzji elektrycznych czy światełek na świątecznej choince albo i nawet być sterownikiem dla bojlera grzejącego wodę. Mając do dyspozycji mikrokontroler STM32F11RET6 „na pokładzie” oraz moduł Atnel WiFi sprawia to, iż możliwości tego urządzenia są ogromne. Spersonalizowana obudowa w standardzie dla urządzeń audio przez firmę EX-OR model Galaxy GX287 http://www.modushop.pl/237,galaxy-gx287-panel-3mm-srebrny-1gx287-.html pozwala jak dla mnie postawić to urządzenie w dowolnym miejscu w domu czy pracy, więc modyfikując już trochę oprogramowanie urządzenia może ono np. stać się eleganckim zegarkiem z budzikiem i ramką do zdjęć oraz synchronizacją czasu przez Internet, podającym temperaturę pokojową czy nawet krótkie wiadomości z Internetu, np. kursy waluty, pogodę.
Zdjęcia urządzenia:












Cool? Ranking DIY