[Python玩转物联网]Micropython I2C实验

本文将介绍如何使用ESP8266 Nodemcu的I2C模块读取VOC传感器模块的VOC数据。面包板的连接如下图:

面包板连接示意图
ESP8266 Nodemcu引脚图

I2C是飞利浦公司发明的一种总线协议,在硬件方面有大量的运用,这个协议需要用到两根数据线如下:

i2c.png

一个总线上只能有一个Master,Master负责总线的控制和仲裁。ESP 8266即可以初始化为Master也可以作为client,今天我们会使用Master功能来读取VOC传感器的数据,GPIO14作为SDA,GPIO12作为SCL,CLK为50KHz:

import machine
voc_dev = machine.I2C(scl = machine.Pin(14), sda = machine.Pin(12), freq = 50000)

这个时候我们用scan功能可以快速确认总线上一共有多少个设备:

print(voc_dev.scan())

结果为:[47]
所以我们可以直接读取四个字节的结果数据:

buf = voc_dev.readfrom(47, 4, True)

4个字节的数据格式如下:

数据格式.png

针对数据格式的解析我这边用到了ustruct库来解析:

    fmt = '>BHB'
    addr,ppm,chk_val = ustruct.unpack(fmt,buf)
    #print (addr,ppm, chk_val)
    if ppm == 65535:
        pass
    voc = ppm*0.1
    print(voc)

传感器预热的时候VOC的值为65535所以这个不处理,完整的代码如下:

import machine
import ustruct
voc_dev = machine.I2C(scl = machine.Pin(14), sda = machine.Pin(12), freq = 50000)
print(voc_dev.scan())

while True:
    oc = 0.0
    buf = voc_dev.readfrom(47, 4, True)
    #print(ubinascii.hexlify(buf, ))
    fmt = '>BHB'
    addr,ppm,chk_val = ustruct.unpack(fmt,buf)
    #print (addr,ppm, chk_val)
    if ppm == 65535:
        pass
    voc = ppm*0.1
    print(voc)
    gc.collect()

运行效果图为:

运行效果图.png

以上主要讲解了I2C Master的用法,关于Micropython I2C的用法请参考:
https://docs.micropython.org/en/latest/esp8266/library/machine.I2C.html?highlight=i2c
如果想更详细的了解I2C协议,请参考:
https://en.wikipedia.org/wiki/I%C2%B2C
原文地址:http://www.jianshu.com/p/2334368fa402

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在使用单片机的过程中,I2C 通信可以说是最被广泛使用和采纳的协议之一,采用 I2C 协议可以占用更少的资源,链接...
    noparkinghere阅读 6,811评论 0 8
  • IIC通信实验 IIC简介 I²C(Inter-Integrated Circuit)字面上的意思是集成电路之间,...
    btskyrmb阅读 6,057评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 亲爱的们,这篇文章已经决定参赛,所以会放在参赛网站上去。应主编要求后面再添一些片段,所以,真正的结尾还没有来临哦!...
    黄泉花开阅读 3,505评论 8 4
  • 从进入亲子晨读群,这是我第一次写感赏日记。感赏自己做了这个重大决策,放下自己的一些事业,陪儿子到河西读书。感谢亲子...
    子云朵阅读 1,630评论 1 4

友情链接更多精彩内容