一、需要的材料

1.土壤氮磷钾传感器

2.stm32 正点原子(这里使用的是正点原子精英版)

3.IIC的0.96寸oled屏幕

二、接线

1.这是土壤氮磷钾传感器的接线,单片机的电压就可以,其次就是rs485的传输数据线

rs485传输数据原理这里就不说了不懂的可以看这里rs485通信协议详解。

这里记住485A就板子的A ,B就接B。如果你的板子没有rs485的那块芯片,可以尝试转ttf。

因为rs485通信本质上还是串口。

2.oled

三、代码

这里以正点原子的rs485的例程为基础

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "rs485.h"
#include "oled.h"
#include "bmp.h"/************************************************ALIENTEK精英STM32开发板实验24485 实验 技术支持:www.openedv.com淘宝店铺:http://eboard.taobao.com 关注微信公众平台微信号:"正点原子",免费获取STM32资料。广州市星翼电子科技有限公司  作者:正点原子 @ALIENTEK
************************************************/int main(void){ char t1[10];int temp12=0;int temp11=0;int temp22=0;int temp21=0;int temp32=0;int temp31=0;int temp=0;char arr[10];int n=256;int k=16;int tag=3;//******************************unsigned char datas[10];int littlenum00=0;
int littlenum01=0;
int littlenum10=0;
int littlenum11=0;
int num=0;int littlenum20=0;
int littlenum21=0;
int littlenum30=0;
int littlenum31=0;
int num1=0;int littlenum40=0;
int littlenum41=0;
int littlenum50=0;
int littlenum51=0;
int num2=0;
int j = 0;unsigned char str[12];
unsigned char dst[12];
//******************************************u8 key;u8 data=0;u8 i=0,t=0;u8 cnt=0;u8 rs485buf[12]; u8 rs485bufA[8] = {0x01,0x03,0x00,0x1E,0x00,0x03,0x65,0xCD};OLED_Init();OLED_ColorTurn(0);//0正常显示,1 反色显示OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示delay_init();          //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级uart_init(115200);     //串口初始化为115200LED_Init();               //初始化与LED连接的硬件接口KEY_Init();             //按键初始化          RS485_Init(9600);  //初始化RS485OLED_Refresh();t=' ';LED0=0;OLED_Refresh();                                 while(1){key=KEY_Scan(0);if(key==KEY0_PRES)//KEY0按下,发送一次数据{for(i=0;i<8;i++){rs485buf[i]=rs485bufA[i];}RS485_Send_Data(rs485buf,8);//发送8个字节printf("S: %d\r\n",key);    }        RS485_Receive_Data(rs485buf,&key);if(key)//接收到有数据{printf("R: %d--\r\n",key);if(key>0)//最大是5个数据.for(i=0;i<key;i++){printf("[%d]",i);printf(" %x ",rs485buf[i]);delay_ms(10);}printf("\r\n--");}t++; delay_ms(10);if(t==20){LED0=!LED0;//提示系统正在运行  t=0;cnt++;}//**************************************************datas[0]=rs485buf[3];datas[1]=rs485buf[4];datas[2]=rs485buf[5];datas[3]=rs485buf[6];      //datas[4]=rs485buf[7];//datas[5]=rs485buf[8];//printf("data[5]%x",datas[5]);for(j = 0; j<5;j++){str[2*j] = datas[j]>>4;str[2*j+1] = datas[j]&0xf;}for(j = 0; j<12;j++){sprintf(&dst[j],"%X/n",str[j]);}// for(j = 0; j<12;j++)//{//    printf("%c\n",dst[j]);//}//*****************************************************************************************************//dst[0]高位if('0'<=dst[0]&&dst[0]<='9'){littlenum00=dst[0]-'0';littlenum00=littlenum00*(16*16*16);}if('A'<=dst[0]&&dst[0]<='F'){littlenum00=(dst[0]-'A')+10;littlenum00=littlenum00*(16*16*16);}//dst[0]低位;if('0'<=dst[1]&&dst[1]<='9'){littlenum01=dst[1]-'0';littlenum01=littlenum01*(16*16);}if('A'<=dst[1]&&dst[1]<='F'){littlenum01=(dst[1]-'A')+10;littlenum01=littlenum01*(16*16);//printf("4[%d]",littlenum01);}//dst[1]高位if('0'<=dst[2]&&dst[2]<='9'){littlenum10=dst[2]-'0';littlenum10=littlenum10*(16);}if('A'<=dst[2]&&dst[2]<='F'){littlenum10=(dst[2]-'A')+10;littlenum10=littlenum10*(16);}//dst[1]低位if('0'<=dst[3]&&dst[3]<='9'){littlenum11=dst[3]-'0';}if('A'<=dst[3]&&dst[3]<='F'){littlenum11=('D'-'A')+10;}num=littlenum00+littlenum01+littlenum10+littlenum11;printf("num:%d\n",num);//*******************************************************************************************************if('0'<=dst[4]&&dst[4]<='9'){littlenum20=dst[4]-'0';littlenum20=littlenum20*(16*16*16);}if('A'<=dst[4]&&dst[4]<='F'){littlenum20=(dst[4]-'A')+10;littlenum20=littlenum20*(16*16*16);}//dst[0]低位;if('0'<=dst[5]&&dst[5]<='9'){littlenum21=dst[5]-'0';littlenum21=littlenum21*(16*16);}if('A'<=dst[0]&&dst[0]<='F'){littlenum21=(dst[5]-'A')+10;littlenum21=littlenum21*(16*16);}//dst[1]高位if('0'<=dst[6]&&dst[6]<='9'){littlenum30=dst[6]-'0';littlenum30=littlenum30*(16);}if('A'<=dst[6]&&dst[6]<='F'){littlenum30=(dst[6]-'A')+10;littlenum30=littlenum30*(16);}//dst[1]低位if('0'<=dst[7]&&dst[7]<='9'){littlenum31=dst[7]-'0';}if('A'<=dst[7]&&dst[7]<='F'){littlenum31=(dst[7]-'A')+10;}num1=littlenum20+littlenum21+littlenum30+littlenum31;printf("num1:%d\n",num1);//**************************************************************************datas[0]=rs485buf[7];datas[1]=rs485buf[8];
for(j = 0; j<5;j++){str[2*j] = datas[j]>>4;str[2*j+1] = datas[j]&0xf;}for(j = 0; j<10;j++){sprintf(&dst[j],"%X/n",str[j]);}for(j = 0; j<5;j++){printf("%c\n",dst[j]);}if('0'<=dst[0]&&dst[0]<='9'){littlenum40=dst[0]-'0';littlenum40=littlenum40*(16*16*16);}
if('A'<=dst[0]&&dst[0]<='F'){littlenum40=(dst[0]-'A')+10;littlenum40=littlenum40*(16*16*16);}//dst[0]低位;if('0'<=dst[1]&&dst[1]<='9'){littlenum41=dst[1]-'0';littlenum41=littlenum41*(16*16);}if('A'<=dst[1]&&dst[1]<='F'){littlenum41=(dst[1]-'A')+10;littlenum41=littlenum41*(16*16);}//dst[1]高位if('0'<=dst[2]&&dst[2]<='9'){littlenum50=dst[2]-'0';littlenum50=littlenum50*(16);}if('A'<=dst[2]&&dst[2]<='F'){littlenum50=(dst[2]-'A')+10;littlenum50=littlenum50*(16);}tag=0;//dst[1]低位if('0'<=dst[3]&&dst[3]<='9'){littlenum51=dst[3]-'0';}if('A'<=dst[3]&&dst[3]<='F'){littlenum51=(dst[3]-'A')+10;}num2=littlenum40+littlenum41+littlenum50+littlenum51;printf("num2:%d\n",num2);//**************************************************OLED_ShowChinese(0,0,0,16);//氮OLED_ShowString(20,0,":",16);//";"OLED_ShowNum(25,0,num,3,16);OLED_ShowString(50,0,"m",16);//"m"OLED_ShowString(64,0,"g",16);//"g"OLED_ShowString(80,0,"/",16);//"/"OLED_ShowString(96,0,"k",16);//"k"OLED_ShowString(112,0,"g",16);//"g"//OLED_ShowChinese(0,20,1,16);//磷OLED_ShowString(20,20,":",16);//";"OLED_ShowNum(25,20,num1,3,16);OLED_ShowString(50,20,"m",16);//"m"OLED_ShowString(64,20,"g",16);//"g"OLED_ShowString(80,20,"/",16);//"/"OLED_ShowString(96,20,"k",16);//"k"OLED_ShowString(112,20,"g",16);//"g"//OLED_ShowChinese(0,40,2,16);//钾OLED_ShowString(20,40,":",16);//";"OLED_ShowNum(25,40,num2,3,16);OLED_ShowString(50,40,"m",16);//"m"OLED_ShowString(64,40,"g",16);//"g"OLED_ShowString(80,40,"/",16);//"/"OLED_ShowString(96,40,"k",16);//"k"OLED_ShowString(112,40,"g",16);//"g"OLED_Refresh();delay_ms(500);     } }

下面是完整的项目源码:

链接:https://pan.baidu.com/s/1UZgGWk1oAphwzb9awpEZ8g 
提取码:ylmn

rs485土壤氮磷钾传感器 stm32相关推荐

  1. 隆云通土壤温湿、EC、PH、氮磷钾传感器

    土壤温湿.EC.PH.氮磷钾传感器概述 土壤温度部分是由德国Heraeus公司进口级ST-1-PT1000精密铂电阻和高精度传感器两部分组成.传感器部分由电源模块.温度传感模块.变送模块.温度补偿模块 ...

  2. 隆云通土壤PH传感器

    在线土壤pH值传感器很好地解决了传统测量土壤pH值需配备专业显示仪表.标定繁琐.集成难度大.功耗大.价格昂贵.携带困难等缺点,是工业酸度计的智能化升级产品,可对土壤.污水pH值进行连续测量和控制,本装 ...

  3. 隆云通土壤pH传感器(扁三针)

    土壤pH传感器概述 土壤里含有许多有机酸.无机酸.碱以及盐类等物质,各种物质的含量不 同,使土壤显示出不同的酸碱性.土壤的酸碱性可以用酸度表示,即用 pH 值 表示土壤的酸碱性.习惯上把 pH 值在  ...

  4. 土壤温湿度传感器传感器内置信号采样及放大、漂零及温度补偿功能

    土壤温湿度传感器产品概述 外型小巧轻便,便于携带和连接. 土壤温湿度测量传感器由电源模块.变送模块.漂零及温度补偿模块.数据处理模块等组成.传感器内置信号采样及放大.漂零及温度补偿功能,用户接口简洁. ...

  5. 土壤温湿度传感器(电气隔离型)

    1 概述 OSA-7W隔离型土壤温湿度传感器是将土壤水分和土壤温度传感器集中于一体,具有携带方便,密封,高精度等优点,是土壤墒情,土壤温度测量的理想选择. OSA-7W土壤水分部分是基于频域反射原理, ...

  6. 土壤温湿度传感器在智慧农业中的作用

    土壤温湿度传感器在智慧农业中的作用 大家都知道大棚种植都会使用壁挂式温湿度传感器来保持大棚内的温度和湿度,从而使植物能很好的生产,其实只保持大棚内的温度是远远不够的,植物生长也需要适合的土壤温度和湿度 ...

  7. arduino 土壤温湿度传感器_智慧农业温室大棚环境监测传感器

    传感器是智慧农业温室大棚体系检测环节的重要组成部分,用于将温室环境因子等非电物理量转变为操控体系辨认的电信号,智慧农业温室大棚体系管理人员判别和处理问是环境监测状况主要依赖的传感器的主要技术指标有 : ...

  8. HI226 HI229 6轴姿态传感器STM32串口例程说明

    HI226 HI229 6轴姿态传感器STM32串口例程说明 STM32例程 本例程提供了C 语言例程代码,用户接收HI226/HI229及HI221数据. ​ 测试环境:Windows10_x64 ...

  9. 高通SDM450 Android9上调试RS485接口温湿度传感器调试介绍

    高通SDM450 Android9上调试RS485接口温湿度传感器调试介绍 1.初步确认硬件电路工作正常 2.确认主控端串口可以正常工作 3.调试主控串口经过RS485连接电脑可以正常收发 4.单独调 ...

最新文章

  1. php通用的树型类创建无限级树型菜单
  2. 使用WebSocket绕过广告屏蔽插件
  3. fork()请问下面的程序一共输出多少个“A”?多少个-?
  4. dynamo python修改多个参数_python之函数
  5. [转载]Java并发编程:深入剖析ThreadLocal
  6. 如何优雅地抄袭代码?天下代码一大抄,这才是正确的姿势
  7. Android自动化测试在多种屏幕下的注意事项
  8. GCD 代码以及GCD思想
  9. 电脑屏幕变色了怎么调回来,电脑屏幕颜色怎么改
  10. 通过Adobe Scout深入理解Flash播放器
  11. 【Ydui.js】------ ydui.js 中的 util 中的方法讲解如何调用使用 例如:获取地址栏信息,js 倒计时,cookie, 获取图片地址等
  12. ASP.NET MVC 上传文件方法
  13. Java面试题(大内)3
  14. PC微信hook学习笔记(一)—— 获取个人信息
  15. 解密WEP和WPA-PSK/WPA-PSK加密的数据包
  16. 一文读懂 | 数据中台如何为企业赋能?
  17. 苹果主题商店_小米怕被苹果找茬,开始下架相关IOS主题了!
  18. linux 平铺式桌面,Terminix:基于 GTK3 的平铺式 Linux 终端模拟器
  19. git push 报错Push rejected、 remote unpack failed 、unpacker error、 failed to push some refs to
  20. 【目标跟踪】基于matlab GUI帧差法结合卡尔曼滤波行人姿态识别【含Matlab源码 1127期】

热门文章

  1. Matlab 计算激光速率方程
  2. LS-DYNA系列_IDEAL_GAS状态方程
  3. 最简单的冒泡法实现(python)
  4. 使用IntelliJ IDEA解决Java包冲突
  5. 共享登录状态解决方案
  6. python基础-字符串,字典,列表,集合
  7. 我建议,专家不要再建议了
  8. 某医院病房计算机管理中设计的领域,某医院住院管理信息系统的设计与实现
  9. python爬虫爬取教程_python爬虫实战之爬取京东商城实例教程
  10. 微软SCOM管理中最有用的SQL查询(一)