通过USB-I2C适配器实现物联网功能(源码下载)!

Ginkgo I2C适配器简述 Ginkgo I2C适配器简述 1、I2C适配器概述 Ginkgo I2C适配器是纬图虚拟仪器有限公司自主研发的一款USB总线转I2C总线的适配器,通过该适配器用户可以非常方便地实现PC机USB总线和下位机端各种I2C设备进行通信。常见的I2C接口器件如下所示: 存储器类:AT24C02/04/08、AT24C16/64/256。 IO口扩展类:PCF8574、JLC1562。 实时时钟... 阅读详情

偶然一个机会看到Yeelink这个平台,感觉不错,利用Ginkgo USB-I2C适配器可以读写控制AM2311温湿度传感器以获取环境温湿度,以前已经实现对这个适配器读写控制并在上位机上显示温湿度数据,今天看了下Yeelink的API,不是很复杂,于是就准备将它测的数据上传到Yeelink上;
我将数据上传部分程序封装了下,用起来更简单了,上传数据或者获取数据需要用到的函数如下:

  1. int32_t WINAPI Yeelink_GetApiKey(const char *pUserName,const char *pPassword);
  2. int32_t WINAPI Yeelink_PostData(const char *pDeviceId,const char *pSensorId,const char *pValue);
  3. int32_t WINAPI Yeelink_GetData(const char *pDeviceId,const char *pSensorId,char *pValue);

复制代码

你只需要做以下工作就可以使用这些函数了:
1、在Yeelink注册一个账户,这个是必须的哈;
2、新建设备和传感器,找到设备ID和传感器ID,这个在设备管理里面的URL可以看到;
3、通过Ginkgo USB-I2C适配器获取环境中的温湿度值;

完成以上3个步骤后就可以调用这3个函数,实现将数据上传到Yeelink服务器了。
完整程序如下:

  1. // USB_I2C_AM2321B.cpp : 定义控制台应用程序的入口点。
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "ControlI2C.h"
  6. #include "yeelink.h"
  7.  
  8.  
  9. int _tmain(int argc, _TCHAR* argv[])
  10. {
  11.         int ret,i;
  12.         VII_INIT_CONFIG I2C_Config;
  13.         uint8_t write_buffer[8]={0};
  14.         uint8_t        read_buffer[8]={0};
  15.         ret = Yeelink_GetApiKey("viewtool","viewtool2013");//输入用户名和密码
  16.         if(ret != ERR_SUCCESS){
  17.                 printf("Get api key error!");
  18.                 return ret;
  19.         }
  20.         //扫描已经连接的设备
  21.         ret = VII_ScanDevice(1);
  22.         if(ret <= 0)
  23.         {
  24.                 printf("No device connect!\n");
  25.                 return ret;
  26.         }
  27.     //打开设备
  28.     ret = VII_OpenDevice(VII_USBI2C, 0, 0);
  29.     if (ret != ERR_SUCCESS)
  30.     {
  31.         printf("Open device error!\n");
  32.         return ret;
  33.     }
  34.     //初始化设备(硬件控制模式)
  35.     I2C_Config.AddrType = VII_ADDR_7BIT;
  36.     I2C_Config.ClockSpeed = 100000;
  37.     I2C_Config.ControlMode = VII_HCTL_MODE;
  38.     I2C_Config.MasterMode = VII_MASTER;
  39.     I2C_Config.SubAddrWidth = VII_SUB_ADDR_NONE;
  40.     ret = VII_InitI2C(VII_USBI2C, 0, 0, &I2C_Config);
  41.     if (ret != ERR_SUCCESS)
  42.     {
  43.         printf("Initialize device error!\n");
  44.         return ret;
  45.     }
  46.         //循环读取温湿度数据
  47.         while(1)
  48.         {
  49.                 uint8_t write_buffer[8] = {0};
  50.         //Wake up AM2311 sensor
  51.         VII_WriteBytes(VII_USBI2C, 0, 0, 0xB8, 0x00, write_buffer, 1);
  52.         //Send out read temperature and huminity command
  53.         write_buffer[0] = 0x03;
  54.         write_buffer[1] = 0x00;
  55.         write_buffer[2] = 0x04;
  56.         ret = VII_WriteBytes(VII_USBI2C, 0, 0, 0xB8, 0x00, write_buffer, 3);
  57.         if (ret != ERR_SUCCESS)
  58.         {
  59.             printf("Write data error!\n");
  60.             return ret;
  61.         }
  62.         // Read out temperature and huminity
  63.                 uint8_t read_buffer[8] = {0};
  64.         ret = VII_ReadBytes(VII_USBI2C, 0, 0, 0xB8, 0x00, read_buffer, 8);
  65.         if (ret != ERR_SUCCESS)
  66.         {
  67.             printf("Read data error!\n");
  68.             return ret;
  69.         }
  70.         else
  71.         {
  72.             double t = ((read_buffer[4] << 8) | read_buffer[5]) / 10.0;
  73.             system("cls");
  74.             printf("温度值:%.1f ℃\n",t);
  75.             double h = ((read_buffer[2] << 8) | read_buffer[3]) / 10.0;
  76.             printf("湿度值:%.1f %\n",h);
  77.                         Sleep(10000);
  78.                         char StrTmp[1024]={0};
  79.                         sprintf(StrTmp,"%.1f",t);
  80.                         ret = Yeelink_PostData("9433","14860",StrTmp);//输入设备ID和传感器ID,以及传感器数据
  81.                         if(ret != ERR_SUCCESS){
  82.                                 printf("Post data error!");
  83.                         }
  84.                         sprintf(StrTmp,"%.1f",h);
  85.                         ret = Yeelink_PostData("9433","14861",StrTmp);//输入设备ID和传感器ID,以及传感器数据
  86.                         if(ret != ERR_SUCCESS){
  87.                                 printf("Post data error!");
  88.                         }
  89.         }
  90.         }
  91.         return 0;
  92. }
  93.  
  94.  

