Tải bản đầy đủ (.docx) (28 trang)

ĐIỀU KHIỂN GIÀN PHƠI đồ THEO THỜI TIẾT DÙNG PIC (có code và layout)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (445.58 KB, 28 trang )

ĐỒ ÁN 2

ĐIỀU KHIỂN GIÀN PHƠI ĐỒ THEO
THỜI TIẾT DÙNG PIC


MỤC LỤC


DANH MỤC HÌNH ẢNH

Hình 3-1: Sơ đồ khối.............................................................................................4
Hình 3-2: Sơ đồ chân PIC18F4550.......................................................................5
Hình 3-3: Sơ đồ chân Esp8266.............................................................................6
Hình 3-4: Sơ đồ chân LCD 16x2...........................................................................7
Hình 3-4: Servo......................................................................................................8
Hình 4-1: Sơ đồ giải thuật.....................................................................................9
Hình 4-2: Sơ đồ nguyên lý....................................................................................10
Hình 4-3: Mạch in.................................................................................................11


DANH MỤC CÁC TỪ VIẾT TẮT

UDP

User Datagram Protocol

TCP

Transmission Control Protocol


LCD

Liquid crystal display

Wifi

Wireless Fidelity


ĐỒ ÁN 2
Trang 5/24

CHƯƠNG 1.

GIỚI THIỆU ĐỀ TÀI

1.1 Giới thiệu
Điện tử trở thành một ngành khoa học đa nhiệm vụ. Điện tử đã đáp
ứng được những nhu cầu thiết yếu của con người trong cuộc sống hằng ngày.
Xuất phát từ những nhu cầu của con người, em đã nghiêng cứu một mạch
ứng dụng nhỏ :“Điều khiển giàn phơi đồ theo thời tiết”. Đề tài này giúp em hiểu rõ
hơn về ứng dụng và nguyên lý, những lý thuyết được học vào thực tế. Đồng thời
hiểu thêm những điều chưa học được và nâng cao kỹ năng thực hành để áo dụng
trong thực tế.
1.2 Yêu cầu về đề tài
Đầu tiên mạch sẽ tự động cấu hình kết nối wifi, sau đó truy cập website thời tiết
tại nơi cần thiết để lấy dữ liệu thời tiết, nhiệt độ , độ ẩm, ấp suất…để điều khiển
giàn phơi đồ, ở đây dùng động cơ servo. Hiển thị lên LCD thông tin thời tiết.
Ta có thể ứng dụng vào các giàn phơi đồ thủ công , thời tiết mưa hay nắng sẽ tự
động điều khiển động cơ mô phỏng cho giàn phơi đồ quay ra hay vào.

1.3 Hướng thực hiện
- Thiết lập cho hệ thống sơ đồ khối.
- Nguyên lý truyền nhận dữ liệu qua wifi.
- Hiển thị thông tin thời tiết lên LCD.
- Tìm hiểu linh kiện .
- Hoàn thành lập trình và thi công phần cứng.

CHƯƠNG 2.



TÌM HIỂU LÝ THUYẾT VỀ TRUYỀN NHẬN DỮ LIỆU
QUA WIFI

Wifi là mạng kết nối Internet không dây, sử dụng sóng vô tuyến để truyền tín
hiệu. Loại sóng vô tuyến này tương tự như sóng điện thoại, truyền hình và

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 6/24

radio. Và trên hầu hết các thiết bị điện tử ngày nay như máy tính, laptop,
điện thoại, máy tính bảng... đều có thể kết nối Wifi.


Wifi dùng sóng radio (sóng vô tuyến) để truyền nhận dữ liệu qua hệ thống
mạng. Máy tính gồm một card mạng không dây sẽ truyền dữ liệu gửi vào tín
hiệu radio.




Tín hiệu này được truyền đi thông qua một an-ten, router được gọi là bộ giải
mã. Dữ liệu được gửi đến Internet thông qua một kết nối Ethernet.



Mạng không dây hoạt động như đường 2 chiều, các dữ liệu nhận được từ
internet cũng sẽ đi qua router và được mã hoá thành tín hiệu radio để thiết bị
nhận được.



Một số chuẩn Wifi phổ biến [1]:

Tín hiệu Wifi hoạt động gửi và nhận dữ liệu ở tần số 2.5GHz đến 5GHz, cao hơn
nhiều so với tần số của điện thoại di động, radio... vì vậy tín hiệu Wifi chứa nhiều
dữ liệu hơn nhưng lại bị hạn chế ở khoảng cách truyền.
Sóng Wifi dùng chuẩn kết nối 802.11 , trong đó gồm 4 chuẩn nhỏ hơn là
802.11/a/b/g/n.


Truyền dữ liệu:

Đặc điểm cơ bản giao thức TCP [2]:


