745|3

16

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【DigiKey“智造万物,快乐不停”创意大赛】植物情绪监测与交互系统(开发第一周) [复制链接]

 

前言

物料到了好久了,但一直有事情,加上自己很懒就一直没有进度,准备从这周开始,每周抽出几个小时搞一搞,每周更新进展。
目录 (Table of Contents)

[TOCM]

如何实现?

可以在屏幕上观察植物的情绪状态。
根据所查询的资料,植物的情绪状态的研究很少,许多研究者觉得植物压根没有情绪状态,但我还是找到了一份有关于植物情绪的研究下载附件

保存到相册

2023-12-3 21:16 上传

安装python的一些库时发现了如下问题:

  1. sudo pip3 install spidev
  2. error: externally-managed-environment
  3. × This environment is externally managed
  4. ╰─> To install Python packages system-wide, try apt install
  5. python3-xyz, where xyz is the package you are trying to
  6. install.
  7. If you wish to install a non-Debian-packaged Python package,
  8. create a virtual environment using python3 -m venv path/to/venv.
  9. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
  10. sure you have python3-full installed.
  11. For more information visit http://rptl.io/venv
  12. note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
  13. hint: See PEP 668 for the detailed specification.

可以安照提示做也可以:

  1. 在 pip3 install package 后面加上参数 “--break-system-packages”

树莓派接入阿里云

首先是申请一个阿里云的账号,买一个服务器,我看有免费3个月的就用这个了。
因为树莓派是在本地wifi下,没有公网ip,所以在外边无法访问,需要做内网穿透(Port Forwarding),利用阿里云进行访问,具体操作如下:

  1. 在树莓派上设置SSH:

    • 确保树莓派已安装SSH服务并已启动。
    • 如果未启动SSH服务,可以通过运行 sudo systemctl enable sshsudo systemctl start ssh 命令来启动和使其自动启动。
  2. 在云服务器上设置SSH远程端口转发:

    • 在树莓派上执行SSH命令,创建到云服务器的反向隧道。这个命令会将云服务器上的一个端口转发到树莓派的SSH端口。例如:

      ssh -R [云服务器端口]:localhost:22 [云服务器用户名]@[云服务器IP地址]

  3. 从外部网络访问树莓派: 现在,您可以通过云服务器来访问树莓派。在任何地方使用以下命令:

    ssh [树莓派用户名]@localhost -p [云服务器端口]

这种方法通过SSH隧道保证了连接的安全性。

实现环境温度和土壤湿度检测

器材

1 x Moisture sensor
1 x LM35 Temperatures sensor
1 x ADS115 ADC

连线

因为ADS1154路16位ADC,I2C接口,所以温度和土壤湿度的检测都需要经过它才使被树莓派获得结果。

调试

测试ADS115,代码如下:

  1. import board
  2. import busio
  3. import time
  4. i2c = busio.I2C(board.SCL, board.SDA)
  5. import adafruit_ads1x15.ads1115 as ADS
  6. from adafruit_ads1x15.analog_in import AnalogIn
  7. ads = ADS.ADS1115(i2c)
  8. chan = AnalogIn(ads, ADS.P2)
  9. while True:
  10. print(chan.value)
  11. time.sleep(0.1)

结果:

  1. 9246
  2. 8587
  3. 9301
  4. 8573
  5. 9313
  6. 8567
  7. 9298
  8. 8553
  9. 9312
  10. 8535
  11. 9269
  12. 8556
  13. 9102
  14. 8660
  15. 9258
  16. 8711
  17. 9699
  18. 8444
  19. 9353
  20. 8756
  21. 8973
  22. 9061
  23. 8595
  24. 9365
  25. 8297
  26. 9636
  27. 8139
  28. #后面还有很多

接下来是关于传感器结果的部分,首先是要对土壤检测进行标定,然后是矫正温度,接下来是过程:

  1. 在水中:
  2. Temperature =45
  3. Moisture % =7148
  4. 空气中:
  5. Temperature =45
  6. Moisture % =17539
  7. 标定后:
  8. Temperature =45
  9. Moisture % =0
  10. 土壤湿度检测:
  11. Temperature =45
  12. Moisture % =67
  13. 矫正温度:
  14. Temperature =22
  15. Moisture % =67

湿度的准确性我无法确定,但温度检测是22摄氏度,我家的小米温度计显示是21.2摄氏度,差了快一度,也就这样吧~

本阶段代码:

  1. import time
  2. import socket
  3. import board
  4. import busio
  5. import adafruit_ads1x15.ads1115 as ADS
  6. from adafruit_ads1x15.analog_in import AnalogIn
  7. i2c = busio.I2C(board.SCL, board.SDA)
  8. ads = ADS.ADS1115(i2c)
  9. Moisture_channel = AnalogIn(ads, ADS.P2)
  10. LM35_channel = AnalogIn(ads, ADS.P1)
  11. # Map function
  12. def _map(x, in_min, in_max, out_min, out_max):
  13. return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
  14. while True:
  15. # Read the specified ADC channels using the previously set gain value.
  16. Moisture_Value = Moisture_channel.value
  17. Moisture_Percent = _map(Moisture_Value, 17418, 7440, 0, 100)#17418和7440是矫正后得到的。
  18. ads_ch0 = LM35_channel.value
  19. ads_Voltage_ch0 = ads_ch0 * ads_bit_Voltage
  20. Temperature = int(ads_Voltage_ch0 / lm35_constant)
  21. print("Temperature = ", Temperature)
  22. print("Moisture % = ", Moisture_Percent)

温度的优化设想

家里有小米的温度计,该温度计是通过蓝牙连接的,是否可以用树莓派直接获得温度计的值,这样更准确,还能减少几条线。我查了有这样的开发,github仓库如下:

  1. https://github.com/custom-components/ble_monitor

这几天抽空研究下,看看能不能实现,哈哈哈。

下周计划

已经做了内网穿透,下周做个界面和接口,试着将树莓派采集的信息传到某个端口,并通过阿里云在外网访问。
实现树莓派直接访问小米温湿度计。
光照、摄像头拍照、LCD显示、情绪设置和图片等等这些乱七八糟的有时间就搞上。

最新回复

这里厉害,仔细看了一下就是农业土壤状态分析,怎么判断情绪呢?   详情 回复 发表于 2023-12-7 08:45
点赞 关注
 
 

回复
举报

7500

帖子

2

TA的资源

版主

沙发
 
植物情绪,这是一个很特别的一个设计呀
 
 
 

回复

6860

帖子

9

TA的资源

版主

板凳
 

植物情绪,你这从原理就吓退了很多人啊  

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

91

帖子

1

TA的资源

一粒金砂(中级)

4
 

这里厉害,仔细看了一下就是农业土壤状态分析,怎么判断情绪呢?

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表