Outils pour utilisateurs

Outils du site


8_-_pas_de_grovepi_comment_faire

Ceci est une ancienne révision du document !


Vous n'avez pas de GroPi ?

Voici une solution avec un kit RaspBerry Pi 0 et une carte Arduino munie d'un shield Grove.

Il faut récupérer le fichier C arduino de la grove Pi et le téleverser dans l'arduino.

cd /home/pi
git clone https://github.com/DexterInd/GrovePi.git
cd GrovePi/Firmware/Source/v1.2/grove_pi_v1_2_7/

Dans ce dossier il faut copier toutes les librairies(*.cpp *.h) dans un dossier Grovepi dans votre espace perso Arduino.

Ensuite ouvrir le fichier grove_pi_v1_2_7.ino et le téleverser dans l'arduino.

Côté câblage:

Raspberry  Arduino
GPIO2(SDA) A4 (SDA)
GPIO3(SCL) A5 (SCL)
5V         Vref
GND        GND

Si votre raspberry a été paramétré pour fonctionner avec Grovepi la carte est maintenant reconnue.

i2cdetect -y 1 

Vous affichera l'adresse de la carte Arduino (0x04).

Tout le travail réalisé avec Mqtt/HomeAssistant/Freeboard/NodeRed fonctionnera tout aussi bien avec votre carte UNO.

import time
import smbus

bus = smbus.SMBus(1)
p_version = 3

def read_i2c_byte(address):
    for i in range(retries):
        try:
            return bus.read_byte(address)
        except IOError:
            print("IOError")
    return -1

  

def write_i2c_block(address,block):
    for i in range(retries):
        try:
            return bus.write_i2c_block_data(address,1,block)
        except IOError:
            print("IOError")
    return -1
def read_i2c_block(address):
    for i in range(retries):

        try:
            return bus.read_i2c_block_data(address,1)
        except IOError:
            print("IOError") 
    return -1


def digitalWrite(pin, value):
    write_i2c_block(address, dWrite_cmd + [pin, value, unused])
    return 1

def pinMode(pin, mode):
    if mode == "OUTPUT":
        write_i2c_block(address, pMode_cmd + [pin, 1, unused])
    elif mode == "INPUT":
        write_i2c_block(address, pMode_cmd + [pin, 0, unused])
    return 1

#main
retries = 10
unused = 0

dRead_cmd = [1]
dWrite_cmd = [2]
dht_temp_cmd=[40]
pMode_cmd=[5]

address = 0x04
pin=3
loop=0 


pinMode(pin, "OUTPUT")

while True:
    loop = loop + 1
    print (loop, pin, loop % 2)
    digitalWrite(pin, loop % 2) 
    time.sleep(1)
8_-_pas_de_grovepi_comment_faire.1525009725.txt.gz · Dernière modification : 2020/09/26 15:15 (modification externe)