TA的每日心情 | 开心 2016-7-19 13:45 |
---|
签到天数: 53 天 连续签到: 1 天 [LV.5]常住居民I
|
本帖最后由 qian.yao 于 2015-10-28 16:09 编辑
站在物联网的风口,猪不是飞起来,是被吹起来,能不能安稳的落地,这就是另一码事了。
作为刚毕业的新时代大学生,虽然对于前途很茫然,但是物联网的风已经把鄙人吹得凌乱了,不得不试着飞一下,因为我知道飞不高,摔得也不会很疼。
看别人都在玩TI的,我就不和大众凑热闹了。
我选定了nordic的nRF51822,然后就去某宝上面淘的一枚开发板来搞。
ble开发板
拿到板子不会搞,咨询了官方客服,学习了半天SDK,好不容易才把开发环境搭好,如图:
好了,开始编程,开始以为会需要研究好久的蓝牙的东西,学习了SDK的接口之后,仿照SDK里面提供的例程,
也照猫画虎的写了一下简单的开关程序:
#include "juma_sdk_api.h" //包含SDK头文件
#define SWITCH_PIN 28 //定义开关的GPIO,开发板上面集成的MOS管
#define SWITCH_LED 2 //定义指示灯,这个开发板上集成LED默认是2
void ble_device_on_message(uint8_t type, uint16_t length, uint8_t* value) //设备收到信息的回调函数
{
switch(value[0])
{
case 0:
gpio_write(SWITCH_PIN, 0); //0的话,拉低电平
break;
case 1:
gpio_write(SWITCH_PIN, 1); //1的话,拉高电平
break;
default:
break;
}
}
void ble_device_on_disconnect(uint8_t reason) //当蓝牙断开的时候的回调函数
{
ble_device_set_advertising_interval(250); //重新设置广播周期
ble_device_start_advertising(); //重新开启广播
gpio_write(SWITCH_LED, 1); //指示灯灭掉
}
void ble_device_on_connect(void) //当蓝牙连接上的时候的回调函数
{
gpio_write(SWITCH_LED, 0); //指示灯亮起
}
void on_ready() //这个SDK把主函数写在了库文件里面,相当于往时间轴上面插任务,属于异步编程模式。
//这个函数是整个应用层代码的入口,也就是开发板上电的时候立即执行的函数。
{
ble_device_set_name("Test"); //设置蓝牙开发板广播的名字,传说可以设置中文,不过需要编码我不会。。。
ble_device_set_advertising_interval(250); //设置蓝牙广播周期
ble_device_start_advertising(); //开启蓝牙广播
gpio_setup(SWITCH_PIN, GPIO_OUTPUT); //初始化开关控制引脚GPIO为输出模式
gpio_setup(SWITCH_LED, GPIO_OUTPUT);//初始化指示灯引脚GPIO为输出模式
gpio_write(SWITCH_LED, 1); //默认指示灯灭掉
}
很简单的几行代码,会点C语言就能写的来吧。。
根本没涉及太高深的蓝牙的内容额。
好了,写好嵌入式代码,开始接线,用一个Jlink,四根线咔咔咔几下接好,Vcc,GND,DIO,CLK接好是这样的:
按照教程的烧录方法,把协议栈烧进去,然后把应用层代码烧进去。OK
拿出来手机,我之前下载好了我比较熟悉的蓝牙测试工具LightBlue,有点丑。。。(不过他们官方也有自己调试工具,我还不会用)
点击连接,板子灯亮,连接成功,
后续控制什么,我还没找到家里可以拆电器的,风扇,电灯都是我的目标,等以后买个继电器再搞吧,至少到现在,蓝牙是可以通信了。小伙伴们,分享到这里吧,坐的屁股痛了,出去约跑了。
SDK的网页介绍:www.juma.io/doc/zh/introduction/index.html
蓝牙板子链接:https://shop123943370.taobao.com
有兴趣的联系我Q:544472800
蓝牙干货分享交流群:489465332
附送一些资料以防有人空手而归,那就不是我码字的目的了。
nRF51822库函数表.pdf
(85.57 KB, 下载次数: 178, 售价: 1 与非币)
|
评分
-
查看全部评分
|