Żeby przeskanować wszystkich pracowników naszego działu w miejscu wejścia, można to zrobić za pomocą bezdotykowego skanera temperatury, który przypomina większość innych bezdotykowych czujników do monitorowania temperatury ciała, z tym wyjątkiem, że za każdym razem, gdy wykryje temperaturę, mówi, że wszystko jest w porządku lub masz gorączkę i następnie przesyła dane do chmury - thingspeak.com.
Skaner ma kilka wolnych GPIO, z których każdy może być zaprogramowany do obsługi aparatu z migawką, ale nie jest to brane pod uwagę w tym projekcie.
Aby zmierzyć temperaturę, gdy tylko obiekt zbliży się na odległość mniejszą niż 5 cm, do pomiaru odległości używany jest ultradźwiękowy czujnik HC-SR04, mierzona jest temperatura, wyzwalany jest przetwornik cyfrowo-analogowy, aby jednocześnie ogłosić wynik. Dane są przesyłane do chmury.
ESP32 ma dwa piny GPIO DAC - 25 i 26. Pin 25 może być wykorzystany do odtwarzania dwóch plików 8 kHz WAV [w kodzie C] w zależności od temperatury poniżej 99°F lub powyżej 99°F (alternatywnie poniżej 37°C lub powyżej 37°C). Specjalny plik biblioteki jest używany do wdrażania tej możliwości. Mały wzmacniacz audio o napięciu 5 V - PAM8403 Stereo Audio Amplifier Board służy do tego, aby głos był słyszalny przez głośnik 8 Ω 3 W.
Gdy temperatura jest wyższa lub równa 99°F, w brzęczyku piezo generowany jest również alarm dźwiękowy i miga dioda LED. Jak w prawdziwym centrum diagnostycznym!
Wszystko to jest zbudowane przy użyciu jednego lub dwóch ESP32, adaptera 5 V i małego wzmacniacza audio. 5 V jest niezbędne, ponieważ HC-SR04 działa na takim zasilaniu. Internet Wi-Fi służy do przesyłania danych na serwer w chmurze [thingspeak.com]. Jeśli masz aparat, którego migawkę można aktywować za pomocą solenoidu, ESP32 może również to obsłużyć po wprowadzeniu niewielkiej zmiany w kodzie! Tak, że gdy wyczuje temperaturę powyżej 99, aktywuje to GPIO, aby kliknąć migawkę i zrobić zdjęcie osoby.
Można ustawić obsługę wielu sieci Wi-Fi, dzięki czemu z którąkolwiek zostanie nawiązane połączenie będzie można przesłać dane do chmury. Zobacz fragment kodu dla SSID i hasła. Wymień identyfikator SSID i hasła zgodnie ze swoim identyfikatorem SSID i hasłami.
// Zdefiniuj znane sieci
const char* KNOWN_SSID[] = {“bera1”, “bera.”, “.bera”,”NTPC_WiFi”};
const char* KNOWN_PASSWORD[] = {“12345678”, “34567890”, “5566789014”,”ascdefgh”};
const int KNOWN_SSID_COUNT = sizeof(KNOWN_SSID) / sizeof(KNOWN_SSID[0]);
// liczba znanych sieci
BOM: Source = [calcuttaelectronics.com robu.in amazon.in]
Schemat
Ponieważ odtwarzanie dźwięku i wyświetlanie kolorów wymaga ogromnej mocy obliczeniowej, jeśli załadujemy wszystko do jednego ESP32, odtwarzanie i wyświetlanie dźwięku będzie bardzo zakłócone, a jakość zostanie obniżona. Aby rozwiązać ten problem użyliśmy dwóch ESP32 - Main ESP32 i Voice ESP32.
Voice ESP32
Należy wgrać kilka plików głosowych i zaprogramować go w taki sposób, że pliki głosowe są odtwarzane, gdy poszczególne GPIO przechodzą w stan wysoki. Załadowane powinny być dwa pliki: "Jesteś OK" i "Masz gorączkę". Możesz dodać więcej głosów, aby zgrać z kilkoma innymi stanami. Należy jednak pamiętać, aby były one małe i miały częstotliwość próbkowania tylko 8 kBit.
Main ESP32
Jest to główny ESP32 połączony z kolorowym wyświetlaczem TFT ILI 9163, radarem ultradźwiękowym HC-SR04 i czujnikiem temperatury MLX90614 IR. Opcjonalnie można załadować go kodami głosowymi i połączyć z płytką wzmacniacza PMA8403 i głośnikiem, ale to poważnie ograniczy możliwości wyświetlacza. Tylko dane jednej temperatury mogą być wyświetlane, więcej znaków wyświetlacz nie pomieści. Dlatego ten ESP32 jest odpowiedzialny tylko za wykrywanie odległości i kiedy odległość jest w zakresie [2 cm do 15 cm], będzie odczytywać temperaturę ciała i uznać ją za "stan gorączki" lub "stan OK". Układ podłączy się do sieci Wi-Fi i wyśle dane do chmury. W tym czasie uaktywni kilka GPIO, aby uruchomić brzęczyk, kilka diod LED i wyda komendy do 'Voice ESP32', aby odtworzyć odpowiedni dźwięk głosowy.
Temperatura >=99 to "stan gorączki", a temperatura <99 to "stan OK". W stanie gorączki brzęczyk będzie emitował sygnał dźwiękowy, a wyświetlacz będzie miał kolor czerwony. Oba ESP32 mogą być zasilane z jednego zasilacza lub z dwóch oddzielnych źródeł zasilania. Jednak ich wspólne linie masy muszą być połączone razem.
Podłączenie głośnika odbywa się poprzez układ wzmacniacza PAM8403 z GPIO pin 25 i GND. Zasilanie dla wzmacniacza jest pobierane z 5 V i GND. Wyjście jest odtwarzane na głośniku 8 Ω ze wzmacniacza PAM8403. Do linii zasilającej 5 V DC należy podłączyć najlepiej 2 A lub więcej, jak pokazano na schemacie. Większa moc jest wymagana ze względu na wzmocnienie płytki PMA8403. Zasilanie 3,3 V jest realizowane przez wbudowany regulator napięcia w ESP32.
Tworzenie plików WAV
Większość ciężkiego obciążenia jest wykonywana przez bibliotekę XT_DAC_Audio z xtronical.com. Bibliotekę można pobrać z tego adresu lub można ją pobrać z zasobów biblioteki, które dołączono do tego projektu.
Użytkownicy Windows idą okrężną drogą…
Następnie, co musisz zrobić, to przekonwertować wybrany plik audio wav na [8 kHz częstotliwość próbkowania] plik C w formacie HEX. Istnieje wiele stron z konwerterami dźwięku online [np. fromtexttospeech.com], które pobierają twoje teksty i konwertują je do wybranych przez ciebie plików dźwiękowych [mp3, wav, ogg itp.] Proszę upewnić się, że plik ten jest plikiem wav 8 kHz PCM.
Następnie plik 8 kHz wav zostanie przekonwertowany na szesnastkowy kod C za pomocą innego oprogramowania HxD z mh-nexus.de, który ostatecznie stanie się prostym plikiem tekstowym, który nazwiemy jako fever.h i ok.h.
W przypadku, gdy jest to plik dźwiękowy w formacie wav lub mp3, należy użyć innego programu - audacity, aby przekonwertować go do formatu 8 kHz wav. Audacity jest dostępny na stronie audacityteam.org.
fever.h mówi = "Masz gorączkę".
ok.h mówi = "Jesteś OK".
Użytkownicy Linux mają łatwiej...
Wymagane są dwa programy - gtts-cli [Google text to sound software] i xxd. Oba mogą być zainstalowane z linii poleceń przy użyciu poniższych poleceń.
sudo pip3 install gTTS // instaluje Google Text to Speech
sudio apt-get install xxd //Instaluje oprogramowanie xxd
Konwersja tekstu do pliku wav jest prosta, a konwersja tego pliku wav do zakodowanego heksadecymalnie pliku C jest po prostu kolejną prostą komendą.
// gtts-cli “Masz gorączkę” -l en -o fever.wav
Otwórz ten plik w edytorze muzycznym Audacity i wyeksportuj go jako plik wav w formacie 8 kHz PCM
// xxd -i fever.wav fever.h
// gtts-cli “Jesteś OK” -l en -o ok.wav
Otwórz ten plik w edytorze muzycznym audacity i wyeksportuj go jako plik wav w formacie 8 kHz PCM
// xxd -i ok.wav ok.h
Umieść te pliki w tym samym folderze szkicu Arduino i jesteś gotowy, aby zaimponować swojemu wydziałowi.
Działanie
MLX90614 jest urządzeniem I2C. Fabrycznie domyślny adres I2C to 0x5A. Jednak aby dodać więcej MLX90614 na tym samym mikrokontrolerze, należy zmienić adres I2C. Dodany jest również osobny szkic, aby urządzenie mogło komunikować się z różnymi adresami I2C. Jeśli obiekt jest dalej niż 5 cm, układ zaproponuje zbliżenie się do niego. Gdy będzie już blisko, zmierzy temperaturę. Wypowie - "Jesteś OK" lub "Masz gorączkę" w zależności od zakresu mierzonych temperatur. Po wyświetleniu odległości i temperatury na TFT, następne 10 sekund zostanie zużyte na wysłanie danych do serwera w chmurze - thingspeak.com.
Aby transfer danych był ciągły i szybki należy wykupić miejsce w chmurze od thingspeak.com lub innego serwera w chmurze lub można mieć własny firmowy serwer w chmurze do wysyłania danych non stop w przeciwieństwie do 15 sekundowych przerw w darmowej chmurze thingspeak.com.
Mała płytka wzmacniacza stereo PMA8403 działa na 5 V i wyjście idzie do 8 omowego 3 watowego głośnika. Wykorzystywany jest tylko jeden kanał płytki wzmacniacza.
Prototyp przedstawiono na fotografii otwierającej, a poniżej sposób w jaki jest on rozmieszczony w biurze.
C = podłączony do WiFi, U = wysłane dane, D = odległość
Temperatura jest wyświetlana w stopniach Celsjusza.
Każda forma układu ESP32 / ESP32S lub ESP32S2 będzie działać dla tego projektu. Proszę zwrócić uwagę na numery GPIO przy ich podłączaniu.
Działanie układu głosowego ESP-32
Ten ESP32 jest zaprogramowany do rozwidlania i odtwarzania kilku 8 kbitowych plików audio PCM wav z jego pamięci RAM. W tym projekcie użyto trzech plików audio i zaprogramowano go w taki sposób, że gdy pin GPIO - 17 jest ustawiony na wysoki, odtwarzany jest dźwięk "Jesteś OK". Wysoki stan na GPIO-17 układu Voice-ESP32 pochodzi z GPIO-33 układu Main-ESP32. Aby uniknąć fałszywego wyzwalania, zaleca się podłączenie rezystora 5,6 kΩ do GPIO-17 i masy.
W ten sam sposób, gdy GPIO-5 układu 'Voice-ESP32' zostanie ustawione w stan wysoki, odtwarzany jest dźwięk "Masz gorączkę". Stan wysoki GPIO-5 pochodzi z GPIO-33 układu "Main ESP-32". Aby uniknąć fałszywego wyzwalania, zaleca się podłączenie rezystora 5,6 kΩ do GPIO-5 i masy.
Jeśli GPIO-16 układu 'Voice ESP-32' zostanie ustawione w stan wysoki, zostanie odtworzony dźwięk 'Witaj', ale tego tutaj nie użyto. Do Ciebie należy teraz wykorzystanie swojej pomysłowości, aby zastosować ten dźwięk.
Chmura Thingspeak
Bardzo popularna chmura IOT do hostowania danych zwrotnych z czujników za pomocą tanich urządzeń Wi-Fi - ESP8266, ESP32, Wi-Fi umożliwia Arduino itp. Można połączyć się z adresem thingspeak.com, utworzyć login przy użyciu danych uwierzytelniających [imię, wiek, adres e-mail itp...], a następnie istnieją dwa rodzaje członkostwa dostępne do wyboru. Użytkownik komercyjny jest płatny i może przesłać jedną daną [maksymalnie 8 danych na stronę] na sekundę, podczas gdy użytkownik darmowy może przesłać jedną daną [maksymalnie 8 danych na stronę] na 15 sekund. Po pomyślnym zalogowaniu się otrzymasz jeden "klucz autoryzacji zapisu", 16 znakowy, za pomocą którego możesz wysyłać dane do serwera thingspeak. Możesz zadeklarować swoją stronę jako publiczną lub prywatną. Jeśli zostanie zadeklarowana jako publiczna, każdy kto otworzy ten URL w swojej przeglądarce, będzie mógł zobaczyć krzywą trendu następujących ośmiu danych (val[0] do val[7] w 8 krzywych trendu).
https://api.thingspeak.com/update.json?api_key=”YourWriteKey” &field1=”.String(val[0]).” &field2=”.String(val[1]).”&field3=”.String(val[2]).”&field4=”.String(val[3]).”&field5=”.String(val[4]).”&field6=”.String(val[5]).”&field7=”.String(val[6]).”&field8=”.String(val[7].”)”;
Jeśli uruchomisz tę komendę w dowolnej przeglądarce lub poprzez komendę GET w ESP32, będzie ona przesyłać 8 danych na raz do serwera thingspeak. Następnie otwórz swoją stronę thingspeak i zachwyć swoją okolicę.
Mój kanał na thingspeak.com hostuje tylko jedną daną [fever data].
Artykuł ESP32 Touchless Temperature Scanner opracowano w wersji polskiej na podstawie współpracy z portalem www.electronicsforu.com.