标题:
stm8裸奔物联网
[打印本页]
作者:
hubaba
时间:
2016-3-30 18:44
标题:
stm8裸奔物联网
之前玩过ardunio,但发现很多元程序自己都无法修改,也不知道怎么去该,还是c语言自己写的比较容易看懂,了解清楚。今天向大家介绍三个物联网平台:yeelink,乐为联网,传感云,当然还有什么机智云,氦氪云什么的,iotgo,太多了。当然我也发现论坛里有人发些qq物联的资料,但发现也没有人去做,看他的api文档,我也是云里雾里,级别不够就玩不起了。我就简单介绍下下面三个国内的小公司平台。
yeelink,以前的网站做着还可以,现在自从被小米收购了,感觉还是之前的老样子,额米有什么改观,只是用用而已,测试下就不错了。
这是我写的程序,有些乱,也没有注释,只是做为参考来用。
WiFi模块调试.zip
(845.84 KB, 下载次数: 9)
2016-3-30 18:44 上传
点击文件名下载附件
下载积分: 黑币 -5
部分源码预览:
extern uchar UART1_sendchar(unsigned char c);
extern void UART1_sendstr(unsigned char *dat);
#define USERKEY "e84c3784af864fb0bb70fd33cb434a45"
uint t2;//每秒执行一条指令时间
uint t3;//发送一条数据命令时间
uchar wendu=20,shidu=30;
uint zhiliang=10;
char *flag1,flag2,flag3;
void esp8266_printf(uchar *pch,uint len)
{
while((len!=0)&&(*pch!='\0'))
{
UART1_sendchar(*pch);
pch++;
len--;
}
UART1_sendstr("\r\n");
}
void esp8266_uint_to_string(uint number)
{
uint i;
uint nTmp;
//感觉这写法怪怪的吗?干嘛不for(i=1;i<5;i++) 因为这样不需要使用库函数pow()
for(i=10000;i>=1;i=i/10)
{
nTmp = number/i;
if(nTmp >=1 )
UART1_sendchar(nTmp%10 + 0x30);
}
}
//strstr算法
char *strstr(uchar *s1,uchar *s2)
{
int n;
if(*s2)
{
while(*s1)
{
for( n=0; *(s1+n) == *(s2+n); n++)
{
if( !*(s2 + n +1) )
return (char *)s1;
}
s1++;
}
return 0;
}
else
return (char *)s1;
}
//计算机算法
char * strstr2 ( uchar * str1, uchar * str2)
{
char *cp = (char *) str1;
char *s1, *s2;
if ( !*str2 )
return((char *)str1);
while (*cp) //该算法以str2为基准在str1逐字节匹配
{
s1 = cp;
s2 = (char *) str2;
while ( *s1 && *s2 && !(*s1-*s2) )
s1++, s2++;
if (!*s2) //如果s2在和s1比较中提前结束,那么说明匹配成功
return(cp);
cp++;
}
return(0);
}
void esp8266_cissend(uchar wangguan,uchar len)
{
uchar i;
UART1_sendstr("AT+CIPSEND=");
i=wangguan+'0';
UART1_sendchar(i);
UART1_sendstr(",");
esp8266_uint_to_string(len);
UART1_sendstr("\r\n");
}
uchar getLength(int someValue) {
// there's at least one byte:
uchar digits = 1;
// continually divide the value by ten,
// adding one to the digit count for each
// time you divide, until you're at 0:
int dividend = someValue /10;
while (dividend > 0) {
dividend = dividend /10;
digits++;
}
// return the number of digits:
return digits;
}
void esp8266_send_string(uchar wangguan,uchar len,uchar *pch) //局域网络内传输信息
{
if(t2>30) //30秒后进入数据发送阶段
{
switch(t3)
{
case 0:UART1_sendstr("AT+CIPSTART=0,\"TCP\",\"192.168.0.100\",8080\r\n");t3=0;break;
case 1:esp8266_cissend(wangguan,len);
t3=1;
break;
case 2:esp8266_printf(pch,len);t3=2;break;
default:break;
}
}
}
void esp8266_post_internet() //网络服务器传输信息 30秒更新一次数据
{
if(t2>250)
{
uchar i;
switch(t3)
{
case 0:UART1_sendstr("AT+CIPSTART=1,\"TCP\",\"tcp.lewei50.com\",9960\r\n");break;
case 40:esp8266_cissend(1,87);break; //固定数值不变
// case 87:Multiple_read_HMC5883();break;
case 88:dh11_read(0);break;
case 89:dh11_read(1);break;
case 90:
UART1_sendstr("{\"method\": \"update\",\"gatewayNo\": \"01\",\"userkey\": \"e84c3784af864fb0bb70fd33cb434a45\"}&^!");
zhiliang=adc_scan()+1;
break;
case 160:
i=getLength(wendu)+getLength(shidu)+getLength(zhiliang);
esp8266_cissend(1,119+i);break;
case 200:UART1_sendstr("{\"method\": \"upload\",\"data\":[{\"Name\":\"shidu\",\"Value\":\"");
esp8266_uint_to_string(shidu);
UART1_sendstr("\"},{\"Name\":\"wendu\",\"Value\":\"");
esp8266_uint_to_string(wendu);
UART1_sendstr("\"},{\"Name\":\"zhiliang\",\"Value\":\"");
esp8266_uint_to_string(zhiliang);
UART1_sendstr("\"}]}&^!");
break;
case 270:UART1_sendstr("AT+CIPSTART=0,\"TCP\",\"tcp.lewei50.com\",9960\r\n");break;
default:break;
}
if(++t3>=300)
t3=0;
}
}
void esp8266_init(void)
{
switch(t2)//十五秒内启动入网程序
{
case 2:PC_DDR|=0x04;PC_CR1|=0x04;PC_CR2|=0x04;PC_ODR|=0X04;break;
case 3:PC_ODR&=~0x04;break;
case 4:PC_ODR|=0X04;break;
case 20:UART1_sendstr("AT+RST\r\n");break; //重启
case 70:UART1_sendstr("AT+CWMODE=3\r\n");break; //发送工作模式
case 100:UART1_sendstr("AT+CWJAP=\"dadangjia\",\"39203806\"\r\n");break; //发送连接密码
case 130:UART1_sendstr("AT+CIPMUX=1\r\n");break; //开启多连接状态
case 160:UART1_sendstr("AT+CIPSERVER=1,8080\r\n");break; //开启服务器模式
case 190:UART1_sendstr("AT+CIPSTART=0,\"TCP\",\"192.168.0.100\",8080\r\n");break; //本地路由网络链接
// case 260:UART1_sendstr("AT+CIPSTART=1,\"TCP\",\"42.121.128.216\",9960\r\n");break;
default:break;
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1