標題:
stm8裸奔物聯(lián)網(wǎng)
[打印本頁]
作者:
hubaba
時間:
2016-3-30 18:44
標題:
stm8裸奔物聯(lián)網(wǎng)
之前玩過ardunio,但發(fā)現(xiàn)很多元程序自己都無法修改,也不知道怎么去該,還是c語言自己寫的比較容易看懂,了解清楚。今天向大家介紹三個物聯(lián)網(wǎng)平臺:yeelink,樂為聯(lián)網(wǎng),傳感云,當然還有什么機智云,氦氪云什么的,iotgo,太多了。當然我也發(fā)現(xiàn)論壇里有人發(fā)些qq物聯(lián)的資料,但發(fā)現(xiàn)也沒有人去做,看他的api文檔,我也是云里霧里,級別不夠就玩不起了。我就簡單介紹下下面三個國內(nèi)的小公司平臺。
yeelink,以前的網(wǎng)站做著還可以,現(xiàn)在自從被小米收購了,感覺還是之前的老樣子,額米有什么改觀,只是用用而已,測試下就不錯了。
這是我寫的程序,有些亂,也沒有注釋,只是做為參考來用。
WiFi模塊調(diào)試.zip
(845.84 KB, 下載次數(shù): 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;//每秒執(zhí)行一條指令時間
uint t3;//發(fā)送一條數(shù)據(jù)命令時間
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++) 因為這樣不需要使用庫函數(shù)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逐字節(jié)匹配
{
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) //局域網(wǎng)絡內(nèi)傳輸信息
{
if(t2>30) //30秒后進入數(shù)據(jù)發(fā)送階段
{
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() //網(wǎng)絡服務器傳輸信息 30秒更新一次數(shù)據(jù)
{
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; //固定數(shù)值不變
// 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)//十五秒內(nèi)啟動入網(wǎng)程序
{
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; //發(fā)送工作模式
case 100:UART1_sendstr("AT+CWJAP=\"dadangjia\",\"39203806\"\r\n");break; //發(fā)送連接密碼
case 130:UART1_sendstr("AT+CIPMUX=1\r\n");break; //開啟多連接狀態(tài)
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; //本地路由網(wǎng)絡鏈接
// case 260:UART1_sendstr("AT+CIPSTART=1,\"TCP\",\"42.121.128.216\",9960\r\n");break;
default:break;
}
}
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1