[PYTHON] Grundeinstellungen für die Verwendung des Grove Pi + Starterkits und der Kamera mit Raspberry Pi

Überblick

Ich entschied mich für Raspberry Pi und Kamera, Grove Pi + Starter Kit und Kintone bei Hackason und untersuchte das Setup und die Grundeinstellungen von Raspberry Pi. Obwohl es Probleme mit den Einstellungen für die Verwendung von OpenCV mit Python 3 und den Grove Pi + -Einstellungen gab, konnte ich den Raspberry Pi und die Kamera, das Grove Pi + -Starter-Kit und die Python-Bibliothek so einstellen, dass sie auf Kintone zugreifen.

Über die zu verwendenden Geräte (2020/01/03 von Amazon befragt)

Der neueste Raspberry Pi 4 ist nicht in der Grove Pi-Unterstützung enthalten, daher verwende ich dieses Mal Raspberry Pi 3. Der Raspberry Pi 4 ist in erster Linie teuer, und Sie werden für diese Anwendung nicht so viele Spezifikationen benötigen.

In dieser Umfrage verwendete Ausrüstung (einschließlich einiger gleichwertiger Produkte)

Sie können sie alle bei Amazon kaufen und für etwa 20.408 Yen ausprobieren.

Raspberry Pi3 Modell B Board & Case Set 3ple Decker-kompatibel (klar) -Physical Computing Lab (6.100 Yen) https://www.amazon.co.jp/dp/B01CSFZ4JG/ SanDisk microSDHC ULTRA 16 GB 80 MB / s SDSQUNS-016G Class10 (465 Yen) https://www.amazon.co.jp/dp/B074B4P7KD/ __Grove Pi + Starter Kit Himbeer Pi A +, B, B + & 2,3 für CE-Zertifizierung für Anfänger __ (6.100 Yen) https://www.amazon.co.jp/dp/B07H9PFWHW/ __US Netzteil Ein / Aus-Schalterkabel 5V 2,5A kompatibel mit Himbeerkuchen 3 Leicht und bequem zu tragen __ (464 Yen) https://www.amazon.co.jp/dp/B07CYNGG4C/ __ Kameramodul Lichtempfindlicher Chip OV5647 Sensor 5M Pixel Himbeer Pi 1 2 3 Modell B B A + kompatibel __ (780 Yen) https://www.amazon.co.jp/dp/B07G572B3R/

Himbeer-Pi-Einstellungen

Betriebssystem-Setup

Ich habe das neueste Betriebssystem von folgenden heruntergeladen. https://www.raspberrypi.org/downloads/raspbian/

Das verwendete Betriebssystem-Image lautet wie folgt. Raspbian Buster with desktop ・ Version: September 2019 ・ Erscheinungsdatum: 2019-09-26 -Kernel-Version: 4.19

Die Methode zum Einrichten des Betriebssystems auf der SD-Karte entfällt. Wenn Sie mehr wissen möchten, lesen Sie bitte Folgendes.

__Raspberry Pi Grundeinstellung Windows (@ sigma7641) __ https://qiita.com/sigma7641/items/995c7bb07eab408b9d0e __Raspberry Pi Grundeinstellung Mac (@skkojiko) __ https://qiita.com/skkojiko/items/a7e342a8ab53b409fe6a

Informationen zum Befehlszeilentexteditor

Die Arbeit wird in der Befehlszeile erledigt und mit ssh verbunden. Der Befehlszeilentexteditor wird in Nano erklärt. Informationen zur Verwendung finden Sie weiter unten.

__GNU Nano-Meisterschaft (@snct_hu) __ https://qiita.com/snct_hu/items/971d512c26dd8b3a3b3c

Feste IP-Einstellungen

Stellen Sie zunächst eine feste IP ein, um die Verbindung mit ssh zu vereinfachen.

$ sudo nano /etc/dhcpcd.conf
(Ändern Sie die IP-Adresse in einen geeigneten Inhalt und fügen Sie die folgenden Einstellungen hinzu.)
interface eth0
static ip_address=192.168.0.111/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8

