收藏官网首页
查看: 138394|回复: 58

[开源项目] 基于ESP8266 SOC方案,继电器开关,DS18B20温度【开源】

 

1

主题

13

帖子

1018

积分

金牌会员

Rank: 6Rank: 6

积分
1018
发表于 2017-4-11 17:58:17 | 显示全部楼层 |阅读模式
教您5分钟接入机智云,实现傻瓜式开发
本帖最后由 Genius 于 2017-4-20 12:35 编辑

GizAsst 基于机智云esp8266-12F SOC方案包含 1颗LED 1个继电器 1个 DS18B20温度传感器都是低电平触发。数据点定义 和 GPIO接线 请看图

pic.png

  • 别忘了 gizwits_protocol.h 里面定义
  1. /**@name Product Key (产品标识码)
  2. * @{
  3. */
  4. #define PRODUCT_KEY "xxxxxxxxxxxxxxxxxxxxxxx"
  5. /**@} */
  6. /**@name Product Secret (产品密钥)
  7. * @{
  8. */
  9. #define PRODUCT_SECRET "xxxxxxxxxxxxxxxxxxxxxxx"
复制代码


  • releases提供已编译好的固件


源码 github:https://github.com/535/GizAsst

1

主题

13

帖子

1018

积分

金牌会员

Rank: 6Rank: 6

积分
1018
 楼主| 发表于 2017-4-14 12:34:07 | 显示全部楼层
本帖最后由 Mango! 于 2017-4-14 12:43 编辑
peter58 发表于 2017-4-12 19:56
谢谢,下来学习下,下载得好慢哦,能加定时就好了我的温度怎么显示是341呢?我这里实际温度只有20-22度
...

根据机智云的文档, 机智云存的是正整数。
所以 需要根据偏移 和 分辨率做转换。以兼容负数和小数。
我这个数据点范围是-10 ~ 40   分辨率0.1 , 偏移量则是-10
可根据各自数据点的设置自己修改  /app/driver/ds18b20.c   344行
读数341*0.1-10 = 24.1度

给几个例子
44数值*0.1-10 =-5.6℃
498数值*0.1-10=39.8℃

(-8.5℃+10)/0.1 =数值15
(17.3℃+10)/0.1 =数值273

点评

按照指点在/app/driver/ds18b20.c 344行下面加了一条指令: temp=(temp*0.1)-10; 温度正值显示正常,负值并没有出现,而是大于4000的数值: -1度 对应 4095 -2度 对应 4094 -3度 对应 4093 -4度 对应 4092 ..  详情 回复 发表于 2018-12-30 20:03
兄弟,我这边用了楼主的驱动代码,但是数据总是会显示两个,来回发送,为啥啊  详情 回复 发表于 2018-11-20 08:46

0

主题

35

帖子

350

积分

中级会员

Rank: 3Rank: 3

积分
350
发表于 2018-5-15 22:24:19 | 显示全部楼层
张师傅的小跟班 发表于 2018-3-23 10:25
我要是想修改GPIO口的话,我应该在上面地方进行修改呢?有没有大神啊

以下是输出控制

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(0), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_GPIO1);  //TXD
      GPIO_OUTPUT_SET(GPIO_ID_PIN(1), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(2), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_GPIO3);  //RXD
      GPIO_OUTPUT_SET(GPIO_ID_PIN(3), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(4), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U, FUNC_GPIO5);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(5), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA2_U, FUNC_GPIO9);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(9), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA3_U, FUNC_GPIO10);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(10), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(12), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(13), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(14), level);

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15);
      GPIO_OUTPUT_SET(GPIO_ID_PIN(15), level);

      gpio16_output_conf();
      gpio16_output_set(level);

以下是输入采集

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(0));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_GPIO1);  //TXD
      result = GPIO_INPUT_GET(GPIO_ID_PIN(1));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(2));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_GPIO3);  //RXD
      result = GPIO_INPUT_GET(GPIO_ID_PIN(3));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(4));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U, FUNC_GPIO5);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(5));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA2_U, FUNC_GPIO9);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(9));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA3_U, FUNC_GPIO10);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(10));


      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(12));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(13));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(14));

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15);
      result = GPIO_INPUT_GET(GPIO_ID_PIN(15));

      gpio16_input_conf();
      result = gpio16_input_get();

8

主题

144

帖子

3308

积分

论坛元老

Rank: 8Rank: 8

积分
3308
发表于 2017-4-27 17:28:17 | 显示全部楼层
本帖最后由 peter58 于 2017-4-27 17:38 编辑
Mango! 发表于 2017-4-14 12:34
根据机智云的文档, 机智云存的是正整数。
所以 需要根据偏移 和 分辨率做转换。以兼容负数和小数。
我这 ...

你好,我和你的数据点一样,程序里的344行 temp=((temp*0.0625)+10)*10;这里需要怎么修改呢?我需要怎么修改才可以得到实际的温度呢?是修改偏移量还是修改哪里?谢谢

点评

