Installez PyCall sur Raspberry PI et essayez d'utiliser la bibliothèque GPIO pour Python de Ruby

introduction

J'ai pensé faire quelque chose avec la tarte aux râpes qu'il me restait depuis longtemps, mais je n'arrive pas à penser à un thème ... (sueur)

Après avoir réfléchi pendant un moment, j'ai décidé d'essayer à quel point le PyCall que j'utilisais l'autre jour pouvait être utilisé, j'ai donc mis PyCall dans la tarte aux râpes et créé un circuit pour détecter ON / OFF du commutateur et l'exécuter avec Ruby Vu.

[Site de référence] Exemple d'entrée / sortie GPIO Raspberry Pi (Python, langage C, script shell)

Installez PyCall

Puisque Ruby 2.1 a été inclus immédiatement après l'installation initiale, je vais l'utiliser tel quel. Installez PyCall avec la commande suivante.

python


$ sudo apt install -y ruby-dev
$ sudo gem install --pre pycall

Vérifiez le code source de Python

Jetons un œil au code source publié sur le site de référence mentionné ci-dessus.

gpio_input.py


#!/usr/bin/python
 
import RPi.GPIO as GPIO
import time
 
IO_NO = 4
 
print("press ^C to exit program ...\n")
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(IO_NO, GPIO.IN)
 
try:
 while True:
  print(GPIO.input(IO_NO))
  time.sleep(1)
except KeyboardInterrupt:
 print("detect key interrupt\n")
 
GPIO.cleanup()
print("Program exit\n")

Quand je l'essaye ...

python


$ python gpio_input.py
press ^C to exit program ...
1
1
1
0
0
1
1
1
0
1
1
^Cdetect key interrupt

Program exit
$

Il semble que lorsque vous appuyez sur le bouton, il passe à 0, et lorsque vous le relâchez, 1 s'affiche. Pour le moment, j'ai trouvé que le câblage était correct.

Réécrire à l'aide de PyCall

Si vous utilisez l'exemple de code tel quel, il sera un peu terne, modifions-le donc pour qu'il s'affiche lors du comptage du nombre de fois qu'il a été activé et désactivé.

gpio_input.rb


require 'pycall/import'
include PyCall::Import

pyimport 'RPi.GPIO', as: 'gpio'

io_no = 4

status = 1
buff = 1

cnt = 0

puts "press ^C to exit program ...\n"

gpio.setmode.(gpio.BCM)
gpio.setup.(io_no, gpio.IN)

# 「Ctrl」+Arrêtez-vous à "C"
Signal.trap(:INT) do
  puts "detect key interrupt\n"
  gpio.cleanup.()
  puts "Program exit\n"
  exit 0
end

loop do
  status = gpio.input.(io_no)
  if buff != status
    if status == 1
      puts "OFF"
    else
      cnt += 1
      puts "ON(#{cnt})"
    end
  end
  
  buff = status
  sleep 0.5
end

