Đề tài “Đếm sản phẩm bằng cảm biến hồng ngoại” được hướng đến những hướng phát triển như sau:
- Kết hợp mạch này vào băng chuyền và thực hiện điều khiển băng chuyền bằng ứng dụng trên điện thoại.
- Tăng tốc độ gửi dữ liệu lên cơ sở dữ liệu bằng cách sử dụng máy chủ riêng và mạng nội bộ.
- Ứng dụng trên điện thoại di động tích hợp nhiều tính năng hơn như tổng hợp số lượng sản phẩm trong tuần, tính toán lợi nhuận thu được…
5 0
TÀI LIỆU THAM KHẢO
[1] Espressif Systems, “ESP8266EX”, năm 2020. [Online] Available: https://www.espressif.com/sites/default/files/documentation/0a- esp8266ex_datasheet_en.pdf
[2] e-Gizmo Mechatronix Central, “E18-D80NK Long Range Adjustable IR Sensor”, năm 2016. [Online] Available: https://cdn.datasheetspdf.com/pdf-down/E/1/8/E18- D80NK-e-Gizmo.pdf
[3] Thế giới Điện cơ, “Cảm biến quang – Cấu tạo, Phân loại và Ứng dụng cảm biến
quang”, 09/07/2020, [Online] Available: https://thegioidienco.vn/cam-bien-quang.html
[4]Nguyen Bao Ngoc, “Giao tiếp I2C”, Trung tâm đào tạo thiết kế vi mạch Semicon, 29/11/2018, [Online] Available: https://www.semiconvn.com/home/hoc-thiet-ke-vi- mach/bai-hc-vi-mch/12458-giao-tip-i2c.html
[5] Arduinokit, “Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino”,
28/12/2020, [Online] Available: https://arduinokit.vn/giao-tiep-i2c-lcd-arduino/
[6] Nga Bùi, “8 chuẩn công nghệ không dây phổ biến hiện nay”, 08/06/2018, [Online] Available: https://quantrimang.com/7-chuan-cong-nghe-khong-day-pho-bien-hien-nay- 39771
[7] Phí Thị Thu, “Phân tích và đánh giá hiệu năng mạng vô tuyến công suất thấp cự ly
xa LPWAN”, Học viện công nghệ bưu chính viễn thông, năm 2017.
[8] multicomp, “ LED Orange/Green 3mm”, Version 1.0, 10/10/2012. [Online] Available: http://www.farnell.com/datasheets/1671514.pdf
[9] Fairchild Semiconductor Corporation, “MC78XX/LM78XX/MC78XXA”, năm
2001. [Online] Avalable: https://html.alldatasheet.com/html-
pdf/82833/FAIRCHILD/LM7805/405/1/LM7805.html
[10] DiziBrand, “[Firebase là gì?] Nền tảng phát triển ứng dụng di động và web”, 19/07/2021, [Online] Avalable: https://dizibrand.com/firebase-la-gi/
5 1
PHỤ LỤC Mã nguồn của phần cứng hệ thống. //*************** Thu vien *******************// #include <SimpleTimer.h> #include <LiquidCrystal_I2C.h> #include <FirebaseESP8266.h> #include <ESP8266WiFi.h> #include <Wire.h> #include <NTPClient.h> #include <WiFiUdp.h>
//***************** Khai bao LCD va thoi gian *****************// WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org"); LiquidCrystal_I2C lcd(0x27,16,2);
//****************** Dinh nghia cac bien ****************// #define sensor 12
#define LED 0
#define FIREBASE_HOST "https://doan-747cc-default-rtdb.firebaseio.com" #define FIREBASE_AUTH
"1Op2F3VqkqIa2OwhYzDzBAl2MVvaWdp3G4ZnNIV1" #define WIFI_SSID "TT"
#define WIFI_PASSWORD "vothientung" //****************** Khai bao bien ****************// unsigned int t=0; unsigned int thung=0;
String thutrongtuan; String thutrongtuan1; String thutrongtuan2; int monthDay; int currentMonth; 52
int currentYear; String weekDay; String currentDate;
//****************** Khai bao timer va Firebase ****************// SimpleTimer timer;
FirebaseData fbdo; void repeatMe() {
long stTime=millis();
/ Gui du lieu len Firebase
Firebase.setString(fbdo,String(thutrongtuan),currentDate); Firebase.setString(fbdo,String(thutrongtuan1),String(t)); Firebase.setString(fbdo,String(thutrongtuan2),String(thung)); / long duration=millis()-stTime; Serial.println(duration); }
String weekDays[7]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
//**********************************// void setup()
{
Serial.begin(115200);
timer.setInterval(30000, repeatMe); //thoi gian ngat 30 giay //**************** Cai dat ban dau cho LCD va LED ******************//
pinMode(LED, OUTPUT); lcd.init(); lcd.backlight(); pinMode(sensor,INPUT); digitalWrite(LED, LOW); 53
//****************** Cai dat WiFi ****************// WiFi.begin (WIFI_SSID, WIFI_PASSWORD);
Serial.print("Dang ket noi"); lcd.setCursor(0,0);
lcd.print("DANG KET NOI"); lcd.setCursor(0,1);
lcd.print("WIFI");
while (WiFi.status() != WL_CONNECTED) { Serial.print(".");
delay(500); } Serial.println ("");
Serial.println ("Da ket noi WiFi!"); lcd.clear();
lcd.setCursor(0,0);
lcd.print("KET NOI WIFI"); lcd.setCursor(0,1); lcd.print("THANH CONG"); delay(2000); lcd.clear(); //**********************************// Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); //Ket noi Firebase // timeClient.begin(); //timer timeClient.setTimeOffset(25200); // lcd.setCursor(0,1); lcd.print("SL: "); lcd.print(t); lcd.print(" SP"); lcd.setCursor(11,1); 54
lcd.print(thung); lcd.print(" TH"); // } void loop() {
timer.run(); // Chay timer
//***************** Hien thi thoi gian *****************// timeClient.update();
unsigned long epochTime = timeClient.getEpochTime(); struct tm *ptm = gmtime ((time_t *)&epochTime); monthDay = ptm->tm_mday;
currentMonth = ptm->tm_mon+1; currentYear = ptm->tm_year+1900;
weekDay = weekDays[timeClient.getDay()];
currentDate = String(monthDay) + "-" + String(currentMonth) + "-" + String(currentYear);
lcd.setCursor(0,0); lcd.print("TIME: "); lcd.print(currentDate);
//************** Khi co vat di qua cam bien ********************// if(!digitalRead(sensor))
{
t++; // So san pham tang 1 thung=t/30;
thutrongtuan = String(weekDay)+ "TIME"; thutrongtuan1 = String(weekDay)+ "SP"; thutrongtuan2 = String(weekDay)+ "TH"; digitalWrite(LED, HIGH); //LED sang delay(300);
digitalWrite(LED, LOW);
55
lcd.setCursor(0,1); lcd.print("SL: "); lcd.print(t); lcd.print(" SP"); lcd.setCursor(11,1); lcd.print(thung); lcd.print(" TH"); while(!digitalRead(sensor)){ delay(500);} } } //**********************************// 56