Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Kontrol Temp Tanpa Kontak Karyawan pada Pass-Through RFID

Komponen dan persediaan

Arduino MKR1000
× 1
Pembaca RFID RC522
× 1
OLED 0.96" 128x32
× 1
MLX90614
× 1

Aplikasi dan layanan online

Arduino IDE
Fritzing

Tentang proyek ini

Saat karyawan mengakses perusahaan menggunakan tag RFID, kami juga mengukur suhu tubuh karyawan dengan termometer inframerah non-kontak. Jika ada suhu tinggi (salah satu gejala COVID19), akses diblokir. Selain itu, semua data (identifikasi karyawan melalui RFID) masuk ke situs web perusahaan yang memantau data waktu kedatangan ke tempat kerja dan tag suhu tubuh (identifikasi karyawan untuk UID RFID).

Memasuki kantor menggunakan RFID dengan pengatur suhu (test)

Melihat data yang dikirim dari awan

Memasuki kantor menggunakan RFID dengan pengatur suhu

video2

Langkah 1. Instalasi perangkat lunak

Kami menggunakan Arduino MKR 1000 WiFi Board sebagai pengontrol. Kami akan memprogram di Arduino IDE. Secara default, Arduino IDE dikonfigurasi hanya untuk papan AVR. Untuk bekerja dengan platform Arduino MK Wi-Fi 1000, Anda perlu menambahkan dukungan untuk Arduino SAMD (32bit ARM Cortex-M0+) di Manajer kartu. Di Manajer Dewan (Alat> Dewan> Manajer Dewan ), temukan Arduino SAMD dan klik tombol Instal.

Setelah menginstal perangkat lunak di Arduino IDE, menu Tools Board akan mendukung Arduino Zero dan papan MKR, termasuk Papan WiFi MKR 1000). Hubungkan kartu MKR 1000 ke komputer Anda menggunakan kabel USB. Driver harus diinstal secara otomatis.

Langkah 2. Menghubungkan sensor suhu IR MLX90614 ke Arduino MKR 1000 Wi Fi Board

MLX90614 adalah sensor inframerah untuk pengukuran suhu non-kontak. Alat ini dapat mengukur suhu dalam kisaran -70 hingga 380 derajat Celcius dengan akurasi sekitar 0,5°C. Saya memiliki stok MLX90614DAA

Sensor menggunakan Protokol I2C. Tetapkan kontak

Diagram koneksi ke Papan WiFi Arduino MKR

Untuk pemrograman, kami menggunakan perpustakaan Adafruit_MLX90614.h, yang harus diinstal melalui Perpustakaan Manajer (Sketsa> Sertakan perpustakaan> Perpustakaan Manajer ). Unggah sketsa ke Papan Arduino (mlx90614_01.ino)

// Menghubungkan library
#include
#include
// Membuat instance objek
Adafruit_MLX90614 mlx =Adafruit_MLX90614();

void setup() {
Serial.begin(9600);
Serial.println("start");
// memulai Sensor MLX90614
mlx.begin();
}

void loop() {
Serial.print("Ambient ="); Serial.print(mlx.readAmbientTempC());
Serial.print("*C");
Serial.print("\tObject ="); Serial.print(mlx.readObjectTempC());
Serial.print("*C");
Serial.print("\tObject ="); Serial.print(mlx.readObjectTempF());
Serial.println("*F");
delay(3000);
}

Dan buka monitor port serial. Suhu sekitar dan suhu objek dikeluarkan ke port serial setiap 3 detik

Langkah 3. Menghubungkan layar OLED ke Papan WiFi Arduino MKR 1000

Proyek ini menggunakan layar OLED monokrom 12x32 dalam bentuk modul dengan pengikatan yang diperlukan pada chip SSD1306. Modul-modul ini berjalan pada antarmuka I2C. Diagram koneksi ke Papan Arduino

Saat memprogram, kami menggunakan pustaka Adafruit SSD1306. Memuat sketsa keluaran suhu ke layar. Kami mengukur suhu setiap 3 detik (mlx90614_02.ino).

// Menghubungkan library
#include
#include
#include
#include
// Membuat instance objek
Adafruit_MLX90614 mlx =Adafruit_MLX90614();
Adafruit_SSD1306 display(128, 32, &Wire, -1);

float temp;
unsigned long millis1=0;

void setup() {
Serial.begin(9600);
// memulai tampilan
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextSize(1);
display.setTextColor(WHITE);
// opsi tampilan
display.clearDisplay();
display.display();
// memulai sensor MLX90614
mlx.begin();
// start
Serial.println("start");
}

