[PYTHON] Paramètres initiaux pour l'utilisation du kit de démarrage et de la caméra Grove Pi + avec Raspberry Pi

Aperçu

J'ai décidé d'utiliser Raspberry Pi et la caméra, le kit de démarrage Grove Pi + et le kintone chez Hackason, et j'ai étudié la configuration et les paramètres initiaux de Raspberry Pi. En conséquence, bien qu'il y ait eu des problèmes avec les paramètres d'utilisation d'OpenCV avec Python 3 et les paramètres Grove Pi +, j'ai pu définir le Raspberry Pi et la caméra, le kit de démarrage Grove Pi + et la bibliothèque Python pour accéder à kintone.

À propos de l'équipement à utiliser (2020/01/03 Enquête d'Amazon)

Le dernier Raspberry Pi 4 n'est pas inclus dans le support Grove Pi, donc cette fois j'utilise Raspberry Pi 3. Le Raspberry Pi 4 est cher en premier lieu, vous n'aurez donc pas besoin de beaucoup de spécifications pour cette application.

Équipement utilisé dans cette enquête (y compris certains produits équivalents)

Vous pouvez tous les acheter sur Amazon et les essayer pour environ 20 408 yens.

Raspberry Pi3 Model B Board & Case Set 3ple Decker Compatible (Clear) -Physical Computing Lab (6100 yens) https://www.amazon.co.jp/dp/B01CSFZ4JG/ SanDisk microSDHC ULTRA 16 Go 80 Mo / s SDSQUNS-016G Classe 10 (465 yens) https://www.amazon.co.jp/dp/B074B4P7KD/ __Grove Pi + Starter Kit Raspberry Pi A +, B, B + & 2,3 pour les débutants Certification CE __ (6100 yens) https://www.amazon.co.jp/dp/B07H9PFWHW/ __Câble d'interrupteur marche / arrêt de l'adaptateur secteur américain 5V 2.5A compatible avec la tarte aux framboises 3 Léger et pratique à transporter __ (464 yens) https://www.amazon.co.jp/dp/B07CYNGG4C/ __ Module caméra Puce photosensible OV5647 Capteur 5M pixel Raspberry Pi 1 2 3 Modèle B B A + compatible __ (780 yens) https://www.amazon.co.jp/dp/B07G572B3R/

Paramètres Raspberry Pi

Configuration du système d'exploitation

J'ai téléchargé le dernier système d'exploitation à partir de ce qui suit. https://www.raspberrypi.org/downloads/raspbian/

L'image du système d'exploitation utilisée est la suivante. Raspbian Buster with desktop ・ Version: septembre 2019 ・ Date de sortie: 2019-09-26 -Version du noyau: 4.19

La méthode de configuration du système d'exploitation sur la carte SD est omise. Si vous souhaitez en savoir plus, veuillez vous référer à ce qui suit.

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

À propos de l'éditeur de texte de ligne de commande

Le travail se fait sur la ligne de commande, en se connectant avec ssh. L'éditeur de texte de ligne de commande est expliqué dans nano, mais voyez ci-dessous comment l'utiliser.

__GNU nano maîtrise (@snct_hu) __ https://qiita.com/snct_hu/items/971d512c26dd8b3a3b3c

Paramètres IP fixes

Tout d'abord, définissez une adresse IP fixe pour faciliter la connexion avec ssh.

