Strumenti Utente

Strumenti Sito


raspberry:i2c

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
raspberry:i2c [2017/09/24 23:26]
stefano
raspberry:i2c [2023/04/17 14:25] (versione attuale)
Linea 1: Linea 1:
 Il bus I2C e i relativi sensori.\\ Il bus I2C e i relativi sensori.\\
 La mia prima esperienza è stata con il sensore INA219 che effettuala misurazione della corrente di un carico.\\ La mia prima esperienza è stata con il sensore INA219 che effettuala misurazione della corrente di un carico.\\
 +Diciamo che per cominciare dobbiamo abilitare l'interfaccia I2C\\
 +  raspi-config
 +e nel menù interfacce abilitare l'I2C.\\
 +riavviare\\
 +Poi installare i tools:\\
 +  apt-get install i2c-tools
 +
 Ho fatto un po di ricerca per capire come fare a leggere i valori del sensore tramite il set dei comandi messi a disposizione da i2c-tools, ma non è stata fruttuosa.\\ Ho fatto un po di ricerca per capire come fare a leggere i valori del sensore tramite il set dei comandi messi a disposizione da i2c-tools, ma non è stata fruttuosa.\\
 Avrei voluto  usare il sistema di interazione più a "basso livello" possibile, quindi con la shell bash, ma l'unica cosa utile che ho trovato è stato il sistema di installazione di alcune librerie python \\ Avrei voluto  usare il sistema di interazione più a "basso livello" possibile, quindi con la shell bash, ma l'unica cosa utile che ho trovato è stato il sistema di installazione di alcune librerie python \\
 Quindi installare il pyton-pip\\ Quindi installare il pyton-pip\\
-  apt-get install python-pip+  apt-get install python-pip python-smbus
 poi\\ poi\\
   pip install pi-ina219   pip install pi-ina219
Linea 14: Linea 21:
 Questa pagina web va a leggere, importare i valori non direttamente dal sensore o da una qualche script python ma dai file scritti dallo script python.\\ Questa pagina web va a leggere, importare i valori non direttamente dal sensore o da una qualche script python ma dai file scritti dallo script python.\\
 Questo script dovrà essere poi messo all'avvio tramite il meccanisco già usato dell'init.d \\ Questo script dovrà essere poi messo all'avvio tramite il meccanisco già usato dell'init.d \\
-Di seguito un primo script\\+Di seguito un primo script di prova\\ 
 +<file python ina219.py> 
 +from ina219 import INA219, DeviceRangeError 
 +from time import sleep 
 + 
 +SHUNT_OHMS = 0.1 
 +MAX_EXPECTED_AMPS = 2.0 
 +ina = INA219(SHUNT_OHMS, MAX_EXPECTED_AMPS) 
 +ina.configure(ina.RANGE_16V) 
 + 
 +def read_ina219(): 
 +    try: 
 +        print('Bus Voltage: {0:0.2f}V'.format(ina.voltage())) 
 +        print('Bus Current: {0:0.2f}mA'.format(ina.current())) 
 +        print('Power: {0:0.2f}mW'.format(ina.power())) 
 +        print('Shunt Voltage: {0:0.2f}mV\n'.format(ina.shunt_voltage())) 
 +    except DeviceRangeError as e: 
 +        # Current out of device range with specified shunt resister 
 +        print(e) 
 + 
 +while 1: 
 +    read_ina219() 
 +    sleep(1) 
 +</file> 
 + 
 +Di seguito lo stesso script modificato in modo tale da poter andare a scrivere continuamente in un altro file che poi sarà letto dalla pagina web esposta da apache\\ 
 +<file python ina219wr.py> 
 +from ina219 import INA219, DeviceRangeError 
 +from time import sleep 
 + 
 +SHUNT_OHMS = 0.1 
 +MAX_EXPECTED_AMPS = 2.0 
 +ina = INA219(SHUNT_OHMS, MAX_EXPECTED_AMPS) 
 +ina.configure(ina.RANGE_16V) 
 + 
 +def read_ina219(): 
 +    try: 
 +        print('Bus Voltage: {0:0.2f}V'.format(ina.voltage())) 
 +        print('Bus Current: {0:0.2f}mA'.format(ina.current())) 
 +        print('Power: {0:0.2f}mW'.format(ina.power())) 
 +        print('Shunt Voltage: {0:0.2f}mV\n'.format(ina.shunt_voltage())) 
 +        out_file = open("/home/pi/wri", "w"
 +        out_file.write ('Shunt Voltage: {0:0.2f}mV\n'.format(ina.shunt_voltage())) 
 +        #out_file.write(123ina.power()) 
 +        out_file.close() 
 +    except DeviceRangeError as e: 
 +        # Current out of device range with specified shunt resister 
 +        print(e)
  
 +while 1:
 +    read_ina219()
 +    sleep(1)
 +</file>
 +Ora la pagina in php che si aggiorna automaticamente ogni 2 secondi e che va a leggere il file scritto continuamente dallo script di prima\\
 +<file php codice.php>
 +<?php
 +header("Refresh: 2; url=" . $_SERVER["PHP_SELF"]);
 +echo "scrivo";
 +include ("/home/pi/wri");
 +echo "testo";
 +?>
 +</file>
 +Ovviamente con questo sistema è possibile avere una pagina costantemente aggiornata con i dati e i valori di cui ho bisogno.\\
raspberry/i2c.1506288363.txt.gz · Ultima modifica: 2023/04/17 14:25 (modifica esterna)