搜索
bottom↓
回复: 31

无源湿度传感器(基于RFID)的实现方案求指导

[复制链接]

出0入17汤圆

发表于 2020-4-8 21:07:10 | 显示全部楼层
你看下这篇文章“Sustainable production of highly conductive multilayer graphene ink for wireless connectivity and IoT applications”,里面一个应用跟你的要求一样的,用的一样的芯片和读卡器

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入17汤圆

发表于 2020-4-9 08:54:43 | 显示全部楼层
huchunlei 发表于 2020-4-9 01:13
看到了,谢谢。 里面确实提到了我用的那款单片机, 其他部件不一样。  也没有更多的信息。 ...

这是文章里用的matlab程序,我朋友写的,读卡器用TRF7970,测试可以使用, 你试试吧。

Supplementary Note 2: Temperature monitoring system program.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Kewen Pan
%TRF7970A EVM testing program for tag2
%6/May/2016
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;clc;  %Clear
i=1;
j=0;
buffer=zeros(1,50);
delay_time=0.01;

dev_name = 'Silicon Labs CP210x USB to UART Bridge';
[~,res]=system('wmic path Win32_SerialPort');
ind = strfind(res,dev_name);
if (~isempty(ind))
    port_name = res(ind(1)+length(dev_name)+2:ind(1)+length(dev_name)+5);     
    fprintf('COM-port is %s\n',port_name);
    try
         
        s = serial(port_name);
        set(s,'BaudRate', 111700,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none','terminator','ETX' );
        
        s.ReadAsyncMode='continuous';
        s.Timeout=0.02
        s.InputBufferSize = 1024;
        
        s.OutputBufferSize = 1024;
        
        fopen(s);
        fprintf('%s is opened\n',port_name);
    catch err
        fprintf('%s\n%s\n',err.identifier,err.message);
    end
else
    fprintf('COM-port is not find\n');
end


fprintf(port_name);
fprintf(' serial port open success!');
pause(1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%s.status   %Serial port status check
%instrfind  %Specification
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf(s,'%s','0108000304FF0000');%find evm broad
data=fscanf(s);
if strcmp(data(1),'T');
    fprintf('found TRF7970A\r');
   % pause(delay_time);
else
    fprintf('cannot found TRF7970A\r');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf(s,'%s','010A0003041001210000');%register write request1
data=fscanf(s);
if strcmp(data(1),'R');
    fprintf('register1 write success\r');
   % pause(delay_time);
else
    fprintf('register write error1\r');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf(s,'%s','010C00030410002101000000');%register write request2
data=fscanf(s);
if strcmp(data(1),'R');
    fprintf('register2 write success\r');
  %  pause(delay_time);
else
    fprintf('register write error2\r');
end   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf(s,'%s','0109000304F0000000');%AGC Toggle
data=fscanf(s);
if strcmp(data(1),'A');
    fprintf('AGC toggle success\r');
  %  pause(delay_time);
else
    fprintf('AGC Toggle error\r');
end   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf(s,'%s','0109000304F1FF0000');%AM PM Toggle
data=fscanf(s);
if strcmp(data(1),'A');
    fprintf('AM PM Toggle success\r');
%   pause(delay_time);
else
    fprintf('AM PM Toggle error\r');
end
while 1
   
    while 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        set(s,'terminator','ETX' );
        fprintf(s,'%s','010B000304140401000000');%ISO15693 Inventory Request
        data=fscanf(s);
        if length(data)<35;
            fprintf('ISO15693 Inventory Request error\r');
        else
            fprintf('ISO15693 Inventory Request success\r');
            %   pause(delay_time);
            fprintf(data);
            break;
        end   
    end
%%%%%%%%%%%%%%%%%Basic configuration success%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%Write functional register%%%%%%%%%%%%%%%%%%%%
        fprintf(s,'%s','010F00030418402100010203800000');%Reg 00
        data=fscanf(s);
        d=data(17);
        if strcmp(data(17),']');
           fprintf('Reset failed\r');
           fprintf('Tag disconnected\r');
           %buffer=zeros(1,50);
           break;
        end   

    fprintf(s,'%s','010F00030418402100010203000000');%Reg 00
    data=fscanf(s);
    if strcmp(data(1),'R');
        fprintf('Reg00\r');
        fprintf(data,'\r');
    %    pause(delay_time);
        fprintf(data);
    else
        fprintf('Write reg 00 failed\r');
    end   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    fprintf(s,'%s','010F00030418402101010100400000');%Reg01
    data=fscanf(s);
    if strcmp(data(1),'R');
        fprintf('Reg01\r');
        fprintf(data,'\r');
    %   pause(delay_time);
        fprintf(data);
    else
        fprintf('Write reg 01 failed\r');
    end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    fprintf(s,'%s','010F00030418402102000000000000');%Reg02
    data=fscanf(s);
    if strcmp(data(1),'R');
        fprintf('Reg02\r');
        fprintf(data,'\r');
    %   pause(delay_time);
        fprintf(data);
    else
        fprintf('Write reg 02 failed\r');
    end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    fprintf(s,'%s','010F00030418402103000000000000');%Reg03
    data=fscanf(s);
    if strcmp(data(1),'R');
        fprintf('Reg03\r');
        fprintf(data,'\r');
    %   pause(delay_time);
        fprintf(data);
    else
        fprintf('Write reg 03 failed\r');
    end
   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    fprintf(s,'%s','010F00030418402104191919190000');%Reg04
    data=fscanf(s);
    if strcmp(data(1),'R');
        fprintf('Reg04\r');
        fprintf(data,'\r');
    %    pause(delay_time);
        fprintf(data);
    else
        fprintf('Write reg 04 failed\r');
    end
%%%%%%%%%%%%%%%%%%%%%%%Config finished%%%%%%%%%%%%%%%%%%%%%
   while 1
       set(s,'terminator',']' );
%%%%%%%%%%%%%%%%%%%%%%Start sample%%%%%%%%%%%%%%%%%%%%%%%%

   
        fprintf(s,'%s','010F00030418402100010203000000');%Reg 00
        data=fscanf(s);
         if strcmp(data(17),']');
                fprintf('Write reg 00 failed\r');
                 fprintf('Tag disconnected\r');
                 %buffer=zeros(1,50);
                break;
            end   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%Start reading%%%%%%%%%%%%%%%%%%%%%%%%
    fprintf(s,'%s','010B000304180020120000');%Read reg 0x12
    data=fscanf(s);
     if strcmp(data(19),']');
         fprintf('Read reg 0x12 failed\r');
            fprintf('Tag disconnected\r');
            
         break;
     end   

     if strcmp(data(18),'z');
         fprintf('Read reg 0x12 failed\r');
            fprintf('Tag disconnected\r');
            
         break;
     end   
     
   Stand_res=[data(23),data(24),data(21),data(22)];
   Sensor_res=[data(27),data(28),data(25),data(26)];
  
    Resistance=(hex2dec(Sensor_res)/hex2dec(Stand_res))*100;%cal sensor R
    Temp=-1.27*Resistance+203;%exp curve fitting
     if (Temp>=0)&&(Temp<=50)
    buffer=[buffer(2:end), buffer(1:1)];%left shift 1 bit
    buffer(50)=Temp;%push in
    plot(buffer,'Linewidth',3);
    set(gca, 'FontWeight', 'bold', 'FontName','Calibri','FontSize',14)
    title('Graphene Based Yarn Temperature Sensor');
    ylabel('Temperature');
    xlabel('Time');
    grid on;
    drawnow;
    pause(0.5);
   %  else
         
     end
  end

end
fclose(s);
delete(s);  
clear s  
%close all;

出0入17汤圆

发表于 2020-4-9 08:59:05 | 显示全部楼层
huchunlei 发表于 2020-4-9 01:13
看到了,谢谢。 里面确实提到了我用的那款单片机, 其他部件不一样。  也没有更多的信息。 ...

这个程序使能内部恒流源,使用内置AD进行采样,获取传感器电阻再上传回Matlab画图,你用的湿度传感器数字通讯应该简单的多。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 21:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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