1. Trang chủ
  2. » Tất cả

ARDUINO - tập 3-giới thiệu

20 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 2,01 MB

Nội dung

Tài liệu biên soạn Group ARDUINO IOT VIETNAM2020 https://www.facebook.com/groups/486295328966960/ Contents Chương 1: Các hàm bản( Tiếp theo) 1.Xử lý chuỗi .5 1.1 Hàm isAlpha() 1.2.Hàm isAscii() 1.3 Hàm isWhitespace() 1.4 Hàm isPrintable(): 1.5 Hàm isUpperCase(): 1.6 Hàm isHexadecimalDigit() 1.7 tolower: 1.8 Hàm toupper() 1.9 Hàm isLowerCase() Giá trị Kiểu liệu: 15 3.1 void 15 3.2 boolean 16 3.3 int: 17 3.4 unsigned int 17 3.5 char 18 3.6 unsigned char 18 3.7 byte 18 3.8 word 19 3.9 long 19 3.10 unsigned long 19 3.11 short 20 3.12 float 20 3.13 double 21 3.14 array 21 3.15 string 23 Chuyển đổi kiểu liệu 24 4.1 char() 24 4.2 byte() 24 4.3 int() 25 4.4 word() 25 4.5 long() 25 4.6 float() 26 Biến hằng, biến tĩnh: .26 5.1 const - biến 26 Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 5.2 static - biến tĩnh 26 Cấu trúc chương trình phần mềm IDE 27 6.1 Khai báo 27 Thiết lập (void setup()) 28 6.3 Vòng lặp(void loop) 28 Chương 2:Điều khiển không dây sử dụng Arduino 29 2.1 Module truyền nhận hồng ngoại 29 2.1.1 Hồng ngoại gì? 29 2.1.2 Hồng ngoại điện tử 29 2.1.3 Điều khiển TV Sony 30 2.1.4 Thiết bị thu phát 32 2.1.2 Hướng dẫn lập trình đơn giản 34 2.2 REMOTE RF 45 2.2.1 Giới thiệu 45 2.2.2 GIẢI MÃ TÍN HIỆU RF 433MHZ VỚI ARDUINO 48 2.2.3 Project truyền phát tín hiệu sóng RF 52 2.3 Module vô tuyến không dây tần số 2.4G 57 2.3.1 Giới thiệu 57 2.3.2.Module truyền nhận tín hiệu không dây RF 2.4 GHz 57 2.3.3 Ví dụ minh họa (Demonstration) 59 2.4 Công nghệ RFID 68 2.4.1 Giới thiệu: 68 2.4.2 Module RFID RC522 72 2.4.3 MFRC522 RFID với Arduino 73 2.5 Công nghệ Lora .80 2.5.1.Giới thiệu: 80 2.5.2 Chuẩn truyền thông LoraWAN 81 2.5.3 Module Lora SX1278 86 2.6 Bluetooth Module 89 2.6.1 Giới thiệu 89 2.6.2 HC-05 Module 92 2.6.3 Điều chỉnh module HC-05 dùng tập lệnh AT 93 2.6.4 Giao tiếp board Arduino module Bluetooth 102 2.7 Điều khiển từ xa qua SMS 109 2.7.1 Tổng quan 109 2.7.2 Điều khiển thiết bị tin nhắn dùng SIM900A với tập lệnh AT 110 2.7.3 Điều khiển thiết bị tin nhắn với Sim 900A 115 2.7.4 Giới thiệu module SIM800A 119 2.8 HỆ THỐNG ĐỊNH VỊ TOÀN CẦU GPS 121 2.8.1 Tổng quan hệ thống định vị toàn cầu 121 2.8.2 TỔNG QUAN DỊCH VỤ BẢN ĐỒ TRỰC TUYẾN 130 Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 2.8.3 Khối nhận tín hiệu GPS Neo 133 2.9 Module Wi-Fi 136 2.9.1 Giới thiệu 136 2.9.2 Module Esp8266 Node MCU 139 Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ Chương 2:Điều khiển không dây sử dụng Arduino Wireless Control Using the Arduino 2.1 Module truyền nhận hồng ngoại 2.1.1 Hồng ngoại gì? ▪ Hồng ngoại xạ lượng với tần số thấp tần số mắt ta nhìn thấy, khơng thể nhìn thấy Tuy nhiên biết khơng nhìn thấy tần số âm tồn tai ta nghe thấy chúng ▪ Ta khơng thể nhìn thấy hay nghe thấy hồng ngoại ta cảm thấy từ cảm ứng nhiệt da Khi bạn đưa tay đến ngần lửa vật nóng, bạn xẽ cảm thấy nhiệt dù bạn khơng nhìn thấy Bạn nhìn thấy lửa phát nhiều loại xạ mắt ta nhìn thấy, đồng thời phát hồng ngoại mà ta cảm nhận qua da 2.1.2 Hồng ngoại điện tử ▪ Hồng ngoại thật thú vị, tạo cách dễ dàng không bị ảnh hưởng nhiễu điện từ Do sử dụng rộng rãi tiện lợi thơng tin điều khiển Tuy nhiên khơng hồn hảo, nhiều nguồn sáng khác phát hồng ngoại ngây nhiễu đến thơng tin Mặt trời ví dụ, phát khoảng phổ rộng có phổ hồng ngoại Việc sử dụng hồng ngoại thiết bị điều khiển từ xa TV/VCR nhiều ứng dụng khác phần diode phát thu hồng ngoại rẻ sẵn có thi trường ▪ Như nói trên, nhiều thứ phát hồng ngoại, bắt kỳ thứ xạ nhiệt có khả Bao gồm cở thể chúng ta, lị vi sóng, chà sát tay vào nhau, chí nước nóng Vì phép truyền thông hiệu sử dụng hồng ngoại tránh tín hiệu nhiễu khơng mong muốn phải sử dụng khóa để báo cho đầu thu tín hiệu có ích, đâu nhiễu Khi nhìn lên bầu trời đêm bạn nhìn thấy nhiều sao, bạn dễ dàng nhận máy bay ánh sáng nhấp nhái Ánh sáng nhấp nháy coi “khóa”, kiểu mã hóa ▪ Tương tự máy bay bầu trời đêm, TV nhận hàng trăm loại hồng ngoại khác Một cách để tránh nguồn hồng ngoại khác tạo khóa Do điều khiểm từ xa dùng để điều biến hồng ngoại tần số Đầu thu hồng ngoại TV/VCR theo tần số mà lờ hồng ngoại khác nhận Khoảng tần số hay sử dụng 30 → 60 KHz, tốt khoảng 36 → 38 KHz Hồng ngoại phát từ diode hồng ngoại theo xung nhịp với tần số 36000 lần giây phát mức logic “0” ”1” ▪ Để tạo tần số 36 KHz việc đơn giản khó việc thu nhận dạng Đó lý nhiều cơng ty sản xuất thiết bị thu hồng ngoại bao gồm lọc, mạch giải mã sửa dạng đầu Một xung vuông chu kỳ xấp xỉ 27  s đưa vào cực bazơ Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 29 tranzitor điều khiển led hồng ngoại để truyền Bạn bật tắt tần số đầu phát, đầu thu đầu phát bật hay tắt ▪ Những giải điều chế có mức logic đảo đầu có gói hồng ngoại gởi, đầu mức tích cực thấp tương đương với mức logic ▪ Để tránh việc điều khiển từ xa philip thay đổi kênh TV panasonic…người ta sử dụng cách mã hóa khác cho khoảng tần số Chúng sử dụng kiểu tổ hợp bit khác để mã hóa việc truyền liệu tránh nhiễu 2.1.3 Điều khiển TV Sony ▪ Sony sử dụng kiểu mã hóa độ rộng bit, kiểu mã hóa đơn giản cho việc giải mã Hãy xem xét khoảng thời gian nhỏ T cỡ 600  s bit truyền kết hợp -T+T cho bit “0” –T+2T cho bit “1” Vì bit “0” có chiều dài 1200  s bit “1” có chiều dài 1800  s ▪ Mức lên (+T) có nghĩa hồng ngoại truyền đi, mức xuống (-T) có nghĩa Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 30 khơng có Để tiết kiệm pin, hầu hết nhà sản xuất rút gắn cịn 5/6 chí 3/4 độ rộng xung lý thuyết Bằng cách pin 500 sử dụng 600 (5/6) 800 (3/4) Một số nhà sản xuất khác không quan tâm đến vấn đề này, họ tăng cường hiệu truyền tin cách mở rộng chút khoảng thời gian sóng mang 36 KHz tích cực rút ngắn khoảng thời gian Như tín hiệu Remote TV sony có dạng sau: - phần truyền gọi Header (mào đầu), gọi bit bắt đầu (start bit), phần mào đầu có độ rộng 3T hay 1800  s - Tiếp theo phần Header 12 bit liên tiếp giải điều chế sau: 500  s bit im lặng + 700  s bit hồng ngoại = bit 500  s bit im lặng + 1300  s bit hồng ngoại = bit Bit sau bit start bit LSB ta đặt bit B0, bit cuối B11: B0 – B6 : bit mã lệnh B7 – B11 : bit dịa ▪ Trong hình vẽ địa 02H, mã lệnh 16H, có 32 khả địa 128 lệnh Tồn thời gian truyền đị khung thay đổi theo thời gian độ rộng bit Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 31 > độ rộng bit Nếu bạn giữ nút bấm, khung liệu nặp lại sau 25 ms Nếu bạn sử dụng mắt nhìn hồng ngoại có sẵn thi truờng, tất dạng sóng bị đảo sau: • Để thu giải mã tín hiệu Remote TV sony, thực tế khơng cần thu tồn 12 bit mã hóa, ta cần thu bit COMMAND bỏ qua bit địa Bởi với điều khiển tất nút bắm phát mã địa nhau, khác mã lệnh Mã địa Sony để phân biệt MODEL REMOD SONY khác Để thu bit mã lệnh ta có thuật tốn sau: 1) thiết lập ghi A = 01000000B 2) khởi đầu cách chờ tín hiệu xuống – bít START 3) chờ cho tín hiệu lên – khởi đầu bit 4) chờ cho tín hiệu xuống 5) chờ khoảng 750 – 950  s 6) đo mức tín hiệu 7) mức tín hiệu mức cao, bit nhận bit - thiết lập cờ nhớ C = - quay phải có nhớ A, C gửi vào MSB A, LSB A gửi vào C - ban đầu A = 01000000B sau quay ta có C = MSB A bít mã lệnh - sau lần quay C = bit bên trái A chứa mã lệnh - kiểm tra cờ nhớ C, C = nhẩy tới bước 9, C = quay lại bước 8) mức tín hiệu thấp bit nhận - thiết lập cờ nhớ C = (bit mã lệnh thu được) - quay phải có nhớ A - kiểm tra cờ nhớ C, C = nhẩy tới bước 9, C = nhẩy tới bước 9) bẩy bit mã lệnh chứa bit trái A: A = D6D5D4D3D2D1D00 - quay phải A ta bit phải A chứa ma lệnh A=0D0D1D2D3D4D5D6 2.1.4 Thiết bị thu phát - Thiết bị phát sử dụng điều khiển TV Sony với nút bấm hồng ngoại phát với mã hóa khác - Thiết bị thu sử dụng mắt nhận hồng ngoại chân, loại mắt Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 32 nhận sử dụng TV: - Mắt nhận hồng ngoại nhận tín hiệu hồng ngoại từ điều khiển từ xa phát đưa tín hiệu đảo mức chân Out Tín hiệu từ chân Out đưa tới P3.3 Vi xử lý để giải mã, điều khiển Port P2 2.1.4.1 IR LED (LED hồng ngoại) LED hồng ngoại Nhìn bên ngồi IR LED giống hệt LED thưịng, phát ánh sáng hồng ngoại nên khơng thể thấy ánh sáng mắt thường 2.1.4.2 IR receiver Trong viết sử dụng IR receiver loại 36Khz Vì loại IR receiver có sơ đồ chân khác nên bạn nên tham khảo datasheet (a) IR receiver (b) Sơ đồ mạch kết nối 2.1.4.3 Remote Sử dụng remote Sony RM-869, remote cần remote dùng ok! Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 33 2.1.2 Hướng dẫn lập trình đơn giản 2.1.2.1 Lắp mạch 2.1.2.2 Lập trình Vào link sau để tải thư viện hỗ trợ IR remote : https://github.com/shirriff/ArduinoIRremote/ Sau tải thư viện về, mở cửa sổ Arduino, chọn Sketch > Import Library> Add Library sau chọn file zip mà bạn vừa tải để sử dụng thư viện #include // thư viện hỗ trợ IR remote const int receiverPin = 8; // chân digital dùng để đọc tín hiệu IRrecv irrecv(receiverPin); // tạo đối tượng IRrecv decode_results results; // lưu giữ kết giải mã tín hiệu void setup() { Serial.begin(9600); // serial baudrate 9600 irrecv.enableIRIn(); // start the IR receiver } void loop() { if (irrecv.decode(&results)) // nhận tín hiệu { Serial.println(results.value, HEX); // in Serial Monitor Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 34 delay(200); irrecv.resume(); // nhận giá trị } } Sau upload đoạn code trên, bạn mở cửa sổ Serial bấm nút remote, tùy loại remote có giá trị trả khác nhau, remote Sony sử dụng này: Đây giá trị tín hiệu gửi từ remote, thử tất nút remote n biết IR codes Chẳng hạn mình, nút 0x10, nút 0x810, nút Power 0xA90, nút Mute 0x290, Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 35 Tiếp theo, sử dụng remote để bật tắt LED #include // thư viện hỗ trợ IR remote const int receiverPin = 8; // chân digital dùng để đọc tín hiệu IRrecv irrecv(receiverPin); // tạo đối tượng IRrecv decode_results results; // lưu giữ kết giải mã tín hiệu const int RED = 7; // LED đỏ const int YELLOW = 6; // LED vàng const int GREEN = 5; // LED xanh /* trạng thái LEDs*/ boolean stateRED = false; boolean stateYELLOW = false; boolean stateGREEN = false; void setup() { Serial.begin(9600); // serial irrecv.enableIRIn(); // start the IR receiver pinMode(RED, OUTPUT); pinMode(YELLOW, OUTPUT); pinMode(GREEN, OUTPUT); } Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 36 // translate IR signals void translateIR() { switch(results.value) { case 0x10: stateRED = !stateRED; digitalWrite(RED, stateRED); break; case 0x810: stateYELLOW = !stateYELLOW; digitalWrite(YELLOW, stateYELLOW); break; case 0x410: stateGREEN = !stateGREEN; digitalWrite(GREEN, stateGREEN); break; case 0xA90: stateRED = stateYELLOW = stateGREEN = false; digitalWrite(RED, 0); digitalWrite(YELLOW, 0); digitalWrite(GREEN, 0); } } void loop() { if (irrecv.decode(&results)) // nhận tín hiệu { translateIR(); Serial.println(results.value, HEX); delay(200); irrecv.resume(); // nhận giá trị } } Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 37 2.1.2.3 Giải thích Với đoạn mã trên, nhấn nút 1, 2, remote, LED đỏ, vàng, xanh on-off, nhấn nút Power tồn LEDs tắt Các keywords thư viện như: IRrecv irrecv(receiverPin);: tạo đối tượng IRrecv có tên irrecv sử dụng tham số receiverPin decode_results results; : lưu kết giải mã irrecv.enableIRIn(); : bắt đầu giải mã tín hiệu IR irrecv.decode(&results);: trả true có tín hiệu đến irrecv.resume; : đợi tín hiệu IR Kết hợp IR remote với điều khiển động DC transistor, bạn tự chế cho quạt mini thật cool đó!^^ • Cách sử dụng Arduino remote TV Đầu tiên, lấy remote TV nhà sử dụng đoạn code để biết IR code 2.1.2.4 Lắp mạch Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 38 2.1.2.5 Các lập trình sử dụng hồng ngoại a Mã code 1: #include IRsend irsend; // gửi tín hiệu hồng hoại const int CH1 = 7; // nút số const int CH2 = 8; // nút số const int CH3 = 9; // nút số const int POWER = 10; // nút Power void setup() { Serial.begin(9600); /* điện trở nội kéo lên cho tất nút bấm*/ pinMode(CH1, INPUT_PULLUP); pinMode(CH2, INPUT_PULLUP); pinMode(CH3, INPUT_PULLUP); pinMode(POWER, INPUT_PULLUP); } void loop() { if (digitalRead(CH1) == 0) irsend.sendSony(0x10, 12); // nút RED nhấn // gửi tín hiệu HEX 0x10, 12 bits else if (digitalRead(CH2) == 0) // nút YELLOW nhấn Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 39 irsend.sendSony(0x810, 12); else if (digitalRead(CH3) == 0) irsend.sendSony(0x410, 12); else if (digitalRead(POWER) == 0) irsend.sendSony(0xA90, 12); // gửi tín hiệu HEX 0x810, 12 bits // nút GREEN nhấn // gửi tín hiệu HEX 0x410, 12 bits // nút POWER nhấn // gửi tín hiệu HEX 0xA90, 12 bits delay(50); } Giải thích: Mặc định, IRsend sử dụng pin PWM để phát tín hiệu, sử dụng pin khác thay cho pin thư viện quy định Hàm sendSony() gửi tín hiệu dạng HEX có độ dài 12 bits thông qua IR LED Bộ thu IR TV bạn nhận giải mã tín hiệu IR phát từ IR LED ==> mạch bạn lúc có chức tương đương với remote ( bạn làm đầy đủ nút remote thật) b Mã code 2: Code led điều khiển băng hồng ngoại #include // thư viện hỗ trợ IR remote const int receiverPin = 8; // chân digital dùng để đọc tín hiệu IRrecv irrecv(receiverPin); // tạo đối tượng IRrecv decode_results results; // lưu giữ kết giải mã tín hiệu const int led1 = 2; // LED const int led2 = 3; // LED const int led3 = 4; // LED const int led4 = 5; // LED /* trạng thái LEDs*/ boolean stateled1 = false; boolean stateled2 = false; boolean stateled3 = false; boolean stateled4 = false; void setup() { Serial.begin(9600); // serial irrecv.enableIRIn(); // start the IR receiver pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 40 pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); } // translate IR signals void translateIR() { switch (results.value) { case 0x20DF8877: stateled1 = !stateled1; digitalWrite(led1, stateled1); break; case 0x20DF48B7: stateled2 = !stateled2; digitalWrite(led2, stateled2); break; case 0x20DFC837: stateled3 = !stateled3; digitalWrite(led3, stateled3); break; case 0x20DF28D7: stateled4 = !stateled4; digitalWrite(led4, stateled4); break; case 0x20DF10EF : stateled1 = stateled2 = stateled3 = stateled4=false; digitalWrite(led1, 0); digitalWrite(led2, 0); digitalWrite(led3, 0); digitalWrite(led4, 0); } } void loop() { if (irrecv.decode(&results)) // nhận tín hiệu { translateIR(); Serial.println(results.value, HEX); delay(200); Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 41 irrecv.resume(); // nhận giá trị } } Khối gom mắt thu hồng ngoại có vỏ bọc kim loại để chống nhiễu Cấu tạo chất bán dẫn có chân: Chân đưa tín hiệu (OUT) Chân nối mass (GND) Chân nối nguồn +5V (VDC) Điện trở R = 10kΩ tự hóa C1 có tác dụng lọc nhiễu Chân tín hiệu OUT nối với chân ngắt vi điều khiển Nguyên lý hoạt động: Khi Remote phát tín hiệu hồng ngoại mắt thu nhận được, tín hiệu thu nhờ tụ C1 = 4.7 µF trở R2 = 10 kΩ lọc nhiễu đưa tín hiệu vi điều khiển 2.1.2.6 Module truyền nhận hồng ngoại (IR Transmiter/Receiver) a Các thành phần DFRobot UNO R3 cáp USB x2 Module nhận IR (SKU:DFR0094) x Module truyền IR (SKU: DFR0095) x Dây nối Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 42 b Thiết lập phần cứng: Hình : Sơ đồ kết nối truyền IR UNO R3 Hình : Sơ đồ kết nối nhận IR UNO R3 c Chương trình mẫu (Sample codes) Việc bạn phải cài đặt thư viện IR Arduino, thư viện IR download đây: https://github.com/z3t0/Arduino-IRremote Chương trình truyền IR #include IRsend irsend; void setup() { } void loop() { irsend.sendRC5(0x0, 8); delay(200); irsend.sendRC5(0x1, 8); Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 43 delay(200); } Chương trình cho nhận IR #include const int REC_Pin = 11; //IR Sensor Pin const int LED_Pin = 13; // Led pin IRrecv irrecv(REC_Pin); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { if (results.bits > 0) { int state; if (0x1 == results.value) { state = HIGH; } else { state = LOW; } digitalWrite(LED_Pin, state); } irrecv.resume(); } d Kết LED sheld kết nối đến nhận IR nhấp nháy nhận IR đối diện với phát IR (Tham khảo thêm đồ án hồng ngoại : • Đồ án 13 14 • Tài liệu Hướng dẫn sử dụng Arduino Tập Tài liệu biên soạn Group ARDUINO IOT VIETNAMhttps://www.facebook.com/groups/486295328966960/ 44 ... 89 2.6.1 Giới thiệu 89 2.6.2 HC-05 Module 92 2.6.3 Điều chỉnh module HC-05 dùng tập lệnh AT 93 2.6.4 Giao tiếp board Arduino module Bluetooth... bit - thiết lập cờ nhớ C = - quay phải có nhớ A, C gửi vào MSB A, LSB A gửi vào C - ban đầu A = 01000000B sau quay ta có C = MSB A bít mã lệnh - sau lần quay C = bit bên trái A chứa mã lệnh - kiểm... nhận - thiết lập cờ nhớ C = (bit mã lệnh thu được) - quay phải có nhớ A - kiểm tra cờ nhớ C, C = nhẩy tới bước 9, C = nhẩy tới bước 9) bẩy bit mã lệnh chứa bit trái A: A = D6D5D4D3D2D1D00 - quay

Ngày đăng: 30/12/2020, 15:31

TỪ KHÓA LIÊN QUAN

w