0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

将SIM900A与PIC微控制器连接起来实现GSM模块拨打和接听电话

科技观察员 来源:circuitdigest 作者:阿斯文斯·拉吉 2023-01-25 17:27 次阅读

GSM模块使用起来非常吸引人,尤其是当我们的项目需要远程访问时。这些模块可以执行我们普通手机可以执行的所有操作,例如拨打/接听电话,发送/接收短信,使用GPRS连接到互联网等。您还可以将普通麦克风和扬声器连接到此模块,并在移动通话中交谈。如果它可以与微控制器连接,这将为许多创意项目打开大门。因此,在本教程中,我们将学习如何将GSM模块(SIM900A)与我们的PIC微控制器连接,并通过使用GSM模块拨打和接听电话来演示它。

所需材料:

  1. PIC 微控制器 (PIC16F877A)
  2. GSM 模块(SIM900 或任何其他)
  3. 连接线
  4. 12V 适配器
  5. 图片套件 3

GSM模块:

GSM模块SIM900A

即使没有任何微控制器,也可以通过使用AT命令模式使用GSM模块。如上所示,GSM模块带有USART适配器,可以使用MAX232模块直接连接到计算机,或者Tx和Rx引脚可用于将其连接到微控制器。您还可以注意到可以连接麦克风或扬声器的其他引脚,如MIC +,MIC-,SP+,SP-等。该模块可以通过普通的直流桶形插孔由 12V 适配器供电。

将SIM卡插入模块插槽并打开电源,您应该注意到电源指示灯亮起。现在等待一分钟左右,您应该会看到红色(或任何其他颜色)LED 每 3 秒闪烁一次。这意味着您的模块能够与您的SIM卡建立连接。现在,您可以继续将模块与手机或任何微控制器连接。

使用 AT 命令与 GSM 模块通信

正如您可能已经猜到的那样,GSM模块可以通过串行通信进行通信,并且只能理解一种语言,即“ AT命令 ”。无论您想告诉或询问GSM模块什么,都只能通过AT命令进行。例如,如果您想知道模块是否处于活动状态。您应该询问(发送)像“AT”这样的命令,您的模块将回答“确定”。

这些AT命令在其数据手册中有很好的解释,可以在其官方数据手册中找到。好!好!这是一份 271 页的数据表,您可能需要几天时间才能通读它们。因此,我在下面给出了一些最重要的AT命令,以便您尽快启动并运行它。

回复“确定”进行确认
AT+CPIN? 检查信号质量
AT+COPS? 查找服务提供商名称
ATD96XXXXXXXX; 拨打特定号码,以分号结尾
AT+CNUM 查找SIM卡的数量(可能不适用于某些SIM卡)
ATA 接听来电
阿特 挂断当前来电
AT+COLP 显示来电号码
AT+VTS=(数字) 发送 DTMF 编号。您可以使用移动键盘上的任意数字(数字)
AT+CMGR AT+CMGR=1 在第一个位置读取消息
AT+CMGD=1 删除第一个位置的消息
AT+CMGDA=“DEL ALL” 从SIM卡中删除所有邮件
AT+CMGL=“ALL” 读取来自 SIM 卡的所有消息
AT+CMGF=1 设置短信配置。“1”表示纯文本模式
AT+CMGS = “+91 968837XXXX”>电路摘要文本 在此处向特定号码发送短信 968837XXXX。当您看到“>”时,请开始输入文本。按 Ctrl+Z 发送文本。
AT+CGATT? 检查SIM卡上的互联网连接
AT+CIPSHUT 关闭TCP连接,意味着断开互联网
AT+CSTT = “APN”,“用户名”,“通行证” 使用您的 APN 和通行密钥连接到 GPRS。可以从网络提供商处获得。
AT+CIICR 检查SIM卡是否有数据包
AT+CIFSR 获取 SIM 卡网络的 IP
AT+CIPSTART = “TCP”,“服务器 IP”,“端口” 用于设置 TCP IP 连接
AT+CIPSEND 此命令用于将数据发送到服务器

电路图:

GSM模块与PIC微控制器接口的连接图如下所示。
1.png

我们只是简单地将GSM模块的Tx和Rx引脚分别与PIC MCU PIC16F877A的Rx和Tx引脚连接。这将在两者之间建立串行连接。另外,不要忘记将GSM和PIC模块共同接地。我们还使用LCD显示屏来了解GSM模块的状态。连接完成后,您的硬件将如下所示。

使用 GSM 和 PIC 微控制器拨打和接听电话

用于PIC微控制器的PERF包教程

PIC微控制器编程

可以在本教程的底部找到此项目的完整程序。在这里,我将解释一些重要的函数和代码片段。该程序还具有LCD代码,该代码来自与PIC微控制器的接口LCD,如果您想知道如何将LCD与PIC微控制器一起使用,可以访问该教程。

如前所述,我们将通过串行通信模式使用 AT 命令在 PIC 和 GSM 之间进行通信。因此,首先我们必须使用 Initialize***_SIM900()* **初始化 PIC 微控制器中的 USART 通信模块;功能。在此函数中,我们声明 Tx 和 RX 引脚,并以 9600 波特率和 8 位模式初始化异步接收和传输。

//***Initialize UART for SIM900**//
void Initialize_SIM900(void)

{
    //****Setting I/O pins for UART****//
    TRISC6 = 0; // TX Pin set as output
    TRISC7 = 1; // RX Pin set as input
    //________I/O pins set __________//
   

    /**Initialize SPBRG register for required
    baud rate and set BRGH for fast baud_rate**/
    SPBRG = 129; //SIM900 operates at 9600 Baud rate so 129
    BRGH  = 1;  // for high baud_rate
    //_________End of baud_rate setting_________//
   
    //****Enable Asynchronous serial port*******//
    SYNC  = 0;    // Asynchronous
    SPEN  = 1;    // Enable serial port pins

    //_____Asynchronous serial port enabled_______//
    //**Lets prepare for transmission & reception**//
    TXEN  = 1;    // enable transmission
    CREN  = 1;    // enable reception
    //__UART module up and ready for transmission and reception__//

    //**Select 8-bit mode**// 
    TX9   = 0;    // 8-bit reception selected
    RX9   = 0;    // 8-bit reception mode selected
    //__8-bit mode selected__//    
}
//________UART module Initialized__________//

