GO+树莓派+E53_IA1智慧农业模块

简介

之前手头上有小熊派的开发板, 有一个E53_IA1模块, 刚好用到树莓派上, 使用GO进行控制,实现智慧农业模块功能。

模块介绍

模块电路介绍

按硬件分成五块, 其中四块在本次用上了, 分别是

1. 补光模块(LED灯)

在这里插入图片描述

2. SHT30(温湿度传感器)

在这里插入图片描述

3. BH1750 光照强度传感器

在这里插入图片描述

4. 电机部分

在这里插入图片描述
在这里插入图片描述

5. AT24C02(EEPROM, 本次没用上)

在这里插入图片描述
注意: 除了电机和LED部分, 其余都在同一个I2C总线上。

树莓派接线

在这里插入图片描述
请添加图片描述
请添加图片描述

代码

1. SHT30部分

Go实现树莓派I2C读取SHT30温度&湿度传感器

2. bh1750 部分

Go实现树莓派读取bh1750光照强度

3. LED部分

package sensorimport ("periph.io/x/conn/v3/gpio""periph.io/x/conn/v3/gpio/gpioreg"
)type LEDSensor struct {pin gpio.PinIOonLevel  gpio.LeveloffLevel gpio.Level
}func NewLEDSensor(pinName string, highIsOn bool) (*LEDSensor, error) {var (sensor = &LEDSensor{}err    error)if err = sensor.init(pinName, highIsOn); nil != err {return nil, err}return sensor, nil
}func (sensor *LEDSensor) init(pinName string, highIsOn bool) (err error) {sensor.pin = gpioreg.ByName(pinName)if nil == sensor.pin {return SensorPinCantFoundError}if highIsOn {sensor.onLevel = gpio.Highsensor.offLevel = gpio.Low} else {sensor.onLevel = gpio.Lowsensor.offLevel = gpio.High}///* 默认关灯 *///if err = sensor.pin.Out(sensor.offLevel); nil != err {//	return//}return
}func (sensor *LEDSensor) GetState() OnOffState {//level := sensor.pin.Read()if sensor.onLevel == sensor.pin.Read() {return OnOffState_ON}return OnOffState_OFF
}func (sensor *LEDSensor) SetState(state OnOffState) (err error) {if OnOffState_ON == state {err = sensor.pin.Out(sensor.onLevel)} else {err = sensor.pin.Out(sensor.offLevel)}return
}func (sensor *LEDSensor) Toggle() (err error) {if sensor.GetState() == OnOffState_ON {err = sensor.SetState(OnOffState_OFF)} else {err = sensor.SetState(OnOffState_ON)}return
}

4. 电机部分