Có cơ chế sửa lỗi/truyền lại nên truyền dữ liệu không lỗi.




Các gói dữ liệu được truyền theo đúng thứ tự.



Truyền lại các gói dữ liệu mất .



Loại bỏ nhữn gói dữ liệu trùng lặp.



Hạn chế tắc nghẽn đường truyền.

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 7/24

Đặc điểm cơ bản của giao thức UDP [3]:
TCP cung cấp thứ tự truyền nhận và sự tin cậy còn UDP thì không, các gói dữ liệu
được truyền có thể đến nhưng không đúng thứ tự hoặc bị mất mà không có phản
hồi. UDP nhanh và hiệu quả hơn với các dữ liệu kích thước nhỏ và yêu cầu khắt khe
về thời gian.

Điều khiển giàn phơi đồ theo thời tiết



ĐỒ ÁN 2
Trang 8/24

CHƯƠNG 3.
1.4 Sơ đồ khối

THIẾT KẾ HỆ THỐNG

PIC
VI ĐIỀU KHIỂN
ESP8266
MODULE WIFI

NGUỒN

SERVO
ĐỘNG CƠ
LCD 16x2
HIỂN THỊ
Hình 3-1: Sơ đồ khối.
Giải thích sơ đồ:
Cấp nguồn cho các khối xung quanh ,module wifi esp8266 truy cập vào trang
web thời tiết để lấy dữ liệu, khối hiển thị, vi điều khiển và khối động cơ servo. Khối
module wifi thiết lập kết nối wifi sau đó tương tác với khối điều khiển bằng giao
tiếp UART, khi nhận được dữ liệu bắt đầu xử lý những dữ liệu cần thiết, sau đó vi
điều khiển sẽ tương tác với 2 khối servo và khối hiển thị.

1.5 Tìm hiểu linh kiện
1.1.1 PIC18F4550


Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 9/24

Hình 3-2: Sơ đồ chân PIC18F4550
Thông số PIC18F4550
Kiến trúc :

8-Bit

Tốc độ:

48MHz

Chuẩn kết nối:

I²C, SPI, UART / USB, USB

Cổng I / O :

35

Bộ nhớ chương trình: 32KB (16K x 16)
Loại bộ nhớ:

FLASH


EEPROM :

256 x 8

RAM :

2K x 8

Điện áp hoạt động:

4.2 V ~ 5.5 V

1.1.2 Esp8266

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 10/24

Hình 3-3: Sơ đồ chân Esp8266
Thông số các chân:


VCC: 3.3V dòng điện tiêu thụ đến 300mA



GND: nối với0V




Tx: nối đến chân Rx của vi điều khiển.



Rx: nối đến chân Tx của vi điều khiển.



RST: nối với mức thấp để reset.



CH_PD: nối lên mức cao module sẽ bắt đầu thu phát wifi, mức thấp module
dừng phát wifi.



GPIO0: mức thấp (GND) để upgrade firmware.



GPIO2: không dùng.

Thông số kỹ thuật:


Hỗ trợ chuẩn 802.11 b/g/n. Wi-Fi 2.4 GHz.




Điện áp hoạt động: 3.3V.



Giao tiếp nối tiếp UART với tốc độ Baud đến 115200 .



Có 3 chế độ: Client, Access Point, Both Client and Access Point.



Chuẩn bảo mật: OPEN, WEP, WPA_PSK, WPA2_PSK, WPA_WPA2_PSK.



Hỗ trợ 2 giao tiếp TCP và UDP.



Có thể kết nối với 5 Device, làm việc như 1 Access Point.
1.1.3 LCD 16x2

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 11/24


Hình 3-4: Sơ đồ chân LCD 16x2
1. VSS: nối với GND.
2. VDD: nối với VCC.
3. Constrast Voltage (Vo): chỉnh độ sáng màn hình.
4.

Register Select (RS): địa chỉ nào được ghi dữ liệu.

5.

Read/Write (RW): đọc , ghi dữ liệu.
6. Enable pin: Cho phép ghi dữ liệu vào LCD.

7.

D0 - D7: chân dữ liệu, nếu đang ở chế độ đọc mỗi chân sẽ có giá trị HIGH
hoặc LOW , và nếu đang ở chế độ ghi nó sẽ nhận giá trị HIGH hoặc LOW.
8. Backlight (Backlight Anode (+) và Backlight Cathode (-)): bật,tắt đèn nền
LCD.
1.1.4 Động cơ servo

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 12/24

Hình 3-4: Servo
1.


Nối với GND.

2.

Nối VCC.

3.

Chân điều khiển bằng xung PPM.
Thời gian xung PPM 1ms ở mức cao góc quay của servo là 0 độ, 1.5ms góc
quay 90 độ và 2ms góc quay là 180 độ. Các góc biến đổi từ 0-180 được xác
định trong khoảng thời gian 1-2ms ở mức cao của xung.