Informationen zu den WLAN-Einstellungen finden Sie im Folgenden. __ Raspberry Pi WLAN-Einstellungen in der Befehlszeile (@mym) __ https://qiita.com/mym/items/468d2cdb30d756b6df24

Grundeinstellungen des Betriebssystems

Grundlegende Betriebssystemeinstellungen werden mit raspi-config vorgenommen.

$ sudo raspi-config

Dieses Mal ist Folgendes eingestellt.

1 Change User Password

4 Localisation Options -> I1 Change Locale -> ja_JP.UTF-8 UTF-8 -> I2 Change Timezone -> Asia -> Tokyo -> I3 Tastaturlayout ändern-> Geeignet -> I4 Change Wi-fi Country -> JP Japan

5 Interfacing Options -> P1 Camera -> Enable -> P4 SPI -> Enable -> P5 I2C -> Enable

8 Update

Aktualisieren Sie das Betriebssystem nach dem Einstellen auf den neuesten Stand.

$ sudo apt-get update
$ sudo apt-get upgrade

Raspberry Pi Kameraeinstellungen

Unten finden Sie die Einstellungen der Raspberry Pi-Kamera.

__Raspberry Pi Nehmen Sie Fotos und Videos mit einer Kamera auf __ https://iotdiyclub.net/raspberry-pi-using-camera-1/

Konfigurieren Sie nach Abschluss der Grundeinstellungen die Einstellungen für Pythons OpenCV (Bildbearbeitungsbibliothek).

$ sudo modprobe bcm2835-v4l2
$ sudo nano /etc/modules

bcm2835-v4l2

$ sudo apt-get install libopencv-dev python-opencv

Weitere Informationen zu OpenCV finden Sie weiter unten.

OpenCV https://opencv.org/ __ Python-Version der OpenCV-Grundlagen __ https://cvtech.cc/py-opencv/ __ Einführungskurs zur Bildverarbeitung: Bildverarbeitung ab OpenCV und Python __ https://postd.cc/image-processing-101/

Nehmen Sie bei Verwendung von Python3 die folgenden Einstellungen vor.

$ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-103
$ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libjasper-dev
$ pip3 install opencv-python

Wenn Sie OpenCV wie in Python3 verwenden, tritt beim Import von cv2 ein Fehler auf. Um diesen Fehler zu vermeiden, fügen Sie die zu ladende Bibliothek hinzu.

$ nano .bashrc

export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1

$ source .bashrc

Grove Pi + Einstellungen

Informationen zur Installation von Grove Pi + auf Raspberry Pi finden Sie im Folgenden. GrovePi+ https://www.switch-science.com/catalog/2129/

Im Folgenden finden Sie Informationen zum Einstellen der Grove Pi + -Software. Setting Up The Software https://www.dexterindustries.com/GrovePi/get-started-with-the-grovepi/setting-software/

$ curl -kL dexterindustries.com/update_grovepi | bash
$ sudo reboot
$ cd /home/pi/Dexter
$ git clone https://github.com/DexterInd/GrovePi
$ cd /home/pi/Dexter/GrovePi/Script
$ sudo chmod +x install.sh
$ sudo ./install.sh

Wenn nach der Installation kein Problem auftritt, können Sie den 04-Port von I2C mit dem Befehl i2c erkennung überprüfen (siehe unten).

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- 04 -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Nach dem Festlegen von Grove Pi + verursacht das apt-get-Upgrade, das das Betriebssystem und die installierte Software aktualisiert, ein Problem mit der Paketabhängigkeit und einen Fehler. Gehen Sie wie folgt vor, um diesen Fehler zu vermeiden:

$ sudo apt-get --fix-broken upgrade

Um zu testen, ob es tatsächlich funktioniert, verbinden Sie die mitgelieferte Grove-LED wie unten gezeigt mit dem D4-Port des Grove Pi +. http://wiki.seeedstudio.com/Grove-Red_LED/#play-with-raspberry-pi-with-grovepi_plus sensor06.png