复制代码

通过Yeelink获取到的数据截图如下:
温度.jpg 
湿度.jpg 

2014-4-28 17:31 上传

下载附件 (56.72 KB)
程序完整工程下载(VS2010):
 VC_USB_I2C_AM2321B_Yeelink.rar

如何利用Ginkgo USB-I2C实现I2C从机数据的收发 Ginkgo USB-I2C适配器固件从V2.8.17版本开始支持I2C从机功能,下面就针对这个功能的使用做简单介绍。实现目的:1、I2C从机接收数据,也就是接收I2C主机的数据并显示出来;2、I2C从机发送数据,也就是把数据传输到适配器里面后,主机能将这些数据读出来;上位机测试软件用Ginkgo_USB-I2C_Classic_Setup_v2.9.1.exe软件,大家可以到我们官方网站下载。从... 阅读详情

相关推荐

固件#01--USB转I2C底层代码和原理

USB转I2C底层代码和原理。

tclxspy的博客 5879

Ginkgo:USB-I2C 适配器、USB-SPI 适配器、USB-CAN 总线适配器、USB-CAN 接口

银杏 USB-I2C Adapter, USB-SPI Adapter, USB-CAN Bus Adapter, USB-CAN Interface 更多信息请访问 Ginkgo USB-I2C/SPI/CAN Adapter 应用实例

Anaconda3彻底卸载+重新安装Aanconda+tensorflow+keras

记:2020年8月30日,把自己的anaconda环境搞的乱的一塌糊涂,无奈只能卸载重新安装了一遍,顺便把深度学习用到的框架环境也配置了一遍,重新安装还是有好处滴,至少我对这个安装和配置的流程现在是清楚的一塌糊涂啊。把安装过程中遇到的问题和安装以及配置环境的步骤记录下来,以防万一。(不不不,没有万一。。。) 一、彻底卸载Anaconda的步骤 1、在anaconda prompt中输入:conda install anaconda-clean 2、之后再输入:anaconda-clea...

qq_38938670的博客 3万+

USB2IIC&SPI调试程序C++工具上位机软件

USB2IIC&SPI调试程序C++工具上位机软件

Mastercam出现提示“Mastercam预览版已到期,软件无法打开”的报错的解决方案

Mastercam出现提示“Mastercam预览版已到期,软件无法打开”的报错的解决方案

Q82556499的博客 1万+

微软商店误删后的重新安装指南

微软商店作为Windows操作系统上的重要组件,对于用户来说具有不可替代的作用。一旦误删,我们可以通过一系列命令代码来重新安装它。本文详细介绍了重新安装微软商店的步骤、注意事项及常见问题解答,希望能帮助您顺利恢复这一关键功能。在未来的使用过程中,请务必注意保护系统文件,避免误删重要组件导致的不必要麻烦。

mmoo_python的博客 3542

USB转I2C芯片操作EEPROM--CH347应用

高速USB转接芯片CH347是一款集成480Mbps高速USB接口、JTAG接口、SPI接口、I2C接口、异步UART串口、GPIO接口等多种硬件接口的转换芯片。

PC小能手的博客 1万+

关于mediawiki的重新安装

一开始弄好mediawiki,过了很长时间有需要改的,发现自己忘了,现在又出错了,又忘了,花了两天时间才弄好。作为渣渣,要记录一下下。 环境是mysql+php xampp 问题: 网站进不去了,显示首页出错,说数据库连接错误,要联系管理员啥的,忘记截图了。 首先的解决方式: 1、重启xampp,嗯,启动不了。 2、后来死活没发现,猜想应该是数据库有问题了,出现了不可修复的错误。所以,...

weixin_39736503的博客 1294

USB转I2C/IIC/SMBus/PMBus适配器软件

