DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
No Result
View All Result
Home Vi Điều Khiển Arduino

Lập trình Arduino – Hướng dẫn làm mạch định vị GPS gửi tin nhắn về điện thoại bằng Module SIM 800A

26 Tháng Sáu, 2022
in Arduino, Mạch Điện Vui, MD GSM,GPS,3G, Sản Phẩm Sáng Tạo, Vi Điều Khiển
686 52

Hướng dẫn làm mạch định vị GPS gửi tin nhắn về điện thoại bằng Module SIM 800A

Chào các bạn hôm nay mình sẽ hướng dẫn các bạn làm mạch định vị GPS gửi tin nhắn về điện thoại bằng module sim 800c dựa trên nền tảng Arduino

I. Linh kiện cần thiết

    1. Arduino UNO
    2. Module Định vị GPS NEO 6M
    3. Sim 800c
    4. Module chỉnh áp LM2596
    5. Led
    6. Jump
    7. Simcard
    8. C1815
    9. Trở 1k
    10. Trở 4.7k
    11. An ten

II. Module SIM800A

Moule sim 800c này mình tự làm cho mạch này, các bạn có thể dùng module mua sẵn hoặc làm theo mình cũng được.

Mặt sau

Mặt trước

PCB

Các bạn có thể Tải file mạch in Tại đây

Các bạn có thể Xem nguyên lý Tại đây để biết giá trị của linh kiện nhé!

 

III.Mạch chính

Mạch chính mình sử dụng module arduino uno

Đây là file PCB các bạn có thể Tải về làm.

Xem file Nguyên lý Ở đây nhé

Các bạn có thể tải về để xem

Code:

#include <GPRS_Shield_Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <TinyGPS.h>

//#include <LiquidCrystal_I2C.h>;
//LiquidCrystal_I2C lcd(0x27,16,2);

#define PIN_TX 10
#define PIN_RX 11
#define BAUDRATE 9600

#define PHONE_NUMBER "+841654151020"
#define MESSAGE "Module duoc kich hoat"

#define EXP 1000000 // độ chính xác đến 6 chữ số thập phân

int PWERKEY = 6;
String text1="Get_location";

#define SMS_LENGTH 160
char message[SMS_LENGTH];
int messageIndex = 0;

int gsm_status=7;
int gps_status=8;

char phone[16];
char datetime[24];

char sms_cmd[]="http://maps.google.com/maps?q=%ld.%ld,%ld.%ld&t=m&z=36\n\r";
char sms_report[70];
//int sms_report_status=0;

TinyGPS gps;
SoftwareSerial ss(4, 3);
GPRS Sendsms(PIN_TX,PIN_RX,BAUDRATE);

//Function
void parse_float(float val, unsigned long &prefix, unsigned long &suffix);
void Creat_SMS(float longitude, float latitude);

void setup() {

int count_gsm_init=0;

//lcd.init(); //Khởi động màn hình. Bắt đầu cho phép Arduino sử dụng màn hình
//lcd.backlight(); //Bật đèn nền

//lcd.setCursor(0,0);
//lcd.print("Initialize GSM-GPS");
INIT:
count_gsm_init=0;
pinMode(gsm_status,OUTPUT);
pinMode(gps_status,OUTPUT);
pinMode(PWERKEY,OUTPUT);

digitalWrite(gsm_status,HIGH);
digitalWrite(gps_status,HIGH);
digitalWrite(PWERKEY,HIGH);
ss.begin(9600);
GPRS Sendsms(PIN_TX,PIN_RX,BAUDRATE);
Serial.begin(9600);
while(!Sendsms.init())
{
delay(1000);
Serial.println("int error\r\n");
count_gsm_init++;
if(count_gsm_init==5)
goto INIT;
}
digitalWrite(gsm_status,LOW);
Serial.println("Kiem tra thanh cong");
Sendsms.sendSMS(PHONE_NUMBER,MESSAGE);
delay(2000);
Serial.println(" Da gui tin nhan");
//lcd.setCursor(0,1);
//lcd.print("Succesful!");
//delay(2000);
//

//lcd.clear();
}

void loop() {
bool newData = false;
unsigned long chars;
unsigned short sentences, failed;
ss.begin(9600);
// For one second we parse GPS data and report some key values
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (ss.available())
{
char c = ss.read();
// Serial.write(c); // uncomment this line if you want to see the GPS data flowing
if (gps.encode(c)) // Did a new valid sentence come in?
newData = true;
}
}