Testen Sie nach der Verkabelung die folgende Versionsanzeige und die blinkende LED, um festzustellen, ob Probleme vorliegen.

$ python /home/pi/Dexter/GrovePi/Software/Python/grovepi.py
library supports this fw versions: 1.3.0

$ python /home/pi/Dexter/GrovePi/Software/Python/grove_led_blink.py
This example will blink a Grove LED connected to the GrovePi+ on the port labeled D4.
If you're having trouble seeing the LED blink, be sure to check the LED connection and the port number.
You may also try reversing the direction of the LED on the sensor.

Connect the LED to the port labele D4!
LED ON!
LED OFF!
LED ON!
LED OFF!
LED ON!
LED OFF!

Grove Pi + Bibliotheksfehler

Ab dem 02.02.2020 gibt es ein Problem mit der folgenden Datei der Grove Pi + -Bibliothek 1.3.0, und viele Beispiele funktionieren nicht. /home/pi/Dexter/GrovePi/Software/Python/grovepi.py https://github.com/DexterInd/GrovePi/blob/master/Software/Python/grovepi.py

Beispielsweise ist grove_button.py ein Programm, das die Schaltfläche AUS mit 0 und die Schaltfläche EIN mit 1 anzeigt. Bei Ausführung wird die Anzeige jedoch wie folgt angezeigt.

$ python /home/pi/Dexter/GrovePi/Software/Python/grove_button.py
255
255
255
255
255
255

Es gibt ein Problem mit dem I2C-Leseteil von __grovepi.py, das behoben werden muss. __ __ Die modifizierten Teile von grovepi.py werden unten erklärt.

Zeile 227 read_identified_i2c_block () Gelöscht, da die while-Anweisung für immer wiederholt wird

grovepi.py


def read_identified_i2c_block(read_command_id, no_bytes):
	data = [-1]
	data = read_i2c_block(no_bytes + 1)
	return data

Zeile 246 Die Anzahl der Array-Elemente von analogRead () wurde korrigiert.

grovepi.py


# Read analog value from Pin
def analogRead(pin):
	write_i2c_block(aRead_cmd + [pin, unused, unused])
	number = read_identified_i2c_block(aRead_cmd, no_bytes = 2)
	return number[1] * 256 + number[2]

Zeile 284 ultrasonicRead () Nummer Korrigierte Array-Elementnummer

grovepi.py


# Read value from Grove Ultrasonic
def ultrasonicRead(pin):
	write_i2c_block(uRead_cmd + [pin, unused, unused])
	number = read_identified_i2c_block(uRead_cmd, no_bytes = 2)
	return (number[1] * 256 + number[2])

Zeile 320 Korrigierte Nummer Array-Elementnummer und no_bytes-Variablenwert von dht ()

grovepi.py


# Read and return temperature and humidity from Grove DHT Pro
def dht(pin, module_type):
	write_i2c_block(dht_temp_cmd + [pin, module_type, unused])
	number = read_identified_i2c_block(dht_temp_cmd, no_bytes = 9)
	
	if p_version==2:
		h=''
		for element in (number[1:5]):
			h+=chr(element)
		
		t_val=struct.unpack('f', h)
		t = round(t_val[0], 2)

		h = ''
		for element in (number[5:9]):
			h+=chr(element)
		
		hum_val=struct.unpack('f',h)
		hum = round(hum_val[0], 2)
	else:
		t_val=bytearray(number[1:5])
		h_val=bytearray(number[5:9])
		t=round(struct.unpack('f',t_val)[0],2)
		hum=round(struct.unpack('f',h_val)[0],2)
	if t > -100.0 and t <150.0 and hum >= 0.0 and hum<=100.0:
		return [t, hum]
	else:
		return [float('nan'),float('nan')]

Nach dem obigen Fix habe ich Folgendes getan und die erwarteten Ergebnisse erzielt.

$ python /home/pi/Dexter/GrovePi/Software/Python/grove_button.py
0
0
1
1
1
0
0

