tag 标签: 无线模块

相关帖子
相关博文
  • 2024-11-3 11:10
    0 个评论
    这段代码是一个用于演示如何使用SUN6200无线通信模块的示例程序。SUN6200无线通信模块采用HS6200 2.4G无线收发IC,HS6200是一款低功耗、高性能的无线通信芯片,广泛应用于无线传感器、智能家居、物联网等领域。主控芯片为NE76E003 以下是对代码的概括性总结和详细解析: 概括性总结 初始化: 程序开始时,初始化UART通信、LED指示灯,并配置HS6200模块。 主循环: 在主循环中,程序交替将HS6200设置为发送模式和接收模式。在发送模式下,发送一个固定的数据包;在接收模式下,等待接收数据,并将接收到的数据通过UART发送给PC。 LED指示: 通过不同的LED指示当前HS6200的状态,例如发送数据时点亮测试LED,接收到数据时点亮绿色LED。 看门狗定时器: 程序中包含了配置看门狗定时器的代码,以防止程序卡死。 详细解析 定义和初始化: 定义了与HS6200通信所需的SPI接口的位操作宏,以及LED的指示宏。 初始化函数 led_init 用于设置LED的初始状态和模式。 移植到基他平台,只需更改SPI IO口定义即可 | SCK | S | H * | P | P1.4 | | nSS | | 2 * /------------------- | VBUS NC | LED2 ( LED On when P2.3 output 0 ) * | | * |__________________________| */ void led_init(void) { LED_RED = 0; LED_GRN = 0; LED_TEST = 0; setGPIO_LED_RED_OUT(); setGPIO_LED_GRN_OUT(); setGPIO_LED_TEST_OUT(); LED_RED = 1; LED_GRN = 1; LED_TEST = 1; } 看门狗定时器配置 ( Enable_WDT_Reset_Config ): 该函数用于配置看门狗定时器,以防程序异常卡死。通过特定的序列操作,设置看门狗定时器的超时时间,并启用它。 /*********************************************************************** WDT CONFIG enable warning : this macro is only when ICP not enable CONFIG WDT function copy this marco code to you code to enable WDT reset. ************************************************************************/ void Enable_WDT_Reset_Config(void) { set_IAPEN; IAPAL = 0x04; IAPAH = 0x00; IAPFD = 0x0F; IAPCN = 0xE1; set_CFUEN; set_IAPGO; //trigger IAP while((CHPCON&SET_BIT6)==SET_BIT6); //check IAPFF (CHPCON.6) clr_CFUEN; clr_IAPEN; TA=0xAA; TA=0x55; WDCON=0x06; //Setting WDT prescale WDPS=0x07(111) div=256 WDTimeout:1.638s Info:datasheetPage118 set_WDCLR; //Clear WDT timer while((WDCON|~SET_BIT6)==0xFF); //confirm WDT clear is ok before into power down mode EA = 1; set_WDTR; //WDT run } 主函数 ( main ): 初始化UART和HS6200模块。 进入一个无限循环,循环中交替执行发送和接收操作。 在发送模式下,通过HS6200发送一个预定义的数据包。 在接收模式下,等待接收数据,接收到数据后通过UART输出到PC,并重新发送接收到的数据包。 使用LED指示当前的操作状态,如发送数据时点亮测试LED,接收到数据时点亮绿色LED。 循环中包含延时和看门狗定时器的清除操作,以防止看门狗超时。 void main(void) { uint32_t cnt; uint8_t i, recvLen; #ifdef USE_SOFT_SPI soft_spi_init(); #endif InitialUART0_Timer1(9600); //UART0 Baudrate from Timer1 printf ("*=======================================*\n"); printf ("* * Name: HS6200 SDK Sample Code. *\n"); printf ("* * (C) Sunshine Silicon Corporation *\n"); printf ("* * Website: http://www.sunsili.com *\n"); printf ("* * E-Mail : fan@sunsili.com *\n"); printf ("*========================================*\n"); printf ("* HS6200 receive data and uart transmit the same data to PC .*\n"); led_init(); // Enable_WDT_Reset_Config(); printf("HS6200 init .... \n"); HS6200_Init(); printf("HS6200 Init Sucesss! \n"); LED_RED = 0; for( ; ;) { HS6200_ModeSwitch(Rf_PTX_Mode); HS6200_Clear_All_Irq(); HS6200_Flush_Tx(); HS6200_SendPack(HS6200_W_TX_PAYLOAD , TXBuffer, 2); LED_TEST_ON(); Delay_ms(10); HS6200_ModeSwitch(Rf_PRX_Mode); HS6200_Clear_All_Irq(); HS6200_Flush_Rx(); LED_GRN_OFF(); cnt = 1; while(cnt++<100) { Delay_ms(1); recvLen = HS6200_RecivePack(rx_buf); if( recvLen ) { HS6200_Clear_All_Irq(); HS6200_Flush_Rx(); HS6200_ModeSwitch(Rf_PTX_Mode); HS6200_Clear_All_Irq(); HS6200_Flush_Tx(); HS6200_SendPack(HS6200_W_TX_PAYLOAD , rx_buf, recvLen); // APP_LOG_DEBUG("HS6200 Recv \n"); printf("HS6200 Recv: "); for(i=0; i
  • 热度 13
    2023-6-17 06:36
    1912 次阅读|
    0 个评论
    【雕爷学编程】Arduino动手做(112)---2.4G24L01无线模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百一十二: NRF24L01+ 无线模块 功率加强版 2.4G无线收发通信模块 黑金刚 NRF24L01 是由NORD IC 生产的工作在2.4GHz~2.5GHz的ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。输出功率频道选择和协议的设置可以通过SPI 接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传送工作。极低的电流消耗:当工作在发射模式下发射功率为0dBm 时电流消耗为11.3mA ,接收模式时为12.3mA,掉电模式和待机模式下电流消耗更低。 NRF24L01性能参数 ◆ 小体积,QFN20 4x4mm封装 ◆ 宽电压工作范围,1.9V~3.6V,输入引脚可承受5V电压输入 ◆ 工作温度范围,-40℃~+80℃ ◆ 工作频率范围,2.400GHz~2.525GHz ◆ 发射功率可选择为0dBm、-6dBm、-12dBm和-18dBm ◆ 数据传输速率支持1Mbps、2Mbps ◆ 低功耗设计,接收时工作电流12.3mA,0dBm功率发射时11.3mA,掉电模式时仅为900nA ◆ 126个通讯通道,6个数据通道,满足多点通讯和调频需要 ◆ 增强型“ShockBurst”工作模式,硬件的CRC校验和点对多点的地址控制 ◆ 数据包每次可传输1~32Byte的数据 ◆ 4线SPI通讯端口,通讯速率最高可达8Mbps,适合与各种MCU连接,编程简单 ◆ 可通过软件设置工作频率、通讯地址、传输速率和数据包长度 ◆ MCU可通过IRQ引脚块判断是否完成数据接收和数据发送 NRF24L01无线模块 (1) 2.4Ghz 全球开放 ISM 频段免许可证使用 (2) 最高工作速率 2Mbps,高效 GFSK 调制,抗干扰能力强,特别适合工业控制场合 (3) 126 频道,满足多点通信和跳频通信需要 (4) 内置硬件 CRC 检错和点对多点通信地址控制 (5) 低功耗 1.9 - 3.6V 工作,待机模式下状态为 22uA;掉电模式下为 900nA (6) 内置 2.4Ghz 天线,体积种类多样 (7) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便 (8) 内置专门稳压电路,使用各种 电源 包括 DC/DC 开关电源均有很好的通信效果 (9) 2.54MM 间距接口,DIP 封装 (10)工作于 Enhanced ShockBurst 具有 Automatic packethandling, Auto packet transaction handling,具有可选的内置包应答机制,极大的降低丢包率。 (11)与 51 系列单片机 P0 口连接时候,需要加 10K 的上拉电阻,与其余口连接不需要。 (12)其他系列的单片机,如果是 5V 的,请参考该系列单片机 IO 口输出电流大小,如果超过 10mA,需要串联电阻分压,否则容易烧毁模块! 如果是3.3V的,可以直接和RF24l01模块的IO口线连接。比如AVR系列单片机如果是5V 的,一般串接2K 的电阻。 NRF24L01无线模块接口说明 (1) VCC 脚接电压范围为 1.9V~3.6V 之间,不能在这个区间之外,超过 3.6V 将会烧毁模块。推荐电压 3.3V 左右。 (2) 除电源 VCC 和接地端,其余脚都可以直接和普通的 5V 单片机 IO口直接相连,无需电平转换。当然对 3V 左右的单片机更加适用了。 (3) 硬件上面没有 SPI 的单片机也可以控制本模块,用普通单片机 IO口模拟 SPI 不需要单片机真正的串口介入,只需要普通的单片机 IO 口就可以了,当然用串口也可以了。 NRF24L01无线模块的特点 低应用成本:NRF24L01集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等,NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口,便于使用低成本单片机。 便于开发:由于链路层完全集成在模块上,非常便于开发。自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制自动存储未收到应答信号的数据包自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程载波检测—固定频率检测内置硬件CRC检错和点对多点通信地址控制数据包传输错误计数器及载波检测功能可用于跳频设置可同时设置六路接收通道地址,可有选择性的打开接收通道标准插针Dip2.54MM间距接口,便于嵌入式应用。 实验一百一十二: NRF24L01+ 无线模块 功率加强版 2.4G无线收发通信模块 黑金刚 接线示意图 Arduino实验开源代码 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百一十二: NRF24L01+ 无线模块 功率加强版 2.4G无线收发通信模块 黑金刚 1、安装“Mirf”库(下载链接 https://github.com/aaronds/arduino-nrf24l01) 安装“rf24”库(下载链接 https://github.com/nRF24/RF24) 2、项目测试 :NRF24L01最简单测试之Client 示例代码 3、模块接线 Arduino uno --- nRF24L01 3.3V --- VCC:模块供电引脚 GND --- GND:模块接地引脚 D7 --- CSN:接收端选择引脚 D8 --- CE:发射/接受状态选择引脚 D11 --- MOSI :控制端输出,接收端输入引脚 D13 --- SCK:时钟信号 D12 --- MISO:控制端输入,接收端输出引脚 *IRQ引脚在本例中不需要接 */ #include #include #include #include void setup(){ Serial.begin(9600); /* * Setup pins / SPI. */ /* To change CE / CSN Pins: * * Mirf.csnPin = 9; * Mirf.cePin = 7; */ /* Mirf.cePin = 7; Mirf.csnPin = 8; */ Mirf.spi = Mirf.init(); /* * Configure reciving address. */ Mirf.setRADDR((byte *)"clie1"); /* * Set the payload length to sizeof(unsigned long) the * return type of millis(). * * NB: payload on client and server must be the same. */ Mirf.payload = sizeof(unsigned long); /* * Write channel and payload config then power up reciver. */ /* * To change channel: * * Mirf.channel = 10; * * NB: Make sure channel is legal in your area. */ Mirf.config(); Serial.println("Beginning ... "); } void loop(){ unsigned long time = millis(); Mirf.setTADDR((byte *)"serv1"); Mirf.send((byte *)&time); while(Mirf.isSending()){ } Serial.println("Finished sending"); delay(10); while(!Mirf.dataReady()){ //Serial.println("Waiting"); 1000 ) { Serial.println("Timeout on response from server!"); return; } } Mirf.getData((byte *) &time); Serial.print("Ping: "); Serial.println((millis() - time)); delay(1000); } 实验串口返回情况 Arduino实验开源代码之二 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百一十二: NRF24L01+ 无线模块 功率加强版 2.4G无线收发通信模块 黑金刚 1、安装“Mirf”库(下载链接 https://github.com/aaronds/arduino-nrf24l01) 安装“rf24”库(下载链接 https://github.com/nRF24/RF24) 2、项目测试 :NRF24L01最简单测试之Server示例代码 3、模块接线 Arduino uno --- nRF24L01 3.3V --- VCC:模块供电引脚 GND --- GND:模块接地引脚 D7 --- CSN:接收端选择引脚 D8 --- CE:发射/接受状态选择引脚 D11 --- MOSI :控制端输出,接收端输入引脚 D13 --- SCK:时钟信号 D12 --- MISO:控制端输入,接收端输出引脚 *IRQ引脚在本例中不需要接 */ #include #include #include #include void setup(){ Serial.begin(9600); /* * Set the SPI Driver. */ Mirf.spi = /* * Setup pins / SPI. */ Mirf.init(); /* * Configure reciving address. */ Mirf.setRADDR((byte *)"serv1"); /* * Set the payload length to sizeof(unsigned long) the * return type of millis(). * * NB: payload on client and server must be the same. */ Mirf.payload = sizeof(unsigned long); /* * Write channel and payload config then power up reciver. */ Mirf.config(); Serial.println("Listening..."); } void loop(){ /* * A buffer to store the data. */ byte data ; /* * If a packet has been recived. * * isSending also restores listening mode when it * transitions from true to false. */ if(!Mirf.isSending() && Mirf.dataReady()){ Serial.println("Got packet"); /* * Get load the packet into the buffer. */ Mirf.getData(data); /* * Set the send address. */ Mirf.setTADDR((byte *)"clie1"); /* * Send the data back to the client. */ Mirf.send(data); /* * Wait untill sending has finished * * NB: isSending returns the chip to receving after returning true. */ Serial.println("Reply sent."); } } 实验串口返回情况 实验场景图 实验开源仿真编程(Linkboy V4.62)
  • 热度 2
    2020-8-31 13:48
    5316 次阅读|
    1 个评论
    一、Cat.1模块自身的优势 Cat.1支持高达10Mbps的终端下行链路速率,从而能够以更低的功耗和更低的成本IoT设备连接到LTE网络。由于世界各地的4GLTE运营商均基于最低3GPPRelease8协议版本进行部署,因此运营商无需升级网络,仅需要简单的参数配置即可允许Cat.1终端访问网络。 二、成熟的网络覆盖 根据工业和信息化部的最新数据,到2019年底,4G基站的数量已超过500万。基于这种成熟的LTE网络部署,无需重新铺设网络即可完成Cat1的升级。互联网速度高于2/3G,2/3G网络在静态物联网市场中拥有巨大的市场,但不适用于诸如实时语音之类的业务场景。Cat1产品的最大下行速率为10Mbps,最大上行速率为5Mbps。 三、市场优势 在未来的数百亿个IoT连接中,网络容量要求将有所不同。根据业界的说法,10%的节点需要高带宽和高速通信技术,例如高速4G,5G等。30%的节点需要中速传输技术,主要技术是Cat.1和eMTC;60%的节点需要低速连接技术,例如NB-IoT,LoRa等。 四、成本低于4G 尽管Cat4及更高版本的解决方案支持高速率,但对于物联网行业而言,其成本价格通常相对较高,并且Cat1的高度集成为客户提供了最佳的性价比。 五、Cat.1与其他技术相比的优势 与NB-IoT,eMTC和Cat.4相比,Cat.1具有以下优势: 1.与NB-IoT相比,Cat.1在通信功能上具有更明显的优势。NB-IoT适用于仅传输少量数据且处于固定状态的场景。典型的情况是三米(水表,电表,煤气表)。Cat.1不仅可以传输更大的数据,而且具有良好的移动性和语音功能。 2.与eMTC相比,Cat.1的最大优势在于其较低的网络成本。Cat.1可以无缝访问现有LTE网络,而无需升级基站的硬件和软件。并且信号保证,有Cat.1的地方有4G信号。 3.与Cat.4相比,Cat.1具有一定的成本优势。在芯片成本方面,系统优化后的Cat.1集成度更高,模块的硬件架构更简单,外围硬件的成本更低。
  • 热度 13
    2018-12-12 14:13
    1386 次阅读|
    0 个评论
    ​ 有许多用户在使用无线模块的时候,经常会出现一些异常,如 无线模块 之间不能正常的通讯,无线模块的传输距离很短,又或者数据接收错误,出现乱码等情况。针对这些无线模块的异常问题,思为无线给大家整理了一份解决的方案,希望能帮助到广大用户。 ​ ​ ​ ​ 无线模块之间不能正常通讯 ​1.我们首先先检查电源是否连接好, 数据线是否连接好,模块是否有正常的工作。电源检查完毕后,观察信号指示灯是否正确,无线模块接收时,信号灯是绿色,发射时是红色。最后检查模块是否损坏(正常通电后,信号等是否会闪亮) ​2.模块是否处于正常的通讯模式 ​3.检查无线模块之间设置的频段、信道、以及空中速率是否一致。 ​ ​ 无线模块传输距离短 ​1.首先检查模块周边环境是否有强干扰源,环境是否恶劣(如周边有大量金属等)。 ​2.其次检查无线模块与天线之间是否匹配或者按照正确与否,且天线不能与金属物接触或者太近。天线尽量要安装在高而空旷的地方。 ​3.电源波纹过大,容易对周边同频造成干扰。 ​4.检查电源供应是否良好,无线产品对电源要求较高。 ​ ​ 数据接收错误 ​1.无线模块电平接口是否与相连设备一致? ​2.模块串口参数设置是否和相连设备匹配? ​3模块数据接口是否良好? ​
  • 热度 18
    2014-3-27 10:24
    847 次阅读|
    0 个评论
    相比较而言,用无线数传模块建立专用无线数据传输方式比其它方式具有如下优点,下面介绍一下用无线数传模块建立专用无线数据传输方式相比于有线通讯的优点。 成本廉价 有线通信方式的建立必须架设电缆,或挖掘电缆沟,因此需要大量的人力和物力;而用无线数传电台建立专用无线数据传输方式则无需架设电缆或挖掘电缆沟,只需要在每个终端连接无线数传电台和架设适当高度的天线就可以了。相比之下用无线数传模块建立专用无线数据传输方式,节省了人力物力,投资是相当节省的。 当然在一些近距离的数据通讯系统中,无线的通讯方式并不比有线的方式成本低,但是有时候实际的现场环境难以布线,客户根据现场环境的需要还是会选用无线的方式来实现通讯。 建设工程周期短 当要把相距数公里到数十公里距离的远程站点相互连接通讯的时候,采用有线的方式,必须架设长距离的电缆或者挖掘漫长的电缆沟,这个工程周期可能就需要数个月的时间,而用数传模块建立专用无线数据传输的方式,只需要架设适当高度的天线,工程周期只需要几天或者几周就可以,相比之下,无线的方式可以迅速组建起通信链路,工程周期大大缩短。 适应性好 有线通讯的局限性太大,在遇到一些特殊的应用环境,比如遇到山地、湖泊、林区等特殊的地理环境或是移动物体等布线比较困难的应用环境的时候,将对有线网络的布线工程有着极强的制约力,而用无线数传模块建立专用无线数据传输方式将不受这些限制,所以说用无线数传模块建立专用无线数据传输方式将比有线通讯有更好的更广泛的适应性,几乎不受地理环境限制。 扩展性好 在用户组建好一个通讯网络之后,常常因为系统的需要增加新的设备。如果采用有线的方式,需要重新的布线,施工比较麻烦,而且还有可能破坏原来的通讯线路,但是如果采用无线数传电台建立专用无线数据传输方式,只需将新增设备与无线数传电台相连接就可以实现系统的扩充了,相比之下有更好的扩展性。 设备维护 有线通讯链路的维护需沿线路检查,出现故障时,一般很难及时找出故障点,而采用无线数传模块建立专用无线数据传输方式只需维护数传模块,出现故障时则能快速找出原因,恢复线路正常运行。 无线数据传输方式相比于有线通讯的缺点:可靠性有待改进、受环境影响较大。  
相关资源