Forum
  • Registrieren

RPi Python Programm auf Arietta übertragen

  • HaSch
  • Topic Author
  • Offline
  • Senior Boarder
  • Senior Boarder
More
5 years 3 weeks ago #1 by HaSch
Hallo,

ich würde gerne für ein Projekt einen Ultraschallsensor HC-SR04 an Arietta anschließen und über ein Python-Programm die Entfernung messen lassen. Ich habe den entsprechenden Python-Code auch gefunden - allerdings für den Raspberry Pi. Ich selbst bin weder mit Python, noch mit Linux so fit, dass es mir gelingen würde, jedenfalls bin ich mit meinen Versuchen kläglich gescheitert. Arietta und RPi verwenden unterschiedliche Libraries, weshalb der Code auf Arietta nicht läuft und an die Library angepasst werden muss, um ihn zum Laufen zu bringen.

Das Programm soll nichts anderes machen, als einen 10us-Impuls auf PA22 zu geben, die Länge des vom HC-SR04 zurückkommenden Impulses soll an PA21 gemessen werden weil darüber die Entfernung vom Sensor zum Hindernis bestimmt werden kann. Das Programm ist nicht sehr lang und vielleicht ist es für jemanden mit mehr Einblick nicht allzu schwierig, den Code anzupassen.

Kann mir jemand helfen?

Gruß
Hans
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# import required modules
import time
import RPi.GPIO as GPIO

# define GPIO pins
GPIOTrigger = 22
GPIOEcho    = 21

# function to measure the distance
def MeasureDistance():
  # set trigger to high
  GPIO.output(GPIOTrigger, True)

  # set trigger after 10µs to low
  time.sleep(0.00001)
  GPIO.output(GPIOTrigger, False)

  # store initial start time
  StartTime = time.time()

  # store start time
  while GPIO.input(GPIOEcho) == 0:
    StartTime = time.time()

  # store stop time
  while GPIO.input(GPIOEcho) == 1:
    StopTime = time.time()

  # calculate distance
  TimeElapsed = StopTime - StartTime
  Distance = (TimeElapsed * 34300) / 2

  return Distance

# main function
def main():
  try:
    while True:
      Distance = MeasureDistance()
      print("Measured Distance = %.1f cm" % Distance)
      time.sleep(1)

  # reset GPIO settings if user pressed Ctrl+C
  except KeyboardInterrupt:
    print("Measurement stopped by user")
    GPIO.cleanup()

if __name__ == '__main__':
  # use GPIO pin numbering convention
  GPIO.setmode(GPIO.BCM)

  # set up GPIO pins
  GPIO.setup(GPIOTrigger, GPIO.OUT)
  GPIO.setup(GPIOEcho, GPIO.IN)

  # set trigger to false
  GPIO.output(GPIOTrigger, False)

  # call main function
  main()

Please Log in or Create an account to join the conversation.

More
5 years 3 weeks ago #2 by gre
Hallo HaSch,

wenn wirklich die Libraries für die Arietta angepasst werden müssen, haben wir hier ein bissel verloren.
Dann bekämest Du aber wahrscheinlich auch eine Fehlermeldung...

Hoffen wir also, dass es nur die Nummerierung ist, die hier Tumult macht!
Bei den GPIO´s gibt es ja schon am Pi selbst mindestens drei unterschiedliche Rechtsprechung an Nummerierung, welche immer wieder für Unterhaltung sorgen.

Prüfe das erst mal an der Arietta. Häng einfach eine LED mit Vorwiderstand dran und bringe die zum Blinken (Aber bitte eine Sekunde, also statt time.sleep(0.00001) time.sleep(1), sonst siehst du nix).

Was mir selbst bei dem Sensor schleierhaft ist, ist wie das mit der Spannung läuft. Der benötigt doch einen 5V Triggerimpuls und gibt 5V Echo zurück.
Letzteres mag der Pi ja verkraften, aber dass 3.3V Trigger reichen sollen, verstehe ich nicht.

Please Log in or Create an account to join the conversation.

  • HaSch
  • Topic Author
  • Offline
  • Senior Boarder
  • Senior Boarder
More
5 years 3 weeks ago - 5 years 3 weeks ago #3 by HaSch
Hallo gre,

das hast du falsch verstanden: Nicht die Library anpassen, sondern den Python Code an die Library. Die Nummerierung ist auch nicht das Problem, dass das geht, habe ich schon ausprobiert. Auch die blinkende LED funktioniert. Ansteuerung des PA22 (out) oder Auslesen des PA21 (in) bekomme ich hin. Nur das Python-Programm funktioniert nicht, weil es vom Pi stammt.

Das mit den 5V stimmt, doch habe ich irgendwo gelesen, dass 3,3V zum Triggern ausreichen. Der Ausgang des HC-SR04 wird selbstverständlich über einen Spannungsteiler angeschlossen. Wenn die 3,3V zum Triggern nicht ausreichen sollten, kann ich ja was mit einer einfachen Transistorschaltung machen, mal sehen.

Erst aber mal muss ich dahin kommen, dass der Python Code überhaupt läuft. Die Library von Arietta heißt übrigens ablib und ist hier zu finden, ich kann aber nicht viel damit anfangen.

Gruß
Hans
Last edit: 5 years 3 weeks ago by HaSch.

Please Log in or Create an account to join the conversation.

More
5 years 3 weeks ago #4 by gre
Aber dann hast Du doch alles was Du benötigst und schreibe Dein eigenes Programm!

Das ist jetzt wirklich nicht zynisch gemeint, denn das gezeigte Phytonprogramm sieht nur ein bisschen gefährlich aus.

Was Dir auf der Arietta vielleicht noch fehlen könnte, ist das Time Modul.
Wenn Du das nicht nachziehen kannst, ersetzt Du es eben durch kleine Zählschleifen.
Mit dem Lineal wird dann der Korrekturfaktor ermittelt, also nicht mehr 34300 sondern somewhat else...

Please Log in or Create an account to join the conversation.

More
5 years 3 weeks ago - 5 years 3 weeks ago #5 by JPNeumann
Replied by JPNeumann on topic RPi Python Programm auf Arietta übertragen
Hallo HaSch B)
ich hatte leider noch nicht viel Zeit mir das Library reinzuziehen. Das Pythonprogramm was Du nutzen willst kann natürlich nicht funktionieren. Als erstes musst Du dafür sorgen, dass das Arietta-Library eingebunden wird.
import ablib
erst danach kannst Du auf die Funktionen der Ablib-Klasse zugreifen. Ich habe gerade nicht allzuviel Zeit, werde aber mal sehen, dass wir das zusammen hinbekommen.
Last edit: 5 years 3 weeks ago by JPNeumann.
The following user(s) said Thank You: HaSch

Please Log in or Create an account to join the conversation.

  • HaSch
  • Topic Author
  • Offline
  • Senior Boarder
  • Senior Boarder
More
5 years 3 weeks ago #6 by HaSch
Danke Jörg,

das hatte ich auch schon gemacht, aber leider bin ich damit nicht viel weiter gekommen. Der Code, den ich oben gepostet habe, ist der Code für den RPi. Ich habe ihn unverändert gelassen, bis auf die beiden Variablen für PA22 und PA21, die ich benutzen will, also GPIOTrigger = 22 und GPIOEcho = 21


PS: Die Library heißt ablib und nicht adlib

Please Log in or Create an account to join the conversation.

Time to create page: 0.309 seconds

Find products!


Advanced search