Au fait, dans Ruby, les variables commençant par des majuscules ne peuvent pas être définies (j'ai entendu dire que ...), donc je les change en minuscules.

Contrôle de fonctionnement

Exécutez la commande et appuyez plusieurs fois sur le bouton ...

python


$ ruby gpio_input.rb
press ^C to exit program ...
ON(1)
OFF
ON(2)
OFF
ON(3)
OFF
^Cdetect key interrupt

Program exit
$

C'était fait (^ - ^)

Si vous utilisez un gem appelé PI Piper, vous pouvez le faire avec Ruby sans aucun problème, vous n'avez donc pas besoin d'utiliser PyCall ...

Eh bien, que dois-je faire ensuite?

Recommended Posts

Installez PyCall sur Raspberry PI et essayez d'utiliser la bibliothèque GPIO pour Python de Ruby
Installez pyenv sur Raspberry Pi pour gérer Python
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Accédez aux feuilles de calcul Google en utilisant python avec raspberry pi (pour vous-même)
Essayez d'utiliser ArUco avec Raspberry Pi
Détectez la "luminosité" en utilisant python sur Raspberry Pi 3!
Installez la bibliothèque python sur Lambda à l'aide de [/ tmp]
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Détectez la température à l'aide de python sur Raspberry Pi 3!
Essayez de tweeter le flux RSS d'arXiv sur Twitter avec python de Raspeye
Paramètres initiaux pour l'utilisation du kit de démarrage et de la caméra Grove Pi + avec Raspberry Pi
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!
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Installer Python et les bibliothèques pour Python sur MacOS Catalina
Utilisation du capteur de température numérique à 1 fil DS18B20 avec Raspberry Pi de Python
Paramètres initiaux pour l'utilisation de Python3.8 et pip sur CentOS8
Installez psycopg2 (bibliothèque pgsql pour python3) sur Apple Silicon
Installez le sélénium sur votre Mac et essayez-le avec python
Essayez de déboguer Python sur Raspberry Pi avec Visual Studio.
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Compilez et installez MySQL-python pour python2.7 sur Amazon Linux
Sortie sur "LED 7 segments" en utilisant python avec Raspberry Pi 3!
Essayez de diffuser des vidéos et des sites Web de Raspeye vers Chromecast ou Nest Hub à l'aide de CATT
Utilisez le SDK API kintone pour Python avec Raspberry Pi (stockez facilement des données dans kintone à partir de Raspberry Pi)
Python sur Ruby et Ruby en colère sur Python
Installez OpenCV4 sur Raspberry Pi 3
Installez TensorFlow 1.15.0 sur Raspberry Pi
Exécutez AWS IoT Device SDK for Python sur Raspberry Pi
Compilation croisée pour Raspberry Pi Zero sur Debian-Try en utilisant une bibliothèque partagée
Utilisez python sur Raspberry Pi 3 pour détecter la "température (en utilisant un convertisseur A / N)"!
MQTT sur Raspberry Pi et Mac
raspberry pi 4 centos7 installer sur docker
Installez mecab sur le serveur partagé Sakura et appelez-le depuis python
Remarques sur l'utilisation de MeCab depuis Python
Installez ghoto2 sur Raspberry Pi (Remarque)
Installez rapidement OpenCV2.4 (+ python) sur OS X et essayez l'exemple
Compilation croisée pour Raspberry Pi Zero sur Debian - Créez votre propre bibliothèque partagée
Instrument de pesage utilisant Raspberry Pi et Hx711 (affichage GUI dans Tkinter)
Installez le fabric sur Ubuntu et essayez
Installer Python sur CentOS à l'aide de Pyenv
Installez confluent-kafka pour Python sur Ubuntu
[Remarque] Utilisation d'un écran LCD à 16 caractères à 2 chiffres (1602A) de Python avec Raspeye
Installez OpenMedia Vault 5 sur Raspberry Pi 4
Installez Python sur CentOS en utilisant pyenv
Essayez d'utiliser Amazon DynamoDB à partir de Python
Utilisez le capteur de température / humidité / pression BME280 de Python avec Raspberry Pi 2
Détectez les signaux analogiques avec un convertisseur A / N en utilisant python sur Raspberry Pi 3!
Installez le module ROS et ROS pour Roomba sur Raspberry Pi 3 et essayez de l'exécuter
Traitement de flux de Python et SensorTag, Kafka, Spark Streaming - Partie 1: Raspberry Pi 3
Remarques sur l'utilisation d'OpenCV avec Windows10 Python 3.8.3.
Essayez de pêcher le Wakasagi avec Raspberry Pi
Installez la version 64 bits du système d'exploitation (bate) sur Raspberry Pi
Installez docker-compose sur le système d'exploitation Raspberry Pi 64 bits
Essayez d'appeler Python depuis Ruby avec une économie
Installez pyenv et Python 3.6.8 sur Ubuntu 18.04 LTS
Comment installer NumPy sur Raspeye
Travailler avec le GPS en Python pour Raspberry Pi 3
La température est automatiquement mesurée à l'aide de Raspberry Pi 3 et automatiquement téléchargée sur le serveur (Docker python3 + bouteille + MySQL) pour visualisation!
J'ai essayé d'exécuter Flask sur Raspberry Pi 3 Model B + en utilisant Nginx et uWSGI