ทำการรับค่าจาก arduino ยังไงครับ เมื่อต่อกับ raspberry pi

เมื่อต่อวงจรตามภาพนี้ แล้วทำการเเสดงค่าจาก arduino มา rasp เรียบร้อยแล้ว เราสามารถเก็บค่าที่แสดงออกมา ลงในrasp ได้ไหมครับ เช่น temp ก็เก็บไว้ใน x และ humidity เก็บในตัวแปร y แล้วนำ ตัวแปรทีาเก็บมา นำไปใช้งานต่อครับ รบกวนด้วยครับ

ต้องการเก็บค่าไว้ในรูปแบบไหนครับ ถ้าเป็น excel ไฟล์ลองสคริป python แบบนี้

from gpiozero import CPUTemperature
from time import sleep, strftime, time
import matplotlib.pyplot as plt

cpu = CPUTemperature()

plt.ion()
x = []
y = []

def write_temp(temp):
    with open("/home/pi/cpu_temp.csv", "a") as log:
        log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temp)))

def graph(temp):
    y.append(temp)
    x.append(time())
    plt.clf()
    plt.scatter(x,y)
    plt.plot(x,y)
    plt.draw()

while True:
    temp = cpu.temperature
    write_temp(temp)
#    graph(temp)
    plt.pause(1)

https://projects.raspberrypi.org/en/projects/temperature-log

ถ้าไว้ใช้ต่อกับpwm เพื่อคุมปั๊มน้ำอะครับ

เคยเขียน Respberry Pi มาก่อนรึป่าวครับ

จะทำประมาณนี้อะครับ ตอนนี้แค่นำค่าออกมาจาก ทาง arduino แล้วเก็บค่าไว้ได้แล้วครับ จะหลือแต่คุม pwm ยังไม่รู้ว่าจะใส่ตรงไหนดีอะครับ ครับ โคดทาง rasp ที่ผมทำ จะได้ตามมนี้ครับ

//////////////////

import RPi.GPIO as GPIO 
import serial, string, time
import numpy as np
from math import tanh
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(35, GPIO.OUT) 
pwm1 = GPIO.PWM(35, 100)
GPIO.setup(36, GPIO.OUT) 
pwm2 = GPIO.PWM(36, 100)
ser = serial.Serial('/dev/ttyUSB0',9600)
while True:
        if ser.in_waiting > 0:
            rawserial = ser.readline()
            cookedserial = rawserial.decode('utf-8').strip('\r\n')
            datasplit = cookedserial.split(',')
            temperature = datasplit[0].strip('<')
            humidity = datasplit[1].strip()
            EC = datasplit[2].strip('>')
            print("EC = ",EC,"uS/cm")
            if (EC < "5000"):
                print ("vb")
                sor=float(EC)
1 Like

อยากจะทำเครื่องเติมสาร A B อัตโนมัติ ครับ แต่ยังไม่ทราบว่าต้องเขียนอะไรเพิ่มเติมตรงไหนครับ ผมลองเขียนต่อ pwm แล้วครับ แต่ ตัวpwm มันดันติดพร้อมกันครับ เป็นกับสายสัญญาณที่ส่งไปไหมครับ บางทีรันโปรแกรมไปจะ err ตรง

temperature = datasplit[0].strip(’<’)
humidity = datasplit[1].strip()
EC = datasplit[2].strip(’>’)
จะขึ้นว่า
indexerror: list index out of range

แบบนี้อะครับ พอจะแนะนำเรื่อง code และ เรื่อง pwm ให้ได้ไหมครับ

จ่าย pwm นี้ สั่งให้ บอร์ดไหนจ่ายครับ pi หรือ arduino

Pi ครับ ตอนนี้สั่งจ่ายได้เเล้วครับ
อยากจะทำต่อไปคือ ให้ เปิดเครื่อง rasp แล้วโปรแกรมจะทำงาน แล้วสั่งไปให้ arduino ทำงานตามกัน หลังจากนั้น เมื่อครบเวลา 10 วัน จะให้rasp หยุดทำงาน แล้วสั่งให้ arduino หยุดทำงานไปด้วย เเต่ยังไม่ปิดเครื่องอะครับ แต่ยังหาข้อมูลทางด้านโคดยังไม่ได้เท่าไหร่เลยครับ พี่พอจะมีโคดแนะนำไหมครับ

แก้ไขปัญหาอย่างไรครับอธิบายหน่อย

ทีแรกผมต่อ ขา ลบ output ของตัว pwm ทั้งสองตัวเข้าด้วยกันครับ แต่พอแยกออกจากกัน สัญญาณก็มาคนละเส้นครับผม

1 Like

สำหรับเคสนี้

ตอนนี้สื่อสารกันยังไงครับ

ทาง port USB ครับ
แล้วถ้าอยากให้ปิดเครื่องตามวันละครับ แบบว่า ทำงาน วันที่ 11 ไปหยุดวันที่ 17 อะไรอย่างงี้อะครับ

แล้วตอนนี้ให้มันสื่อสารอะไรกันบ้างรึยัง


ประมาณนี้ครับผม

วางโค้ต arduino กับ Resberry ที่ใช้ไว้ในที่เดียวกันหน่อยครับ