【体验】+0基础实现GPRS远程插座

准备材料:
一丶硬件部分
1.G510模块,能够在机智云淘宝店铺购买到,已经下载好固件的;
2.物联网卡一张
3.STM32F103最小系统板一块
4.插板一块
5.继电器一个(根据需求选择4 3 2 1位的继电器,我这儿采用2位继电器)
6.220转5V电源,能够拆手机充电器(建议用2A的,不能低于1A)
7.微动开关3个(一个用于继电器开关操做,此处我是长按开继电器1,短按开继电器2,还有一个用于STM32复位,还有一个用于GSM开机)
8.导线若干
9.电脑一台
10.ch340下载器(给STM32下载程序用,能够用其余的下载器)
二丶软件部分
1.keil MDK5
2.STM32CubeMX F1版本
3.浏览器
4.mcuisp下载软件(其余下载软件也能够)
5.机智云的手机APP(官网能够下载)
接下来开始制做
1.首先注册登录机智云开发者中心
2.登录以后点击右上角,建立新产品
<ignore_js_op>QQ图片20180312120117.png 
3.按照下图1234依次设置好参数,而后点5创建新的产品
<ignore_js_op>QQ图片20180312120433.png 
4.点击左面数据点
<ignore_js_op>QQ图片20180312120748.png 
5.进入数据点以后,点击新建数据点,而后按照下图中步骤进行数据点的建立
<ignore_js_op>1.png 
<ignore_js_op>2.jpg 
<ignore_js_op>3.jpg 
<ignore_js_op>4.jpg 
而后点击应用,数据点就建立完毕了
6.点击左面菜单栏的基本信息,输入密码把Product Secret:彻底显示了以后复制一下,
<ignore_js_op>QQ截图20180312121831.jpg 
7.点击菜单栏MCU开发,选择独立MCU方案,硬件平台选择STM32F103C8X,粘贴刚才复制的Product Secret,而后点击5生成代码包,等待生成代码包以后下载代码包。
<ignore_js_op>QQ图片20180312122217.png 
8.到此处云平台的设置就完成了,接下来咱们先编译生成代码生成hex下载到STM32里面(记住,先不要作任何修改,直接编译下载的文件),而后按照下面进行接线以后,通电运行(G510须要插入能上网的卡。电信卡不行)
STM32   G510
PA2-------RxD
PA3-------TxD
GND------GND
5V--------VCC
通电运行事后云端产品里面设备日志就能看见当前的IMEI(GPRS的标识码),把这个标识码复制下来备用。一下子要用到这个IMEI,

<ignore_js_op>QQ截图20180312123302.jpg 

9.二维码的生成,因为新手按照官网教程生成的二维码老是不能用,我这儿就说一下个人步骤,按照个人步骤去生成确定能用。
a.打开二维码生成地址
b.点击右上角 Authorize,在弹出对话框api_key里面输入”G”,并点击 “Authorize” 按钮
C.若是菜单没有自动打开,那么久点击default打开一下
d.展开以后点击建立二维码任务,而后把你产品的product_key复制过来粘贴在里面,product_key在产品基本信息菜单栏目里面,而后点击右边的Example Value,在左边就会看到以下内容
{
  "start_mac": "string",
  "end_mac": "string"
}
e.接下来就把2个string都换成咱们复制的IMEI,而后点下面的Try it out!
f.而后点击上面的查询二维码生成任务,输入 product_key,点击”Try it out!”,查询生成任务
<ignore_js_op>1495600196798.png 
g.复制闪图箭头那一段,在浏览器输入http://qrcode.gizwitsapi.com:1800/加你复制那一段,就能下载生成的二维码了,因为GPRS要在手机上控制只能经过扫描二维码进行,因此此步骤绝对不能出错。
10.生成二维码以后就能用手机APP扫描二维码绑定设备了。
接下来讲一下生成的工程,若是你仍是打开keil的,那么就先关闭keil。找到下载的项目文件里面的STM32F103C8x.ioc。双击打开(须要安装了STM32CubeMX 才能打开),打开以后咱们须要新增2个输出IO口用于继电器的控制,这里我新增了B3和B42个IO口,直接在PB3和PB4上面单击,选择GPIO_output,而后点击左上角剪头说是的图标生成代码,以后就完成了GPIO的初始化了,用的是hal库,会写hal的能够直接跳过此步骤。关闭STM32CubeMX 再次用keil打开工程。
<ignore_js_op>QQ截图20180312125613.jpg 
接下来咱们用一个按键接到PA8,实现长按和短按控制2个不一样继电器的开关
实现的方法就是修改void key2ShortPress(void)函数和void key2LongPress(void)函数,这里我采用2个布尔变量来表示开关状态,布尔变量是在gizwits_product的C和H函数定义的全局
具体定义地方参考最后我打包的代码,此处再也不说明
按键内容修改为以下(能够直接进行取反操做,此处我写成if新手更容易看懂)
void key2ShortPress(void)
{
        if(STA[0]) STA[0]=0;
        else STA[0]=1;
}
void key2LongPress(void)
{
        if(STA[1]) STA[1]=0;
        else STA[1]=1;
}
而后找到主函数。在while循环里面加入端口的控制
if(STA[0]==1) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
else        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
if(STA[1]==1)HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET) ;
else        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
打开gizwits_product.c,找到gizwitsEventProcess函数,
修改下面对应的内容
if(0x01 == currentDataPoint.valuesw1)
        {
          STA[0]=0;//user handle
        }
        else
        {
          STA[0]=1;//user handle    
        }
        break;
      case EVENT_sw2:
        currentDataPoint.valuesw2 = dataPointPtr->valuesw2;
        GIZWITS_LOG("Evt: EVENT_sw2 %d \n", currentDataPoint.valuesw2);
        if(0x01 == currentDataPoint.valuesw2)
        {
          STA[1]=0;//user handle
        }
        else
        {
          STA[1]=1;//user handle    
        }
此处是处理云端的数据,直接对标志位进行取反便可(标志位要用于上报)
找到userHandle函数
修改内容为
void userHandle(void)
{
        if(STA[0]) currentDataPoint.valuesw1 = 0;
                else        currentDataPoint.valuesw1 = 1;
        if(STA[1]) currentDataPoint.valuesw2 = 0;
                else        currentDataPoint.valuesw2 = 1;
}
找到,数据点初始化函数userInit,修改内容为
void userInit(void)
{
    memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));  
    /** Warning !!! DataPoint Variables Init , Must Within The Data Range **/ 
      currentDataPoint.valuesw1 = 0;
      currentDataPoint.valuesw2 = 0;
}
STA定义:在gizwits_product.c的头文件下面加入bool STA[2]={1};
在gizwits_product.h头文件下面加入extern bool STA[2];
编译下载到单片机,链接好硬件以后便可使用。附上我只作的图和源代码
若是有不懂地地方能够加我QQ问也能够加群交流点击连接加入群【电子技术交流】
<ignore_js_op>20180312_131022.jpg 
<ignore_js_op>20180312_132204.jpg 
<ignore_js_op>1520832094212.gif api

相关文章
相关标签/搜索