$ sudo nano /etc/dhcpcd.conf
(Changez l'adresse IP en un contenu approprié et ajoutez les paramètres suivants)
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

Reportez-vous à ce qui suit pour les paramètres LAN sans fil. __ Définissez les paramètres LAN sans fil pour Raspberry Pi sur la ligne de commande (@mym) __ https://qiita.com/mym/items/468d2cdb30d756b6df24

Paramètres de base du système d'exploitation

Les paramètres de base du système d'exploitation sont définis à l'aide de raspi-config.

$ sudo raspi-config

Cette fois, ce qui suit est défini.

1 Change User Password

4 Localisation Options -> I1 Change Locale -> ja_JP.UTF-8 UTF-8 -> I2 Change Timezone -> Asia -> Tokyo -> I3 Modifier la disposition du clavier-> Approprié -> I4 Change Wi-fi Country -> JP Japan

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

8 Update

Après la configuration, METTEZ À JOUR le système d'exploitation dans son état le plus récent.

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

Paramètres de la caméra Raspberry Pi

Voir ci-dessous pour les paramètres de la caméra Raspberry Pi.

__Raspberry Pi Prenez des photos et des vidéos avec un appareil photo __ https://iotdiyclub.net/raspberry-pi-using-camera-1/

Après avoir terminé les paramètres de base, configurez les paramètres pour OpenCV de Python (bibliothèque d'édition d'image).

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

bcm2835-v4l2

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

Voir ci-dessous pour plus d'informations sur OpenCV.

OpenCV https://opencv.org/ __ Version Python des bases d'OpenCV __ https://cvtech.cc/py-opencv/ __ Cours d'introduction au traitement d'image: Traitement d'image à partir d'OpenCV et Python __ https://postd.cc/image-processing-101/

Lorsque vous utilisez Python3, définissez les paramètres suivants.

$ 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

Si vous utilisez OpenCV tel qu'il est dans Python3, une erreur se produira dans l'importation cv2. Pour éviter cette erreur, ajoutez la bibliothèque à charger.

$ nano .bashrc

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

$ source .bashrc

Paramètres Grove Pi +

Veuillez vous référer à ce qui suit pour installer Grove Pi + sur Raspberry Pi. GrovePi+ https://www.switch-science.com/catalog/2129/

Reportez-vous à ce qui suit pour configurer le logiciel Grove Pi +. 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

S'il n'y a pas de problème après l'installation, vous pouvez vérifier le port I2C 04 comme indiqué ci-dessous avec la commande i2c detect.

$ 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: -- -- -- -- -- -- -- --

Après avoir configuré Grove Pi +, apt-get upgrade, qui met à jour le système d'exploitation et les logiciels installés, pose un problème avec la dépendance du package et provoque une erreur. Pour éviter cette erreur, procédez comme suit:

$ sudo apt-get --fix-broken upgrade

Pour tester si cela fonctionne réellement, connectez la LED Grove incluse au port D4 du Grove Pi + comme indiqué ci-dessous. http://wiki.seeedstudio.com/Grove-Red_LED/#play-with-raspberry-pi-with-grovepi_plus sensor06.png

Après le câblage, testez l'affichage de la version suivante et le clignotement du voyant pour voir s'il y a des problèmes.

$ 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!

Bogue de la bibliothèque Grove Pi +

Depuis le 02/02/2020, il y a un problème avec le fichier de la bibliothèque Grove Pi + 1.3.0 suivant, et de nombreux exemples ne fonctionnent pas. /home/pi/Dexter/GrovePi/Software/Python/grovepi.py https://github.com/DexterInd/GrovePi/blob/master/Software/Python/grovepi.py

Par exemple, grove_button.py est un programme qui affiche le bouton OFF avec 0 et le bouton ON avec 1, mais lorsqu'il est exécuté, l'affichage sera comme suit.

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

Il y a un problème avec la partie lecture I2C de __grovepi.py et il doit être corrigé. __ Les parties modifiées de grovepi.py sont expliquées ci-dessous.

Ligne 227 read_identified_i2c_block () Supprimée car l'instruction while boucle indéfiniment

grovepi.py


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

Ligne 246 Correction du numéro d'élément du tableau numérique de analogRead ()

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]

Ligne 284 ultrasonicRead () number Numéro d'élément de matrice corrigé

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])

Ligne 320 Numéro d'élément du tableau numérique corrigé et valeur de la variable no_bytes de 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')]

Après le correctif ci-dessus, j'ai fait ce qui suit et j'ai obtenu les résultats escomptés.

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

Bibliothèque Python pour accéder aux paramètres kintone

$ pip install pykintone
$ pip3 install pykintone

paramètres node-red (uniquement si nécessaire)

Définissez node-red comme suit.

$ 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

Vous pouvez utiliser node-red en accédant à l'adresse IP http: // Raspberry Pi: 1880 / avec un navigateur. nodered.png Voir ci-dessous pour plus de détails. __Node-RED Run sur Raspberry Pi __ https://nodered.jp/docs/getting-started/raspberrypi

Paramètres du bureau à distance (uniquement si nécessaire)

Configurez le bureau distant comme suit.

$ 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

Vous pouvez vous connecter au bureau distant avec l'adresse IP du Raspberry Pi comme suit. RaspberryPi04.png Voir ci-dessous pour plus de détails. __ Connectez-vous à raspberry pi3 à partir d'un ordinateur Windows avec un bureau distant (@ t114) __ https://qiita.com/t114/items/bfac508504b9a6b7570d