package sensorimport ("fmt""periph.io/x/conn/v3/gpio""periph.io/x/conn/v3/gpio/gpioreg"
)type MotorSensor struct {opt MotorOptionpin gpio.PinOutcurrDutyCycle uint8oned bool
}func NewMotorSensor(opt MotorOption) (*MotorSensor, error) {var (sensor = &MotorSensor{opt:           opt,currDutyCycle: opt.DutyCycle,})if opt.DutyCycle > 100 {return nil, fmt.Errorf("duty clycle %s", OutOfRangeError.Error())}sensor.pin = gpioreg.ByName(opt.PinNum.String())if nil == sensor.pin {return nil, CantFindPinError}return sensor, nil
}func (sensor *MotorSensor) Init() error {return nil
}func (sensor *MotorSensor) Destroy() error {return nil
}func (sensor *MotorSensor) Control(isOpen bool) (err error) {if isOpen == sensor.oned {return}err = sensor.control(isOpen)if nil != err {return}sensor.oned = isOpenreturn
}func (sensor *MotorSensor) control(isOpen bool) (err error) {if isOpen {err = sensor.pin.Out(gpio.High)//err = sensor.pin.PWM(gpio.DutyMax/gpio.Duty((100-sensor.currDutyCycle)+1), physic.Hertz*physic.Frequency(sensor.opt.Frequency))} else {err = sensor.pin.Out(gpio.Low)err = sensor.pin.Halt()}return
}func (sensor *MotorSensor) SetDutyCycle(duty uint8) error {//return UnsupportedErrorif 100 < duty {return fmt.Errorf("duty clycle %s", OutOfRangeError.Error())}if sensor.currDutyCycle == duty {return nil}sensor.currDutyCycle = dutyif sensor.oned {if err := sensor.control(sensor.oned); nil != err {return err}}return nil
}
其他组合部分(省略)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可视化大屏:城市治理方向,三维地图那是相当震撼呀。

随着城市化进程的加快&#xff0c;城市治理变得越来越复杂&#xff0c;需要大量的数据和信息来支持决策和管理。在这个背景下&#xff0c;可视化大屏作为一种新兴的信息展示工具&#xff0c;正逐渐在城市治理中发挥着重要作用。 首先&#xff0c;可视化大屏能够将庞大的数据和信…

kettle从入门到精通 第五十九课 ETL之kettle 邮件发送多个附件,使用正则轻松解决

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群&#xff0c;一起学习&#xff0c;共同进步。若二维码失效&#xff0c;公众号后台加我微信入群&#xff0c;备注kettle。 问题场景&#xff1a; 一个朋友说他用kettle将生成好的多个文件&#xff08;a.xls和b.xls&#xff0…

【LeetCode算法】1768. 交替合并字符串

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案 一、题目 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另…

图论专题训练

leecode 547 并查集 class Solution { public:int findCircleNum(vector<vector<int>>& isConnected) {ini();int len isConnected.size();for(int i0;i<len;i){for(int j0;j<len;j)if(isConnected[i][j]){unio(i,j);}}int ans 0;for(int i0;i<len;…

爱分析基于杭州云器Lakehouse实现成本最优的一体化管理,新一代数据平台的建设方式

导读 1.当前&#xff0c;企业在大数据和数据中台建设上取得成果&#xff0c;但数据开发管理仍具挑战性&#xff08;成本、效率、复杂度&#xff09;。 2.随数据平台领域成熟&#xff0c;厂商应结合自身需求&#xff0c;重新思考“基于开源自建数据平台”的重资产模式与“购买…

Windows环境下编译 aom 源码详细过程

AV1 AV1是一种开源的视频编码格式&#xff0c;由开放媒体联盟&#xff08;AOMedia Video 1&#xff0c;简称AOMedia或AOM&#xff09;开发。AV1旨在提供比现有的视频编码格式如H.264和H.265更好的压缩效率&#xff0c;同时保持或提高视频质量。AV1的编码效率显著高于H.264&…

小猫咪邮件在线发送系统源码,支持添加附件

一款免登录发送邮件&#xff0c;支持发送附件&#xff0c;后台可添加邮箱,前台可选择发送邮箱 网站数据采取本地保存&#xff0c;所以使用前请给网站修改权限&#xff0c;否则很多功能将无法使用 安装教程&#xff1a; 1.上传服务器或者主机 2.登录后台&#xff0c;添加发送…

MathType永久激活版写毕业论文必备神器以及破解版下载图文教程(附mathtype7镶嵌到word步骤)

前言 由于临近暑假&#xff0c;大学生和研究生都需要写自己的论文。使用的工具叫做MathType&#xff0c;它是加拿大的公司开发的&#xff0c;今天给大家带来的是Win和Mac版Mathtype最新破解版。 自从Mathtype7的发布&#xff0c;很多的老师和学生都不知道它从哪里下载和激活&…

社区送水小程序软件开发

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

vue+springboot项目服务器部署

①创建一台opencloud8的腾讯云服务器 ②用xshell连接服务器 ③vue中新建.env.development配置文件 .env.development: VUE_APP_BASEURLhttp://localhost:9090 .env.production: VUE_APP_BASEURLhttp://服务器ip:9090 ④修改main.js import Vue from vue import App from ./A…

在数据分析中所需要运用到的概率论知识

数据分析 前言一、总体二、样本三、统计抽样抽取的基本准则 四、随机抽样抽签法随机数法 五、分层抽样六、整群抽样七、系统抽样八、统计参数常用的分布函数参数 九、样本统计量十、样本均值和样本方差十一、描述样本集中位置的统计量样本均值样本中位数样本众数 十二、描述样本…

重写muduo之TcpConnection

目录 1、 TcpConnection.h 2、 TcpConnection.cc 1、 TcpConnection.h TcpConnection底层绑定&#xff08;管理&#xff09;了一个Channel&#xff0c;Channel有事件被Poller通知后&#xff0c;会调用相应的回调&#xff0c;这些回调也是TcpConnection中包含的方法&#xff0c…

泰达克仿钻点水晶饰品包装印刷防滑UV胶特性及应用场景

仿钻点UV滴胶是一种特殊的胶水 常用于模拟钻石的效果 它是一种透明的胶水 具有高光泽度和折射率 可以在物体表面形成类似钻石的亮闪效果 仿钻点UV滴胶通常由紫外线固化胶组成 需要通过紫外线照射来固化和硬化 它具有以下特点&#xff1a; 1. 透明度&#xff1a;仿钻点UV滴胶具有…

BGP第二篇(bgp邻居状态及影响邻居建立的因素)

1、bgp邻居状态 BGP对等体的交互过程中存在6种状态机&#xff1a; 空闲&#xff08;Idle&#xff09; 连接&#xff08;Connect&#xff09; 活跃 &#xff08;Active&#xff09; Open报文已发送&#xff08;OpenSent&#xff09; Open报文已确认&#xff08;OpenConfirm&…

代码-功能-Python-运用bs4技术爬取汽车之家新闻信息

第三方库安装指令&#xff1a; pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple pip install BeautifulSoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple 运行代码&#xff1a; #这个代码并不完整&#xff0c;有很大的问题&#xff0c;但目前不知道怎么…

docker八大架构之单机架构

单机架构 什么是单机架构&#xff1f; 单机架构指的是应用服务和数据库服务公用同一台服务器。如下边两个图所示&#xff0c;当我们进行购物时&#xff0c;所有的物品信息和用户信息都是在同一个服务器下进行运行的&#xff0c;之所以称为单机架构就是因为它所有的操作是在同…

五角钱的程序员 | Kafka 是什么?

本文来源公众号“五角钱的程序员”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;Kafka 是什么&#xff1f; 你是一个程序员&#xff0c;假设你维护了两个服务 A 和 B。B 服务每秒只能处理 100 个消息&#xff0c;但 A 服务却每秒…

数据结构·一篇搞定栈!

好久不见&#xff0c;超级想念 废话不多说&#xff0c;直接看 引言 在数据结构的大家族中&#xff0c;栈&#xff08;Stack&#xff09;是一种非常重要的线性数据结构&#xff0c;它的特点是后进先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09;。栈在程序设…

Echarts旭日图的配置项,强大的层级关系展示图表。

ECharts中的旭日图&#xff08;Sunburst Chart&#xff09;是一种数据可视化图表&#xff0c;用于展示层级关系数据。它通常用于呈现树状结构或层级结构的数据&#xff0c;例如组织结构、文件目录结构、地理区域层级等。 旭日图通过圆形的方式展示数据的层级结构&#xff0c;每…

【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout 文章编号&…