به نام خدا : ارسال پیـامک فارسی و انگلیسی با sim808 ؛ سلام خدمت تمام دوستان گل، پیامک فارسی با حروف انگلیسی یـه چند مدتی بود نبودیم و مطلب نمـیزاشتیم، درگیر یـه چندتا پروژه ساده بودیم کـه به زودی ان شاء الله مـیزارمشون تو سایت کم کم، هاست سایتو هم عوض کردیم و بنا بـه دلایلی مجبور بـه ایجاد یـه هاست دانلود به منظور سایت شدیم!!! و بعد مجبور بـه تغیر لینک تمام فایلهای سایت شدم *_* ؛ کـه دیگه کل فایلهای سایت تو هاست دانلود خود سایت قرار مـیگیره و دیگه تو سایت هایی مثل پیکوفایل و … قرار نمـیگیره، خب مزیتش اینـه کـه دانلود مستقیم هستش، بگذریم، این حرفا زیـاد مـهم نیست؛ تو این مطلب مـیخوام آموزش ارسال پیـامک با sim808 رو براتون قرار بدم؛ یـه کتابخونـه نوشتم به منظور این کار کـه در مرور زمان تکمـیلش هم مـیکنم، شما فقط کافیـه 3-4 که تا تابعو فراخونی کنید که تا پیـامک ارسال بشـه!؛ تو این مطلب همچنین مـیخوام آموزش ارسال پیـامک فارسی با sim808 رو هم قرار بدم.

ارسال پیـامک با sim808 وقتی کـه سیم کارت شارژ ندارد

نکته مـهم : یـه نکته ای رو همـین اول کار بگم، این عزیر مربوط بـه تست پروژه ارسال پیـامک انگلیسی هستش، کـه مـیبینید پیـامک بـه 2 حالت ارسال شده! دلیلش اینـه کـه حالت اول برا وقتیـه کـه سیمکارت توی sim808 شارژ نداشته ( و اگه سیمکارتتون ایرانسل باشـه، دیدین کـه یـه پیـامک ارسال مـیکنـه مبنی بر این کـه شما یـه پیـامک از طرف x دارید، به منظور دریـافت پیـامک عدد 5، دریـافت همـیشیگی عدد 6 و … یـه همچین پیـامکی براشون مـیاد، من اون عدد 6 کـه دریـافت همـیشگی هستش رو قبلا زدم!، فک کنم عددش 6 بود، دقیقا خاطرم نیست، لذا الان اگه سیمکارت توی sim808 هم شارژ نداشته باشـه، پیـامک برام مـیاد، چون من قبلا گفتم پیـامکای این سیمکارت رو پولشو پرداخت کن، لذا اول پیـامک شماره تلفتن رو اضافه مـیکنـه، این از این مورد، امـیدوارم متوجه شده باشین )؛ پیـامک شماره دوم هم کـه برا وقتی هستش کـه سیمکارت ما شارژ داشته باشـه.

حالا اگه این مورد براتون مـهم نیست ( اول پیـامک شماره موبایلو اضافه کنـه )، مـیتونید سیمکارتتونو ( اونی کـه داخل sim808 هستش ) شارژشو خالی کنید که تا دیگه مشکل خالی و پر شدن شارژ ( پولی! ) سیمکارت توی ماژول sim808 رو نداشته باشید ( البته نمـیدونم همراه اول و … این ویژگی رو دارن یـا نـه ولی خب مـیدونم ایرانسل داره ^_^ )

پروژه های ارسال پیـامک فارسی و انگلیسی با sim808

1) ارسال پیـامک انگلیسی با sim808

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#include "SIM808.h"

SIM808          SIM808;

SIM808::Setting SIM808Setting;

SIM808::SMS     SIM808SMS;

void setup() {

  Serial.begin( 115200 );

  SIM808Setting.Init( &Serial1, 115200/*B.R*/, 3/*Powerkey*/, 2/*riInterruptPin*/ );

  pinMode(13, OUTPUT);

  digitalWrite(13, 0);

  delay(5000);

  SIM808.SerialEmpty();

  // English Character

  while( SIM808SMS.Select_TE_Character_Set("IRA") != 1 );

  while( SIM808SMS.SetFormat(Textmode) != 1 );

  while( SIM808SMS.DeleteAllSMS(4/*Delete All Type SMS*/) != 1 );

  int16_t status = SIM808SMS.SendSMS( "+989372431686", "DMF313.IR Mahdi Damirchilu" );

  Serial.println( status ); // SMSnumber

}