现在我们需要从/向我们的 GSM 模块读取和写入信息。为此,我们使用函数 **_SIM900_putch)、_SIM900_getch()、_SIM900_send_string()、_SIM900_print()。 **这些函数使用发送和接收缓冲区寄存器(如 TXREG 和 RCREG)串行读取或写入数据。

//**Function to send one byte of date to UART**//

void _SIM900_putch(char bt) 
{
    while(!TXIF);  // hold the program till TX buffer is free
    TXREG = bt; //Load the transmitter buffer with the received value
}

//_____________End of function________________//


//**Function to get one byte of date from UART**//
char _SIM900_getch()  
{
    if(OERR) // check for Error
    {
        CREN = 0; //If error -> Reset
        CREN = 1; //If error -> Reset
    }
   while(!RCIF);  // hold the program till RX buffer is free
    return RCREG; //receive the value and send it to main function
}
//_____________End of function________________//

//**Function to convert string to byte**//
void SIM900_send_string(char* st_pt)
{
    while(*st_pt) //if there is a char
        _SIM900_putch(*st_pt++); //process it as a byte data
}
//___________End of function______________//
//**End of modified Codes**//

void _SIM900_print(unsigned const char *ptr) {
    while (*ptr != 0) {
        _SIM900_putch(*ptr++);
    }

上述功能是通用的,无需为任何应用程序进行更改。对它们的解释只是为了给出一个粗略的介绍。如果你愿意,你可以通过理解深入了解它们。

现在在我们的主函数中,我们初始化 USART 连接,并使用以下代码行检查我们在发送“AT”时是否能够收到“OK”

do
    {
    Lcd_Set_Cursor(2,1);
    Lcd_Print_String("Module not found");
    }while (!SIM900_isStarted()); //wait till the GSM to send back "OK"
    Lcd_Set_Cursor(2,1);
    Lcd_Print_String("Module Detected ");
    __delay_ms(1500);

函数 SIM900_isStarted(); 将向 GSM 发送“AT”并等待其响应“OK”。如果是,它将返回 1 其他 0;

如果未检测到模块或存在任何连接问题,则LCD将显示“未找到模块”,否则将显示“检测到模块”并继续下一步,我们检查是否可以通过以下代码行检测到SIM卡。

/*Check if the SIM card is detected*/
    do
    {
    Lcd_Set_Cursor(2,1);
    Lcd_Print_String("SIM not found   ");
    }while (!SIM900_isReady()); //wait till the GSM to send back "+CPIN: READY"
    Lcd_Set_Cursor(2,1);
    Lcd_Print_String("SIM Detected    ");
    __delay_ms(1500);

函数 SIM900_isReady() 将向 GSM 发送“AT+CPIN?”,并等待来自它的响应“+CPIN:READY”。如果是,它将返回 1 其他 0;

如果找到SIM卡,我们将在LCD上显示检测到SIM卡。然后,我们可以尝试使用命令“ ATD手机号码 ;”拨打电话。作为一个例子,我使用我的号码作为ATD93643159XX;。您必须在那里替换各自的手机号码。

/*Place a Phone Call*/
     do
    {
    _SIM900_print("ATD93643XXXXX;\\r\\n");  //Here we are placing a call to number 93643XXXXX
    Lcd_Set_Cursor(1,1);
    Lcd_Print_String("Placing Call....");
    }while (_SIM900_waitResponse() != SIM900_OK); //wait till the ESP send back "OK"
    Lcd_Set_Cursor(1,1);
    Lcd_Print_String("Call Placed....");
    __delay_ms(1500);

发出呼叫后,液晶屏将显示“呼叫已发出”,您应该会收到该指定号码的来电。

您还可以拨打连接到GSM模块的手机号码,并使用以下代码在LCD屏幕上获得通知

while(1)
    {
        if (_SIM900_waitResponse() == SIM900_RING) //Check if there is an incoming call
        {
          Lcd_Set_Cursor(2,1);
          Lcd_Print_String("Incoming Call!!."); 
        }      
    }

当GSM模块检测到来电时,它将在LCD模块的第二行上显示来电。函数 *_SIM900_waitResponse() *将检查来自 GSM 模块的传入数据。当它收到SIM900_RING时,由于 waitResponce() 而相当于“RING”,我们将显示状态“来电”。

您可以像这样创建自己的函数,以使用 GSM 模块执行几乎所有类型的激活。如果你想对东西进行硬编码,你可以简单地使用 __SIM900_print() 函数发送任何 AT 命令,如下所示。

_SIM900_print("AT+CPIN?\\r\\n");

请记住,所有命令后面都应跟有“\\r\\n”,以指示命令正在终止。

模拟

了解程序的工作原理后,您可以尝试模拟并进行更改以满足您的需求。模拟将为您节省大量时间。模拟是使用 Proteus 完成的,如下所示。

GSM 与 PIC 微控制器仿真接口

如您所见,我们在Proteus中使用了虚拟终端选项来检查程序是否按预期响应。我们可以通过弹出对话框输入值。例如,一旦我们点击运行,就会出现一个像上面这样的黑色对话框并显示 AT,这意味着它已将 GSM 模块发送到 AT,现在我们可以通过在框中输入“确定”并按回车键来回复 PIC,PIC 将响应它。同样,我们可以尝试所有 AT 命令。

使用 GSM 和 PIC 拨打和接听电话:

了解代码和硬件的工作原理后,只需将以下程序上传到 PIC 并打开模块电源即可。如果一切正常,您的液晶屏应显示“检测到模块”,“检测到SIM卡”和“呼叫已放置”。一旦您看到“已拨打电话”,您将接到程序中指定的号码的来电。

您也可以尝试拨打GSM模块中的号码,LCD将显示“来电”以指示正在呼叫SIM卡。

与PIC微控制器接口GSM模块 - 拨打和接听电话

// CONFIG

#pragma config FOSC = HS       // Oscillator Selection bits (HS oscillator)

#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = OFF       // Power-up Timer Enable bit (PWRT enabled)

#pragma config BOREN = OFF        // Brown-out Reset Enable bit (BOR enabled)

#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)

#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)

#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)

#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

//End of CONFIG registers

 

#define _XTAL_FREQ 20000000

#define RS RD2

#define EN RD3

#define D4 RD4

#define D5 RD5

#define D6 RD6

#define D7 RD7

 

#define SIM900_OK 1

#define SIM900_READY 2

#define SIM900_FAIL 3

#define SIM900_RING 4

#define SIM900_NC 5

#define SIM900_UNLINK 6

 

#include

 

// Wait for any response on the input

inline unsigned char _SIM900_waitResponse(void);

    int recv;

    char p =1;

 

 

//LCD Functions Developed by Circuit Digest.

void Lcd_SetBit(char data_bit) //Based on the Hex value Set the Bits of the Data Lines

{

if(data_bit& 1) 

D4 = 1;

else

D4 = 0;

 

if(data_bit& 2)

D5 = 1;

else

D5 = 0;

 

if(data_bit& 4)

D6 = 1;

else

D6 = 0;

 

if(data_bit& 8) 

D7 = 1;

else

D7 = 0;

}

 

void Lcd_Cmd(char a)

{

RS = 0;           

Lcd_SetBit(a); //Incoming Hex value

EN  = 1;         

        __delay_ms(4);

        EN  = 0;         

}

 

void Lcd_Clear()

{

Lcd_Cmd(0); //Clear the LCD

Lcd_Cmd(1); //Move the curser to first position

}

 

void Lcd_Set_Cursor(char a, char b)

{

char temp,z,y;

if(a== 1)

{

 temp = 0x80 + b - 1; //80H is used to move the curser

z = temp>>4; //Lower 8-bits

y = temp & 0x0F; //Upper 8-bits

Lcd_Cmd(z); //Set Row

Lcd_Cmd(y); //Set Column

}

else if(a== 2)

{

temp = 0xC0 + b - 1;

z = temp>>4; //Lower 8-bits

y = temp & 0x0F; //Upper 8-bits

Lcd_Cmd(z); //Set Row

Lcd_Cmd(y); //Set Column

}

}

 

void Lcd_Start()

{

  Lcd_SetBit(0x00);

  for(int i=1065244; i<=0; i--)  NOP();  

  Lcd_Cmd(0x03);

__delay_ms(5);

  Lcd_Cmd(0x03);

__delay_ms(11);

  Lcd_Cmd(0x03); 

  Lcd_Cmd(0x02); //02H is used for Return home -> Clears the RAM and initializes the LCD

  Lcd_Cmd(0x02); //02H is used for Return home -> Clears the RAM and initializes the LCD

  Lcd_Cmd(0x08); //Select Row 1

  Lcd_Cmd(0x00); //Clear Row 1 Display

  Lcd_Cmd(0x0C); //Select Row 2

  Lcd_Cmd(0x00); //Clear Row 2 Display

  Lcd_Cmd(0x06);

}

 

void Lcd_Print_Char(char data)  //Send 8-bits through 4-bit mode

{

   char Lower_Nibble,Upper_Nibble;

   Lower_Nibble = data&0x0F;

   Upper_Nibble = data&0xF0;

   RS = 1;             // => RS = 1

   Lcd_SetBit(Upper_Nibble>>4);             //Send upper half by shifting by 4

   EN = 1;

   for(int i=2130483; i<=0; i--)  NOP(); 

   EN = 0;

   Lcd_SetBit(Lower_Nibble); //Send Lower half

   EN = 1;

   for(int i=2130483; i<=0; i--)  NOP();

   EN = 0;

}

 

void Lcd_Print_String(char *a)

{

int i;

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

  Lcd_Print_Char(a[i]);  //Split the string using pointers and call the Char function 

}

/*****End of LCD Functions*****/

 

 

//***Initialize UART for SIM900**//

void Initialize_SIM900(void)

{

    //****Setting I/O pins for UART****//

    TRISC6 = 0; // TX Pin set as output

    TRISC7 = 1; // RX Pin set as input

    //________I/O pins set __________//

    

    /**Initialize SPBRG register for required 

    baud rate and set BRGH for fast baud_rate**/

    SPBRG = 129; //SIM900 operates at 9600 Baud rate so 129

    BRGH  = 1;  // for high baud_rate

    //_________End of baud_rate setting_________//

    

    //****Enable Asynchronous serial port*******//

    SYNC  = 0;    // Asynchronous

    SPEN  = 1;    // Enable serial port pins

    //_____Asynchronous serial port enabled_______//

    //**Lets prepare for transmission & reception**//

    TXEN  = 1;    // enable transmission

    CREN  = 1;    // enable reception

    //__UART module up and ready for transmission and reception__//

    

    //**Select 8-bit mode**//  

    TX9   = 0;    // 8-bit reception selected

    RX9   = 0;    // 8-bit reception mode selected

    //__8-bit mode selected__//     

}

//________UART module Initialized__________//

 

 

//**Function to send one byte of date to UART**//

void _SIM900_putch(char bt)  

{

    while(!TXIF);  // hold the program till TX buffer is free

    TXREG = bt; //Load the transmitter buffer with the received value

}

//_____________End of function________________//

 

 

//**Function to get one byte of date from UART**//

char _SIM900_getch()   

{

    if(OERR) // check for Error 

    {

        CREN = 0; //If error -> Reset 

        CREN = 1; //If error -> Reset 

    }

    

    while(!RCIF);  // hold the program till RX buffer is free

    

    return RCREG; //receive the value and send it to main function

}

//_____________End of function________________//

 

 

//**Function to convert string to byte**//

void SIM900_send_string(char* st_pt)

{

    while(*st_pt) //if there is a char

        _SIM900_putch(*st_pt++); //process it as a byte data

}

//___________End of function______________//

//**End of modified Codes**//

 

void _SIM900_print(unsigned const char *ptr) {

    while (*ptr != 0) {

        _SIM900_putch(*ptr++);

    }

}

 

bit SIM900_isStarted(void) {

    _SIM900_print("AT\\r\\n");

    return (_SIM900_waitResponse() == SIM900_OK);

}

 

bit SIM900_isReady(void) {

    _SIM900_print("AT+CPIN?\\r\\n");

    return (_SIM900_waitResponse() == SIM900_READY);

}

 

inline unsigned char _SIM900_waitResponse(void) {

    unsigned char so_far[6] = {0,0,0,0,0,0};

    unsigned const char lengths[6] = {2,12,5,4,6,6};

    unsigned const char* strings[6] = {"OK", "+CPIN: READY", "ERROR", "RING", "NO CARRIER", "Unlink"};

    unsigned const char responses[6] = {SIM900_OK, SIM900_READY, SIM900_FAIL, SIM900_RING, SIM900_NC, SIM900_UNLINK};

    unsigned char received;

    unsigned char response;

    char continue_loop = 1;

    while (continue_loop) {

        received = _SIM900_getch();

        for (unsigned char i = 0; i < 6; i++) {

            if (strings[i][so_far[i]] == received) {

                so_far[i]++;

                if (so_far[i] == lengths[i]) {

                    response = responses[i];

                    continue_loop = 0;

                }

            } else {

                so_far[i] = 0;

            }

        }

    }

    return response;

}

 

void main(void)

{   

    //I/O Declarations//

    TRISD = 0x00;  //LCD pins on port D as output

    //End of I/O declaration//

       

    Lcd_Start();   //Initialize LCD 

    Initialize_SIM900();//lets get our Serial ready for action

 

    

    Lcd_Set_Cursor(1,1);

    Lcd_Print_String("SIM900 & PIC");

 

       /*Check if the SIM900 communication is successful*/

    do

    {

    Lcd_Set_Cursor(2,1);

    Lcd_Print_String("Module not found");

    }while (!SIM900_isStarted()); //wait till the GSM to send back "OK"

    Lcd_Set_Cursor(2,1);

    Lcd_Print_String("Module Detected ");

    __delay_ms(1500);

    

      

       /*Check if the SIM card is detected*/

     do

    {

    Lcd_Set_Cursor(2,1);

    Lcd_Print_String("SIM not found   ");

    }while (!SIM900_isReady()); //wait till the GSM to send back "+CPIN: READY"

    Lcd_Set_Cursor(2,1);

    Lcd_Print_String("SIM Detected    ");

    __delay_ms(1500);

    

   Lcd_Clear();

     

        

     /*Place a Phone Call*/

     do

    {

    _SIM900_print("ATD93643XXXXX;\\r\\n");  //Here we are placing a call to number 93643XXXXX

    Lcd_Set_Cursor(1,1);

    Lcd_Print_String("Placing Call....");

    }while (_SIM900_waitResponse() != SIM900_OK); //wait till the ESP send back "OK"

    Lcd_Set_Cursor(1,1);

    Lcd_Print_String("Call Placed....");

    __delay_ms(1500);

        

    while(1)

    {

        if (_SIM900_waitResponse() == SIM900_RING) //Check if there is an incoming call

        {

          Lcd_Set_Cursor(2,1);

          Lcd_Print_String("Incoming Call!!.");  

        }       

    }

}
  • 微控制器
    +关注

    关注

    47

    文章

    5320

    浏览量

    145593
  • PIC
    PIC
    +关注

    关注

    8

    文章

    473

    浏览量

    85656
  • GSM模块
    +关注

    关注

    6

    文章

    47

    浏览量

    22514
收藏 人收藏

    评论

    相关推荐

    如何hwirq与中断连接起来

    的 MSIR7 寄存设置中断 0 位。那么,当那个中断到达时,我该如何调用我的 interrupt_handler 函数呢?我想我应该使用 irq_create_mapping request_irq Linux 函数,但我不知道如何 hwirq 与我的中断链接起来
    发表于 03-14 08:20

    如何Eink显示与esp32连接起来

    一般来说,我是嵌入式系统 ESP-IDF 的新手。我正在尝试 Eink 显示与 esp32 连接起来,但我对如何为其编写代码有点迷茫。有没有我可以参考的指南或教程?
    发表于 03-01 06:36

    ESP32为什么无法与SIM900a通信?

    我正在使用 NodeMCU - ESP32 ( https://esphome.io/devices/nodemcu_esp32.html ) SIM900a 迷你版本 3.8.2 并尝试通过
    发表于 02-28 10:03

    如何PIR传感与Arduino微控制器连接起来

    在大多数项目中,检测运动或运动一直很重要。在PIR传感的帮助下,检测人/动物的运动变得非常容易。在这个项目中,我们学习如何 PIR 传感与 Arduino 等微控制器连接 。我们
    的头像 发表于 01-25 15:36 327次阅读
    如何<b>将</b>PIR传感<b>器</b>与Arduino<b>微控制器</b><b>连接起来</b>

    如何STM32L412与STUSB1602 TCPC连接起来呢?

    你好我目前正在尝试 STM32L412 与 STUSB1602 TCPC 连接起来。我试图通过为另一个 MCU 移植一个现有的 STUSB1602 软件库来开始这个工作。看起来这个端口可能非常艰巨且容易出错。有没有人成功地做到了这一点,或者他们可以推荐一个好的工作流程来做到这一点?谢谢
    发表于 12-28 07:13

    没有其他方法可以LCD多路复用PSRAM与控制器引脚封装连接起来吗?

    LCD_CLK针号 45:FMC_DA12 LCD_R7 所以,我的问题在这里出现了:没有其他方法可以 LCD 多路复用 PSRAM 与此控制器引脚封装连接起来吗?
    发表于 12-23 07:33

    如何STM32MP157C-DK2M4连接起来

    在 STM32MP157C-DK2 上,我可以使用/连接可用的 muRata 1Dx core-M4(而不是 core-A7)吗?我不太确定wifi模块1dx(套件上的U8)是由A7还是M4控制的?无论如何,我想将它与 M4 连接起来。那么,这可能吗?
    发表于 12-15 07:45

    AN4309_STM32L1xx微控制器与外部I2S音频编解码连接起来播放音频文件

    AN4309_STM32L1xx微控制器与外部I2S音频编解码连接起来播放音频文件
    发表于 11-21 08:11 0次下载
    AN4309_<b>将</b>STM32L1xx<b>微控制器</b>与外部I2S音频编解码<b>器</b><b>连接起来</b>播放音频文件

    PIR与PIC16F877A连接起来的教程

    PIR(被动红外)或运动传感器用于检测移动人体或物体的运动。每当有人进入 PIR 传感的范围内时,它的输出引脚都会发出高电平。 今天,我们简单地PIR与PIC微控制器PIC16F877A连接。在此电路中,如果一些移动物体进入 PIR 传感
    的头像 发表于 11-16 16:12 521次阅读
    <b>将</b>PIR与<b>PIC16F877A</b><b>连接起来</b>的教程

    如何GSM模与ATmega16连接实现发送接收消息

    在本教程中,我们学习如何GSM模块SIM900A)与AVR微控制器ATmega16连接,并通过使用GSM模块发送接收消息来演示它。
    的头像 发表于 11-10 15:57 892次阅读
    如何<b>将</b><b>GSM</b>模与ATmega16<b>连接</b><b>实现</b>发送<b>和</b>接收消息

    如何使用PIC微控制器脉搏传感进行心跳监测

    今天,我们还将使用带有PIC微控制器的脉冲传感来计算每分钟的心跳次数心跳间隔,这些值进一步显示在16x2字符LCD上。我们将在本项目中使用 PIC16F877A PIC 微控制器。我们已经脉冲传感与Arduin
    的头像 发表于 11-01 16:53 3750次阅读
    如何使用<b>PIC</b><b>微控制器</b><b>和</b>脉搏传感<b>器</b>进行心跳监测

    微型伺服电机与Atmega16连接起来的方法

    在本教程中,我们将使用 Atmel Studio 7.0微型伺服电机与 Atmega16 AVR 微控制器连接起来。伺服电机额定工作电压为4.8-6V。我们可以通过应用脉冲串或PWM信号来控制
    发表于 09-09 15:00 421次阅读
    <b>将</b>微型伺服电机与Atmega16<b>连接起来</b>的方法

    步进电机与Atmega16连接起来的方法

    在本教程中,我们将使用 Atmel Studio 7.0 28BYJ-48步进电机与 Atmega16 AVR 微控制器连接起来。步进电机的额定工作电压为 5V。我们连接步进电机与电机驱动,即
    发表于 09-09 14:40 403次阅读
    <b>将</b>步进电机与Atmega16<b>连接起来</b>的方法

    #硬声创作季 3.40 GSM模块SIM900A发送短信

    GSMGSM模块ArduinoSIM900ASIM900
    Mr_haohao
    发布于 :2022年08月31日 15:11:07

    HC-05MSP430连接起来控制LED的方式

     今天我们学习如何蓝牙模块 HC-05 与德州仪器 (TI) 的 MSP430 Launchpad 连接起来。在这个接口示例中,我们将使用蓝牙终端安卓应用程序从智能手机控制 MSP430 的板载 LED 。
    发表于 08-29 17:30 465次阅读
    <b>将</b>HC-05<b>和</b>MSP430<b>连接起来</b><b>控制</b>LED的方式

    使用PIC16F628ASIM900A发送SMS的方法

    在本文中,我向您展示一种使用 PIC 16F628A SIMCOM SIM900A 模块发送 SMS 的方法。
    的头像 发表于 04-26 17:02 1042次阅读
    使用<b>PIC16F628A</b><b>和</b><b>SIM900A</b>发送SMS的方法

    如何使用SIM900A传感数据发送到网站

    在本文中,我向您展示我如何使用我的一个 SIM900A GSM 模块温度相对湿度发送到我的个人网站。
    的头像 发表于 04-26 16:44 1765次阅读
    如何使用<b>SIM900A</b><b>将</b>传感<b>器</b>数据发送到网站

    STM32芯片的GPIO引脚与外部设备连接起来有何作用呢

    GPIO(general purpose intput output) 是通用输入输出端口的简称, 可以通过软件来控制其输入输出。 STM32 芯片的 GPIO 引脚与外部设备连接起来,可以实现
    发表于 02-28 06:14

    单片机控制SIM900AGSM模块发送数字短信(附源码)

    采用工业标准接口,工作频率为GSM/GPRS 850/900/1800/1900MHz,可以低功耗实现语音、SMS、数据传真信息的传输。另外,SIM900A的尺寸大小为24x24x3mm,能适...
    发表于 11-23 17:36 70次下载
    单片机<b>控制</b><b>SIM900A</b>型<b>GSM</b><b>模块</b>发送数字短信(附源码)

    如何蓝牙与STM32连接起来

    蓝牙模块有何功能?如何蓝牙与STM32连接起来呢?
    发表于 11-18 07:02

    怎样主原理图与子原理图连接起来

    from sheet symbol,鼠标为十字形状,点击方框就可以生成子原理图4.怎样主原理图与子原理图连接起来呢?先画子原理图的一些电路mcu.schdoc...
    发表于 11-10 09:07

    如何通过USB转TTL模块把ESP8266模块电脑连接起来

    如何通过USB转TTL模块把ESP8266模块电脑连接起来
    发表于 10-11 08:08

    怎么才能使Atmel Studio 7.0伺服电机与Atmega16 AVR微控制器连接起来

    怎么才能使Atmel Studio 7.0伺服电机与Atmega16 AVR微控制器连接起来
    发表于 09-29 08:37

    利用开发板继电器发电机连接起来

    利用开发板继电器发电机连接起来通过两种方法控制风扇的转动1.通过串口的方式进行输入2.通过开发板上的按钮进行控制最终都能使风扇按照操作转动视频:
    发表于 09-08 07:47

    怎样电动机控制利用模块连接起来

    利用 Matlab 中 Simulink 的可视化仿真工具,电动机控制利用模块连接起来,构成复杂的系统模型,并进行仿真分析[1]。本文结合Matlab/Simulink 环境,对电动机几种降压启动...
    发表于 09-06 07:48

    单片机控制SIM900AGSM模块发送数字短信(附源码)精选资料分享

    采用工业标准接口,工作频率为GSM/GPRS 850/900/1800/1900MHz,可以低功耗实现语音、SMS、数据传真信息的传输。另外,SIM900A的尺寸大小为24x24x3mm,能适...
    发表于 07-21 08:06

    使用Arduino实现GSM模块SIM900A发短信的实验免费下载

    本文档的主要内容详细介绍的是使用Arduino实现GSM模块SIM900A发短信的实验免费下载。
    发表于 03-12 15:24 36次下载

    使用Arduino实现GSM模块SIM900A电话的实验免费下载

    本文档的主要内容详细介绍的是使用Arduino实现GSM模块SIM900A电话的实验免费下载。
    发表于 03-12 15:24 29次下载

    基于STM32SIM900A的远程无线通信模块设计

      本文设计的无线通信模块,是利用STM32来控制SIM900A芯片,来实现短消息的收发与数据的无线传输。本设计完成了无线通信的硬件部分软件部分的设计与实现。在多次运行试验时,本模块没有出现掉线
    发表于 12-28 07:13

    如何QDR与Virtex 7 FPGA连接起来

    我们正在QDR与Virtex 7 FPGA连接起来。QDR - 赛普拉斯 - 带Xilinx的CY7C2663KV18-450BZI - XC7VX485T - 1FFG1930I我们从
    发表于 05-22 08:38

    如何IC的SCLSDA引脚与FPGA板连接起来

    Aoa ..我想将我的FPGA板(virtex6 ML605)与外部时钟IC(ds1307)连接起来。请指导我如何IC的SCLSDA引脚与FPGA板连接。谢谢
    发表于 04-29 08:13

    飞凌嵌入式GPRS模块-SIM900A介绍

    FIT-GPRS-Ⅱ_SIM900AV1.1模块采用 SIMCOM公司生产的 SIM900A模块SIM900A模块针对全球市场设计,是一个双频的 GSM/GPRS模块,工作的频段为: EGSM
    的头像 发表于 11-27 17:46 5324次阅读
    飞凌嵌入式GPRS<b>模块</b>-<b>SIM900A</b>介绍

    SIM900A模块

    我想了解一下用51单片机控制SIM900A模块向服务发送数据,然后怎样传到手机APP里
    发表于 10-21 18:33

    如何利用HIDAdvRemote工程实现蓝牙接听电话功能?

    请问大家一下,有谁熟悉HIDAdvRemote这个工程么?我现在用这个工程手机连接实现了音量加减键、power键,静音键,现在想实现接听电话,始终没有找到这个键值,请问接听电话这个功能是否在HID over gatt 协议里?如果是,要怎么实现呢?非常感谢!
    发表于 10-11 08:13

    请问Alitum不同的地要单点连接起来吗?

    不同的地要这么单点连接起来吗还是可以直接铺铜,可是铺铜要选择哪个地网络呢,我有功率地,数字地,大地
    发表于 09-24 05:36

    请问有什么方法能用线把这里连接起来

    这儿必须用线连接起来,有没有别的方法?89C52的,连接起来非常费劲!我是新手,希望高手来看看
    发表于 09-19 05:36

    为什么SIM900a代码植入ucosii系统中一直连接不成功?

    SiM900A在ucosii系统中发送数据到服务,在ucosii系统中新建一个gsm任务,然后进行发送数据,但是SIM900A一直连接不成功,实现不了实时通信
    发表于 08-22 04:35

    Micropython TPYBoard v102 温湿度短信通知(基于SIM900A模块

    )、数据传真信息的传输。3、SIM900A模块支持RS232串口LVTTL串口,并带硬件流控制,支持5V~24V的超宽工作范围,使得本模块可以非常方便的与您的产品进行连接,从而给您的产品提供包括
    发表于 08-06 10:58

    基于SIM900A的应用与实现

    部分,本文利用PC机通过串口控制SIM900A电路系统实现了SMSTCPIP数据收发功能,并利用单片机与SIM900A进行了通讯实验,使其连续不断地发送数据,经实验测定其数据正确性基本为100%。文章最后给出了相关源代码。
    发表于 08-05 06:16

    PIC单片机控制SIM900A模块收发短信的方法!

    PIC单片机控制SIM900A模块收发短信的方法,最好有电路图与代码~
    发表于 07-24 04:35

    如何把蜂鸣器的扬声连接起来作为输出

    我想把蜂鸣器的扬声连接起来作为输出。这样说话人就能发出声音。唯一的要求是,我想控制声音产生的频率,有没有最简单的方法来设置? 以上来自于百度翻译 以下为原文I want to connect a
    发表于 07-17 10:54

    Secure CRT中点Secure FX传输不能连接起来

    Secure CRT中点Secure FX传输的问题,昨天点Secure FX的时候还可以windowsVMware连接起来,可以直接拖文件的,,,今天就不行了(就只能有这个图了)请大神帮忙,好人一生平安。。。。。。。。。。。
    发表于 07-01 05:45

    GSMGPRS的原理与应用详解及SIM900A使设计一个双频GSMGPRS模块

    部分,本文利用PC机通过串口控制SIM900A电路系统实现了SMSTCPIP数据收发功能,并利用单片机与SIM900A进行了通讯实验,使其连续不断地发送数据,经实验测定其数据正确性基本为100%。文章最后给出了相关源代码。
    发表于 05-30 17:55 22次下载
    <b>GSM</b><b>和</b>GPRS的原理与应用详解及<b>SIM900A</b>使设计一个双频<b>GSM</b><b>和</b>GPRS<b>模块</b>

    单片机不能接收到SIM900A模块的指令

    写了一个单片机接收到任意字符就点亮LED的程序测试了一下,用蓝牙测试了一下,接收到任意字符LED灯都会亮,然后换下蓝牙,接上SIM900A模块,打电话SIM900A模块,发现打电话的时候LED灯不亮,应该是单片机没有接受到GSM传递的信号,原因最有可能是什么呢
    发表于 05-27 21:13

    DLP4500需要什么连接线才可以与电脑连接起来

    新手,刚买了一台DLP4500,知不道用什么连接线才可以与电脑连接起来,求指教!
    发表于 05-27 17:36

    请问有SIM900A GSM模块基于51的例程吗?

    论坛里好像只有STM32的例程,哪位大神写了51的例程,求共享啊~~~~SIM900ATC35是差很多吗?TC35能用的程序换SIM900A完全没反应啊。大神快出来帮小弟支支招啊!!~~~~
    发表于 05-26 21:49

    怎么FPGA与接口连接起来

    嗨,有一种方法可以FPGA与您的接口连接起来 simulink,以便您可以输入输入到块输入中由FPGA处理,oupput结果显示在Simulink上图形。我已经设法在verilog中制作一个3
    发表于 05-23 09:41

    请问有SIM900A简易代码吗?

    SIM900A简易程序,能够实现拨打电话发短息的
    发表于 05-21 02:01

    初学者求帮助图中while循环结构是怎么与事件结构连接起来的?

    图中while循环结构是怎么与事件结构连接起来的?
    发表于 05-15 22:06

    STM32 GSM电话SIM900A模块命令手册

    最近买了一块GSMSIM900A)的板子,回来后用三根线连接MiniSTM32开发板SIM900A板子实现3线串口通信,调试了一个比较简单的例程,可以打电话。在此分享给大家。要想实现
    发表于 05-08 12:24

    sim900a模块说明图中是指stm32连接GSM模块GSM模块通过串口线电脑连接吗?

    sim900a模块说明里这个地方是stm32连接GSM模块GSM模块通过串口线电脑连接吗?
    发表于 03-08 04:25

    SIM900A GPRS通讯连接不上

    手上有一套原子哥的战舰板子SIM900A的通讯模块也有前段时间做了块SIM900A的板子回来准备自己做一个通信模块模块电话没问题但是GPRS通讯一直连接不上求各位高手解答一下谢谢程序如下void
    发表于 03-05 03:43

    怎么GSM SIM900连接PIC18f97j94

    你好!我尝试用RS232PIC18F97 J91与SIM900进行接口。我想上传一个小数据到服务。我已经在PC机上从GSM端口到终端进行了并行连接,所以我可以看到从PIC发送到SIM900的命令
    发表于 02-20 15:23

    SIM900A 模块AT指令资料手册免费下载

    本手册详细介绍了SIMCOM SIM900A 模块提供的AT 命令集 在本手册中,GSM 模块可以被称为如下术语: 1) ME (移动设备),它可包括移动终端(MT),终端适配器(TA)
    发表于 08-31 14:36 54次下载

    请问有什么芯片可以AD768与FPGA连接起来吗?

    AD768的数字输入的高电平最低电压是3.5V。而现在的控制器包括FPGA都是3.3V电平的。直接连接应该是会出问题的。1、那么有什么芯片可以两者连接起来吗?ADI有什么推荐吗?2、AD768
    发表于 08-17 06:38

    请问GSM模块SIM900A每个引脚代表什么?

    ` 本帖最后由 人间烟火123 于 2018-7-31 17:46 编辑 这个是GSM模块SIM900A ,这种产品在网上淘宝上都没有搜到,也没有办法通过上位机测试,希望有知晓这种产品的,可以帮我一下,表示万分感激!!!`
    发表于 07-31 17:43

    SIM900A调试之波特率设置_SIM900A基站定位调试详细步骤

    本文主要介绍了SIM900A调试的波特率设置方法,另外还详细介绍了SIM900A基站定位调试详细方法步骤。
    的头像 发表于 05-31 08:39 1.2w次阅读
    <b>SIM900A</b>调试之波特率设置_<b>SIM900A</b>基站定位调试详细步骤

    sim900a模块简介_sim900a原理图

    本文首先介绍了SIM900A模块主要特点与功能,其次介绍了sim900a功能框图与原理图,最后介绍了sim900a模块引脚及功能。
    的头像 发表于 05-30 14:50 14w次阅读
    <b>sim900a</b><b>模块</b>简介_<b>sim900a</b>原理图

    数据采集问题:不同采样率采样的数据怎么连接起来

    `各位大神好。我想问下用不同采样率采样的数据怎么连接起来,比如说分别用200,1k10k采样率,1000采样点对同一电压信号采集数据,最后这三段数据合并起来。。要怎么弄呢`
    发表于 05-21 08:51

    怎样使用STM32单片无线智能小车连接起来

    设计一个基于stm32的无线遥控智能小车,现在有材料有板子有杜邦线不知道怎么让STM32跟小车连接起来使用邱大生解答
    发表于 12-07 15:00

    SIM900A

    SIM900A模块,单片机控制通信
    发表于 12-04 13:34 15次下载

    sim900a的应用,基于SIM900A-GPRS模块的远程文件传输实例

    SIM900A是一个比较实用的GPRS模块,进行简单的配置就可以进行用于数据传输,配置使用AT指令进行交互。
    发表于 11-06 15:31 5051次阅读

    sim900a http,SIM900A访问HTTP的方法

    使用Arduino控制设备,读取数据,然后通过移动网络传送到服务。选用的是正点原子的SIM900A模块。在服务部署了一个监听程序,Arduino控制SIM900A通过TCP方式把数据发送到服务
    发表于 11-06 14:54 5387次阅读
    <b>sim900a</b> http,<b>SIM900A</b>访问HTTP的方法

    sim900asim800a的区别是什么

    sim900asim800a的区别是什么,分别从软件硬件两个方向分析的,一起来了解一下。
    发表于 11-06 11:04 4.4w次阅读

    SIM900A常见问题汇总,奉上解决方案

    SIM900A常见问题汇总,奉上SIM900A问题的解决办法。
    发表于 11-06 10:46 7333次阅读

    怎么把示波器labview连接起来使用?

    在了解示波器的过程中,发现能不能把labview示波器连接起来实现自动控制示波器的目的并且把数据相应的保存起来,不知道前辈们有没有用过的?
    发表于 09-24 17:00

    如何msp430单片机与RAK413WiFi模块通过串口连接起来,,程序中具体要实现那些函数

    本帖最后由 chg9330 于 2017-5-26 20:22 编辑 如何msp430单片机与RAK413WiFi模块通过RS232串口连接起来,,程序中具体要实现那些函数或者怎么进行配置
    发表于 05-20 10:49

    用stm32控制SIM900a发短信

    /数字都算1个字])const u8* sim900a_test_msg="您好,这是一条测试短信,由ATK-SIM900A GSM模块发送";//SIM900A发短信测试 void
    发表于 05-19 15:55

    如何把数据库其他程序连接起来

    各位大神,我现在遇到一个问题。我想把已经采集好的数据和数据库的进行对比,然后检索出相应的文字出来。我已经把采集的数据编成代码了,数据库相应的文字也用代码来进行代替。但是现在我不是很清楚如何将他们连接起来。两个小程序分别运行没有问题,但是连接起来就是有出现如图问题。求教各位大神,谢谢!
    发表于 04-13 11:16

    SIM900-EVB_V1.01_DL

    SIM900A 是 SIMCOM 公司推出的一款高性能工业级 GSM/GPRS 模块SIM900A 开发板板载工业级双频 GSM/GPRS 模块SIM900A,工作频段双频:GSM900
    发表于 12-15 22:28 1次下载

    分享GSM(SIM800)模块的使用

    800_Answer(); //接听电话 60.}61.}62. }63.}模块上有两个接口,要测试语音通话功能,需要 耳机插到如下图的位置。从前面的代码可以看到,当GSM启动信息正常后,如果你要接听来电,可以按下开发板S2,用其他手机
    发表于 12-07 14:02

    MSP430F149接SIM900A

    MSP430F149通过USART连接SIM900A实现TCP/IP通讯。
    发表于 05-18 11:44 23次下载

    SIM900A_AT命令手册【中文版】

    SIM900A的AT指令集,开发者可以通过AT指令,进行GSM模块的开发。打电话,收发短信,GPRS数据传输。
    发表于 05-03 15:15 10次下载

    SIM900A原理图

    sim900a原理图学习,各个模块详细电路设计
    发表于 12-21 15:41 238次下载

    SIM900A短信模块

    求大神给个SIM900A接听指定电话的程序,只需要能够判断是不是指定来电即可,万分感谢
    发表于 07-16 16:56

    怎么两个虚拟串口连接起来

    运行labview时需要将串口连接起来,,该怎么弄?
    发表于 05-29 10:51

    复制丝印怎么才能把丝印器件有飞线连接起来

    allegro两个相同的板子,复制丝印怎么才能把丝印器件有飞线连接起来
    发表于 01-28 11:53

    基于STM32SIM900A的无线通信模块设计

    设计一个可以实现短信收发与数据无线传输的模块的要求,本文采用了ARM Cortex-M3内核的主流产品STM32作为主控芯片,采用SIMCom公司的SIM900A作为通信芯片。
    发表于 11-07 09:13 3.3w次阅读
    基于STM32<b>和</b><b>SIM900A</b>的无线通信<b>模块</b>设计

    如何PLC通信口与无线数据终端连接起来??

    `如何PLC通信口与无线数据终端连接起来实现PLC与PLC之间,PLC与HMI触摸屏间,PLC与PC组态软件以及PLC与设备之间的无线数据交换!关注微信公众号【PLC无线通讯】解决您的一切烦恼!`
    发表于 09-28 09:49

    如何数据库的资料与报表连接起来

    如何数据库的资料与报表连接起来
    发表于 08-07 16:04

    GSM模块的,SIM900A原子的模块,打电话发短信,GPRS

    有没有需要GSM模块的哈,SIM900A原子的模块,全新未拆封,买了两块,只用了一块,所以把另外一块卖掉,想再玩玩其它模块,希望网友支持,可直接Q我或发邮箱,QQ:1033080926
    发表于 12-29 22:34

    SIM900ASIM连接电路?

    SIM900ASIM连接电路?
    发表于 12-08 15:47

    怎样把两层地面通过过孔连接起来

    怎样把两层地面通过过孔连接起来。。。。。
    发表于 11-14 15:56

    下载硬声App