在Arduino的IDE编辑器上实现检测降雨量是比较简单的操作,在下面这个网址里有详细教程:https://www.cnblogs.com/eagler8/p/11561651.html

IDE的串口监视器虽然能输出信息,却不能将数据保存下来,也不能直接调用这些数据.

在上一节内容里,我介绍了:
通过python在Arduino开发板上实现blink—Arduino学习笔记1

在里面已经详细介绍了python调用Arduino开发板的2种方法,验证了使用python调用Arduino开发板的可行性,接下来,我要用第三种方法,通过python获取Arduino雨滴传感器模块传回的数据.

第三种方法用的库是pymata_aio. pymata_aio是使用Python asyncio的Arduino Firmata的Python协议抽象库

使用Firmata的主要模型有两种:

  1. 在一个模型中,Arduino草图的作者使用Firmata库提供的各种方法来选择性地在Arduino设备和主机上运行的软件之间发送和接收数据。例如,用户可以使用来将模拟数据发送到主机,Firmata.sendAnalog(analogPin,
    analogRead(analogPin))或者使用来发送打包在字符串中的数据Firmata.sendString(stringToSend)。
  2. 第二种也是更常见的模型是在Arduino板上加载一个称为StandardFirmata的通用草图(或视您的需要而定义的StandardFirmataPlus或StandardFirmataEthernet等变体之一),然后仅使用主机与Arduino板进行交互。

为了节省时间,我们今天根据Arduino官网上的3线制雨滴传感器源码,把C语言改写成python.在改写的过程中,为了完善功能,我补充了一些内容.

先来看看c语言的程序是怎么实现的:

/*【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)实验三十二:雨滴传感器模块(雨水/雨量/叶面湿度)《3线制》*/
void setup()
{pinMode(3,INPUT);pinMode(13,OUTPUT);
}
void loop()
{   if (digitalRead(3)) {digitalWrite(13,LOW);}else {digitalWrite(13,HIGH);delay(1000);}
}

雨滴传感器与Arduino开发板的连接方式如下:

需要注意的是,正负极不要接反,不然传回的数据是反的

接上电源后:

使用的线必须要有数据传输功能,只有充电功能的线会使程序出现报错

以下是python程序代码:

from pymata_aio.pymata3 import PyMata3
from pymata_aio.constants import Constants
from pymysql import *
import time

导入必要的模块

try:conn = connect(host = '127.0.0.1',port = 3306,user = 'root',password = 'root',charset = 'utf8',db = 'test')cursor = conn.cursor()print("数据库连接成功!")
except Exception as e:print(e)

连接数据库,把传回的数据保存在mysql里

BOARD_LED = 13
board = PyMata3(com_port="COM3") # 连接串口

连接名为COM3的串口

def setup():board.set_pin_mode(BOARD_LED, Constants.OUTPUT)# 声明引脚为输出board.set_pin_mode(3, Constants.INPUT)board.enable_analog_reporting(0)board.set_pin_mode(0, Constants.ANALOG) # 设置A0, 读模拟信号

初始化程序

def loop():try:if (board.digital_read(3)):board.digital_write(BOARD_LED,1)time.sleep(1)else:board.digital_write(BOARD_LED,0)time.sleep(1)ticks = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())hum = (board.analog_read(0))print(ticks,'湿度:',hum) # 读A0,结果为0-1023的一个数except Exception as e:print(e)board.shutdown()# 关闭连接, 很有必要

定义一个循环,让雨滴传感器持续工作

sql = 'insert into humiditydemo(dtime,humiditys)' + 'value(%s,%s)'
cursor.execute(sql,[ticks,hum])

最后在循环里加上把数据存到数据库里的语句

if __name__ == "__main__":setup()while True:loop()

运行程序

通过python获取Arduino雨滴传感器模块的数据(PyMata3+MySQL)相关推荐

  1. STM32获取GY-25A倾角传感器串口输出数据

    STM32获取GY-25A倾角传感器串口输出数据 GY-25A模块是新型的倾角传感器模块,具有X和Y两轴模拟角度输出和串口角度输出的功能.这里介绍STM32获取GY-25A串口输出的角度数据.(获取模 ...

  2. 提交模式窗口后,刷新父窗口数据+获取frameset中各模块中数据

    转自:http://www.iteye.com/topic/724864 一.提交模式窗口后,刷新父窗口数据 有些时间,按需求设计,一个窗口中,点击按扭,弹出模式窗口,在模式窗口中,添加完数据后(提交 ...

  3. python获取arduino数据可视化_Arduino数据可视化在实验教学中的应用

    饶珺 [摘           要]  为培养学生学科交叉创新与科技融合的能力,上海大学工程训练国家级实验教学示范中心不断提升实验教学水平,并组织学科竞赛,倡导学生通过自主设计和制作完成项目作品.Ar ...

  4. 3 Python获取股票、基金、期货数据,好用的库efinance

    efinance 是由个人打造的用于获取股票.基金.期货数据的免费开源 Python 库,你可以使用它很方便地获取数据以便更好地服务于个人的交易系统需求. 范例 Stock 获取股票历史日 K 线数 ...

  5. python随机数据库_Python实现生成随机数据插入mysql数据库的方法

    本文实例讲述了Python实现生成随机数据插入mysql数据库的方法.分享给大家供大家参考,具体如下: 运行结果: 实现代码: import random as r import pymysql fi ...

  6. arduino雨滴传感器原理_Arduino酸度计(PH计)

    关联知识 Arduino 在本项目中,我们将通过将模拟pH传感器与Arduino接口来设计pH计. 介绍 在化学中,pH是用于指定水基溶液的酸性或碱性的标度. 酸性溶液的pH值较低,而碱性溶液的pH值 ...

  7. python导入excel模块_Excel到python第一章python利用pandas和numpy模块导入数据

    原博文 2019-08-29 21:18 − import numpy as np import pandas as pd # 导入数据 # 读取csv数据 df = pd.read_csv(open ...

  8. Day65:Python获取阿里云产品云监控数据指标

    1.阿里云服务器 先创建阿里云账号: 购买一台低配置的阿里云ECS服务器: 还可以查看ECS云监控的监控指标数据: 2.通过阿里云官方的Python SDK API获取阿里云监控数据指标 阿里云为了保 ...

  9. Python获取阿里云产品云监控数据指标

    1.阿里云服务器 先创建阿里云账号: 购买一台低配置的阿里云ECS服务器: 还可以查看ECS云监控的监控指标数据: 2.通过阿里云官方的Python SDK API获取阿里云监控数据指标 阿里云为了保 ...

  10. python美国股票数据api_【美股量化00篇】Python获取新浪接口美股实时数据

    1.本篇以BABA(阿里巴巴)为例,在浏览器地址栏输入以下url,即可获取个股数据:阿里巴巴(BABA)实时数据​hq.sinajs.cn import requests url = 'http:// ...

最新文章

  1. flex swf和movieclip之前的微妙关系
  2. 解决nginx+php二级页面显示空白的问题
  3. Flutter Dart:用数字分组显示大数字
  4. 控制Domino的log.nsf数据库过大增长
  5. Linux性能分析工具与图形化方法
  6. python logging mysql_Python 操作 MySQL 的正确姿势
  7. 计算机c语言二级试题及答案,计算机c语言二级考试试题及其答案.doc
  8. 【转载保存】hadoop学习之wordcount运行错误处理
  9. Spring学习总结(17)——Spring AOP权限管理
  10. C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;...
  11. 文字处理技术:空格压缩
  12. 华师c语言程序设计作业,华师《C语言程序设计》练习题库答案
  13. python爬取豆瓣电影名称与评分进行分析
  14. 如何在PDF页面中插入图片?
  15. 【比特熊故事汇】2月MVP英雄故事|有爱的开源
  16. 微微一笑很倾城(3)
  17. 虚拟机镜像的创建方法
  18. 巨量信息流广告 “一键起量“ 功能,深度解析使用方法!
  19. 计算机的r进制,进制转换(十进制转R进制)
  20. git不用每次输入用户名和密码

热门文章

  1. 高通平台开机LOGO的修改与兼容
  2. Planetside.Software.Terragen.v0.9.43.WinALL 1CD(景观产生器)
  3. 服务器怎么修改远程桌面端口号,windows系统如何修改默认的远程桌面端口 如何更改服务器远程端口...
  4. 用R进行meta分析(metafor包)
  5. 最简单AnyLogic安装教程——天津理工大学
  6. 一个不错的Fortran教程
  7. canvas 加载图片
  8. 前端ES6+基础总结
  9. 16家上市银行股票代码
  10. 【RTD】AD7793三线式铂电阻PT100/PT1000应用