void loop() {
if(millis()-millis1>=3000) {
display.clearDisplay();
display. setCursor(10,10);
display.println(F("Tunggu temp...."));
temp=mlx.readObjectTempC();
display.setCursor(10, 20);
display.print(temp);
display.print(F(" *C"));
display.display();
//
millis1=millis();
}
}

Langkah 4. Menghubungkan modul pembaca RFID rc522 ke Papan WiFi Arduino MKR 1000

Ada berbagai macam tag RFID. Tag aktif dan pasif (tanpa sumber daya bawaan, ditenagai oleh arus yang diinduksi di antena oleh sinyal dari pembaca). Tag bekerja pada frekuensi yang berbeda:LF (125 - 134 kHz), HF (13,56 MHz), UHF (860 - 960 MHz). Perangkat yang membaca informasi dari tag dan menulis data ke tag disebut pembaca. Dalam proyek Arduino, modul RFID-RC522 sangat sering digunakan sebagai pembaca. Modul ini dibuat pada chip MFRC522 dari perusahaan NSP, yang menyediakan pekerjaan dengan tag RA (pada frekuensi 13,56 MHz).

Menghubungkan ke kartu WiFi Arduino MCF 1000 melalui Protokol SPI

Sketsa deteksi UID untuk kartu RFID, pengukuran suhu, dan pesan tentang membuka atau menutup input dengan output ke port serial (mlx90614_03.ino).

// Menghubungkan library
#include
#include
#include
#include
#include
#include
// Membuat instance objek
Adafruit_MLX90614 mlx =Adafruit_MLX90614();
Adafruit_SSD1306 display(128, 32, &Wire, -1);
MFRC522 mfrc522(7, 6);

byte cardUID[4] ={0,0,0,0 };
int res=1;
float temp;
unsigned long millis1=0;

void setup() {
Serial.begin(9600) );
// memulai tampilan
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextSize(1);
display.setTextColor(WHITE);
display .clearDisplay();
display.display();
// memulai sensor MLX90614
mlx.begin();
// апуск SPI
SPI.begin ();
// menginisialisasi MFRC522
mfrc522.PCD_Init();
Serial.println("start");
Serial.println("Tunggu RFID ...." );
}