temp=(temp*0.0625) 就行了  详情 回复 发表于 2018-5-21 12:04
改成功了嗎?? 依實際的算法下去做修改即可!  详情 回复 发表于 2017-8-26 14:38

2

主题

13

帖子

173

积分

注册会员

Rank: 2

积分
173
发表于 2017-4-14 18:28:06 | 显示全部楼层
汉枫LPB120模块
楼主没给硬件接线图;从“数据点”备注中可以看出来。
18B20接GPIO5;
LED接GPIO12;
Switch接GPIO14;
按键KEY接GPIO4;

3

主题

13

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
发表于 2017-4-11 20:17:38 | 显示全部楼层
gpio接线图在哪

1

主题

13

帖子

1018

积分

金牌会员

Rank: 6Rank: 6

积分
1018
 楼主| 发表于 2017-4-11 22:56:47 | 显示全部楼层

???
数据点的备注写了

10

主题

112

帖子

1545

积分

金牌会员

Rank: 6Rank: 6

积分
1545
发表于 2017-4-11 23:21:24 | 显示全部楼层
谢谢楼主分享,继电器能添加定时程序吗?能给讲讲吗?

0

主题

5

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2017-4-11 23:42:16 | 显示全部楼层
汉枫LPB120模块
定时程序怎么实现(SOC方案)

8

主题

144

帖子

3308

积分

论坛元老

Rank: 8Rank: 8

积分
3308
发表于 2017-4-12 19:56:05 | 显示全部楼层
itt 发表于 2017-4-11 23:42
定时程序怎么实现(SOC方案)

谢谢,下来学习下,下载得好慢哦,能加定时就好了

8

主题

144

帖子

3308

积分

论坛元老

Rank: 8Rank: 8

积分
3308
发表于 2017-4-12 19:56:45 | 显示全部楼层
本帖最后由 peter58 于 2017-4-12 22:31 编辑

谢谢,下来学习下,下载得好慢哦,能加定时就好了我的温度怎么显示是341呢?我这里实际温度只有20-22度

点评

一样的问题,同问?  详情 回复 发表于 2017-4-14 11:31

3

主题

9

帖子

145

积分

注册会员

Rank: 2

积分
145
发表于 2017-4-13 00:03:42 | 显示全部楼层
请问 一下 您是用有底板stm32的Gokit?我也是SOC方案,但是我不知道要怎么烧写到板子上,直接插下面的串口吗?

10

主题

112

帖子

1545

积分

金牌会员

Rank: 6Rank: 6

积分
1545
发表于 2017-4-14 08:32:35 | 显示全部楼层
itt 发表于 2017-4-11 23:42
定时程序怎么实现(SOC方案)

MCU方案您有定时案例吗?除了机智云上的,我重复不了机智云上的案例,折腾了好久实现不了控制,及定时控制。

1

主题

9

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2017-4-14 09:50:25 | 显示全部楼层
教您5分钟接入机智云,实现傻瓜式开发
正在做毕设  我用一个烧了GAgent的ESP8266-12F  连接一个DS18B20   把温度数据传给机智云,用soc方案,下载的代码包需要改什么呢     完全蒙逼了   

点评

如果你保持楼主的接线不动的话,只要改一下gizwits_protocol.h中的PRODUCT_KEY和PRODUCT_SECRET就能用了  详情 回复 发表于 2017-4-14 11:30

2

主题

13

帖子

173

积分

注册会员

Rank: 2

积分
173
发表于 2017-4-14 11:30:50 | 显示全部楼层
远远看你 发表于 2017-4-14 09:50
正在做毕设  我用一个烧了GAgent的ESP8266-12F  连接一个DS18B20   把温度数据传给机智云,用soc方案,下载 ...

如果你保持楼主的接线不动的话,只要改一下gizwits_protocol.h中的PRODUCT_KEY和PRODUCT_SECRET就能用了

点评

我试试  详情 回复 发表于 2017-4-15 23:44

2

主题

13

帖子

173

积分

注册会员

Rank: 2

积分
173
发表于 2017-4-14 11:31:40 | 显示全部楼层
peter58 发表于 2017-4-12 19:56
谢谢,下来学习下,下载得好慢哦,能加定时就好了我的温度怎么显示是341呢?我这里实际温度只有20-22度
...

一样的问题,同问?

点评

已回复  发表于 2017-4-14 12:44

1

主题

13

帖子

1018

积分

金牌会员

Rank: 6Rank: 6

积分
1018
 楼主| 发表于 2017-4-14 12:34:53 | 显示全部楼层
本帖最后由 Mango! 于 2017-4-14 12:42 编辑

本源码还一个 key按钮 接的是 GPIO4  长按是切换airlink

27

主题

89

帖子

742

积分

高级会员

Rank: 4

积分
742
发表于 2017-4-14 15:43:01 | 显示全部楼层
感谢分享!。硬件接线图在哪?

7

主题

12

帖子

208

积分

中级会员

Rank: 3Rank: 3

积分
208
发表于 2017-4-14 23:28:34 | 显示全部楼层
教您5分钟接入机智云,实现傻瓜式开发
转转,分享,大家一起学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表