Sim800C giao tiếp Arduino, Nhắn tin, Gọi điện Sim800C + DHT11 + Arduino

doc-cam-bien-nhiet-do-do-am-dht11-arduino-dien-thoai-bang-nhan-tin-goi-dien-module-sim800C-2

Sim800C giao tiếp Arduino dùng điều khiển thiết bị hoặc cảnh báo từ xa thông qua mạng di động. Dễ giao tiếp với các vi điều khiển như Pic, 8051, AVR, Arduino… Module Sim800C được ứng dụng rộng rãi ngoài thực thế, các phòng thông minh, ngôi nhà thông minh, IOT…  ‘

 

Liên hệ làm Đồ án và Mạch điện tử

 

1. Linh kiện cần thiết làm mạch điều khiển thiết bị bằng nhắn tin, gọi điện Sim800C giao tiếp Arduino

1.1 Vi điều khiển Arduino trong mạch điều khiển thiết bị bằng nhắn tin, gọi điện Sim800C giao tiếp Arduino

a. Giới thiệu

Arduino Uno R3 (Dip) có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối).

Các chức năng khác

Arduino Uno R3 là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều khiển Microchip ATmega328 được phát triển bởi Arduino.cc. Bảng mạch được trang bị các bộ chân đầu vào/ đầu ra Digital và Analog có thể giao tiếp với các bảng mạch mở rộng khác nhau. Mạch Arduino Uno thích hợp cho những bạn mới tiếp cận và đam mê về điện tử, lập trình…Dựa trên nền tảng mở do Arduino.cc cung cấp các bạn dễ dàng xây dựng cho mình một dự án nhanh nhất ( lập trình Robot, xe tự hành, điều khiển bật tắt led…). Mach-dieu-khien-dong-co-buoc-DC-step-Arduino-uno-r3-1
các ứng dụng của vi điều khiển

b. Chức năng của Arduino R3:

  • 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
  • Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.

Các chức năng khác

  • Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).  Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
  • LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
  • Arduino Uno R3 có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V  → 2.5V với độ phân giải vẫn là 10bit. Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

Mach-dieu-khien-dong-co-buoc-DC-step-Arduino-uno-r3-2 BH1750 giao tiếp Arduino  

 

c.Thông số kỹ thuật Arduino Uno R3 (Dip)

DatasheetsAtmega328
Standard Package27
CategoryIntegrated Circuits (ICs)
FamilyEmbedded – Atmel
SeriesAtmega
PackagingTube
Core ProcessorAVR
Core Size8-Bit
Speed16MHz
ConnectivityI²C, SPI, UART / USART, USB
PeripheralsBrown-out Detec t/ Reset, HLVD, POR, PWM, WDT
Number of I /O14
Program Memory Size32KB
Program Memory TypeFLASH
EEPROM Size1KB
RAM Size2K
Voltage – Supply (Vcc/Vdd)4.2 V ~ 5.5 V
Data ConvertersA/D 6 x 10bit
Oscillator TypeInternal
Operating Temperature-40°C ~ 85°C
Package / Case28-SOIC (0.295″, 7.50mm Width)
Other NamesAtmega328

 

d. Power

  • LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
  • VIN: Chân này dùng để cấp nguồn ngoài (điện áp cấp từ 7-12VDC).
  • 5V: Điện áp ra 5V (dòng điện trên mỗi chân này tối đa là 500mA).
  • 3V3: Điện áp ra 3.3V (dòng điện trên mỗi chân này tối đa là 50mA).
  • GND: Là chân mang điện cực âm trên board.
  • IOREF: Điệp áp hoạt động của vi điều khiển trên Arduino UNO và có thể đọc điện áp trên chân IOREF. Chân IOREF không dùng để làm chân cấp nguồn.

e.Bộ nhớ

Vi điều khiển ATmega328:
  • 32 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.
  • 2 KB cho SRAM: (Static Random Access Menory): giá trị các biến khai báo sẽ được lưu ở đây. Khai báo càng nhiều biến thì càng tốn nhiều bộ nhớ RAM. Khi mất nguồn dữ liệu trên SRAM sẽ bị mất.
  • 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory): Là nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.

f. Các chân đầu vào và đầu ra

Trên Board Arduino Uno có 14 chân Digital được sử dụng để làm chân đầu vào và đầu ra và chúng sử dụng các hàm pinMode(), digitalWrite(), digitalRead(). Giá trị điện áp trên mỗi chân là 5V, dòng trên mỗi chân là 20mA và bên trong có điện trở kéo lên là 20-50 ohm. Dòng tối đa trên mỗi chân I/O không vượt quá 40mA để tránh trường hợp gây hỏng board mạch. Ngoài ra, một số chân Digital có chức năng đặt biệt:
  • Serial: 0 (RX) và 1 (TX): Được sử dụng để nhận dữ liệu (RX) và truyền dữ liệu (TX) TTL.
  • Ngắt ngoài: Chân 2 và 3.
  • PWM: 3, 5, 6, 9 và 11 Cung cấp đầu ra xung PWM với độ phân giải 8 bit bằng hàm analogWrite ().
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Các chân này hỗ trợ giao tiếp SPI bằng thư viện SPI.
  • LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
  • TWI/I2C: A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