void loop() {
switch(res ) {
case 1:// menunggu RFID
display.clearDisplay();
display.setCursor(10,10);
display.print(F("Tunggu RFID ...."));
// Memeriksa apakah kartu terpasang
if ( mfrc522.PICC_IsNewCardPresent()) {
// Membaca info peta.
if ( mfrc522.PICC_ReadCardSerial()) {
// simpan UID
Serial.print(F("Card UID:"));
display.setCursor(10,20);
untuk (byte i =0; saya <4; i++) {
cardUID[i]=mfrc522.uid.uidByte[i];
Serial.print(cardUID[i],HEX);
display.print(cardUID[i], HEX);
}
Serial.println();
Serial.println("Tunggu suhu....");
res=3;
}
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
display.display();
break;
case 2:// request ke server UID dari database
break;
case 3:// menunggu pengukuran suhu
delay(2000);
display.clearDisplay();
display .setCursor(10,10);
display.println(F("Tunggu temp...."));
temp=mlx.readObjectTempC();
display.setCursor(10 ,20);
display.print(temp);
display.print(F(" *C"));
display.display();
if(temp> 34.0 &&temp<42.0) {
res=5;
}
break;
case 4:// mengirim data suhu ke server
break;
case 5:// buka atau tutup
display.clearDisplay();
display.setCursor(10,10);
display.print(F("Temp="));
display.pr int(temp);
display.print(F("*C"));
display.setCursor(10,20);
if(temp<37.5) {
display.print(F("OPEN"));
Serial.println("OPEN");
}
else {
display.print(F("CLOSE") );
display.setCursor(10,0);
display.print(F("Temp high!!!"));
Serial.println("CLOSE");
Serial.println("Suhu tinggi!!!");
}
display.display();
delay(3000);
Serial.println("Tunggu RFID ....");
res=1;
break;
default:
break;
}
}

Langkah 5. Menghubungkan Papan WiFi Arduino MKR 1000 ke Internet

Untuk menghubungkan Arduino MKR1000 ke jaringan Wi-Fi, kita akan menggunakan library WiFi101, yang akan kita instal menggunakan library Manager (Sketsa Include library Manager Libraries).

Unduh sketsa menghubungkan Papan Wi-Fi Arduino MK R 1000 ke titik akses yang diperlukan. Unggah contoh dari connectWithWPA.ino library ke Board dengan memasukkan data hotspot WiFi Anda di tab:

#define SECRET_SID "My_D Link"
#define SECRET_PASS "********"

Setelah men-download sketsa, buka monitor port serial, di mana Anda dapat melihat proses menghubungkan Papan Wi-Fi Arduino MKR1000 ke titik akses.

Jika koneksi berhasil, lanjutkan.

Langkah 6. Membuat database karyawan di situs web perusahaan dan database untuk mengumpulkan pembacaan suhu harian di pintu masuk

Membuat database di hosting (MySQL) dan dua tabel di dalamnya:

  • pengguna - data karyawan dan uid mereka;
  • suhu - untuk mengumpulkan data suhu tubuh yang diukur pada input.

Nah pada hosting kita membuat 2 script untuk mengolah data yang dikirim oleh Arduino MKR 1000 WiFi. Skrip get_uid.php memeriksa ID dalam database dan mengembalikan dalam respons:

#tidak – jika uid tidak ada di database

#ya; - jika uid ada di database

Isi skrip get_uid.php

//
$location="localhost";
$user="************";
$pass="************";
$db_name="************";
// sambungkan db
if(! $db=mysqli_connect($location,$user,$pass,$db_name))
{echo "connect error";}
else
{;}
$query0=" SELECT * FROM users WHERE uid='".$_GET['uid']."' ";
$rez0=mysqli_query($db,$query0);
jika (mysqli_num_rows($rez0)>0) {
$row0=mysqli_fetch_assoc($rez0);
echo "#yes".";".$row0[nama];
}
else {
echo "#no";
}
?>

Anda dapat menguji skrip dengan mengirimkan permintaan dari browser:

Skrip get_temp.php mengirimkan suhu karyawan ke database

Isi skrip get_temp.php

//
$location="localhost";
$user="************";
$pass="************";
$db_name="************";
// sambungkan db
if(! $db=mysqli_connect($location,$user,$pass,$db_name))
{echo "connect error";}
else
{;}
$query0=" SELECT * FROM users WHERE uid='".$_GET['uid']."' ";
$rez0=mysqli_query($db,$query0);
jika (mysqli_num_rows($rez0)>0) {
$row0=mysqli_fetch_assoc($rez0);
$query1=" INSERT INTO temp SET
id_user='".$row0['id' ]."',
temp='".$_GET['temp']."',
hari='".date('Ymd H:i:s')."' ";
mysqli_query($db,$query1);
echo "#yes";
}
else {
echo "#no";
}
?>

Anda dapat menguji skrip dengan mengirimkan permintaan dari browser:

LANGKAH 7. Mengirim data dari WiFi Arduino MKR 1000 ke website perusahaan

Mari kita tulis 2 fungsi:

send_uid_to_server () - mengirim uid ke server;

send_temp_to_server () - mengirimkan suhu ke server.

Fungsi send_uid_to_server()

int send_uid_to_server() {
int ret=3;
unsigned long previos;
int x=0;int f=0;
char s;
client.stop();
if (client.connect(server, 80)) {
//// mengirim data ke server
// membentuk string
// uid per baris
String str="/firm/get_uid.php?uid=";
for (byte i =0; i <4; i++) {
str+=String (cardUID[i],HEX);
}
Serial.print("str=");Serial.println(str);
client.println("GET "+str+" HTTP /1.1");
client.println("Host:freeparkovka.ru");
client.println("User-Agent:ArduinoWiFi/1.1");
client.println(" Koneksi:tutup");
client.println();
// олучение ответа
previos=millis();
for(int i=0;i<40;i++ )
response[i]=0;
do {
if(client.available()> 0) {
// ambil data dari server
s =client.read();
if(s=='#')
f=1;
if(f==1) {
response[x]=s;
x++;
}
Serial.write(s);
}
}
while((millis( ) - sebelumnya) <5000);
if(respon[0]='#') {
ret=command(respon);
}
Serial.println(respon);
//client.stop();
return ret;
}
else {
// tidak ada koneksi
Serial.println("koneksi gagal ");
//client.stop();
return 3;
}
}

Fungsi send_temp_to_server()

void send_temp_to_server() {
client.stop();
if (client.connect(server, 80)) {
//// mengirim data ke server
// membentuk string
// uid per baris
String str="/firm/get_temp.php?uid=";
for (byte i =0; i <4; i++) {
str+=String(cardUID[i],HEX);
}
str+="&temp="+String(temp);
Serial.print( "str=");Serial.println(str);
client.println("DAPATKAN "+str+" HTTP/1.1");
client.println("Host:freeparkovka.ru");
client.println("User-Agent:ArduinoWiFi/1.1");
client.println("Koneksi:tutup");
client.println();
Serial. println(tanggapan);
delay(10); }
else {
// tidak ada koneksi
Serial.println("koneksi gagal");
}
}

LANGKAH 8. Menambahkan relai untuk mengaktifkan / menonaktifkan input

Menambahkan relai untuk mengaktifkan / menonaktifkan pintu masuk ke perusahaan, tergantung pada nilai suhu. Diagram koneksi:

Dan tambahkan ke kode yang mengaktifkan/menonaktifkan relai untuk membuka atau menutup input, tergantung pada data suhu.

if(temp<37.5) { // BUKA
display.setCursor(10,0);
display.print(F("OPEN"));
Serial .println("OPEN");
digitalWrite(pinRelay,HIGH);
}
else { // TUTUP
display.print(F("CLOSE"));
display.setCursor(10,0);
display.print(F("Temp high!!!"));
Serial.println("CLOSE");
Serial .println("Suhu tinggi!!!");
digitalWrite(pinRelay,RENDAH);
}

Dan seluruh kode sketsa ((mlx90614_07.ino))

// Menghubungkan library
#include
#include
#include
#include
#include
#include
#include
// Membuat instance objek
Adafruit_MLX90614 mlx =Adafruit_MLX90614();
Adafruit_SSD1306 display(128, 32, &Wire, -1);
MFRC522 mfrc522(7, 6);
WiFiClient client;
// Anda SSID jaringan (nama)
// dan kata sandi (WPA)
char ssid[] ="my_DLink";
char pass[] ="********";
// alamat nama
server char[] ="www.freeparkovka.ru";
int pinRelay=5;
status int =WL_IDLE_STATUS;
respons karakter[40 ];
byte cardUID[4] ={0,0,0,0};
int res=0;
int rr;
float temp;
unsigned long millis1=0;
unsigned long millis2=0;
unsigned long millis3=0;

void setup() {
Serial.begin(9600);
// relay
pinMode(pinRelay,OUTPUT);
digitalWrite(pinRelay,LOW);
// d isplay
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextSize(1);
display.setTextColor(WHITE);
display.clearDisplay();
display.display();
// memulai sensor MLX90614
mlx.begin();
// апуск SPI
SPI.begin();
// menginisialisasi MFRC522
mfrc522.PCD_Init();
Serial.println("menghubungkan WiFi ....");
display.setCursor(10,10);
display.print (F("Hubungkan WiFi"));
display.display();
// periksa keberadaan pelindung:
if (WiFi.status() ==WL_NO_SHIELD) {
Serial.println("WiFi shield tidak ada");
// jangan lanjutkan:
while (true);
}
// coba sambungkan ke jaringan WiFi:
while ( status !=WL_CONNECTED) {
Serial.print("Mencoba menyambung ke SSID WPA:");
Serial.println(ssid);
// Terhubung ke jaringan WPA/WPA2:
status =WiFi.begin(ssid, pass);
// tunggu 5 detik untuk koneksi:
delay(5000);
}
tampilan.setCursor( 30,20);
display.print(F("ok"));
display.display();
printWiFiStatus();
delay(2000);
Serial.println("Tunggu RFID ....");
}

void loop() {
switch(res) {
case 0://
send_display("Tunggu RFID....");
res=1;
break;
case 1:// menunggu RFID
// Periksa apakah kartu terpasang
if ( mfrc522.PICC_IsNewCardPresent()) {
// Membaca info peta
if ( mfrc522.PICC_ReadCardSerial()) {
// simpan UID
Serial.print(F("Card UID:"));
display.setCursor(10,20);
for (byte i =0; saya <4; i++) {
cardUID[i]=mfrc522.uid.uidByte[i];
Serial.print(cardUID[i],HEX);
display.print(cardUID[i], HEX);
}
Serial.println();
res=2;
display.display();
delay(2000);
Serial .println("kirim uid ke server....");
}
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
tampilan .display();
break;
case 2:// request ke server UID dari database
send_display("Send server...");
rr=send_uid_to_server ();
if(rr==1) {
res=3;
display.setCursor(10,0);
display.print(F("uid ok" ));
millis3=millis();
}
else if(rr==2) {
res=0;
display.setCursor(10,0 );
display.print(F("salah"));
}
else {
res=0;
display.setCursor(10,0);
display.print(F("error 404"));
}
display.display();
delay(3000);
break;
kasus 3:// menunggu pengukuran suhu
if(millis()-millis3<10000) {
sen d_display("Tunggu suhu....");
temp=mlx.readObjectTempC();
display.setCursor(10,20);
display.print(temp);
display.print(F(" *C"));
display.display();
if(temp> 34.0 &&temp<42.0) {
res=4;
delay(2000);
}
}
else {
res=0;
}
break;
case 4:/ / mengirim data suhu ke server
send_display("Tunggu suhu....");
send_temp_to_server();
res=5;
delay(2000);
break;
case 5:// buka atau tutup
display.clearDisplay();
display.setCursor(10,10);
display.print(F(" Temp="));
display.print(temp);
display.print(F("*C"));
display.setCursor(10,20);
if(temp<37.5) { // BUKA
display.print(F("OPEN"));
Serial.println("OPEN");
digitalWrite(pinRelay,HIGH);
}
else { // TUTUP
display.print(F("CLOSE"));
display.setCursor(10,0);
display. print(F("Suhu tinggi!!!"));
Serial.println("CLOSE");
Serial.print ln("Suhu tinggi!!!");
digitalWrite(pinRelay,LOW);
}
display.display();
delay(3000);
Serial.println("Tunggu RFID ....");
res=0;
break;
default:
break;
}
}

//
void printWiFiStatus() {
// mencetak SSID jaringan yang Anda hubungkan:
Serial.print("SSID:");
Serial.println(WiFi.SSID());
// cetak alamat IP pelindung WiFi Anda:
IPAddress ip =WiFi.localIP();
Serial.print( "Alamat IP:");
Serial.println(ip);
// mencetak kekuatan sinyal yang diterima:
long rssi =WiFi.RSSI();
Serial.print ("kekuatan sinyal (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
//
int send_uid_to_server() {
int ret=3;
unsigned long previos;
int x=0;int f=0;
char s;
client.stop ();
if (client.connect(server, 80)) {
//// mengirim data ke server
// membentuk string
// uid per baris
String str ="/firm/get_uid.php?uid=";
untuk (byte i =0; saya <4; i++) {
str+=String(cardUID[i],HEX);
}
Serial.print("str=");Serial.println(str);
klien .println("DAPATKAN "+str+" HTTP/1.1");
client.println("Host:freeparkovka.ru");
client.println("User-Agent:ArduinoWiFi/1.1");
client.println("Koneksi:tutup");
client.println();
// олучение ответа
previos=millis();
for( int i=0;i<40;i++)
response[i]=0;
lakukan {
if(client.available()> 0) {
// dapatkan data dari server
s =client.read();
if(s=='#')
f=1;
if(f==1) {
response[x]=s;
x++;
}
Serial.write(s);
}
}
while((milis () - sebelumnya) <5000);
if(respon[0]='#') {
ret=command(respon);
}
Serial.println(respon );
//client.stop();
return ret;
}
else {
// tidak ada koneksi
Serial.println("koneksi gagal");
//client.stop();
return 3;
}
}
//
void send_temp_to_server() {
client.stop();
if (client.connect(server, 80)) {
//// mengirim data ke server
// membentuk string
// uid per baris
String str="/firm/get_temp.php?uid=";
for (byte i =0; saya <4; i++) {
str+=String(cardUID[i],HEX);
}
str+="&temp="+String(temp);
Serial.print("str =");Serial.println(str);
client.println("GET "+str+" HTTP/1.1");
client.println("Host:freeparkovka.ru");
client.println("User-Agent:ArduinoWiFi/1.1");
client.println("Koneksi:tutup");
client.println();
Serial.println( respon);
delay(10); }
else {
// tidak ada koneksi
Serial.println("koneksi gagal");
}
}
// memeriksa perintah yang berasal dari server
int command(char* arr) {
String str(arr);
//
if(str.indexOf("yes")!=-1) {
return 1;
}
else if(str.indexOf("no")!=-1) {
return 2;
}
return 3;
}
// output tampilan
void send_display(String str) {
display.clearDisplay();
display.setCursor(10,10);
display.print(str);
display.display();
}

STEP 9. Page for remote viewing of employee temperature data

To view the data sent to the server, open the site page. The contents of the script to output a page file view_temp.php

//
$location="localhost";
$user="********";
$pass="********";
$db_name="********";
// connect db
if(! $db=mysqli_connect($location,$user,$pass,$db_name))
{echo "connect error";}
else
{;}
$query0=" SELECT * FROM temp WHERE uid='".$_GET['uid']."' ";
$rez0=mysqli_query($db,$query0);
$content1.=date('Y-m-d')."

";
$content1.="";
$query1="SELECT * FROM temp WHERE day>=CURDATE() ";
$rez1=mysqli_query($db,$query1); $i=1;
while($row1=mysqli_fetch_assoc($rez1)) {
$content1.="";
$content1.="";
$rez2=mysqli_query($db,"SELECT name FROM users WHERE id =".$row1['id_user']." ");
$row2=mysqli_fetch_assoc($rez2);
$content1.="";
$content1.="";
if($row1['temp']>37.5)
$content1.="";
else
$content1.="";
$content1.="";
$i++;
}
$content1.="
".$i."".$row2['name']."".mb_substr($row1['day'],10,9)."".$row1['temp']."".$row1['temp']."
";
echo $content1;
?>


Kode

  • Scetch Arduino
  • Step 2. Connecting an IR temperature sensor MLX90614 to an Arduino MKR 1000 Wi Fi Board
  • Step 3. Connecting an OLED display to an Arduino MKR 1000 WiFi Board
  • Step 4. Connecting the rc522 RFID reader module to the Arduino MKR 1000 WiFi Board
  • Step 6. Creating a database of employees on the company's website and a database for collecting dail
  • Step 6. Creating a database of employees on the company's website and a database for collecting dail
  • Step 9. Page for remote viewing of employee temperature data
Scetch ArduinoArduino
// #include #include #include #include #include #include #include // Adafruit_MLX90614 mlx =Adafruit_MLX90614();Adafruit_SSD1306 display(128, 32, &Wire, -1);MFRC522 mfrc522(7, 6);WiFiClient client;// your network SSID (name)// and password (WPA)char ssid[] ="my_DLink"; char pass[] ="marina11"; // name address char server[] ="www.freeparkovka.ru"; int pinRelay=5;int status =WL_IDLE_STATUS; char response[40];byte cardUID[4] ={0,0,0,0};int res=0;int rr;float temp;unsigned long millis1=0;unsigned long millis2=0;unsigned long millis3=0;void setup() { Serial.begin(9600); // relay pinMode(pinRelay,OUTPUT); digitalWrite(pinRelay,LOW); // display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.setTextSize(1); display.setTextColor(WHITE); display.clearDisplay(); display.display(); // MLX90614 mlx.begin(); // SPI SPI.begin(); // MFRC522 mfrc522.PCD_Init(); Serial.println("connect WiFi ...."); display.setCursor(10,10); display.print(F("Connect WiFi")); display.display(); // check for the presence of the shield:if (WiFi.status() ==WL_NO_SHIELD) { Serial.println("WiFi shield not present"); // don't continue:while (true); } // attempt to connect to WiFi network:while ( status !=WL_CONNECTED) { Serial.print("Attempting to connect to WPA SSID:"); Serial.println(ssid); // Connect to WPA/WPA2 network:status =WiFi.begin(ssid, pass); // wait 10 seconds for connection:delay(5000); } display.setCursor(30,20); display.print(F("ok")); display.display(); printWiFiStatus(); penundaan(2000); Serial.println("Wait RFID ...."); }void loop() { switch(res) { case 0:// send_display("Wait RFID...."); res=1; merusak; case 1:// RFID // if ( mfrc522.PICC_IsNewCardPresent()) { // . if ( mfrc522.PICC_ReadCardSerial()) { // UID Serial.print(F("Card UID:")); display.setCursor(10,20); for (byte i =0; i <4; i++) { cardUID[i]=mfrc522.uid.uidByte[i]; Serial.print(cardUID[i],HEX); display.print(cardUID[i],HEX); } Serial.println(); res=2; display.display(); penundaan(2000); Serial.println("send uid to server...."); } mfrc522.PICC_HaltA(); mfrc522.PCD_StopCrypto1(); } display.display(); merusak; case 2:// UID send_display("Send server..."); rr=send_uid_to_server(); if(rr==1) { res=3; display.setCursor(10,0); display.print(F("uid ok")); millis3=millis(); } else if(rr==2) { res=0; display.setCursor(10,0); display.print(F("incorrect")); } else { res=0; display.setCursor(10,0); display.print(F("error 404")); } display.display(); delay(3000); merusak; case 3:// if(millis()-millis3<10000) { send_display("Wait temp...."); temp=mlx.readObjectTempC(); display.setCursor(10,20); display.print(temp); display.print(F(" *C")); display.display(); if(temp>
34.0 &&temp<42.0) { res=4; penundaan(2000); } } else { res=0; } merusak; case 4:// send_display("Wait temp...."); send_temp_to_server(); res=5; penundaan(2000); merusak; case 5:// display.clearDisplay(); display.setCursor(10,10); display.print(F("Temp=")); display.print(temp); display.print(F("*C")); display.setCursor(10,20); if(temp<37.5) { // OPEN display.print(F("OPEN")); Serial.println("OPEN"); digitalWrite(pinRelay,HIGH); } else { // CLOSE display.print(F("CLOSE")); display.setCursor(10,0); display.print(F("Temp high!!!")); Serial.println("CLOSE"); Serial.println("Temp high!!!"); digitalWrite(pinRelay,LOW); } display.display(); delay(3000); Serial.println("Wait RFID ...."); res=0; merusak; default:break; }}//void printWiFiStatus() { // print the SSID of the network you're attached to:Serial.print("SSID:"); Serial.println(WiFi.SSID()); // print your WiFi shield's IP address:IPAddress ip =WiFi.localIP(); Serial.print("IP Address:"); Serial.println(ip); // print the received signal strength:long rssi =WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.print(rssi); Serial.println(" dBm");}// int send_uid_to_server() { int ret=3; unsigned long previos; int x=0;int f=0; char s; client.stop(); if (client.connect(server, 80)) { //// narodmon.ru // // uid String str="/firm/get_uid.php?uid="; for (byte i =0; i <4; i++) { str+=String(cardUID[i],HEX); } Serial.print("str=");Serial.println(str); client.println("GET "+str+" HTTP/1.1"); client.println("Host:freeparkovka.ru"); client.println("User-Agent:ArduinoWiFi/1.1"); client.println("Connection:close"); client.println(); // previos=millis(); for(int i=0;i<40;i++) response[i]=0; do{ if(client.available()> 0) { // s =client.read(); if(s=='#') f=1; if(f==1) { response[x]=s; //Serial.print(response[x]); x++; } Serial.write(s); } } while((millis() - previos) <5000); if(response[0]='#') { ret=command(response); } Serial.println(response); //client.stop(); return ret; } else { // Serial.println("connection failed"); //client.stop(); return 3; }}//void send_temp_to_server() { client.stop(); if (client.connect(server, 80)) { //// narodmon.ru // // uid String str="/firm/get_temp.php?uid="; for (byte i =0; i <4; i++) { str+=String(cardUID[i],HEX); } str+="&temp="+String(temp); Serial.print("str=");Serial.println(str); client.println("GET "+str+" HTTP/1.1"); client.println("Host:freeparkovka.ru"); client.println("User-Agent:ArduinoWiFi/1.1"); client.println("Connection:close"); client.println(); Serial.println(response); delay(10); //client.stop(); } else { // Serial.println("connection failed"); //client.stop(); }}// int command(char* arr) { String str(arr); // if(str.indexOf("yes")!=-1) { return 1; } else if(str.indexOf("no")!=-1) { return 2; } return 3;}// void send_display(String str) { display.clearDisplay(); display.setCursor(10,10); display.print(str); display.display();}
Step 2. Connecting an IR temperature sensor MLX90614 to an Arduino MKR 1000 Wi Fi BoardArduino
#include #include Adafruit_MLX90614 mlx =Adafruit_MLX90614();void setup() { Serial.begin(9600); Serial.println("start"); mlx.begin(); }void loop() { Serial.print("Ambient ="); Serial.print(mlx.readAmbientTempC()); Serial.print("*C"); Serial.print("\tObject ="); Serial.print(mlx.readObjectTempC()); Serial.print("*C"); Serial.print("\tObject ="); Serial.print(mlx.readObjectTempF()); Serial.println("*F"); delay(3000);}
Step 3. Connecting an OLED display to an Arduino MKR 1000 WiFi BoardArduino
#include #include #include #include Adafruit_MLX90614 mlx =Adafruit_MLX90614();Adafruit_SSD1306 display(128, 32, &Wire, -1);float temp;unsigned long millis1=0;void setup() { Serial.begin(9600); // display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.setTextSize(1); display.setTextColor(WHITE); // display.clearDisplay(); display.display(); // mlx.begin(); // Serial.println("start");}void loop() { if(millis()-millis1>=3000) { display.clearDisplay(); display.setCursor(10,10); display.println(F("Wait temp....")); temp=mlx.readObjectTempC(); display.setCursor(10,20); display.print(temp); display.print(F(" *C")); display.display(); // millis1=millis(); }}
Step 4. Connecting the rc522 RFID reader module to the Arduino MKR 1000 WiFi BoardArduino
// #include #include #include #include #include #include // Adafruit_MLX90614 mlx =Adafruit_MLX90614();Adafruit_SSD1306 display(128, 32, &Wire, -1);MFRC522 mfrc522(7, 6);byte cardUID[4] ={0,0,0,0};int res=1;float temp;unsigned long millis1=0;void setup() { Serial.begin(9600); // display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.setTextSize(1); display.setTextColor(WHITE); display.clearDisplay(); display.display(); // MLX90614 mlx.begin(); // SPI SPI.begin(); // MFRC522 mfrc522.PCD_Init(); Serial.println("start"); Serial.println("Wait RFID ....");}void loop() { switch(res) { case 1:// RFID display.clearDisplay(); display.setCursor(10,10); display.print(F("Wait RFID....")); // if ( mfrc522.PICC_IsNewCardPresent()) { // . if ( mfrc522.PICC_ReadCardSerial()) { // UID Serial.print(F("Card UID:")); display.setCursor(10,20); for (byte i =0; i <4; i++) { cardUID[i]=mfrc522.uid.uidByte[i]; Serial.print(cardUID[i],HEX); display.print(cardUID[i],HEX); } Serial.println(); Serial.println("Wait temp...."); res=3; } mfrc522.PICC_HaltA(); mfrc522.PCD_StopCrypto1(); } display.display(); merusak; case 2:// UID break; case 3:// delay(2000); display.clearDisplay(); display.setCursor(10,10); display.println(F("Wait temp....")); temp=mlx.readObjectTempC(); display.setCursor(10,20); display.print(temp); display.print(F(" *C")); display.display(); if(temp>
34.0 &&temp<42.0) { res=5; } merusak; case 4:// break; case 5:// display.clearDisplay(); display.setCursor(10,10); display.print(F("Temp=")); display.print(temp); display.print(F("*C")); display.setCursor(10,20); if(temp<37.5) { display.print(F("OPEN")); Serial.println("OPEN"); } else { display.print(F("CLOSE")); display.setCursor(10,0); display.print(F("Temp high!!!")); Serial.println("CLOSE"); Serial.println("Temp high!!!"); } display.display(); delay(3000); Serial.println("Wait RFID ...."); res=1; merusak; default:break; }}
Step 6. Creating a database of employees on the company's website and a database for collecting dailPHP
get_uid.php checks for an ID in the database and returns in the response:
0) { $row0=mysqli_fetch_assoc($rez0); echo "#yes".";".$row0['name']."$";}else { echo "#no"."$";} ?>
Step 6. Creating a database of employees on the company's website and a database for collecting dailPHP
get_temp.php sends the employee's temperature to the database
0) { $row0=mysqli_fetch_assoc($rez0); $query1=" INSERT INTO temp SET id_user='".$row0['id']."', temp='".$_GET['temp']."', day='".date('Y-m-d H:i:s')."' "; mysqli_query($db,$query1); echo "#yes";}else { echo "#no";} ?>
Step 9. Page for remote viewing of employee temperature dataPHP
view_temp.php

";$content1.="";$query1="SELECT * FROM temp WHERE day>=CURDATE() ";$rez1=mysqli_query($db,$query1); $i=1;while($row1=mysqli_fetch_assoc($rez1)) { $content1.=""; $content1.=""; $rez2=mysqli_query($db,"SELECT name FROM users WHERE id =".$row1['id_user']." "); $row2=mysqli_fetch_assoc($rez2); $content1.=""; $content1.=""; if($row1['temp']>37.5) $content1.=""; else $content1.=""; $content1.=""; $i++; }$content1.="
".$i."".$row2['name']."".mb_substr($row1['day'],10,9)."".$row1['temp']."".$row1['temp']."
";echo $content1;?>

Skema

24_pAT1JQdrD1.fzz 05_ZnJZPiMYsB.fzz 08_RyXONO1VtK.fzz 12_jyWaOQUelW.fzz

Proses manufaktur

  1. Kontrol akses dengan QR, RFID, dan verifikasi suhu
  2. Kipas dengan pengatur suhu
  3. Pemantauan Suhu di Raspberry Pi
  4. Memantau Suhu Dengan Raspberry Pi
  5. Perangkat berbasis suhu Sistem kontrol menggunakan LM35
  6. Sensor Suhu Raspberry Pi
  7. Kontrol Pengisian Kolam
  8. Kesalahan dalam Penutup Panel Kontrol Industri Pendingin
  9. Kontrol dan pengaruh suhu selama proses die casting
  10. Kontrol Suhu di Lokasi Kerja — Panduan Sewa untuk Profesional Konstruksi