日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2023/12/9 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过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的主要模型有兩種:

  • 在一個模型中,Arduino草圖的作者使用Firmata庫提供的各種方法來選擇性地在Arduino設備和主機上運行的軟件之間發送和接收數據。例如,用戶可以使用來將模擬數據發送到主機,Firmata.sendAnalog(analogPin,
    analogRead(analogPin))或者使用來發送打包在字符串中的數據Firmata.sendString(stringToSend)。
  • 第二種也是更常見的模型是在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)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。