if (newData)
{
float flat, flon;
float kinhdo, vido;
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
//Serial.print("LAT=");
kinhdo=(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon);
vido=(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat);
//Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
//Serial.print(vido, 6);
//Serial.print(" LON=");
//Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
//Serial.print(kinhdo, 6);
//Serial.print(" SAT=");
//Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());
//Serial.print(" PREC=");
// Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());
digitalWrite(gps_status,LOW);
Creat_SMS(vido,kinhdo);
}
else
{
gps.stats(&chars, &sentences, &failed);
Serial.print(" CHARS=");
Serial.print(chars);
Serial.print(" SENTENCES=");
Serial.print(sentences);
Serial.print(" CSUM ERR=");
Serial.println(failed);
if (chars == 0)
Serial.println("** No characters received from GPS: check wiring **");
sprintf(sms_report,"Chua xac dinh duoc toa do\r\n");
}

GPRS Sendsms(PIN_TX,PIN_RX,BAUDRATE);
messageIndex = Sendsms.isSMSunread();
if( messageIndex > 0)
{
Sendsms.readSMS(messageIndex, message, SMS_LENGTH, phone, datetime);
Sendsms.deleteSMS(messageIndex);
Serial.print(" So dien thoai gui: ");
Serial.println(phone);
Serial.print(" Ngay thang: ");
Serial.println(datetime);
Serial.print(" Noi dung: ");
Serial.println(message);
if(text1.equalsIgnoreCase(message))
{
Serial.println(text1+": Bang nhau " );
Serial.println(" Dang gui lai " );
Sendsms.sendSMS(PHONE_NUMBER,sms_report);
Serial.println(" Da gui xong" );
}
else
{
Sendsms.sendSMS(PHONE_NUMBER,"Tin nhan sai cu phap. De lay toa do, gui tin nhan co dang: <Get_Location>.\r\n");
Serial.println(text1+": Khong bang nhau" );
}
}
}

void parse_float(float val, unsigned long &prefix, unsigned long &suffix) {
prefix = long(val);
suffix = (val - prefix) * EXP;
}

void Creat_SMS(float latitude, float longitude) {

//char lcd_buff[16];

unsigned long longitude_pre, longitude_suf, latitude_pre, latitude_suf;

parse_float(longitude, longitude_pre, longitude_suf); // 2 biến prefix, suffix là ánh xạ đến vùng nhớ của biến temp_pre, temp_suf
parse_float(latitude, latitude_pre, latitude_suf);
sprintf(sms_report, sms_cmd, latitude_pre, latitude_suf, longitude_pre, longitude_suf);
/*
sprintf(lcd_buff,lcd_line1,latitude_pre, latitude_suf);
lcd.setCursor(0,0);
lcd.print(lcd_buff);

sprintf(lcd_buff,lcd_line2,longitude_pre, longitude_suf);
lcd.setCursor(0,1);
lcd.print(lcd_buff);
*/
//Serial.println(sms_report);
}

/////////////////////////////////////

 

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

Hình ảnh về mạch thật

Nếu bạn cần hỗ trợ về code thì cứ liên hệ với liên hệ với mình.

Tags: arduinoGPSSim 800a
Share548Tweet343

Related Posts

Mạch điều khiển thiết bị và giám sát nhiệt độ qua Internet dùng App Blynk
Arduino

Mạch điều khiển thiết bị và giám sát nhiệt độ qua Internet dùng App Blynk

26 Tháng Sáu, 2022
Lập Trình Arduino – Chia Sẻ Mạch Quản lý Bãi Đỗ Xe Bằng Thẻ RFID
Arduino

Lập Trình Arduino – Chia Sẻ Mạch Quản lý Bãi Đỗ Xe Bằng Thẻ RFID

26 Tháng Sáu, 2022
Lập trình Arduino – Lập trình Kết nối với module bàn phím 4×4
Arduino

Lập trình Arduino – Lập trình Kết nối với module bàn phím 4×4

26 Tháng Sáu, 2022
Next Post
Lập trình nút nhấn với 8051

Lập trình nút nhấn với 8051

BÀI 8 : Lập trình nháy LED ĐƠN với 8051.

BÀI 8 : Lập trình nháy LED ĐƠN với 8051.

3 1 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
1 Bình luận
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
Hùng
Hùng
2 năm trước

bro có thể làm rõ cái sơ đồ đi dây đc ko á,trông rối quá :((

0
Trả lời

No Result
View All Result
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz