平台:巴法云
接入方法:TCP MQTT HTTP API

(一)物联网系统框架的简单架构


这种方法的架构类似于一种抄写
设置于同一个主题下时 巴法云 就像是一块黑板
MCU/FPGA 用户终端则可以对黑板上的内容进行修改
则 MCU/FPGA 可以和用户终端进行一种随断随连的通信

(二)案例

MCU+ESP8266+温度传感器+APP

1、MSP430F5529+ESP8266+LMT70+APP
ESP8266驱动配置wifi连接并且接入巴发云TCP服务器


#include <Wifi_Connect.h>
#include "oled.h"#define STR_CIPMOD_EN  1//#define Led_r_on()      (P4DIR |= BIT7, P4OUT |= BIT7)
//#define Led_r_off()     (P4DIR |= BIT7, P4OUT &= ~BIT7)
char  str1_AT[]="AT\r\n";
char  str2_CWMODE[]="AT+CWMODE=3\r\n";
//char  str3_CWJAP[]="AT+CWJAP=\"v888i\",\"1234567890\"\r\n";
char  str3_CWJAP[]="AT+CWJAP=\"WiFi-E3\",\"123456789A\"\r\n";//WiFi账号密码
char  str4_CIFSR[]="AT+CIFSR\r\n";
char  str5_CIPSTART[]="AT+CIPSTART=\"TCP\",\"bemfa\",8244\r\n";
char  str6_CIPSEND[]="AT+CIPSEND=30\r\n";
char  str7_hello[]="hello!\r\n";
char  str8_CIPSERVER[]="AT+CIPSERVER=1,5000\r\n";
char  str9_CIPMUX[]="AT+CIPMUX=1\r\n";
char  str10_RST[]="AT+RST\r\n";
char  str11[]="AT+CIPSEND=0,15\r\n";
char  str12_CE[]="Command Executed!\r\n";
char  str13_CIPMODE[]="AT+CIPMODE=1\r\n";
char  str14_CIPSEND[]="AT+CIPSEND\r\n";
void Wifi_Connect_Init(void)
{USCIA0_Init();USCIA1_Init();delay_ms(1000);delay_ms(50);//    Led_r_off();USCIA1_SendString(Rec_BufMax_A0);USCIA1_SendString("\r\n");USCIA1_SendString("Welcome to LCE STUDIO, Please wait while we are getting the device ready\r\n");OLED_ShowString(0,0,"Ready...");USCIA0_SendString("+++");   //退出透传模式delay_ms(500);CLR_BufMax();while(!Hand("OK")){OLED_ShowString(0,2,"Try..");USCIA0_SendString(str1_AT);USCIA1_SendString(Rec_BufMax_A0);delay_ms(500);}CLR_BufMax();USCIA1_SendString("OK,Succeed Establish connection with ESP8266\r\n");OLED_ShowString(0,2,"Try->Ok");while(!(Hand("OK")|Hand("no change"))){OLED_ShowString(0,4,"Mode..");USCIA0_SendString(str2_CWMODE);USCIA1_SendString(Rec_BufMax_A0);delay_ms(500);}if(Hand("OK")){CLR_BufMax();USCIA0_SendString(str10_RST);USCIA1_SendString(Rec_BufMax_A0);}CLR_BufMax();USCIA1_SendString("OK,ESP8266 has been set as AP+Station Mode\r\n");OLED_ShowString(0,4,"Mode->3");/**************************************************************/while(!Hand("OK"))                                                  //鑴滆劏闇茶劎鑴㈣劅璺附鑴曞崲闄嗚劔WiFi鑴楄矾鑴劇鑴濇鎷㈠崲鑴犺幗铏忕椴佽劇楣垮▌鎷㈠崲鑴╄劔鑴㈠崵娼炶锤鑴劦楹撹劍璺瀯鑴h劌{OLED_ShowString(0,6,"Connect.. ");USCIA0_SendString(str3_CWJAP);USCIA1_SendString(Rec_BufMax_A0);OLED_ShowString(0,6,"Connect...");delay_ms(4000);}CLR_BufMax();USCIA1_SendString("OK,Succeed establish connection with WiFi AP\r\n");OLED_ShowString(0,6,"Connect->OK");delay_ms(1000);OLED_Clear();while(!Hand("OK"))                        //鑴滆劏闇茶劎鑴㈣劅璺附鑴曞崲闄嗚劔TCP sever鎷㈠崲鑴犺幗铏忕椴佽劇楣垮▌鎷㈠崲鑴╄劔鑴㈠崵娼炶锤鑴劦楹撹劍璺瀯鑴h劌{OLED_ShowString(0,0,"Connect>Sever...");USCIA0_SendString(str5_CIPSTART);USCIA1_SendString(Rec_BufMax_A0);OLED_ShowString(0,0,"Connect>Sever..  ");delay_ms(800);}CLR_BufMax();USCIA1_SendString("OK,Succeed establish connection with TCP sever\r\n");OLED_ShowString(0,0,"Connect>>OK     ");
#ifdef STR_CIPMOD_EN       //设置透传模式while(!Hand("OK")){OLED_ShowString(0,2,"CIPMODE.. ");USCIA0_SendString(str13_CIPMODE);USCIA1_SendString(Rec_BufMax_A0);OLED_ShowString(0,2,"CIPMODE...");delay_ms(800);}CLR_BufMax();USCIA1_SendString("OK,CIPMODE->1\r\n");OLED_ShowString(0,2,"CIPMODE->1 ");while(!(Hand("OK")|Hand(">"))){USCIA0_SendString(str14_CIPSEND);USCIA1_SendString(Rec_BufMax_A0);delay_ms(2000);}//    USCIA0_SendString("fmkmnvjdfndmfkl");//测试点
//    delay_ms(2000);
//    USCIA1_SendString(Rec_BufMax_A0);USCIA1_SendString("OK->CIP\r\n");OLED_ShowString(0,4,"OK->CIP");
#endifdelay_ms(2000);OLED_ShowString(0,6,"Successful!");delay_ms(2000);OLED_Clear();CLR_BufMax();USCIA1_SendString(Rec_BufMax_A0);USCIA1_SendString("Congratulations, You can send commands through TCP sever now\r\n");CLR_BufMax();/*************************************************************//* while(!Hand("OK")){USCIA0_SendString(str9_CIPMUX);USCIA1_SendString(Rec_BufMax);//        delay_ms(500);delay_ms(500);}CLR_BufMax();while(!Hand("OK")){USCIA0_SendString(str8_CIPSERVER);//                USCIA1_SendString(Rec_BufMax);//        delay_ms(500);delay_ms(500);}CLR_BufMax();while(!Hand("OK")){USCIA0_SendString(str4_CIFSR);USCIA1_SendString(Rec_BufMax);delay_ms(500);}*///    USCIA1_SendString(Rec_BufMax);//    USCIA1_SendString("Congratulations, Everything is set up! TCP sever:192.168.4.1, Port: 5000");//    CLR_BufMax();//    Led_r_on();
}void Send_D(char *a)                 //串口发送数据
{USCIA0_SendString(a);        //A0发送数据
}