Python-Bibliothek für den Zugriff auf Kintone-Einstellungen

$ pip install pykintone
$ pip3 install pykintone

knotenrote Einstellungen (nur bei Bedarf)

Stellen Sie Node-Red wie folgt ein.

$ sudo apt-get install nodered
$ npm install node-red-grovepi-nodes
$ npm install node-red-contrib-kintone
$ sudo systemctl enable nodered.service
$ sudo service nodered start

Sie können Node-Red verwenden, indem Sie mit einem Browser auf http: // Raspberry Pi IP-Adresse: 1880 / zugreifen. nodered.png Siehe unten für Details. __Node-RED Auf Raspberry Pi ausführen __ https://nodered.jp/docs/getting-started/raspberrypi

Remotedesktopeinstellungen (nur bei Bedarf)

Stellen Sie den Remotedesktop wie folgt ein.

$ sudo apt-get install xrdp
$ cd /etc/xrdp/
$ sudo wget http://w.vmeta.jp/temp/km-0411.ini
$ sudo ln -s km-0411.ini km-e0010411.ini
$ sudo ln -s km-0411.ini km-e0200411.ini
$ sudo ln -s km-0411.ini km-e0210411.ini
$ sudo service xrdp restart

Sie können mit der IP-Adresse von Raspberry Pi wie folgt eine Verbindung zum Remotedesktop herstellen. RaspberryPi04.png Siehe unten für Details. __ Stellen Sie von einem Windows-Computer mit einem Remotedesktop (@ t114) eine Verbindung zu Himbeer-Pi3 her. __ https://qiita.com/t114/items/bfac508504b9a6b7570d

Referenz

Ich habe eine Fehlermeldung erhalten, als ich opencv mit Raspeye [Remedy](@ XM03) in python3 eingefügt habe. https://qiita.com/XM03/items/48463fd910470b226f22

Raspberry Pi Projects for the GrovePi. https://www.dexterindustries.com/GrovePi/projects-for-the-raspberry-pi/ https://www.dexterindustries.com/GrovePi/get-started-with-the-grovepi/setting-software/

Grove - LED https://www.seeedstudio.com/Grove-Green-LED.html http://wiki.seeedstudio.com/Grove-Red_LED/#play-with-raspberry-pi-with-grovepi_plus

Hain - Knopf https://www.seeedstudio.com/Grove-Button.html http://wiki.seeedstudio.com/Grove-Button/#play-with-raspberry-piwith-grovepi_plus

Laufen Sie auf Node-RED Raspberry Pi https://nodered.jp/docs/getting-started/raspberrypi

Stellen Sie von einem Windows-Computer mit einem Remotedesktop (@ t114) eine Verbindung zu Himbeer-Pi3 her. https://qiita.com/t114/items/bfac508504b9a6b7570d

GitHub icoxfog417/pykintone https://github.com/icoxfog417/pykintone

Ein Fehler in __grovepi.py (nach Zeile 227) __ wurde behoben Es gibt eine Korrektur im Beschreibungsteil von (Y.K Bugfixes)

grovepi.py


(Weggelassen)

# Read I2C block from the GrovePi
def read_i2c_block(no_bytes = max_recv_size):
	data = data_not_available_cmd
	counter = 0
	while data[0] in [data_not_available_cmd[0], 255] and counter < 3:
		try:
			data = i2c.read_list(reg = None, len = no_bytes)
			time.sleep(0.002 + additional_waiting)
			if counter > 0:
				counter = 0
		except:
			counter += 1
			time.sleep(0.003)
			
	return data

# (Y.K Bug fixes)
def read_identified_i2c_block(read_command_id, no_bytes):
	data = [-1]
	data = read_i2c_block(no_bytes + 1)
	return data

# Arduino Digital Read
def digitalRead(pin):
	write_i2c_block(dRead_cmd + [pin, unused, unused])
	data = read_identified_i2c_block( dRead_cmd, no_bytes = 1)[0]
	return data