CHƯƠNG 4.

THI CÔNG MẠCH

1.6 Sơ đồ giải thuật
Khởi động
Cài đặt cấu hình
Điều khiển giàn phơi đồ theo thời tiết

Không thành công


ĐỒ ÁN 2
Trang 13/24

Thành công

Truy cập website
Truy xuất dữ liệu
Sau 10 giây
Xử lý dữ liệu

Hiển thị LCD

Trời mưa

Servo quay

Hình 4-1: Sơ đồ giải thuật
Giải thích sơ đồ :
Khi cấp nguồn hệ thống sẽ cấu hình cho hệ thống, khi kết nối tới wifi thành
công , hệ thống sẽ tự động kết nối tới website thời tiết gởi một chuổi yêu cầu để
truy xuất trả dữ liệu thời tiết về. Sau đó hệ thống sẽ tiến hành xử lý các thông số
nhiệt độ, độ ẩm , áp suất, thời tiết hiển thị lên LCD, nếu trời mưa servo quay
,sau 10 giây hệ thống sẽ lấy dữ liệu và xử lý lại một lần.
1.7 Yêu cầu thi công
• Thực hiện test linh kiện.
• Kết nối hoàn chỉnh với vi điều khiển.
• Code , cấu hình cho hệ thống.
• Thiết kế layout mạch.
• Tiến hành chạy mạch xem đã đạt yêu cầu hay chưa.
1.8 Kết quả thi công
Bắt đầu chạy thử mạch, thấy chạy ổn định, mạch đã được tối ưu , thiết kế
nhỏ gọn không tốn quá nhiều diện tích, động cơ servo chỉ mô phỏng lại hệ thống
động cơ giàn phơi đồ nên chưa thực hiện thực tế được.
Điều khiển giàn phơi đồ theo thời tiết



ĐỒ ÁN 2
Trang 14/24

Hình 4-2: Sơ đồ nguyên lý

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 15/24

Hình 4-3: Mạch in

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 16/24

CHƯƠNG 5.






KẾT LUẬN

1.9 Kết luận

Hoàn thành yêu cầu của đề tài .
Ứng dụng vào các giàn phơi đồ thủ công bằng tay.
Hệ thống được ứng dụng tự động để hổ trợ con người tự động khi cần thiết.
Nhược điểm:
Dữ liệu thời tiết không chính xác dẫn đến điều khiển sai.
1.10 Hướng phát triển
Đề tài này dừng lai ở mức mô hình do thời gian hạn chế,sản phẩm còn rất sơ

sài, nếu có thời gian nhiều hơn em ứng dụng vào thực tế và nghiên cứu thêm
chuyên sâu hơn, khi có thời gian và điều kiện em hi vọng đề tài này được mở
rộng thêm các chức năng như giao tiếp với smartphone điều khiển trực tiếp qua
internet, cảnh báo qua tin nhắn …
Với những nghiên cứu và hướng đi phát triển của đề tài này ,cùng với sự góp ý
của quý thầy cô em hi vọng hệ thống này sẽ phát triển tốt hơn, ứng dụng vào
thực tế đóng góp vào xã hội phục vụ nhu cầu con người.

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 17/24

TÀI LIỆU THAM KHẢO
Website:
[1] />[2] />[3] />
Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 18/24


PHỤ LỤC A
#include <18F4550.h>
#device ADC=16

#FUSES NOWDT

//No Watch Dog Timer

#FUSES WDT128

//Watch Dog Timer uses 1:128 Postscale

#FUSES NOBROWNOUT
#FUSES NOLVP

//No brownout reset
//No low voltage prgming, B3(PIC16) or B5(PIC18)

used for I/O
#FUSES NOXINST

//Extended set extension and Indexed Addressing

mode disabled (Legacy mode)

#use delay(clock=12000000,crystal=12000000)

#use rs232(UART1,baud=115200,parity=N,bits=8,stream=WIFI_ESP,errors)//Khai
bao su dung uart cung


#define ledv PIN_C2
#define ledr PIN_C1
#define ledon output_low
#define ledoff output_high
Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 19/24

#define led_on output_low
#define led_off output_high

#define LCD_ENABLE_PIN PIN_B3
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7

#include <lcd.c>

const int8 NEW_VERSION=1;
const int8 OLD_VERSION=2;
int8 VERSION_CODE=NEW_VERSION;
#include"esp/wifi.c"
#include"sonbui/mystr.c"
char *SSID_JOIN="Da Thi";//"SonBui-AP";

char *PASS_JOIN="11111111";//"a12344321";

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 20/24

char

*DATA_SEND="GET

