اس ام اس باکس SMS BOX
کیت اس ام اس باکس
در پروژه های مخابراتی که با بردهای میکروکنترلر اجرا میشود دو ماژول در بین کاربران در جامعه کاربری حال حاضر بسیار پرکاربرد شده است. با اولین جست و جو در سطح وب پروژه های بی شماری که وابسته به SMS و موقعیب GPS است با دو ماژول سیم کارت و موقعیب یاب اجرا شده است. در این کیت از ماژول سیم کارت SIM800L و ماژول موقعیب یاب NEO6M استفاده شده است. با ترکیب این دو ماژول پروژه های IoT وابسته به مخابرات و ارسال و دریافت داده ها از طریق SMS امکان پذیر خواهد شد. ماژول GPS مدل NEO6M یک ماژول گیرنده داده های جغرافیایی از ماهواره هاست. به کمک این ماژول شما می توانید داده های مختلفی را از ماهواره های GPS دریافت نمایید. این ماژول دارای ولتاژ کاری ۳٫۷ الی ۵ ولت DC با جریان مصرفی ۴۵ میلی آمپر است. بر روی برد این ماژول یک سوکت آنتن قرار داشته که شما می توانید از آنتن پسیو استفاده کنید. البته با استفاده از تبدیل، شما قادر به اتصال آنتن های اکتیو سیم دار به این ماژول جهت افزایش دقت خواهید بود. این ماژول دارای پروتکل ارتباطی سریال UART است. پس از اتصال تغذیه به GPS، ماژول شروع به ارسال داده ها در پورت سریال می کند. این داده ها در قالب فرمتی خاص، تحت عنوان NMEA از ماژول دریافت می گردد. این ماژول داری حساسیت گیرندگی -۱۶۵ میلی دسیبل بوده و قادر به برقراری ارتباط با ماهواره های آمریکایی جهت تبادل داده است. ماژول SIM800L، یک ماژول مخابراتی از نوع سیم کارتی است. این ماژول یک اسلات سیم کارت داشته که سیم کارت از نوع mini درون آن قرار می گیرد. با اتصال سیم کارت، این ماژول قادر خواهد بود که همانند یک تلفن همراه، به شبکه مخابرات متصل شده و به ارسال دریافت پیامک، برقراری تماس تلفنی و اتصال به اینترنت بپردازد. ماژول SIM800L دارای دو پایه سریال، RX و TX جهت دریافت فرمان و ارسال داده است. این ماژول همچنین بر روی خود پایه های اتصال میکروفون و بلندگو جهت برقراری تماس تلفنی است.
ویژگی های کیت اس ام اس باکس
- دارای ماژول سیم کارت SIM800L
- دارای ماژول موقعیب یاب NEO6M
- دارای مبدل USB TO TLL جهت اتصال به سیستم
- قابلیت ساخت پروژه های سیم کارتی مخابراتی
- مناسب برای پروژه های دانشجویی
بررسی پایه های ماژول SIM800L
- VCC: پایهی تغذیه با ولتاژ ۳.۷ تا ۴.۲ ولت (معمولا با استفاده از باتری لیتیوم یونی ۳.۷ ولت تامین میشود)
- GND: پایهی زمین
- TX: پایهی خروجی سریال برای ارسال دادهها به میکروکنترلر
- RX: پایهی ورودی سریال برای دریافت دادهها از میکروکنترلر
- RST: پایهی ریست ماژول که به طور پیش فرض به زمین متصل است و در صورتی که به ولتاژ ۵ ولت وصل شود، ماژول ریست خواهد شد
- Key: پایهی کنترل برای فعال کردن و غیرفعال کردن ماژول. این پایه را میتوان به یکی از پایههای دیجیتال میکروکنترلر متصل کرد تا ماژول را روشن و خاموش کنید. به طور پیشفرض، این پایه با یک مقاومت پایین به زمین متصل شده است تا ماژول روشن شود
- MIC+: پایهی ورودی صدا برای استفاده در بخش میکروفون ماژول
- MIC-: پایهی زمین بخش میکروفون ماژول
- SPK+: پایهی خروجی صدا برای استفاده در بخش بلندگو ماژول
- SPK-: پایهی زمین بخش بلندگو ماژول
بررسی پایه های ماژول NEO6M
- VCC: پایه تغذیه با ولتاژ 3.3 ولت
- GND: پایه اتصال به زمین
- TX: پایه ارسال دادهها به میکروکنترلر یا سایر دستگاهها
- RX: پایه دریافت دادهها از میکروکنترلر یا سایر دستگاهها
به همراه ماژول موقعیب یاب و سیم کارت چه اقلامی باید خریداری کرد؟
- ماژول موقعیت یاب Neo6m
- ماژول سیم کارت SIM800l
- رله تک کانال
- ماژول کاهنده ولتاژ LM2596
- ماژول USB TO TTL
- ماژول شارژر باتری TP4056
- باتری لیتیوم یون
- battery holder جاباتری
- کابل نری به مادگی 20 سانتی
- مینی برد بورد
- خازن 1000 میکروفاراد
- جعبه BOX
راه اندازی ماژول SIM800L با آردوینو
این کد با تنظیم یک پورت SoftwareSerial برای ارتباط، بررسی ارتباط با ماژول، وارد کردن کد PIN کارت SIM، تنظیم فرمت پیام به حالت متنی و فعالسازی اعلان پیام جدید، ماژول SIM800L را مقدماتی مهیا میکند. در تابع loop، ابتدا از پورت SoftwareSerial خوانده و به پورت Serial نوشته میشود و بالعکس.
#include <SoftwareSerial.h>
SoftwareSerial sim800l(10, 11); // RX, TX
void setup() {
Serial.begin(9600);
sim800l.begin(9600);
delay(1000);
sim800l.println("AT"); // بررسی ارتباط با ماژول
delay(1000);
sim800l.println("AT+CPIN=\"YOUR_SIM_PIN\""); // وارد کردن کد PIN کارت SIM
delay(1000);
sim800l.println("AT+CMGF=1"); // تنظیم فرمت پیام به حالت متنی
delay(1000);
sim800l.println("AT+CNMI=2,2,0,0,0"); // فعالسازی اعلان پیام جدید
delay(1000);
Serial.println("SIM800L آماده به کار است.");
}
void loop() {
if (sim800l.available()) {
Serial.write(sim800l.read());
}
if (Serial.available()) {
sim800l.write(Serial.read());
}
}
راه اندازی ماژول NEO6M با آردوینو
در این کد، ابتدا پین های سریال نرمافزاری را برای ماژول GPS تعریف میکنیم و یک شیء SoftwareSerial را برای ارتباط با ماژول ایجاد میکنیم. در تابع setup()، ارتباط سریال را برای هر دو ماژول GPS و برد آردوینو شروع میکنیم.در تابع loop()، به صورت پیدرپی از ماژول GPS با استفاده از gpsSerial.available() دادهها را خوانده و پردازش میکنیم. هنگامی که یک جمله دادهی معتبر GPS پیدا شد (در این مثال، جمله $GPRMC)، با استفاده از توابع پردازش رشته، دادهها را تجزیه میکنیم. در نهایت، دادههای تجزیهشده GPS (طول جغرافیایی، عرض جغرافیایی، سرعت، تاریخ و زمان) را با استفاده از Serial.println() در مانیتور سریال چاپ میکنیم.
#include <SoftwareSerial.h>
// Define software serial pins
#define GPS_TX 2
#define GPS_RX 3
// Initialize software serial object
SoftwareSerial gpsSerial(GPS_TX, GPS_RX);
void setup() {
Serial.begin(9600);
gpsSerial.begin(9600);
}
void loop() {
// خواندن دیتای GPS
while (gpsSerial.available() > 0) {
if (gpsSerial.find("$GPRMC")) {
// Parse GPS data
String data = gpsSerial.readStringUntil('\r');
String parts[13];
int partIndex = 0;
int startIndex = 0;
int endIndex = data.indexOf(",");
while (endIndex != -1) {
parts[partIndex] = data.substring(startIndex, endIndex);
partIndex++;
startIndex = endIndex + 1;
endIndex = data.indexOf(",", startIndex);
}
parts[partIndex] = data.substring(startIndex);
// Print parsed GPS data
Serial.print("Latitude: ");
Serial.println(parts[3]);
Serial.print("Longitude: ");
Serial.println(parts[5]);
Serial.print("Speed (knots): ");
Serial.println(parts[7]);
Serial.print("Date: ");
Serial.println(parts[9]);
Serial.print("Time: ");
Serial.println(parts[1]);
}
}
}
راه اندازی ماژول سیم کارت SIM800L با میکروپایتون
در این کد، یک شی UART برای ارتباط سریال ایجاد شده است، تابع send_at_cmd() برای ارسال دستورات AT به ماژول SIM800L و خواندن پاسخ آن تعریف شده است، و تابع setup_sim800l() برای مقدماتیسازی ماژول با بررسی ارتباط، ورود کد PIN کارت SIM، تنظیم فرمت پیام به حالت متنی و فعالسازی اعلان پیام جدید نوشته شده است. در تابع حلقه (loop)، به صورت مداوم از UART خوانده شده و داده دریافت شده چاپ میشود. این کد تنها یک نقطه شروع است و شما ممکن است برای نیازهای خاص خود آن را تغییر دهید.
import machine
import time
uart = machine.UART(1, tx=22, rx=21, baudrate=9600) # ساخت یک شی UART برای ارتباط سریال
def send_at_cmd(cmd):
uart.write(cmd + b"\r\n") # فرستادن دستور AT به ماژول
time.sleep(0.5) # تأخیر برای دریافت پاسخ
response = uart.read() # خواندن پاسخ ماژول
return response
def setup_sim800l():
send_at_cmd(b"AT") # بررسی ارتباط با ماژول
send_at_cmd(b"AT+CPIN=\"YOUR_SIM_PIN\"") # ورود کد PIN کارت SIM
send_at_cmd(b"AT+CMGF=1") # تنظیم فرمت پیام به حالت متنی
send_at_cmd(b"AT+CNMI=2,2,0,0,0") # فعالسازی اعلان پیام جدید
print("SIM800L آماده است!")
def loop():
if uart.any():
data = uart.read() # خواندن داده از شبکه سریال
print(data)
setup_sim800l()
while True:
loop()
راه اندازی ماژول NEO6M با میکروپایتون
در این کد، ابتدا پین های UART برای ماژول GPS تعریف شده و یک شی UART برای ارتباط با ماژول ایجاد شده است. در تابع parse_gps_data()، داده های GPS با استفاده از توابع مدیریت رشته ها تجزیه شده و داده های تجزیه شده به کنسول چاپ می شود.در حلقه اصلی، به صورت پی در پی از ماژول GPS با استفاده از تابع uart.read() داده ها خوانده شده و پس از پیدا کردن یک جمله داده GPS معتبر (در این مثال، جمله $GPRMC)، داده ها به تابع parse_gps_data() جهت تجزیه و چاپ فرستاده می شود. همچنین با استفاده از time.sleep() یک تاخیر ۱ ثانیه تعریف شده است تا خواندن ماژول GPS بدون تعریف بیش از حد کمتر شود
import machine
import time
import ubinascii
import ustruct
# Define UART pins
# تعریف پین های UART
uart = machine.UART(1, baudrate=9600, tx=27, rx=26, timeout=1000)
def parse_gps_data(gps_data):
# Parse GPS data
# تجزیه داده های GPS
data = gps_data.decode('utf-8')
parts = data.split(',')
lat = parts[3]
lon = parts[5]
speed = parts[7]
date = parts[9]
time = parts[1]
# Print parsed GPS data
# چاپ داده های GPS تجزیه شده
print("Latitude: ", lat)
print("Longitude: ", lon)
print("Speed (knots): ", speed)
print("Date: ", date)
print("Time: ", time)
# Main loop
# حلقه اصلی
while True:
# Read GPS data
# خواندن داده های GPS
gps_data = uart.read(1024)
if gps_data is not None:
if gps_data[0:6] == b'$GPRMC':
parse_gps_data(gps_data)
time.sleep(1)
پروژه های قابل اجرا با کیت SMS BOX
با این کیت پروژه های مختلفی بسته به سناریو قابل اجرا است. در دیجی اسپارک صفر تا صد راه اندازی هر دو ماژول آموزش داده شده است و علاوه بر آن پروژه های کاربردی اجرا شده است. با خرید اشتراک دیجی اسپارک به تمامی سورس ها دسترسی پیدا خواهید کرد و فقط با همین دو ماژول نزدیک به 20 ایده را میتوانید با خلاقیت خود در دیجی اسپارک اجرا کنید.
- پروژه ردیاب خودرو
- پروژه دیتالاگر GPS
- پروژه گزارش گیری پالس اکسیمتر بیمار
- پروژه سیستم اعلام حریق سیم کارتی
- پروژه سیستم تبلیغ تلفنی خودکار
- پروژه تماس تلفنی با سیم کارت
- پروژه کنترل وسایل از طریق DTMF
- پروژه طراحی قفل هوشمند سیم کارتی
- پروژه هشدار سرعت غیرمجاز و خروج از محدوده GeoFencing
مشخصات
- کاربری
- دانشگاهی - تخصصی
- سطح تجربه مورد نیاز
- نیمه حرفه ای
- اقلام همراه محصول
- کابل و بردبورد
- باتری
- دارد
نظر دهید