# Arduino Digital Write
def digitalWrite(pin, value):
	write_i2c_block(dWrite_cmd + [pin, value, unused])
	read_i2c_block(no_bytes = 1)
	return 1

# Read analog value from Pin (Y.K Bug fixes)
def analogRead(pin):
	write_i2c_block(aRead_cmd + [pin, unused, unused])
	number = read_identified_i2c_block(aRead_cmd, no_bytes = 2)
	return number[1] * 256 + number[2]


# Write PWM
def analogWrite(pin, value):
	write_i2c_block(aWrite_cmd + [pin, value, unused])
	read_i2c_block(no_bytes = 1)
	return 1

# Setting Up Pin mode on Arduino
def pinMode(pin, mode):
	if mode == "OUTPUT":
		write_i2c_block(pMode_cmd + [pin, 1, unused])
	elif mode == "INPUT":
		write_i2c_block(pMode_cmd + [pin, 0, unused])
	read_i2c_block(no_bytes = 1)
	return 1


# Read temp in Celsius from Grove Temperature Sensor
def temp(pin, model = '1.0'):
	# each of the sensor revisions use different thermistors, each with their own B value constant
	if model == '1.2':
		bValue = 4250  # sensor v1.2 uses thermistor ??? (assuming NCP18WF104F03RC until SeeedStudio clarifies)
	elif model == '1.1':
		bValue = 4250  # sensor v1.1 uses thermistor NCP18WF104F03RC
	else:
		bValue = 3975  # sensor v1.0 uses thermistor TTC3A103*39H
	a = analogRead(pin)
	resistance = (float)(1023 - a) * 10000 / a
	t = (float)(1 / (math.log(resistance / 10000) / bValue + 1 / 298.15) - 273.15)
	return t


# Read value from Grove Ultrasonic (Y.K Bug fixes)
def ultrasonicRead(pin):
	write_i2c_block(uRead_cmd + [pin, unused, unused])
	number = read_identified_i2c_block(uRead_cmd, no_bytes = 2)
	return (number[1] * 256 + number[2])


# Read the firmware version
def version():
	write_i2c_block(version_cmd + [unused, unused, unused])
	number = read_identified_i2c_block(version_cmd, no_bytes = 3)
	return "%s.%s.%s" % (number[0], number[1], number[2])


# Read Grove Accelerometer (+/- 1.5g) XYZ value
# Need to investigate why this reports what was read with the previous command
# Doesn't look to be implemented on the GrovePi
def acc_xyz():
	write_i2c_block(acc_xyz_cmd + [unused, unused, unused])
	number = read_identified_i2c_block(acc_xyz_cmd, no_bytes = 3)
	if number[1] > 32:
		number[1] = - (number[1] - 224)
	if number[2] > 32:
		number[2] = - (number[2] - 224)
	if number[3] > 32:
		number[3] = - (number[3] - 224)
	return (number[0], number[1], number[2])


# Read from Grove RTC
# Doesn't look to be implemented on the GrovePi
def rtc_getTime():
	write_i2c_block(rtc_getTime_cmd + [unused, unused, unused])
	number = read_i2c_block()
	return number

# Read and return temperature and humidity from Grove DHT Pro (Y.K Bug fixes)
def dht(pin, module_type):
	write_i2c_block(dht_temp_cmd + [pin, module_type, unused])
	number = read_identified_i2c_block(dht_temp_cmd, no_bytes = 9)
	
	if p_version==2:
		h=''
		for element in (number[1:5]):
			h+=chr(element)
		
		t_val=struct.unpack('f', h)
		t = round(t_val[0], 2)

		h = ''
		for element in (number[5:9]):
			h+=chr(element)
		
		hum_val=struct.unpack('f',h)
		hum = round(hum_val[0], 2)
	else:
		t_val=bytearray(number[1:5])
		h_val=bytearray(number[5:9])
		t=round(struct.unpack('f',t_val)[0],2)
		hum=round(struct.unpack('f',h_val)[0],2)
	if t > -100.0 and t <150.0 and hum >= 0.0 and hum<=100.0:
		return [t, hum]
	else:
		return [float('nan'),float('nan')]

