通过python获取Arduino雨滴传感器模块的数据(PyMata3+MySQL)
在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的主要模型有兩種:
analogRead(analogPin))或者使用來發送打包在字符串中的數據Firmata.sendString(stringToSend)。
為了節省時間,我們今天根據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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模板模式
- 下一篇: mysql alter 添加注释_我们如