之前玩過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;
- }
- }
復制代碼
|