(Weggelassen)

Recommended Posts

Grundeinstellungen für die Verwendung des Grove Pi + Starterkits und der Kamera mit Raspberry Pi
Erstellen Sie einen Farbsensor mit einem Raspeltorte und einer Kamera
Raspbian Grundeinstellungen (Raspberry Pi 4)
Installieren Sie PyCall auf Raspberry PI und versuchen Sie, die GPIO-Bibliothek für Python von Ruby zu verwenden
Zugriff auf Google Spreadsheets Verwenden von Python mit Himbeer-Pi (für sich selbst)
MQTT auf Raspberry Pi und Mac
Himbeer-Pi-Grundeinstellung (für mich)
Versuchen Sie es mit ArUco mit Raspberry Pi
Wiegeinstrument mit Himbeer-Pi und hx711 (GUI-Anzeige in Tkinter)
Erkennen Sie "Helligkeit" mit Python auf Raspberry Pi 3!
Lassen Sie einen Servomotor mit Python auf Raspberry Pi 3 laufen
Ermitteln Sie die Temperatur mit Python auf Raspberry Pi 3!
Erkennen Sie Schiebeschalter mit Python auf Raspberry Pi 3!
Versuchen Sie, QR-Code mit Raspberry Pi zu verwenden
Erkennen Sie Magnetschalter mit Python auf Raspberry Pi 3!
Ich habe versucht, Flask auf Raspberry Pi 3 Model B + mit Nginx und uWSGI auszuführen
Cross-Compilierung für Raspberry Pi Zero unter Ubuntu gestartet
Lassen Sie den Summer mit Python auf Raspberry Pi 3 erklingen!
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Erstellen Sie mithilfe von Poetry eine OpenCV4-Umgebung auf Raspberry Pi
Versuchen Sie es mit dem Temperatursensor (LM75B) mit Raspeye.
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Installation von Docker auf Raspberry Pi und L Chika
Installieren Sie pyenv auf Raspberry Pi, um Python zu verwalten
Ausgabe auf "7 Segment LED" mit Python mit Raspberry Pi 3!
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Raspberry Pi Videokamera
Cython auf Raspberry Pi
Verwenden Sie den Bildspeicher (/ dev / fb0) mit Raspeye, um Anzeigebilder direkt einzugeben und auszugeben
Erstellen Sie Ihre eigene IoT-Plattform mit raspberrypi und ESP32 (Teil 3) ~ ESP32-Einstellungen Analoger Temperatursensor
Ich habe versucht, die Pi Console I / F von Mechatraxs Raspeye IoT Starter Kit "anyPi" zu verwenden.
Führen Sie das AWS IoT Device SDK für Python auf Raspberry Pi aus
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Verwenden Sie Python auf Raspberry Pi 3, um "Temperatur (mit A / D-Wandler)" zu erkennen!
Aufbau einer Cortex-M-Entwicklungsumgebung für TOPPERS mit Raspeye
Holen Sie sich das Wetter mit API und lassen Sie Raspberry Pi sprechen!
Innenüberwachung mit Raspberry Pi
Anaconda 4.4.0 Grundeinstellungen für Windows
Pyenv auf Raspberry Pi eingeführt
Verwenden Sie NeoPixel mit Himbeerkuchen
Installieren Sie OpenCV4 auf Raspberry Pi 3
Installieren Sie TensorFlow 1.15.0 auf Raspberry Pi
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Machen Sie einen einfachen CO2-Inkubator mit Raspberry PI und CO2-Sensor (MH-Z14A)
Cross-Compiling für Raspberry Pi Zero unter Debian-Versuchen Sie, Ihre eigene gemeinsam genutzte Bibliothek zu erstellen
Erstellen Sie Ihre eigene IoT-Plattform mit Himbeerpi und ESP32 (Teil 1)
Telefonische Benachrichtigung, wenn eine Bewegung der Überwachungskamera auf dem Raspberry Pi erkannt wird