久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
關于利用GSM模塊上傳三路溫濕度數據到onenet 沒任何反應,僅僅可以發短信
[打印本頁]
作者:
臉盲啊
時間:
2020-4-29 21:30
標題:
關于利用GSM模塊上傳三路溫濕度數據到onenet 沒任何反應,僅僅可以發短信
利用GSM模塊上傳數據到onenet,沒任何反應,僅僅可以發短信。
程序:
#include "reg52.h"
#include "type.h"
#include <string.h>
#include <stdio.h>
bit flag;
uchar model=0; //模式
uchar temp1H=35; //上限值
uchar temp2H=35; //上限值
uchar temp3H=35; //上限值
uchar hum1H=50; //上限值
uchar hum2H=50; //上限值
uchar hum3H=50; //上限值
uchar temp_L=10;
uchar date[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char temp1=0,temp2=0,temp3=0,hum1=0,hum2=0,hum3=0;
#define SEND_MESSA_TO_YOUR "at+cmgs=\"185*****436\"\r\n" //填入你手上的手機號碼 不是板子的
#include "LCD1602.H"
sbit set=P1^6;
sbit add=P3^5;
sbit min=P3^4;
sbit beep=P3^6;
sbit led1=P1^2;
sbit led2=P1^1;
/***********模擬開關*********************/
sbit CS_4052=P1^0;
sbit B_4052=P1^1;
sbit A_4052=P1^2;
uchar fen=0; //定時發送短信計時
bit sendFlag=0; //發送短信標志
void delay1ms(unsigned int ms)//延時1毫秒(不夠精確的)
{unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}
void Uart_Send(uchar dat) //發送一字節
{
SBUF=dat;
while(!TI);
TI=0;
}
//發送一串字符到串口
void Uart_Sends(char* data_at)
{
unsigned char cnt=0;
while(*(data_at+cnt)) //判斷一串數據是否結束
{
Uart_Send(*(data_at+cnt));
cnt++;
}
}
void select(uchar num)
{
if(num==1) //上位機串口使能
{
CS_4052=0;
B_4052=0;
A_4052=0;
}
else if(num==2) //CC2530串口使能
{
CS_4052=0;
B_4052=0;
A_4052=1;
}
else if(num==3) //wifi串口使能
{
CS_4052=0;
B_4052=1;
A_4052=0;
}
}
//發送短信函數
void Send_SMS(void)
{
uchar yy=1;
select(1); //GSM模塊串口使能
delay1ms(100);
Uart_Sends("AT+CMGF=1\r");//設置中文方式發送
delay1ms(800);
delay1ms(1000);
Uart_Sends(SEND_MESSA_TO_YOUR);
delay1ms(1000);
switch (yy)
{
case 1 : Uart_Sends("wendu1=\r\n");
Uart_Send(temp1/10+0x30);
Uart_Send(temp1%10+0x30);
Uart_Sends(",wendu2=");
Uart_Send(temp2/10+0x30);
Uart_Send(temp2%10+0x30);
Uart_Sends(",wendu3=");
Uart_Send(temp3/10+0x30);
Uart_Send(temp3%10+0x30);
Uart_Sends("\r\nshidu1=\r\n");
Uart_Send(hum1/10+0x30);
Uart_Send(hum1%10+0x30);
Uart_Sends(",shidu2=");
Uart_Send(hum2/10+0x30);
Uart_Send(hum2%10+0x30);
Uart_Sends(",shidu3=");
Uart_Send(hum3/10+0x30);
Uart_Send(hum3%10+0x30);
Uart_Sends("\r\n");
if(temp1>temp1H)
{
Uart_Sends("wendu1 Warning!!!\r\n");
}
if(temp2>temp2H)
{
Uart_Sends("wendu2 Warning!!!\r\n");
}
if(temp3>temp3H)
{
Uart_Sends("wendu3 Warning!!!\r\n");
}
if(hum1>hum1H)
{
Uart_Sends("hum1 Warning!!!\r\n");
}
if(hum2>hum2H)
{
Uart_Sends("hum2 Warning!!!\r\n");
}
if(hum3>hum3H)
{
Uart_Sends("hum3 Warning!!!\r\n");
}
break; //煙霧報警
}
Uart_Send(0x1a);//以0x1a來結束,表示內容結束,發送短信
}
void key()
{
uchar i=0;
if(!set) //檢測設置按鍵
{
while(!set);
model++;
if(model==7)
{
model=0;
}
if(model==1)//設置模式顯示
{
WRITE_LCD1602_COM(0x80);
for(i=0;i<16;i++)
WRITE_LCD1602_DAT(DIS_TAB3[i]);
WRITE_LCD1602_COM(0x80+0x40);
for(i=0;i<16;i++)
WRITE_LCD1602_DAT(DIS_TAB4[i]);
WRITE_LCD1602_COM(0x80+0x40+9);
}
else if(model==0)//正常模式顯示
{
WRITE_LCD1602_COM(0x80);
for(i=0;i<16;i++)
WRITE_LCD1602_DAT(DIS_TAB1[i]);
WRITE_LCD1602_COM(0x80+0x40);
for(i=0;i<16;i++)
WRITE_LCD1602_DAT(DIS_TAB2[i]);
WRITE_LCD1602_COM(0x80+0x40+9);
}
}
else if(!add)
{
while(!add);
switch(model)
{
case 1: if(temp1H<90) temp1H++; break;
case 2: if(temp2H<90) temp2H++; break;
case 3: if(temp3H<90) temp3H++; break;
case 4: if(hum1H<90) hum1H++; break;
case 5: if(hum2H<90) hum2H++; break;
case 6: if(hum3H<90) hum3H++; break;
default:break;
}
}
else if(!min)
{
while(!min);
switch(model)
{
case 1: if(temp1H>0) temp1H--; break;
case 2: if(temp2H>0) temp2H--; break;
case 3: if(temp3H>0) temp3H--; break;
case 4: if(hum1H>0) hum1H--; break;
case 5: if(hum2H>0) hum2H--; break;
case 6: if(hum3H>0) hum3H--; break;
default:break;
}
}
}
void beeps()
{
static uchar count;
count++;
if(count<20)
beep=0;
else if(count<40)
beep=1;
else
count=0;
}
void control()//報警檢測控制
{
static uchar flagsend=0;
if((temp1>temp1H)||(temp2>temp2H)||(temp3>temp3H)||
(hum1>hum1H)||(hum2>hum2H)||(hum3>hum3H)) //溫度控制
{
beeps(); // 蜂鳴器報警
if(flagsend==0)
{
flagsend=1;
Send_SMS();
}
}
else
{
flagsend=0;
beep=1;// 關閉蜂鳴器報警
}
}
void rec_cc2530data()
{
select(2); //選通 cc2530 串口
ES=1; //串口接收中斷
if(date[0]==0x55)
{
date[0]=0;
if((date[1]==1)&&(date[2]+date[3]==date[4])) //第一路 數據
{
date[1]=0;
temp1=date[2];
hum1=date[3];
}
if((date[1]==2)&&(date[2]+date[3]==date[4])) //第二路
{
date[1]=0;
temp2=date[2];
hum2=date[3];
}
if((date[1]==3)&&(date[2]+date[3]==date[4])) //第三路
{
date[1]=0;
temp3=date[2];
hum3=date[3];
}
}
}
void GsmInit()
{
select(1); //打開上位機串口
Uart_Sends("AT+CIPCLOSE\r\n");
delay1ms(1000);
Uart_Sends("AT+CIPSHUT\r\n");
delay1ms(1000);
Uart_Sends("AT+CREG?\x00D\x00A");
delay1ms(1000);
Uart_Sends("AT+CGATT=1\r\n");
delay1ms(1000);
Uart_Sends("AT+CIPRXGET=0\r\n");
delay1ms(1000);
Uart_Sends("AT+CSTT=CMIOT\r\n");
Uart_Sends("AT+CIICR\r\n");
delay1ms(1000);
Uart_Sends("AT+CIPRXGET=0\r\n");
delay1ms(1000);
Uart_Sends("AT+CIPQRCLOSE=1\r\n");
delay1ms(1000);
Uart_Sends("AT+CIPMODE=0\r\n");
delay1ms(1000);
Uart_Sends("AT+CIPSTART=\"TCP\",\"183.230.40.33\",\"80\"\r\n");//此處修改你建立服務器的IP,服務器端口號8080
delay1ms(1000);
// Uart_Sends("AT+CIPSEND\r\n");
// delay1ms(1000);
//SendString("POST /devices/1100286/datapoints?type=3 HTTP/1.1\r\n");
Uart_Sends("POST /devices/594614665/datapoints?type=3 HTTP/1.1\r\n"); //將數字修改為自己的設備id)
delay1ms(1000);
Uart_Sends("Host:api.heclouds點com\r\n");
delay1ms(1000);
//SendString("api-key:DcQ2NF=70s3j3=mlsFXfPod1kaY=\r\n");
Uart_Sends("api-key: RJPjiEVRqddktp2OP5mbn=qiWWI=\r\n"); //這里填寫自己的API-key
delay1ms(1000);
}
void SendGprsData(uchar *sendbuf) //ADD
{
unsigned char lenbuf[4];
select(1);
delay1ms(1000);
Uart_Sends("AT+CIPSEND=");
sprintf(lenbuf,"%d",strlen(sendbuf));
Uart_Sends(lenbuf);
Uart_Sends("\r\n");
delay1ms(1000);
Uart_Sends(sendbuf);
Uart_Sends(0x1a);//ADD
delay1ms(1000);
}
void Timer0Init(void) //50毫秒@11.0592MHz
{
TMOD &= 0xF0; //設置定時器模式
TMOD |= 0x01; //設置定時器模式
TL0 = 0x00; //設置定時初值
TH0 = 0x4C; //設置定時初值
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
ET0=1;
}
bit SendGprsFlag=0,GsmInitFlag=0;
idata unsigned char SendBuf[26];
void main()
{
init_1602();
TMOD=0x20; // T1定時方式2
SCON=0x40;//串行工作 方式1
PCON=0x00; //不加倍
TH1=TL1=0xfd; //定時器1賦初值 保證波特率9600
TR1=1; //開定時器1
REN=1; //允許串口接收
ES=1; //打開串口中斷
EA=1; //開總中?
Timer0Init();
GsmInit(); //sim800初始化 ******ADD
while(1)
{
control(); //控制
key(); //按鍵功能
if(SendGprsFlag==1) //1一分鐘向GPRS發送一次數據
{
SendGprsFlag=0; //ADD
if(GsmInitFlag==0)
{
GsmInitFlag=1;
GsmInit(); //H1:50%,
} //T1:23C,
sprintf(SendBuf,"T1:%2dC,T2:%2dC,T2:%2dC\r\n",(unsigned int)temp1,(unsigned int)temp2,(unsigned int)temp3);
SendGprsData(SendBuf);
delay1ms(1000);
sprintf(SendBuf,"H1:%2%%,H2:%2%%,H3:%2%%\r\n",(unsigned int)hum1,(unsigned int)hum2,(unsigned int)hum3);
SendGprsData(SendBuf);
}
if(sendFlag==0)
{
sendFlag=1; //代表已經發過一次,不在發了
Send_SMS(); //發送短信
}
rec_cc2530data();
delay1ms(50);
display();
}
}
void serial()interrupt 4 //串口中斷服務函數
{
static uchar j;
if(!RI);
RI=0; //清楚接收完畢標志
date[j]=SBUF;
if(date[0]==0x55) //判斷接收到的第一位為傳感器所發數據
j++;
else
j=0;
if(j==5) //接收傳感器所發數據字節
j=0;
}
void timer0() interrupt 1 //50ms
{
static uchar count=0,miao=0;
TL0 = 0x00; //設置定時初值
TH0 = 0x4C; //設置定時初值
count++;
if(count>20)
{
count=0;
miao++;
if(miao>60)
{
miao=0;
fen++;
if(fen>=1)
{
fen=0;
sendFlag=0;
}
}
}
}
復制代碼
接收機-程序.zip
2020-4-29 21:30 上傳
點擊文件名下載附件
102.51 KB, 下載次數: 9
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
人成精品
|
国产精品高清在线
|
久久久久国产精品
|
亚洲国产成人在线视频
|
欧美福利
|
成人伊人
|
精品无码久久久久久久动漫
|
在线观看国产三级
|
亚洲欧美另类在线观看
|
人人干人人舔
|
精品视频网
|
日本福利视频
|
免费看国产a
|
美国黄色一级片
|
中日字幕大片在线播放
|
91久久国产综合久久
|
嫩草影院网址
|
日韩精品在线播放
|
中文字幕视频在线看5
|
欧美日韩国产在线观看
|
国产精品久久久爽爽爽麻豆色哟哟
|
日本不卡一区二区三区在线观看
|
亚洲综合色丁香婷婷六月图片
|
成人午夜免费福利视频
|
亚洲小视频在线播放
|
男女国产网站
|
国产精品久久久久久久免费大片
|
草久久免费视频
|
国产精品区一区二区三区
|
亚洲一区二区三区四区在线观看
|
嫩草懂你的影院入口
|
日韩区
|
99精品久久久
|
爱综合
|
久久久久久一区
|
亚洲视频在线一区
|
成人国产一区二区三区精品麻豆
|
欧美国产日韩一区
|
久久久久国产一区二区三区四区
|
久久中文字幕一区
|
日韩欧美在线精品
|