» »

Pot do USB porta (arduino - python)

Pot do USB porta (arduino - python)

robcek23 ::

Pozdravljeni, imam senzorček in me zanima kako najdem "pot" za USB port na Windowsih?

Pod device manager mi kaže da je arduino na COM4, ampak nimam pojma kako naj najdem pot za USB port
USBPORT = "/dev/ttyUSB0"


Sem poizkusil z "chgport" v CMD in mi vrže COM4 = \Device\Serial2, ampak program ne laufa ker napiše da ne more odpreti porta, "pot ne obstaja".
Prav tako sem poizkusil v device managerju pod properties in potem DEtails -> device instant path, kar kaže USB\VID_1A86&PID_7523\5&33649DDC&0&2 ..ampak prav tako ne deluje. Tako da mi ni jasno, kako naj dobim pot za USBPORT.. morda kakšna ideja?

prav tako

koda
import os
import sys
import time
import serial

# Reopen sys.stdout with buffer size 0 (unbuffered)
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

# Set default USB port
USBPORT = "/dev/ttyUSB0"


class SDS021Reader:

    def __init__(self, inport):
        self.serial = serial.Serial(port=inport, baudrate=9600)

    def readValue( self ):
        step = 0
        while True: 
            while self.serial.inWaiting() != 0:
                v = ord(self.serial.read())

                if step == 0:
                    if v == 170:
                        step = 1

                elif step == 1:
                    if v == 192:
                        values = [0,0,0,0,0,0,0]
                        step = 2
                    else:
                        step = 0

                elif step > 8:
                    step = 0
                    # Compute PM2.5 and PM10 values
                    pm25 = values[0] + values[1]*256
                    pm10 = values[2] + values[3]*256
                    return [pm25,pm10]

                elif step >= 2:
                    values[step - 2] = v
                    step = step + 1


    def read( self ):
        species = [[],[]]

        while 1:
            try:
                values = self.readValue()
                species[0].append(values[0])
                species[1].append(values[1])
                print("PM2.5: %.0f, PM10: %.0f" % (values[0], values[1]))
                time.sleep(1)  # wait for one second
            except KeyboardInterrupt:
                print("Quit!")
                sys.exit()
            except:
                e = sys.exc_info()[0]
                print("Can not read sensor data! Error description: " + str(e))

def loop(usbport):
    print("Starting reading dust sensor on port " + usbport + "...") 
    reader = SDS021Reader(usbport) 
    while 1:
        reader.read()

if len(sys.argv)==2:
    if sys.argv[1].startswith('/dev'):  # Valid are only parameters starting with /dev
        loop(sys.argv[1])
    else:
        loop(USBPORT)
else:
loop(USBPORT)


Uporabljam tole; https://github.com/MatejKovacic/SDS011-...

xardas ::

Poglej v Arduino IDE ali upravitelju naprav, kateri port je dodeljen tvojemu Arduinu. Praviš, da je COM4. Potem samo zamenjaš vrednost spremenljivke
USBPORT = "COM4"

Zgodovina sprememb…

  • spremenilo: xardas ()

robcek23 ::

xardas je izjavil:

Poglej v Arduino IDE ali upravitelju naprav, kateri port je dodeljen tvojemu Arduinu. Praviš, da je COM4. Potem samo zamenjaš vrednost spremenljivke
USBPORT = "COM4"


8-O:'(;(:|
to je bilo to ja, hvala...

no, sicer pa evo nove težave...

Ko sem zagnal program mi je napisalo PM2.5: xx ... tako kot bi moralo, program je naprej deloval in izpisal eno vrstico, nato pa se izpisalo ni nič več. Potem sem na novo zagnal parkrat in mi je 2x pokazalo vrednosti, sedaj pa napiše le "Starting reading dust sensor on port COM4..." ..in potem nič

Morda kakšna ideja kaj bi lahko bilo.. Oziroma program zgleda da dela sepravi je problem verjetno nekje drugje, ampak kako to troubleshootat, kaj lahko sploh naredim?

Zgodovina sprememb…

  • spremenilo: robcek23 ()

xardas ::

Spremljaj vračanje vrednosti v Serial monitorju (Arduino IDE) ali pa vstavi dodatne izpise v gornjo kodo (metoda read()).

robcek23 ::

xardas je izjavil:

Spremljaj vračanje vrednosti v Serial monitorju (Arduino IDE) ali pa vstavi dodatne izpise v gornjo kodo (metoda read()).

Sem pogledal in tudi na serial monitorju ni bilo izpiskov tako da sem zamenjal kable in sedaj dela.

Ampak se mi zdijo vrednosti previsoke, npr tudi na githubu na njegovem primeru je pm2.5 več kot 300, pm10 pa 500+, tako da ali je senzor tako nenatančen, ali pa je račun napačen.




A ne bi bilo po dokumentaciji pravilno takole?
                    pm25 = values[0]/10 + values[1]*256
                    pm10 = values[2]/10 + values[3]*256


Potem pride praktično /10, kar pa se mi zdi da bi bilo lahko približno realno

Ali se motim? Ker kode ne razumem ravno...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Nasveti glede API-ja

Oddelek: Programiranje
111051 (591) Arey
»

[Python3] Izvajanje ukazov po določenem času

Oddelek: Programiranje
211309 (919) noraguta
»

Električno stikalo z oddaljenim nadzorom

Oddelek: Elektrotehnika in elektronika
131260 (779) Torx
»

Arduino "leteče luči"

Oddelek: Elektrotehnika in elektronika
132862 (1739) zrataj4201
»

Pomoč pri izdelavi Python skripte (strani: 1 2 )

Oddelek: Programiranje
615365 (4011) BigWhale

Več podobnih tem