1.2 Module Sim800C nhắn tin, gọi điện Sim800C giao tiếp Arduino

a. Giới thiệu

Thừa kế các chức năng từ các thế hệ module sim trước như sim800a, sim900a, sim900…, Module GSM sim 800L  có khả năng nhắn tin SMS, nghe, gọi, GPRS, … như một điện thoại nhưng có kích thước nhỏ nhất trong các loại module SIM(25 mm x 22 mm). Điều khiển module sử dụng bộ tập lệnh AT dễ dàng và tiêu thụ điện năng nhỏ phù hợp cho các đồ án hoặc dư án cần dùng Pin hoặc Acquy

doc-cam-bien-nhiet-do-do-am-dht11-arduino-dien-thoai-bang-nhan-tin-goi-dien-module-sim800C-1

b. Thông số kỹ thuật

  • Sử dụng IC GSM SIM800C
  • Nguồn cấp: 3.4~4.2VDC
  • Nhiệt độ hoạt động: -40 ~ +80 độ C
  • Nhiệt độ bảo quản: -45 ~ +90 độ C
  • Tốc độ dữ liệu truyền xuống: max. 85.6 kbps
  • Tốc độ dữ liệu truyền lên: max. 85.6 kbps
  • Coding scheme: CS-1, CS-2, CS-3 and CS-4
  • Tích hợp TCP/IP
  • Hỗ trợ gói Broadcast điều khiển kênh (PBCCH)
  • Giao thức PAP cho kết nối PPP
  • Dải tần số làm việc: 850/900/1800/1900M
  • Chế độ điều khiển: lệnh AT (3GPP TS27.007)
  • GPRS: Kết nối PPP, giao thức TCP / IP nhúng
  • Các chức năng cơ bản: quay số / trả lời / SMS / GPRS truyền thông
  • Chức năng mở rộng: MMS / DTMF / TTS / Bluetooth
  • Tốc độ truyền nối tiếp: 1200 ~ 460800 bps

c. Chức năng các chân của module sim800C

  • Chân NET: lắp anten , có thể dùng anten đi kèm hoặc ăn ten mở rộng .
  • Chân VCC- GND : cấp nguồn dương- âm.
  • RST: chân reset : sử dụng khi cần khởi động lại module sim .
  • RXD – TXD : giao tiếp chuẩn serial đặc trưng của module sim.
  • RING: đổ chuông khi có cuộc gọi đến
  • DTR: Chân UART DTR
  • SPKP, SPKN: ngõ ra âm thanh, nối với loa để phát âm thanh.
  • MICP, MICN: ngõ vao âm thanh, phải gắn thêm Micro để thu âm thanh.

d. Tập lệnh AT của module sim800C cần giao tiếp vi điều khiển

Các lệnh chung

  • Lệnh: AT<CR><LF>
  • Mô tả : Kiểm tra đáp ứng của Module Sim 900A, nếu trả về OK thì Module hoạt động

  • Lệnh: ATE[x]<CR><LF>
  • Mô tả: Chế độ echo là chế độ phản hồi dữ liệu truyền đến của module Sim 900A, x = 1 bật chế độ echo , x = 0 tắt chế độ echo (bạn nên tắt chế độ này khi giao tiếp với vi điều khiển)

  • Lệnh: AT+IPR=[baud rate]<CR><LF>
  • Mô tả:  cài đặt tốc độ giao tiếp dữ liệu với Module Sim800C, chỉ cài được các tốc độ sau
  • baud rate :    0  (auto), 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200

  • Lệnh:  AT&W<CR><LF>
  • Mô tả :  lưu lại các lệnh đã cài đặt

Các lệnh điều khiển cuộc gọi

  • Lệnh: AT+CLIP=1<CR><LF>
  • Mô tả: Hiển thị thông tin cuộc gọi đến

  • Lệnh: ATD[Số_điện_thoại];<CR><LF>
  • Mô tả: Lệnh thực hiện cuộc gọi

  • Lệnh: ATH<CR><LF>
  • Mô tả: Lệnh thực hiện kết thúc cuộc gọi , hoặc cúp máy khi có cuộc gọi đến

  • Lệnh: ATA<CR><LF>
  • Mô tả: Lệnh thực hiện chấp nhận khi có cuộc gọi đến