ADS1118采集 LMT70电压驱动
ADS118采用SPI通信采集高精度的电压值

#include "ads1118.h"void ADS1118_Init(void)
{CS_ADS1118 ;          //GPIO输出设置SCLK_ADS1118 ;MISO_ADS1118;MOSI_ADS1118 ;_no_operation();MISO_IN;_no_operation();CS_H;_no_operation();SCLK_H;_no_operation();MOSI_L;
//    _no_operation();
}uint Write_ADS1118(uint dat,uchar mode)
{uint tmpa,tmpb,tmpc,tmpd;uchar i;if(mode == 1)//写命令,是连续转换还是单次转换{dat |= 0x8000;
//        _no_operation();}tmpa = dat;tmpc = dat;MISO_IN;_no_operation();SCLK_L;_no_operation();CS_L;
//    _no_operation();delay_ms(1);for(i=0;i<16;i++){if(tmpa & 0x8000){MOSI_H;_no_operation();}else{MOSI_L;_no_operation();}tmpa <<= 1;delay_us(1);SCLK_H;delay_us(1);SCLK_L;delay_us(1);tmpb <<= 1;delay_us(1);if(READ_MISO)tmpb|= 0x01;_no_operation();}for(i=0;i<16;i++){if(tmpc & 0x8000){MOSI_H;_no_operation();}else{MOSI_L;_no_operation();}tmpc <<= 1;delay_us(1);SCLK_H;delay_us(1);SCLK_L;delay_us(1);tmpd <<= 1;delay_us(1);if(READ_MISO)tmpd|= 0x01;}CS_H;return tmpb;
}
/*******************************************************************************
//函数名称:ADS_SEL_Read()
//函数功能:读取各路电压,通过两个switch选择读取不同的通道
//输    入:road:增益放大器两端的电压选择,并选择测几路电压
//          Ref: 选择参考电压,有6种选择
//输    出:dat:16位ad转换数据
//备    注:这一次读出的转换数据是上一次的转换数据,不要混淆.这里选择的是单次转换电压值,当然,也可以选择多次转换,通过寄存器的第8位可以设置
//日    期:2013.6.8**************************************************************************************/
int ADS_SEL_Read(uchar road,uchar Ref) //?????
{int dat = 0;uint Config_Value = 0x000b; //???8?,DOUT?????switch(road){//    case 0: Config_Value += 0x0000;break; //AINP = AIN0 and AINN = AIN1 (default)
//    case 1: Config_Value += 0x1000;break; //AINP = AIN0 and AINN = AIN3
//    case 2: Config_Value += 0x2000;break; //AINP = AIN1 and AINN = AIN3
//    case 3: Config_Value += 0x3000;break; //AINP = AIN2 and AINN = AIN3case 4: Config_Value += 0x4000;break; //AINP = AIN0 and AINN = GND
//    case 5: Config_Value += 0x5000;break; //AINP = AIN1 and AINN = GND
//    case 6: Config_Value += 0x6000;break; //AINP = AIN2 and AINN = GND
//    case 7: Config_Value += 0x7000;break; //AINP = AIN3 and AINN = GNDdefault : break;}switch(Ref){case 0: Config_Value += 0x0000;break; //000 : FS = 6.144V(1)
//    case 1: Config_Value += 0x0200;break; //001 : FS = 4.096V(1)
//    case 2: Config_Value += 0x0400;break; //002 : FS = 2.048V(1)
//    case 3: Config_Value += 0x0600;break; //003 : FS = 1.024V(1)
//    case 4: Config_Value += 0x0800;break; //004 : FS = 0.512V(1)
//    case 5:
//    case 6:
//    case 7: Config_Value += 0x0a00;break; //005 : FS = 0.256V(1)default : break;}CS_L;delay_us(1);dat = Write_ADS1118(Config_Value,1);delay_us(1);CS_H;delay_us(1);return dat;
}

完成配置后开启ESP8266透传(串口所接受的数据都发向目标TCP服务器)





参照开发文档
若当前需要上传的温度为37
则构造 cmd=2&uid=bb6db5190fcc7a960deb5feb7c95f469&topic=WenDu&msg=37\r\n
发送至巴发云TCP服务器

这个时候这个数值就会变为37
只需要在每次ADS1118采集电压后换算成温度后的代码 串口发送一串构造的代码就行

void LMT70(float u)
{float d=-0.193;float a=-7.857923E-06;float b=-1.777501E-01;float c=2.046398E+02;char caiji_wd[20] = "";char caiji_ad2[20] = "";sprintf(caiji_ad2,"AD2:%0.4f v",u);OLED_ShowString_1(0,0,caiji_ad2);// a=d*a+212.009;u=u*u*a+u*b+c;sprintf(caiji_wd,"WD:%0.4f c",u);OLED_ShowString_1(0,1,caiji_wd);Send_D(caiji_wd);delay_ms1(7000);}

LMT70的电压和温度换算 芯片手册



LMT70不是线性的变换但是有2-4阶的换算方法

这个时候巴发云服务器上的值就是当前采集的温度数值
接下来讲终端获取数值的方法
(1)HTTP API




返回

(2)APP(因为受众可能基础有限)

改这里

项目会打包放在文末
(3)Siri获取目标温度值


之前做的一个POST请求改下代码就好

<?php
header("Content-type:text/html;charset=utf-8");
function do_get($url, $params) {        $url = "{$url}?" . http_build_query ( $params );        $ch = curl_init ();curl_setopt ( $ch, CURLOPT_URL, $url );curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );curl_setopt ( $ch, CURLOPT_TIMEOUT, 60 );curl_setopt ( $ch, CURLOPT_POSTFIELDS, $params );        $result = curl_exec ( $ch );curl_close ( $ch );        return $result;}
$url="http://api.bemfa.com/api/device/v1/data/1/";
$url1="http://api.k780.com";  $params=array('uid'=>'00707191f3be0f51d761373e8ab69ba7','topic'=>'mytemp' );  $params1=array('app'=>'weather.pm25','weaid'=>'jinhua' ,'appkey'=>'49600','sign'=>'99c0d89fda1545fcfc34b86be5fcc561','format'=>'json');$k=0;
$kb=0;
$wz[6]=array();
$data[7]=array();
$var="chushihua";
$result=do_get($url, $params);
$arr = json_decode($result,true);
$var=$arr["msg"];
for($ia=0;$ia<strlen($var);$ia++){if($var[$ia]=='#'){$wz[$k]=$ia;$k=$k+1;}
}
for($ib=0;$ib<6;$ib++){$data[$ib]=substr($var, $wz[$ib]+1, $wz[$ib+1]-$wz[$ib]-1);
}
$result1=do_get($url1, $params1);
$data[2]=$result1[result][aqi];
if($data[3]!="0"){$d3="口罩内部空气质量不合格";}
else $d3="口罩内部空气质量合格";
if($data[4]!="0"){$d4="请注意!宁已经饮酒";}
else $d4="非常不错,没有饮酒";
$total="主子的当前体温为"."(int)$data[0]+9"."摄氏度当前心率为".$data[1]."当前地区空气质量指数为".$data[2]."微克每立方米".$d3.$d4;echo $total;?>

然后再iphone捷径上配置

这个时候只需要对Siri说查询当前温度1然后Siri就会访问目标php 目标php对巴发云进行post请求返回目标温度

一种有手就行的物联网平台的多终端接入方法相关推荐

  1. Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-应用订阅端(北向应用)

    之前实现了使用Springboot+Netty基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备),模拟设备发送的数据给到了AIOT平台,那么在第三方应用也需要去 ...

  2. 物联网平台企业版:设备接入实例节点开发实战——实践类

    IoT物联网平台-实例化开发实战 前言 物联网平台企业版支持用户创建实例,用于设备接入和业务管理.企业版有一下优势: 根据业务规模,购买匹配的实例规格,可大幅节约您的成本. 实例规格按需选择,避免触达 ...

  3. 阿里物联网平台“云产品流转”设置方法(新版)

    今天得空,研究一下阿里物联网平台新版"云产品流转"设置方法.手头只有一片ESP32,考虑先将消息发送给平台,然后平台再将消息转发给自己,这样消息转了一圈,还是回到自己手里!主要目的 ...

  4. 揭秘 | 阿里云IoT物联网平台亿级设备接入方案大揭秘

    一.前言 不同的接入层 互联网的产品基本都需要解决终端的接入问题,每个接入层会因为终端数量.终端能力.网络环境等不同的因素有各自的设计特性,比如:淘宝网需要解决海量短连接问题.微信需要解决海量长连接问 ...

  5. 阿里云物联网平台创建产品设备的方法

    一.首先在阿里云云平台注册一个账号: 二.进入物联网平台 (aliyun.com),点击公共实例 三.点击左侧产品中的创建产品 四.在弹出的界面填写相关的产品信息:(由于是我用的是ESP8266,我选 ...

  6. Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备)

    电信的天翼物联网平台CTWing(AIOT)原先是我们俗称的aep,主要用于接入nb-iot设备,当然也可以接入其他的设备,在熟悉AIOT平台后,做后端的我有时候急需终端样品(智能门禁,支付识别终端, ...

  7. 万物互联!盘点国内八大物联网平台

    本文是对马智撰写的<国内物联网平台初探>系列文章的整理. 作者:马智.北京资信物联科技有限公司联合创始人兼研发总监. 责编:贾维娣.关注物联网领域,寻求报道或投稿请邮件联系 jiawd@c ...

  8. 电信物联网平台ctwing对接开发-平台概述

    本课时帮助大家快速熟悉和了解中国电信物联网平台 平台简介 通用使能平台是中国电信倾力打造的智能终端汇聚.应用开发运行服务和轻量级应用提供的物联网平台,旨在降低物联网应用开发的准入门槛,降低智能硬件的接 ...

  9. 关于NB-IOT模块链接阿里物联网平台的学习笔记-记录

    关于NB-IOT模块链接阿里物联网平台思路的学习笔记-记录 叙述 调试思路总结 调试过程 AT命令-方式一 AT命令-方式二 AT命令-方式三 软件 关于遇到问题 总结 叙述 前一段是写了一篇&quo ...

最新文章

  1. 几个定制 iTerm2 的 tip
  2. PHP服务器端语言是什么意思,PHP作为服务器端语言,有哪些优点?
  3. springboot python整合_SpringCloud 整合 Python - Flask
  4. Android实用代码七段(二)
  5. php 计算数组的差值,数组计算差值及项的小计,该如何处理
  6. 量化策略回测ocobreak
  7. [在职软件工程]面向对象的分析与设计
  8. 表达式求值——数据结构严蔚敏C语言版栈数据结构课后练习
  9. YQMKPAT(CAD图案填充插件)v2.1绿色版
  10. Facebook账号注册需要注意什么?Facebook养号技巧?
  11. 使用html框架制作一个网站布局
  12. Python在WRF模型自动化运行及前后处理中的应用
  13. 20190325 Django自定义过滤器和自定义模板标签
  14. 手机网络邻居访问电脑_通过WiFi局域网在手机上观看电脑上的视频
  15. 掌握 Windows 命令行界面:常用 DOS 命令简介
  16. swfupload图片上传
  17. (转)C#中Abstract和Virtual
  18. 计算机网络之网络安全基础-身份认证
  19. 电子商城数据库建表心得
  20. 卡西欧计算机有哪些功能介绍,卡西欧991计算机功能(考前必看)

热门文章

  1. Flutter 多渠道打包详解(埋点统计系列文章)
  2. 安卓进入debug模式
  3. Windows7建立共享WiFi设置(局域网配置)
  4. mahout类似的开源项目
  5. 网罗全网最优质AI社区!
  6. UniAPP-Android原生插件开发与打包
  7. char s[],char *s,char **s与char *s[]
  8. 【定时任务】Springboot定时任务
  9. 小型便携式AIS接收机dAI01
  10. H指数问题(USACO)