Stap 6: Geigerteller gegevens doorgeven aan de Raspberry Pi
Mij zoals using python voor mijn scripts. Python3 installeren
$ sudo apt-get update $ sudo apt-get install python3
Log in op de Raspberry Pi. Toegankelijk te terminal venster op MacBook en stormloop naar de troepenleiding:
$ ssh pi♣geiger-counter-ip-address♣ $ sudo nano geiger.py
Maak dit python script in /home/pi. Het in principe schrijft de gegevens naar een bestand dat kan worden gebruikt door gnuplot.
#!/usr/bin/python3 # geiger.py gets data from Mighty Ohm Geiger Counter and writes to a file on Raspberry Pi # edit crontab # $ sudo crontab -e # and add the following line at the end - this can also be done in init.d # sudo /usr/bin/python3 /home/pi/geiger.py 2>&1 # # Future: gnuplot requires a static file (so tail -100 or something to get rolling data) import time import datetime import string import signal import re import serial class Geiger: def __init__(self): # filler - I meant to (or may add more in init self.host = '192.168.1.92' def readLine(self, port): r = "" while True: byte = port.read() c = byte.decode("utf-8") if c=='\n' or c=='\r' or c=='': return r else: r += c if __name__ == '__main__': try: g = Geiger() c = 0 # on each use restart the file f = open("/home/pi/geiger.dat", "w") port = serial.Serial("/dev/ttyAMA0", baudrate=9600, timeout=1) # Don't need column headers # f.write("count CPS CPM uSv/hr\r\n") while True: r = g.readLine(port) if r != '': words = r.split(",") l = len(words) if l == 7: # data should come back in the form # CPS, n, CPM n, uSv/hr n, SPEED # for debug: # f.write('input = ' + r + '\r\n') f.write(str(c) + words[1] + words[3] + words[5] + '\r\n') f.flush() c += 1 except KeyboardInterrupt: f.close() print('closing script through ctrl-c')
Start een terminal-venster op PiTFT weergave,
Start het geiger.py script dat wordt uitgevoerd, maar wacht niet tot het te voltooien (het "&" vertelt het bevel om te starten zonder te wachten tot het te voltooien)
$ python3 geiger.py & [1] 1010
Als u wilt stoppen met het gebruik van script doden pid, of in het geval hierboven.
$ sudo kill 1010
Kunt u de volgende opdracht om ervoor te zorgen dat gegevens worden geschreven naar geiger.dat
$ cat geiger.dat