Tentang proyek ini
Baru-baru ini, seluruh dunia sedang berjuang dengan virus Covid19. Pemeriksaan pertama untuk orang yang terkena (atau diduga terkena) adalah mengukur suhu tubuh. Maka proyek ini dibuat untuk memodelkan yang dapat mengukur suhu tubuh secara otomatis dan menginformasikan melalui suara.
Mari kita mulai!
Langkah 1:Daftar Bagian
Komponen untuk proyek:
1. Arduino UNO https://amzn.to/2P58O7s
2. Modul kartu SD https://amzn.to/2E1myhb
3. Kartu SD 8 GB https://amzn.to/2xTCz6i
4. Amplifier PAM8403 &speaker https://amzn.to/2E1myhb
5. Sensor ultrasonik HC-SR04 https://amzn.to/2E1myhb
6. OLED 128x64 https://amzn.to/2E1myhb
7. Kabel papan tempat memotong roti https://amzn.to/2E1myhb
8. Termometer inframerah GY-906 https://amzn.to/2Wlab5r
Beli komponen elektronik di utsource.net
Perhatikan bahwa:karena permintaan termometer inframerah yang tinggi, terkadang Anda mungkin tidak menemukan sensor GY-906 di pasaran.
Langkah 2:Desain Sirkuit
Lihatlah desain sirkuit.
Pada dasarnya akan mengukur suhu dari termometer inframerah GY-906, kemudian menunjukkan hasilnya pada LCD Oled 128*64. Ini juga memberi tahu Anda suhu hasil dengan suara melalui speaker. Pembicara akan mengambil file audio dari kartu SD, kemudian memutar berdasarkan hasil suhu. Speaker membutuhkan amplifier PAM8403 untuk membuat suara kita lebih nyaring.
Proses utama untuk menggunakan seperti ini:
1. Kami akan melambaikan tangan pada sensor ultrasonik (jarak sekitar 10cm)
2. Kemudian akan menyapa kami dengan suara "selamat datang di sistem pengukuran suhu, harap letakkan tangan atau dahi Anda sebelum sensor sekitar 2cm"
3. Kami meletakkan tangan atau dahi sebelum sensor untuk mengukur suhu
4. Ini akan membunyikan hasil suhu, serta menunjukkan pada LCD. Misalnya, suhu Anda 36,5dgC, ia akan berbicara "Suhu Anda 36,5 derajat C. Suhu Anda tampaknya normal, jadi jaga kesehatan!"
Langkah 3:Buat Bingkai dan Lakukan Koneksi
Bingkai dari kayu MDF ketebalan 3mm, dipotong dengan laser. Saya harap beberapa dari Anda dapat mendukung mesin laser cnc untuk memotongnya. Jika tidak, Anda dapat memotong karton untuk bingkai. File desain dapat diunduh di sini (Google share)
Setelah dipotong, Anda membutuhkan lem untuk membuat bingkai. Tidak sulit untuk membuat bingkai. Kemudian kita akan memasang semua bagian ke dalam frame, dan membuat wiring sebagai desain rangkaian
Langkah 4:Kode Berfungsi dan Unduh
Kode arduino akan melakukan tugasnya:
1. Mendeteksi jika ada orang (penghalang) di dekat sensor, terdeteksi oleh sensor ultrasonik
2. Ucapkan selamat datang oleh pembicara, beri tahu pengguna meletakkan tangan atau dahi di dekat sensor sekitar 2cm
3. Sampaikan hasil dan komentari suhu Anda
Kode dapat diunduh di sini
https://bit.ly/2Za1mjZ
Ini adalah file audio, Anda harus mengunduhnya dan menyimpannya ke dalam kartu SD
https://bit.ly/3aZpGWJ
Harap dicatat bahwa, file audio adalah 8bit, tipe mono, 11025Hz. Saya merekam suara saya dengan komputer (atau telepon), lalu mengonversinya dengan alat online (https://audio.online-convert.com/convert-to-wav)
Langkah 5:Uji Coba
Sekarang, kita dapat mencolokkan daya dan mengujinya. Sangat menarik karena sistem dapat mengukur suhu Anda dan menginformasikan melalui suara.
Saya harap Anda akan menyukainya :)
Terima kasih telah membaca!https://bit.ly/2Za1mjZ
Kode
- Arduino_ir_temperature_auto.ino
Arduino_ir_temperature_auto.inoArduino
// www.youtube.com/c/engineer2you#include // untuk kartu SD#define SD_ChipSelectPin 10 // untuk kartu SD#include // Lib untuk memutar file wav# termasuk // untuk termometer inframerah//-------------------------------------- - oled#include "SSD1306Ascii.h"#include "SSD1306AsciiAvrI2c.h"#define I2C_ADDRESS 0x3C // 0X3C+SA0 - 0x3C atau 0x3D#define RST_PIN -1 // Tentukan RST_PIN yang tepat jika diperlukan.//------ --------------------------------- oledAdafruit_MLX90614 mlx =Adafruit_MLX90614(); //untuk termometer inframerahSSD1306AsciiAvrI2c oled; // membuat objek untuk LCDTMRpcm tmrpcm; // membuat objek untuk pemutar musik temp ganda; // untuk menyimpan nilai suhuconst int trigPin =17; //ultrasonicconst int echoPin =16; //durasi ultrasonik panjang;int jarak;int langkah1_judge =0;pengaturan batal(){ //------------------------------ --------- oled #jika RST_PIN>=0 oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); #else // RST_PIN>=0 oled.begin(&Adafruit128x64, I2C_ADDRESS); #endif // RST_PIN>=0 // Panggil oled.setI2cClock(frekuensi) untuk mengubah dari frekuensi default. oled.setFont(Adafruit5x7); //-------------------------------------- oled tmrpcm.speakerPin =9; //pin 9 untuk output audio Serial.begin(9600); if (!SD.begin(SD_ChipSelectPin)) { // melihat apakah kartu ada dan dapat diinisialisasi:Serial.println("SD fail"); Serial.println("SD oke"); oled.clear(); oled.set1X(); oled.println("Kartu SD gagal"); kembali; // jangan lakukan apa-apa lagi jika tidak } else{ Serial.println("SD ok"); oled.clear(); oled.println("Kartu SD oke"); } penundaan(1000); tmrpcm.play("m_wel.wav"); // file suara selamat datang akan diputar setiap kali arduino dihidupkan, atau direset tmrpcm.volume(1); oled.clear(); oled.set2X(); oled.println(""); oled.println("Selamat datang"); pinMode(trigPin, OUTPUT); // Menetapkan trigPin sebagai Output pinMode(echoPin, INPUT); // Menetapkan echoPin sebagai Input mlx.begin(); //mulai penundaan termometer inframerah (10000); //menunggu audio sambutan}void loop(){ //------------membaca jarak // Menyetel trigPin pada status TINGGI selama 10 mikro detik digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, RENDAH); // Membaca echoPin, mengembalikan waktu tempuh gelombang suara dalam durasi mikrodetik =pulseIn(echoPin, HIGH, 23529); //23529us untuk timeout 4.0m // Menghitung jarak jarak=durasi*0.034/2; //speak_out(temp); Serial.print("Jaraknya adalah "); Serial.println(jarak); if ((jarak<10)&&(jarak>0)) step1_judge++; lain langkah1_judge=0; if (langkah1_judge>2){ step1_judge=0; tmrpcm.play("m_wel.wav"); penundaan (10000); //tunggu suara selamat datang lengkap temp =mlx.readObjectTempC()+1.2;//----------membaca suhu &tampil di LCD //temp =37.4; //untuk pengujian, beri komentar pada baris ini untuk pembacaan yang sebenarnya oled.clear(); oled.set2X(); oled.println(""); oled.print(" "); oled.print(temp,1); oled.println("dgC"); tmrpcm.play("m_now.wav"); penundaan (1380); if (temp<20){ tmrpcm.play("m_b20.wav"); // berbicara di bawah 20 dgC delay(1700); //tunggu audio selesai tmrpcm.play("m_nman.wav"); //ucapkan penundaan "kamu bukan manusia"(2270); //tunggu audio selesai } else{ if (temp>
50){ tmrpcm.play("m_over50.wav"); // berbicara lebih dari 50 dgC delay (1740); tmrpcm.play("m_nman.wav"); //ucapkan penundaan "kamu bukan manusia"(2270); } lain{ speak_out(temp); // ucapkan suhu (jika dari 20 hingga 50dgC) delay(1500); if((temp>
36)&&(temp<37)){ tmrpcm.play("m_normal.wav"); // ucapkan "suhu normal, jaga kesehatan" jika penundaan 36~37dgC (3268); } if(temp>
37){ tmrpcm.play("m_fever.wav"); //ucapkan delay "kamu demam"(2728); } } } } delay(300);}void speak_out(double temperature_result){ //subprogram ini akan mengeluarkan temperature temperature_result =temperature_result*10; suhu_hasil =bulat(hasil_suhu); int suhu0 =suhu_hasil; int suhu1 =suhu0/10; //nilai suhu, angka xy (dalam xy.z dgC) int temp2 =temp1%10; //nilai suhu, angka y (dalam xy.z dgC) int temp3 =temp0%10; //nilai suhu, z digit (dalam xy.z dgC) if(temp1<20){ tmrpcm.play("m_below20.wav"); // di bawah 20dgC penundaan (1631); } if(temp1>50){ tmrpcm.play("m_over50.wav"); //penundaan 50dgC yang lebih besar(1747); } if((temp1>=20)&&(temp1<=29)){ tmrpcm.play("m_twenty.wav"); //dua puluh penundaan(600); } if((temp1>=30)&&(temp1<=39)){ tmrpcm.play("m_thirty.wav"); //tiga puluh penundaan(500); } if((temp1>=40)&&(temp1<=49)){ tmrpcm.play("m_fourty.wav"); //empat puluh penundaan(691); } if (temp2!=0) speak_num(temp2); //nilai suhu, angka y (dalam xy.z dgC) if((temp1>=20)&&(temp1<=50)){ tmrpcm.play("m_point.wav"); //titik penundaan(319); speak_num(temp3); //nilai suhu, z digit (dalam xy.z dgC) } tmrpcm.play("m_dgc.wav"); //derajat C penundaan(853); Serial.println(temp0); Serial.println(temp1); Serial.println(temp2); Serial.println(temp3);}void speak_num(int number){ //subprogram ini akan dipanggil di sub-program "speak_out()" if(number==1){ tmrpcm.play("m_one.wav" ); //satu penundaan(453); } if(angka==2){ tmrpcm.play("m_two.wav"); //dua penundaan(499); } if(angka==3){ tmrpcm.play("m_three.wav"); //tiga penundaan(406); } if(angka==4){ tmrpcm.play("m_four.wav"); //empat penundaan(401); } if(angka==5){ tmrpcm.play("m_five.wav"); //lima penundaan(354); } if(angka==6){ tmrpcm.play("m_six.wav"); //enam penundaan(401); } if(angka==7){ tmrpcm.play("m_seven.wav"); //tujuh penundaan(633); } if(angka==8){ tmrpcm.play("m_eight.wav"); //delapan penundaan(360); } if(angka==9){ tmrpcm.play("m_nine.wav"); //sembilan penundaan(580); } if(angka==0){ tmrpcm.play("m_zero.wav"); //penundaan nol(610); }}
Skema