1、读写控制常规I2C接口芯片; 2、SMBus总线协议读写控制支持SMBus总线协议的芯片; 3、PMBus总线协议读写控制支持PMBus总线协议的电源管理芯片; 4、GPIO控制输出,给所控制的芯片输出相关控制信号; 5、所需硬件:纬图USB-I2C适配器

Win10微软商店重新安装指南

重新安装Windows 10系统中的微软商店虽然需要一定的操作步骤和注意事项,但通过上述方法,用户可以轻松实现这一目标。在操作过程中,用户需要确保下载的安装包与系统架构相匹配,并正确使用PowerShell进行安装。如果遇到问题,可以参考本文提供的常见问题与解决方案进行排查和解决。希望本文能够帮助到遇到微软商店问题的用户,让他们能够重新享受官方应用下载平台的便利。

mmoo_python的博客 4582

彻底卸载Edge浏览器并阻止其重新安装的方法

通过本文介绍的步骤,你可以彻底卸载Edge浏览器并阻止其重新安装,从而更好地管理电脑中的软件和资源。希望这些方法对你有所帮助,让你能够更自由地定制和使用你的电脑系统。如果你有任何疑问或建议,欢迎在评论区留言,我们将竭诚为你解答和改进。

mmoo_python的博客 8028

PUBG问题解决:吃鸡请重新安装软件MSVCP140.dll

1.确保应用正常运行:如果系统中缺失或损坏了MSVCP140.dll,那么依赖此文件的软件或游戏可能无法启动,或者在运行过程中出现错误提示。手动替换msvcp140.dll文件的步骤通常包括从可信赖的源下载正确的msvcp140.dll文件,然后将其复制到系统的相应目录下。游戏兼容性:确认所安装的游戏版本与你的系统兼容,避免因版本不匹配导致的问题。遵循上述注意事项,可以有效地解决“请重新安装软件MSVCP140.dll”的问题,同时保护你的系统免受不必要的风险。然后利用这个修复工具进行相关的DLL修复。

weixin_57940283的博客 1875

完全卸载vnc服务并重新安装

好的,我们来彻底卸载并重新安装 VNC 服务器,确保你的 Debian 12 上的 VNC 运行正常。如果你希望 VNC 在系统启动时自动运行,可以创建一个 systemd 服务。,说明 VNC 服务器已经成功安装并在后台运行了。它会要求你设置 VNC 密码,输入后再确认一次。然后你可以使用 VNC 客户端连接到。你可以使用 VNC 客户端连接到。

Yqha1的博客 3697

如何卸载并重新安装 Mozilla Firefox 浏览器

如果你在 Windows 上遇到现有的 Mozilla FireFox 安装问题,以下是重新安装 FireFox 的步骤。这可以帮助用户解决由于某些扩展或设置问题,或者不小心下载了令人讨厌的广告软件而导致的问题。虽然现在使用 Firefox 浏览器的用户在渐渐沦为小众群体,但是 Firefox 浏览器依然是最了解开发人员的浏览器。本文将演示如何卸载并重新安装 Firefox 浏览器。在重新安装之前,如果未启用账户同步功能,你必须备份你的 FireFox 书签和密码,以免数据丢失。

山岚的运维笔记 1196

mac安装macos失败_如何擦除Mac并从头开始重新安装macOS

mac安装macos失败Is it time to sell or give away your old Mac? Or do you just want a fresh start to clean up your machine? Here’s how to securelydelete all of your files, then install a fresh version of m...

cum44153的博客 8038

License到期续期,xp系统安装问题

1. RealEvo License介绍 在初次安装RealEvo时,会要求输入由翼辉提供的序列号,生成注册码等,具体步骤见安装包种doc文件夹下《RealEvo软件注册步骤》,在次不一一赘述。 正常情况下,工程师可以通过翼辉信息的官网:www.acoinfo.com或者向翼辉的市场人员申请为期三个月的license,在license到期后如何再次续期?下面将详细介绍。 2. License

Esc_110的博客 1280

Docker的彻底删除与重新安装(ubuntu22.04)

【代码】【无标题】

weixin_54452942的博客 4910

实验吧 损坏的U盘镜像

        从网站上可以下载一个CTF.hdd的文件,使用winHex打开,可以知道这是一个exFAT格式的文件。        用binwalk检查一下,发现文件中包含两个zip文件,使用foremost进行提取。一个压缩包需要密码解压缩,另一个解压后发现Password.txt文件。说明另一个压缩包的密码与checksum有关。        通过查看exFAT文件系统格式可以得知如何计算...

xingyyn78的博客 3512
上一篇: 介绍如何利用Python对Ginkgo USB- CAN进行数据收发
下一篇: Ginkgo USB-SPI nRF24L01上位机调试软件源码下载
viewtoolsz
博客等级 码龄9年 105粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值