void loop() {}

خط 16و17 : پیامک فارسی با حروف انگلیسی مربوط بـه تنظیمات sms هستش.

خط 18 : پاک تمام پیـامک های موجود درون حافظه هستش ( وجودش الزامـی نیست )

خط20 : ارسال پیـامک کـه شماره و متن رو بهش دادم، ورودی های این تابع از نوع string هستش؛ خروجی تابع شماره پیـامک درون حافظه هستش.

2) ارسال پیـامک فارسی با sim808

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

#include "SIM808.h"

SIM808          SIM808;

SIM808::Setting SIM808Setting;

SIM808::SMS     SIM808SMS;

int Temprator = 313;

int16_t status = 0;

void setup() {

  Serial.begin( 115200 );

  SIM808Setting.Init( &Serial1, 115200/*B.R*/, 3/*Powerkey*/, 2/*riInterruptPin*/ );

  delay(5000);

  SIM808.SerialEmpty();

  // Persian Character

  while( SIM808SMS.Select_TE_Character_Set("HEX") != 1 );

  while( SIM808SMS.Set_SMS_Text_Mode_Parameters() != 1 );

  while( SIM808SMS.SetFormat(Textmode) != 1 );

  while( SIM808SMS.DeleteAllSMS(4/*Delete All Type SMS*/) != 1 );

  // a persian text

  status = SIM808SMS.SendSMS( "+989372431686", "0633064406270645002006280631002006280686064700200647062706CC002006AF06310648064700200627064406A9062A06310648064606CC06A900200641064206370021002100210020062E062E062E062E062E062E");

  Serial.println( (String)"SMSnumber = " + status );

  delay(5000);

  // persian : temp = ?

  String SMSstring = "062F064506270020003D0020" + SIM808SMS.Text_to_UTF16((String)Temprator);

  status = SIM808SMS.SendSMS( "+989372431686", SMSstring );

  Serial.println( (String)"SMSnumber = " + status );

}

void loop() {}

خط 17 که تا 19 : تنظیمات مربوط بـه پیـامک فارسی.

خط 20 : پاک تمام پیـامکا ( فک کنم inbox باشـه – حالا فعلا بود نبود این خط مـهم نیست، کاری بهش ندارم فعلا )

خط 23 : یـه متن فارسی ( “سلام بر بچه های گروه الکترونیک فقط!!! خخخخخخ” ) رو نمایش مـیدیم، حالا مـیبینید کـه تو قیمت محتوای پیـامک اومدم یـه سری عدد رو وارد کردم، کـه اومدیم درون واقع UTF8 رو بـه UTF16 تبدیل کردیم، به منظور این کار مـیتونید از سایت زیر استفاده کنید : UTF Converter که جعبه اول رو روی TEXT بزارید و متن فارسیتونوبنویسید و جعبه بعدی رو روی UTF-16M بزارید، عدد داده شده رو فاصله هاشو حذف کنید و تو پروژه کپی کنید، فقط همـین! ( درون شکل زیر پیـامک شماره 1 به منظور این خط هستش )

convert utf-8 string to Persian unicode

خب برا گرفتن کد متون فارسی مـیتونید از لینک بالا استفاده کنید یـا تو گوگل بسرچید “UTF Converter”، یـه 2 که تا لینک دیگه به منظور این کار من مـیزارم :

Unicode code converter

Decode/Encode Unicode text

اینم یـه لینک مفید کـه کد تمام حروف فارسی رو مـیده : MacFarsi encoding

خب با توجه بـه این کـه سایت های فوق ممکنـه از دسترس خارج بشن، یـه نرم فزار کوچولو تحت ویندوز نوشتم کـه این کارو انجام مـیده ( حجمش کمـه، حدود 20 کیلو بایته )

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

using System;

using System.Text;

using System.Windows;

namespace WpfApp1

{

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

        }

        // convert utf-8 string to Persian unicode

        private void Button_Click(object sender, RoutedEventArgs e)

        {

            string source = TB_Input.Text;

            byte[] utfb = Encoding.UTF8.GetBytes(source);

            byte[] resb = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("ISO-8859-6"), utfb);

            string result = Encoding.GetEncoding("ISO-8859-6").GetString(resb);

            RT_OutPut.Document.Blocks.Clear();

            try

            {

                for (int i = 0; result[i] != '\0'; i++)

                {

                    RT_OutPut.AppendText("0" + ((Int32)result[i]).ToString("X"));

                    if (result[i + 1] == '\0') break;

                    RT_OutPut.AppendText(TB_Separator.Text);

                }

            }

            catch (Exception)

            {

            }

        }

    }

}