id=1566083&APPID=e18ed508495f62a6bebbe38820666815
api.openweathermap.org\r\n\r\n" ;

/data/2.5/weather?
HTTP/1.0\r\nHost:

//1581130: Hanoi-Viet nam

char *WEATHER_IP= "api.openweathermap.org"; //api.openweathermap.org
void get_internet()
{
char *write = ">";
int1 OK = False;
printf(LCD_PUTC, "\fGData HCM,VN\nopenweathermap.org");
delay_ms(1000);
if( client_Start(0,TYPE_TCP,WEATHER_IP,80)) //kET NOI TOI SERVER DE
LAY DU LIEU
{

printf(LCD_PUTC, "\fGet data");
int16 length=strlen(DATA_SEND);
DO
{
clear_mem();
fprintf(WIFI_ESP, AT_SEND);
fprintf(WIFI_ESP, "=%u", 0);
fprintf(WIFI_ESP, ",%lu",length);

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 21/24

fprintf(WIFI_ESP, CRLF);
for (int mem_loop = 0; mem_loop < 150; mem_loop++) {
wifi_buff[n] = timed_getc();
n++;
if (n > 150) n = 0;
if (timeout_error) break;
}
char *pch = strstr(wifi_buff, write);
IF(pch) {
OK = TRUE;
break;
}
delay_ms(100);
}
WHILE(!OK);

//Send http get
clear_mem();
printf(LCD_PUTC, "\fSend Get");
fprintf(WIFI_ESP, "%s",DATA_SEND);
Long LONG timeout;

Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 22/24

timeout = 0;
WHILE(!kbhit(WIFI_ESP) && (++timeout < 2000000)) //20 second
{
delay_us(10);
}
WHILE(!(fgetc(WIFI_ESP)=='{')) ;
printf(LCD_PUTC, "\f{");
wifi_buff[0]='{';n=1;
do {
wifi_buff[n] = timed_getc();
n++;
if (n > 512) n = 0;

}while(!timeout_error) ;
printf(LCD_PUTC, "\fPrint Data");
//printf(usb_cdc_putc, "\r\nWF:%s"wifi_buff);
char *jstart="\"main\":{";
char *jstop=",\"visibility\"";

char *p1 = strstr(wifi_buff,jstart);
if(p1)
{
Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 23/24

// printf(usb_cdc_putc, "\r\n\fp1:%s"p1);
char *p2 = strstr(p1,jstop);
if(p2)
{
// printf(usb_cdc_putc, "\r\n\fp2:%s"p2);
size_t len = p2-p1;
char *jmain = (char*)malloc(sizeof(char)*(len+1));
strncpy(jmain, p1, len);
jmain[len] = '\0';
// printf(usb_cdc_putc, "\r\nRes:%s"jmain);
char *temp="\"temp\":";
char *temp_min=",\"temp_min\":";
char *ap_suat=",\"pressure\":";
//char *ap_suat_end=",\"sea_level";
char *do_am=",\"humidity\":";
char *do_am_end="}";
double d_nhiet_do;
free(res) ;
char *nhiet_do=extract_string(temp,ap_suat,jmain);
if(nhiet_do)


Điều khiển giàn phơi đồ theo thời tiết


ĐỒ ÁN 2
Trang 24/24

{
// printf(usb_cdc_putc, "\r\nNhiet do:%s"nhiet_do);
d_nhiet_do = atof (nhiet_do);//treo neu gia tri nhiet do sai dinh dang
d_nhiet_do -= 273.15; //kelvin-celsius
printf (LCD_PUTC, "\fT=%f",d_nhiet_do);
}
free(res) ;
char *ap_suat_khi=extract_string(ap_suat,do_am,jmain);

if(ap_suat)
{
// printf(usb_cdc_putc, "\r\nAp suat:%s"ap_suat_khi);
printf (LCD_PUTC, "\nP=%s hp",ap_suat_khi);
}
free(res) ;
char *do_am_khi=extract_string(do_am,temp_min,jmain);
if(do_am_khi)
{
// printf(usb_cdc_putc, "\r\nDo am khi:%s"do_am_khi);

lcd_gotoxy(10,1) ;

Điều khiển giàn phơi đồ theo thời tiết



ĐỒ ÁN 2
Trang 25/24

printf (LCD_PUTC, "H=%s %%",do_am_khi);
}
free(jmain) ;
}
}
}
else
{
printf (LCD_PUTC, "\f Can't connect to\nopenweathermap.org");
delay_ms(1000);
}
}
void detech_version() {//Autoselect baude and cmd
int1 OK = False;
char *oks = "OK";
unsigned int8 try_get=1;
printf(LCD_PUTC, "\fChange baude\n115200");
delay_ms(1000);
do { //ATE0
try_get++;

Điều khiển giàn phơi đồ theo thời tiết


×