référence

J'ai eu une erreur quand j'ai mis opencv dans python3 avec Raspeye [Remedy](@ XM03) 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

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

Exécuter sur Node-RED Raspberry Pi https://nodered.jp/docs/getting-started/raspberrypi

Connectez-vous à Raspberry Pi3 à partir d'un ordinateur Windows avec un bureau distant (@ t114) https://qiita.com/t114/items/bfac508504b9a6b7570d

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

Correction d'un bug dans __grovepi.py (après la ligne 227) __ Il y a une correction dans la partie description de (Corrections de bogues Y.K)

grovepi.py


(Omis)

# 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')]

(Omis)

Recommended Posts

Paramètres initiaux pour l'utilisation du kit de démarrage et de la caméra Grove Pi + avec Raspberry Pi
Créez un capteur de couleur à l'aide d'une tarte à la râpe et d'une caméra
Paramètres initiaux de Raspbian (Raspberry Pi 4)
Installez PyCall sur Raspberry PI et essayez d'utiliser la bibliothèque GPIO pour Python de Ruby
Accédez aux feuilles de calcul Google en utilisant python avec raspberry pi (pour vous-même)
MQTT sur Raspberry Pi et Mac
Réglage initial du Raspberry Pi (pour moi-même)
Essayez d'utiliser ArUco avec Raspberry Pi
Instrument de pesage utilisant Raspberry Pi et Hx711 (affichage GUI dans Tkinter)
Détectez la "luminosité" en utilisant python sur Raspberry Pi 3!
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Détectez la température à l'aide de python sur Raspberry Pi 3!
Détectez les interrupteurs à glissière à l'aide de python sur Raspberry Pi 3!
Essayez d'utiliser le code QR avec Raspberry Pi
Détectez les commutateurs magnétiques à l'aide de python sur Raspberry Pi 3!
J'ai essayé d'exécuter Flask sur Raspberry Pi 3 Model B + en utilisant Nginx et uWSGI
Démarrage de la compilation croisée pour Raspberry Pi Zero sur Ubuntu
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Créer un environnement OpenCV4 sur Raspberry Pi à l'aide de Poetry
Essayez d'utiliser le capteur de température (LM75B) avec Raspeye.
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Installation de Docker sur Raspberry Pi et L Chika
Installez pyenv sur Raspberry Pi pour gérer Python
Sortie sur "LED 7 segments" en utilisant python avec Raspberry Pi 3!
Résoudre les problèmes liés à l'installation d'OpenCV sur Raspberry Pi et à la capture
Caméra vidéo Raspberry Pi
Cython sur Raspberry Pi
Utilisez le frame buffer (/ dev / fb0) avec Raspeye pour entrer et sortir directement les images d'affichage
Créez votre propre plate-forme IoT à l'aide de raspberrypi et ESP32 (partie 3) ~ Paramètres ESP32 Capteur de température analogique
J'ai essayé d'utiliser la console Pi I / F du kit de démarrage Raspeye IoT de Mechatrax "anyPi"
Exécutez AWS IoT Device SDK for Python sur Raspberry Pi
Créez une caméra de surveillance WEB avec Raspberry Pi et OpenCV
Utilisez python sur Raspberry Pi 3 pour détecter la "température (en utilisant un convertisseur A / N)"!
Construction d'un environnement de développement Cortex-M pour TOPPERS utilisant Raspeye
Obtenez la météo en utilisant l'API et laissez Raspberry Pi parler!
Surveillance intérieure à l'aide de Raspberry Pi
Paramètres initiaux d'Anaconda 4.4.0 pour Windows
Introduction de pyenv sur Raspberry Pi
Utilisez NeoPixel avec la tarte aux framboises
Installez OpenCV4 sur Raspberry Pi 3
Installez TensorFlow 1.15.0 sur Raspberry Pi
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
Fabriquez un incubateur à CO2 simple à l'aide de Raspberry PI et d'un capteur de CO2 (MH-Z14A)
Compilation croisée pour Raspberry Pi Zero sur Debian - Créez votre propre bibliothèque partagée
Créez votre propre plateforme IoT en utilisant raspberrypi et ESP32 (partie 1)
Notification téléphonique lorsque le mouvement de la caméra de surveillance est détecté sur Raspberry Pi