tag 标签: 物联网开发板

相关博文
  • 热度 39
    2020-7-11 02:21
    4525 次阅读|
    0 个评论
    【富芮坤物联网开发板评测】之简单的蓝牙数据收发
    调试工具:蓝牙调试器 下载链接: https://www.qqtn.com/azsoft/552599.html 二维码下载: 使用教程链接: https://www.jianshu.com/p/1a8262492619 这个工具是我喜欢的调调,很 nice 。 关于程序方面,我们直接烧录官方提供的例程里的 ble_simple_peripheral.bin 文件,若找不到就打开工程编译一下。 Bin 文件路径: FR801xH-SDK\examples\none_evm\ble_simple_peripheral\keil\Output\ble_simple_peripheral.bin 下载后打开串口调试工具,设置波特率: 115200 。按下开发板复位键,效果如下。 连接过程如下: 本来录了视频的可惜上传不了,那就简单说一下,可以看到板子将我们发送的数据通过串口打印出来。怎么来的呢?实现这部分功能的代码便在 simple_gatt_service.c 中,如图 到这我们就简单的实现了通过蓝牙接收数据,改改这部分代码就可以实现很多我们想要的功能了。 那么发送数据怎么整??? 答案就在官方给的开发资料里面 P43 : \ 开发板资料(硬件版本 V1.4 ) \ 开发板资料 V1.4\FR801xH specification V1.1.pdf 代码修改如下: 其中 uint8_t conn_idx( 连接索引 ) 必须添加,否则无法发送数据,且容易断联。 蓝牙调试器参数修改及结果: 可以看出可以正常收发数据了,是不是很简单?有木有? 在此声明有些内容参考了网友写法。
  • 热度 15
    2020-6-18 16:04
    4099 次阅读|
    1 个评论
    【富苪坤物联网开发板评测】FR8016H开发板采集红外对管电压及驱动直流电机
    首先感谢富苪坤微电子有限公司和面包板社区举办的这次活动,本人很荣幸申请到了这款开发板,下图是开发板的全貌: 一、首先介绍一下开发板上的资源配置: 1,32位高性能的MCU(ARM M3),集成低功耗蓝牙5.0,板载蓝牙天线 2、板载SH2100六轴陀螺仪传感器 3、板载温湿度传感器SHT30-DIS 4、预留气压计BMP280芯片焊盘 5、两个用户按键,一个复位按键 6、USB转TTL串口 7、240x240分辨率LCD彩色屏 8、接口:喇叭、五线步进电机、ESP8266WIFI接口、MQ-135空气质量传感器接口,MIC输入,Jlink调试 9、PWM输出,ADC输入,IIC, SPI, UART通信 二、开发板上电测试 1,安装串口驱动程序CP210xVCPInstaller_x64.exe 2、用配套的USB线连接开发板和电脑,在电脑设备管理器中找到串口号 3、打开串口烧录软件,选择演示文件V1.4.bin 4、通过按键K1和K2控制开发板的LCD屏幕显示的内容 其中,skip_count为六轴陀螺仪运动计数,SHT30为温湿度传感器,板子没有CAPB18芯片,所以显示error。 三,利用开发板测量红外对管电路电压和通过PWM驱动两路直流电机 1、开发环境,安装keil5软件和ARM.CMSIS.5.7.0的设备包 2、搭建工程系统,按照官方文档《Fr801xH如何构建系统pdf》中的教程创建工程,本人是在官方例程演示文件源码v1.4的基础上进行的开发,主要是修改SDK库文件的路径和配置Jlink。 3、红外对管电路制作,参考网上的教程,用红外发射管和红外接收管制作红外对管电路,电路原理图如下图所示 上图中,Tx为红外发射管,Rx为红外接收管,长脚为正极,短脚为负极,红外接收管短脚连接电源的正极,这点很重要,第一次焊接时弄反了引脚导致LED灯不亮。对红外对管进行测试,红外接收管接收红外发射管发射出来的红外线来控制三极管的导通和关闭,从而控制LED灯的亮灭,阳光中的红外线也会影响红外接收管的接收,红外接收管接收到的红外线越强,LED灯越亮。黑色的物体可以吸收红外线,将黑色的笔放在红外对管下方时,LED灯熄灭。测试结果如下图 4、在程序中配置三路10bit ADC,和两路PWM, ADC的结构体函数中主要是要修改channels数为三路ADC采样,PWM中配置PWM波频率和占空比 // pwm init system_set_port_pull(GPIO_PA1, true); system_set_port_mux(GPIO_PORT_A, GPIO_BIT_1, PORTA1_FUNC_PWM1); system_set_port_pull(GPIO_PC5, true); system_set_port_mux(GPIO_PORT_C, GPIO_BIT_5, PORTC5_FUNC_PWM5); pwm_init(PWM_CHANNEL_5, 200, 60); pwm_init(PWM_CHANNEL_1, 200, 60); //ADC init struct adc_cfg_t cfg; // uint16_t result; system_set_port_mux(GPIO_PORT_D, GPIO_BIT_4, PORTD4_FUNC_ADC0); system_set_port_mux(GPIO_PORT_D, GPIO_BIT_5, PORTD5_FUNC_ADC1); system_set_port_mux(GPIO_PORT_D, GPIO_BIT_6, PORTD6_FUNC_ADC2); memset((void*)&cfg, 0, sizeof(cfg)); cfg.src = ADC_TRANS_SOURCE_PAD; cfg.ref_sel = ADC_REFERENCE_AVDD; cfg.channels = 0x07; //三路ADC1,2,3 cfg.route.pad_to_sample = 1; cfg.clk_sel = ADC_SAMPLE_CLK_24M_DIV13; cfg.clk_div = 0x3f; adc_init(&cfg); adc_enable(NULL, NULL, 0); 用高占空比启动电机,然后降低pwm来降低电机速度 pwm_start(PWM_CHANNEL_1); pwm_start(PWM_CHANNEL_5); co_delay_100us(5000); //delay 0.5s pwm_update(PWM_CHANNEL_1, 200, 50); pwm_update(PWM_CHANNEL_5, 200, 50); 在simple_peripheral_init(void)函数中修改系统定时器函数的定时时间为0.1s,在定时器回调函数里读取三路ADC的值,ADC测量的是红外接收管长脚的电压值,接收到的红线光越强,电压值越大,根据三路ADC的值来控制两路电机的运动。将ADC接收到的值显示在LCD屏幕上。 void timer_refresh_fun(void *arg) { uint8_t LCD_ShowStringBuff ; //读取三路ADC的值 uint16_t result1, result2, result3; adc_get_result(ADC_TRANS_SOURCE_PAD, 0x01, &result1); sprintf((char*)LCD_ShowStringBuff,"adc0 volatge = %d ",result1); LCD_ShowString(20,50,LCD_ShowStringBuff,BLACK); adc_get_result(ADC_TRANS_SOURCE_PAD, 0x02, &result2); sprintf((char*)LCD_ShowStringBuff,"adc1 volatge = %d ",result2); LCD_ShowString(20,80,LCD_ShowStringBuff,BLACK); adc_get_result(ADC_TRANS_SOURCE_PAD, 0x04, &result3); sprintf((char*)LCD_ShowStringBuff,"adc2 volatge = %d ",result3); LCD_ShowString(20,110,LCD_ShowStringBuff,BLACK); //控制电机转向 if((result2 = 440)) { //直行 pwm_update(PWM_CHANNEL_1, 200, 50); pwm_update(PWM_CHANNEL_5, 200, 50); } if(result1 =440 ) { //大幅度左转 pwm_update(PWM_CHANNEL_1, 200, 28); pwm_update(PWM_CHANNEL_5, 200, 50); } if(result3 400) { //大幅度右转 pwm_update(PWM_CHANNEL_5, 200, 28); pwm_update(PWM_CHANNEL_1, 200, 50); } 400 && result1 = 440) { //小幅度左转 pwm_update(PWM_CHANNEL_1, 200, 35); pwm_update(PWM_CHANNEL_5, 200, 50); } 400 && result3 = 440) { //小幅度右转 pwm_update(PWM_CHANNEL_5, 200, 35); pwm_update(PWM_CHANNEL_1, 200, 50); } } 下图为ADC测量得到的三路电压值 根据三路红外对管的测量电压值可以制作红外避障小车和红外循迹小车,下图为小车实物图 在测试循迹小车中发现光线对红外对管的测量结果有一定的影响,需要在接收管和发射管之间用黑色的物体隔开,让接收管尽量只接收地面反射回来的红外光,控制电机的转向时,ADC测量出的值与门限值进行比较,这个门限值需要根据时间的场景进行多次测量选取,比较麻烦。 总结,FR8016H开发板的资源丰富,接口较多,其板载的蓝牙功能适合与手机通信,做物联网开发,官方提供的sdk库降低了开发难度,接下来将深入了解开发板的蓝牙通信功能。