Các lệnh điều khiển tin nhắn

  • Lệnh: AT+CMGF=1<CR><LF>
  • Mô tả: Lệnh đưa SMS về chế độ Text , phải có lệnh này mới gửi nhận tin nhắn dạng Text

  • Lệnh: AT+CMGS=”Số_điện _thoại”<CR><LF>
  • Đợi đến khi có ký tự ‘>’ được gửi về thì đánh nối dung tin nhắn   
  • Gửi mã Ctrl+Z  hay 0x1A hoặc giá trị 26 để kết thúc nội dung và gửi tin nhắn
  • Mô tả: Lệnh gửi tin nhắn

  • Lệnh: AT+CMGR=x<CR><LF>
  • x là địa chỉ tin nhắn cần đọc
  • Mô tả: Đọc một nhắn vừa gửi đến, lệnh được trả về nội dung tin nhắn, thông tin người gửi, thời gian gửi

  • Lệnh: AT+CMGDA=”DEL ALL”<CR><LF>
  • Mô tả:  Xóa toàn bộ tin nhắn trong các hộp thư

  • Lệnh: AT+CNMI=2,2<CR><LF>
  • Mô tả: Hiển thị nội dung tin nhắn ngay khi có tin nhắn đến

1.2 Cảm biến DHT11 dùng gọi điện, nhắn tin module sim800C giao tiếp Arduino

a. Giới thiệu DHT11

Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào. So với cảm biến đời mới hơn là DHT22 thì DHT11 cho khoảng đo và độ chính xác kém hơn rất nhiều.

Cảm biến dht11

b. Thông số kỹ thuật DHT11

  • Nguồn: 3 -> 5 VDC.
  • Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
  • Đo tốt ở độ ẩm 2080%RH với sai số 5%.
  • Đo tốt ở nhiệt độ 0 to 50°C sai số ±2°C.
  • Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)
  • Kích thước 15mm x 12mm x 5.5mm.
  • 4 chân, khoảng cách chân 0.1”.

Lưu ý: Cảm biến này khi làm các bạn phải để ý chân, vì rất dễ chết khi các bạn cấp sai.

2. Hướng dẫn đồ án Module Sim800C giao tiếp Arduino hiển thị nhiệt độ, độ ẩm dht11

Phần này chưa được chia sẻ.

LIÊN HỆ thông tin ở TẠI ĐÂY để được hổ trợ tốt hơn.

Phần cứng module sim

doc-cam-bien-nhiet-do-do-am-dht11-arduino-dien-thoai-bang-nhan-tin-goi-dien-module-sim800C

Phần mềm


#include <SoftwareSerial.h>
SoftwareSerial sim800c(2, 3); // RX,TX for Arduino and for the module it's TXD RXD, they should be inverted
#define button1 7 //Button pin, on the other pin it's wired with GND
bool button_State; //Button state
void setup()
{
  pinMode(button1, INPUT_PULLUP); //The button is always on HIGH level, when pressed it goes LOW
  sim800c.begin(9600);   //Module baude rate, this is on max, it depends on the version
  Serial.begin(9600);   
  delay(1000);
}
 
void loop()
{
  button_State = digitalRead(button1);   //We are constantly reading the button State
  if (button_State == LOW) {            //And if it's pressed
    Serial.println("Button pressed");   //Shows this message on the serial monitor
    delay(200);                         //Small delay to avoid detecting the button press many times
    SendSMS();                          //And this function is called

 }
 
  if (sim800c.available()){            //Displays on the serial monitor if there's a communication from the module
    Serial.write(sim800c.read()); 
  }
}
 
void SendSMS()
{
  Serial.println("Sending SMS...");               //Show this message on serial monitor
  sim800c.print("AT+CMGF=1\r");                   //Set the module to SMS mode
  delay(100);
  sim800c.print("AT+CMGS=\"+84967551477\"\r");  //Your phone number don't forget to include your country code, example +212123456789"
  delay(500);
  sim800c.print("SIM800c is working");       //This is the text to send to the phone number, don't make it too long or you have to modify the SoftwareSerial buffer
  delay(500);
  sim800c.print((char)26);// (required according to the datasheet)
  delay(500);
  sim800c.println();
  Serial.println("Text Sent.");
  delay(500);
}
 

2. Hoạt động của mạch điều khiển thiết bị bằng nhắn tin, gọi điện Sim800C

Khi cấp điện hệ thống hoạt động, các thiết bị ban đầu tắt, lúc này vi điều khiển chờ khoảng 10 đến 15 giây để module sim800C khởi động xong. Khi khởi động xong vi điều khiển khởi tạo các tập lệnh AT cho module sim đã được định sẵn trong phần lập trình và gửi tin nhắn cho điện thoại để báo hiệu thành công. Khi nhấn nút trên hệ thống vi điều khiển đọc tín hiệu từ cảm biến nhiệt độ, độ ẩm dht11 gửi vào, khi nhận tín hiệu vi điều khiển xử lý và gửi tin nhắn cho điện thoại thông qua module sim800C thông báo giá trị nhiệt độ, độ ẩm từ xa.

3. Cụ thể hoạt động của mạch điều khiển thiết bị bằng nhắn tin, gọi điện Sim800C giao tiếp Arduino

Chúc các bạn thành công…!!!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *