索瑞,这贴还是在点灯
在前面贴子
【KW41z】公网访问Thread网络终端去撸灯
的基础上,点了几个自定义的LED
1、硬件准备
动手焊了两块万用板
一个装配构成伪边界路由器
一个装了几个LED,用来燃起心中的那团火
热烈欢迎焊接达人们怒喷
2、堆码
在RPI上,爬了几行码
用来获取Thread网络终端的IPv6地址
- def DesIP_Get():
- global DestIP
- t.write('getnodesip\r\n')
- n=t.inWaiting()
- ser_data=t.read(n)
- if ser_data!='':
- print ser_data
- pos=ser_data.find('Received IP Addresses from node:\r\n')
- if pos>0:
- pos1=ser_data.find('fe80',pos)
- print ("it is %d\r\n"%(pos1))
- pos2=ser_data.find('\n',pos1)
- print ("it is %d\r\n"%(pos2))
- DestIP=ser_data[pos1:pos2]
- print 'the DestIP is '+DestIP
- ser_data=''
- else:
- ser_data=''
复制代码
向单板发送获取节点IP的命令
并从返回的数据中,截取FE80开头的IPv6地址
也就是局域网中节点的地址
KW41z上得定义几个需要的GPIO
ARM嘛,外设操作基本上就是这么几步
- #define SW_ON 1U
- #define SW_OFF 0U
- #define SW1_GPIO GPIOA
- #define SW1_PORT PORTA
- #define SW1_GPIO_PIN 16U
复制代码
定义SW的开关和GPIO的PORT、pin等信息
- void SW_IO_init(void)
- {
- gpio_pin_config_t sw_config = {kGPIO_DigitalOutput, 0,};
- CLOCK_EnableClock(kCLOCK_PortA);
- PORT_SetPinMux(SW1_PORT, SW1_GPIO_PIN, kPORT_MuxAsGpio);
- GPIO_PinInit(SW1_GPIO, SW1_GPIO_PIN, &sw_config);
- }
复制代码
函数分别调用
时钟使能、PIN模式、PIN输出方向及初值
等等相关的函数来进行初始化
看到一些哭笑不得的代码
- GPIO_WritePinOutput(SW1_GPIO, SW1_GPIO_PIN, SW_OFF);
- GPIO_SetPinsOutput(SW1_GPIO, 1u << SW1_GPIO_PIN);
- GPIO_ClearPinsOutput(SW1_GPIO, 1u << SW1_GPIO_PIN);
复制代码
为毛不要左移?为毛要左移?为毛?
NXP大哥,您这C driver,可是正式发布版本啊
能不能风格一桶?
太不修边幅。
对于coap信息的处理
大都集中在router_eligible_device_app.c文件中
- #define APP_LED_URI_PATH "/led"
- #define APP_TEMP_URI_PATH "/temp"
- #define APP_SINK_URI_PATH "/sink"
复制代码
这几个URI_PATH宏,就定义了 接收/发送 命令的动作
static void APP_ProcessLedCmd中
就是根据URI_PATH后的参数,对LED进行操作
值得注意的是coap POST、coap GET等coap相关的关键字
作为系统关键命令,直接register了
重点是,这部分似乎并未完全开放代码
很多只是在头文件中声明了一下,看不到实体
3、IOT云端
建立了一个设备
电源管理电路
设备的详细情况
操作界面
玩了几天乐为网
其实开关量比传感器量处理起来还要麻烦......
醉了......
上一段撸灯视频吧
到这里
预设的功能就基本上完成了
很简单,很不好搞
还有十天,活动就结束了
不知道来不来得及做板最终实现设想
此内容由EEWORLD论坛网友ljj3166原创,如需转载或用于商业用途需征得作者同意并注明出处