Forum » Programiranje » 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
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
Uporabljam tole; https://github.com/MatejKovacic/SDS011-...
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 ::
Poglej v Arduino IDE ali upravitelju naprav, kateri port je dodeljen tvojemu Arduinu. Praviš, da je COM4. Potem samo zamenjaš vrednost spremenljivkeUSBPORT = "COM4"
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 ::
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Nasveti glede API-jaOddelek: Programiranje | 1051 (591) | Arey |
» | [Python3] Izvajanje ukazov po določenem časuOddelek: Programiranje | 1309 (919) | noraguta |
» | Električno stikalo z oddaljenim nadzoromOddelek: Elektrotehnika in elektronika | 1260 (779) | Torx |
» | Arduino "leteče luči"Oddelek: Elektrotehnika in elektronika | 2862 (1739) | zrataj4201 |
» | Pomoč pri izdelavi Python skripte (strani: 1 2 )Oddelek: Programiranje | 5365 (4011) | BigWhale |