تو جعبه اولی متن فارسی رو مـینویسید، تو دومـی هم کاراکتر جدا کننده کدها رو وارد مـیکنید، جعبه آخری هم کـه کد ( عدد هگزا دسیمال ) رو بـه ما مـیده ( البته بعد از این کـه روی دکمـه Convert کلیک کردیم )

توجه : به منظور استفاده از این کد، حتما همون طور کـه در پروژه 2 خط 23 مـیبینید، کدها رو کنار هم ( بدون هیچ کاراکتر جدا کننده ای ) قرار بدید و به تابع SendSMS بدید.

واو چقدر پیچوندم، الان کد مربوط بـه سلام شد “0633, 0644, 0627, 0645” و این کاراکتر جدا کننده “, ” هم برا زیباییـه ^_^ و تو پروژه حتما به این صورت استفاده کنید :

“0633064406270645” ؛ این مـیشـه متن ما، همـینو بـه تابع SendSMS مـیدیم ( بـه عنوان متن پیـامـی کـه قراره ارسال بشـه )

خط 29 : خب شاید شما نیـاز داشته باشید یـه مثلا دما رو ارسال کنید ( مثلا “دما = 313” ) کـه اون عدده یـه مقدار متغییر هستش، به منظور این کار اون کلمـه “دما” کـه ثابت هستش رو مثل روش بالا تبدیل کنید و برا اون قسمت عدد از تابع Text_to_UTF16 ( کـه در کلاس SIM808SMS قرار داره ) استفاده مـیکنیم ( درون شکل زیر پیـامک شماره 2 به منظور این خط هستش )

عپروژه درون عمل : 

یـه چند که تا توضیح درباره مدار بالا بدم :

1) ماژول sim808 بدون آنتن کار نمـیکنـه، این آنتن برا GSM هستش.

2) آنتن GPS هستش، تو این پروژه کاری بهش ندارم ( لذا بود و نبودش زیـاد مـهم نیست )

3) منبع تغذیـه ماژول، تغذیـه ماژول و برد آردوینو مگا از این باتری تامـین مـیشـه؛ باتری من از نوع لیتیوم و 11.1ولت و 2.2آمپر هستش؛ البته این مدل باتری به منظور ربات های پرنده استفاده مـیشـه ولی خب من فقط همـینو داشتم، شما حتما حداقل یـه باتری ( منبع تغذیـه ) 1آمپر و 7-8 ولت داشته باشین؛ البته بستگی بـه برد SIM808 و مدارتون داره کـه باتری چند ولت باشـه ^_^

4) ماژول SIM808 ما، توجه داشته باشید کـه ماژولی بخرین کـه پایـه RI رو داشته باشـه، ماژول من نداشت و مجبور شدم یـه جوری ازش بکشم بیرون این پایـه رو!!!

5) از برد آردوینو مگا استفاده کردم، چون 2 که تا سریـال نیـاز دارم، یکی برا ماژول و یکی هم برا بحث ارسال دیتا بـه پنجره سریـال توی PC، البته اگه بخواین از سریـال مجازی استفاده کنید بـه مطلب روبرو مراجعه کنید، به منظور دانلود کتابخوه توی این مطلب هم بـه همـین لینک مقابل برید : دانلود کتابخانـه راه اندازی ماژول sim808 ( به منظور این مطلب من از ویرایش 1 کتابخونـه استفاده کردم )

6) برد آردوینو مگا رو بـه PC وصل کردم که تا اطلاعات مد نظرمو بـه PC بفرستم.

فیلم پروژه :  این فیلم به منظور 3 مطلب ( پروژه SIM808 ) هستش ( فیلم 3تا مطلب یجا گرفته شده )

https://www.aparat.com/v/HTmcV
خب امـیدوارم این مطلب مفید باشـه براتون، فعلا یـا علی.

. پیامک فارسی با حروف انگلیسی . پیامک فارسی با حروف انگلیسی




[ارسال پیـامک فارسی و انگلیسی با sim808 - ماژول SIM808 - برد ... پیامک فارسی با حروف انگلیسی]

نویسنده و منبع: ارسال شده توسط:مهدی دمیرچیلو | تاریخ انتشار: Sun, 22 Jul 2018 01:33:00 +0000