• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
rpi blynk hc 2inch13 zero sr04 display w epaper

rpi zero w/blynk/hc-sr04/2inch13 epaper display
#1
salve a tutti non sono un esperto di programmazione ma un grande bricolatore..
pensavo di realizzare un server locale per blynk con un rpi zero (ci sono vari tutorial da seguire) al quale però vorrei anche attaccare un hc-sr04 (per misurare le distanze) e un epaper display (per visualizzare le distanze misurate dall'hc-sr04)

questa è l'idea:

l'hc-sr04--------rpi zero w ------e-paper display HAT
                                      blynk 
                  (server locale AP mode)


il server locale per blynk servirebbe per potere usare l'app su i vari dispositivi per gestire lo script anche in assenza di internet o 3G (tipo visualizzare la distanza sia su epaper che sul telefono in cm o in piedi, e calibrare lo zero del sensore).

ci sono in rete script che fanno comunicare l'hc-sr04 con raspberry
ci sono in rete script che fanno diventare il rpi zero w un server locale per blynk
ci sono in rete script di esempio per visualizzare cose sull'epaper display

è da due giorni che cerco di far funzionare l'e-paper senza successo ma non dispero...

finalmente giungo alle domande:

può un rpi zero w gestire il server blynk e contemporaneamente misurare e visualizzare sull'epaper?

da dove comincio? da hc-sr04--rpi--epaper display? o dal server?

se comincio dal server poi mi diventa un Access Point e mi risulta tutto piu complicato, no? (tutto quello che faccio sul pi zero lo faccio in ssh o vnc)

ogni consiglio, riga di codice, dritta e/o critica costruttiva è benaccetta 

rpi zero w running 2017-09-07-raspbian-stretch
hc-sr04
2inch13 waveshare e-paper display HAT

ciao e grazie
Risposta
#2
Comincia a far funzionare il display, poi ci aggiungi l'SR04 e visualizzi quello che ti da sul display poi imposti il server
Risposta
#3
(20/09/2017, 21:29)Zzed Ha scritto: Comincia a far funzionare il display, poi ci aggiungi l'SR04 e visualizzi quello che ti da sul display poi imposti il server

grazie!!

quindi il rpi zero w può far tutto contemporaneamente?

tra qualche anno ne verrò fuori!!!

grazie
Risposta
#4
(21/09/2017, 00:01)Mauro Calanca Ha scritto:
(20/09/2017, 21:29)Zzed Ha scritto: Comincia a far funzionare il display, poi ci aggiungi l'SR04 e visualizzi quello che ti da sul display poi imposti il server

grazie!!

quindi il rpi zero w può far tutto contemporaneamente?

tra qualche anno ne verrò fuori!!!

grazie

Io ho fatto una cosa simile ma senza blynk:

Ho un rpi w zero collegato in wifi alla rete di casa, a questo ho collegato uno schermo oled da 1 pollice, un pulsante e un SR04. Dopo ho fatto una app android che collegandosi al webserver del raspi dice all'SR04 di fare la misura.

Se premo il pulsante fisico stampa la misura sull'oled, se faccio dal cellulare stampa sul cellulare. 
Dovrebbe essere simile a quello che vuoi fare tu a parte che usi uno schermo diverso e blynk (non credo cambi molto, anzi forse è più semplice).
Risposta
#5
Citazione: (non credo cambi molto, anzi forse è più semplice).
ahahahahahihihihihihihhihahahahahahahah

io sto diventando pazzo

allora credo di avere installato la librerie che il display mi chiede e cioè:

  • bcm2835 libraries

  • seguendo questa pagina:
  • http://www.airspayce.com/mikem/bcm2835/

    pi@raspberrypi:~/Desktop/librerieRASP/bcm2835-1.52 $ ./configure
  • e poi


    pi@raspberrypi:~/Desktop/librerieRASP/bcm2835-1.52 $ make
  • e poi


    pi@raspberrypi:~/Desktop/librerieRASP/bcm2835-1.52 $ sudo make check
  • e poi ancora

    pi@raspberrypi:~/Desktop/librerieRASP/bcm2835-1.52 $ sudo make install
  • wiringPi libraries

  • seguendo questa pagina:
  • https://projects.drogon.net/raspberry-pi...d-install/

    pi@raspberrypi:~ $ git clone git://git.drogon.net/wiringPi
  • poi do

    pi@raspberrypi:~/wiringPi $ git pull originAlready up-to-date.pi@raspberrypi:~/wiringPi $ ./build
  • e poi

    pi@raspberrypi:~/wiringPi $ gpio -v
  • e lui mi da

    gpio version: 2.44Copyright © 2012-2017 Gordon HendersonThis is free software with ABSOLUTELY NO WARRANTY.For details type: gpio -warrantyRaspberry Pi Details:  Type: Pi Zero-W, Revision: 01, Memory: 512MB, Maker: Sony   * Device tree is enabled.  *--> Raspberry Pi Zero W Rev 1.1  * This Raspberry Pi supports user-level GPIO access.
  • e io continuo
Codice:
pi@raspberrypi:~/wiringPi $ gpio readall

  • e lui mi da

    +-----+-----+---------+------+---+-Pi ZeroW-+---+------+---------+-----+-----+ | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     | |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5v      |     |     | |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     | |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  | |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  | |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  | |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     | |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  | |     |     |    3.3v |      |   | 17 || 18 | 1 | IN   | GPIO. 5 | 5   | 24  | |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     | |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  | |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   | |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   | |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   | |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     | |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  | |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     | |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  | |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  | |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM | +-----+-----+---------+------+---+-Pi ZeroW-+---+------+---------+-----+-----+
  • a questo punto io credo che anche questa sia installata

ora tocca a quella di python (Python Libraries for Raspbian (contain RPi.GPIO and spidev installation packages)
http://www.waveshare.com/wiki/Pioneer600...on_for_RPi

Codice:
sudo apt-get install python-dev
poi
Codice:
pi@raspberrypi:~ $ cd RPi.GPIO-0.6.3/
Codice:
pi@raspberrypi:~/RPi.GPIO-0.6.3 $ sudo python setup.py install
Codice:
pi@raspberrypi:~/RPi.GPIO-0.6.3 $ sudo apt-get install python-smbus
Codice:
pi@raspberrypi:~/RPi.GPIO-0.6.3 $ sudo apt-get install python-serial
Codice:
pi@raspberrypi:~/RPi.GPIO-0.6.3 $ sudo python setup.py install
Codice:
pi@raspberrypi:~/RPi.GPIO-0.6.3 $ sudo apt-get install python-imaging

a questo punto mi vado a cercare gli esempi scaricati da qui: 
http://www.waveshare.com/wiki/File:2.13i...AT-code.7z
che scompatto ed entrando nelle rispettive cartelle per raspberry provo finalmente a eseguire gli script, come dice qui: http://www.waveshare.com/wiki/2.13inch_e...s_required 
Codice:
BCM2835: Execute the command: make, to compile the code and generate a file epd. Execute the command: sudo ./epd, the program will run.
WringPi: Execute the command: make, to compile the code and generate a file epd. Execute the command: sudo ./epd, the program will run.
Python: Execute the command: sudo python main.py

ma...
Codice:
pi@raspberrypi:~/Desktop/2.13inch_e-Paper_HAT-code/raspberrypi/bcm2835 $ make
make: 'epd' is up to date.
pi@raspberrypi:~/Desktop/2.13inch_e-Paper_HAT-code/raspberrypi/bcm2835 $ sudo ./epd
sudo: ./epd: command not found
pi@raspberrypi:~/Desktop/2.13inc

 e allora provo con l'altra
Codice:
pi@raspberrypi:~/Desktop/2.13inch_e-Paper_HAT-code/raspberrypi $ cd wiringpi/
pi@raspberrypi:~/Desktop/2.13inch_e-Paper_HAT-code/raspberrypi/wiringpi $ make
make: 'epd' is up to date.
pi@raspberrypi:~/Desktop/2.13inch_e-Paper_HAT-code/raspberrypi/wiringpi $ sudo ./epd
sudo: ./epd: command not found

non desisto e provo l'ultima
Codice:
pi@raspberrypi:~/Desktop/2.13inch_e-Paper_HAT-code/raspberrypi/python $ sudo python main.py
Traceback (most recent call last):
 File "main.py", line 27, in <module>
   import epd2in13
 File "/home/pi/Desktop/2.13inch_e-Paper_HAT-code/raspberrypi/python/epd2in13.py", line 27, in <module>
   import epdif
 File "/home/pi/Desktop/2.13inch_e-Paper_HAT-code/raspberrypi/python/epdif.py", line 38, in <module>
   SPI = spidev.SpiDev(0, 0)
IOError: [Errno 2] No such file or directory

ora è un po tardi e io non capisco

buongiorno a voi e buonanotte a me

EUREKA

e pur si muove

caricando gli esempi per lo schermo da 1.54 inch, funge

logicamente non si aggiorna tutto ma piu della metà   Big Grin

adesso viene il bello...
Risposta
#6
Citazione:Io ho fatto una cosa simile ma senza blynk:

posso dargli un occhiata?
Rpi zero w running 2016-03-18-raspbian-jessie
Rpi 3 b running Openplotter
osx 10.12.5
Risposta
#7
(21/09/2017, 20:16)Mauro Calanca Ha scritto:
Citazione:Io ho fatto una cosa simile ma senza blynk:

posso dargli un occhiata?

Certo, dimmi di più su quello che vuoi ottenere che alleggerisco gli script, altrimenti sono belli lunghi.
Risposta
#8
(21/09/2017, 20:33)darimos Ha scritto:
(21/09/2017, 20:16)Mauro Calanca Ha scritto:
Citazione:Io ho fatto una cosa simile ma senza blynk:

posso dargli un occhiata?

Certo, dimmi di più su quello che vuoi ottenere che alleggerisco gli script, altrimenti sono belli lunghi.

grande!!!

vorrei far misurare costantemente l'hc-sr04, mediare la sua misura per eliminare gli errori, e visualizzare la distanza calcolata in cm o piedi (a mia scelta) sul display.
poi quando sarà vorrei che la distanza sia anche visualizzata nell'app di blynk sul telefono (con il rpi zero w in AP e il server di blynk locale per non avere bisogno di internet).

non so se mi sono spiegato...

grazie

P.S la parte hc-sr04 e display l'ho gia realizzata, su un altro progetto, usando arduino e un serial 7seg display. ma con gli script di python ancora non ci capisco molto.
Rpi zero w running 2016-03-18-raspbian-jessie
Rpi 3 b running Openplotter
osx 10.12.5
Risposta
#9
Con questo fai tot misure, nel mio caso 20, le medi e stampi il risultato.
La media è troncata quindi puoi impostarla per ottimizzare il risultato in caso fosse necessario.
Poi stampa anche sul display ma quello va adattato al tipo di display che hai tu.

Codice:
# Importazione librerie Pytopthon
from __future__ import print_function
import time
import RPi.GPIO as GPIO

# Importazione librerie schermo
from lib_oled96 import ssd1306
from time import sleep
from PIL import ImageFont, ImageDraw, Image
font = ImageFont.load_default()
from smbus import SMBus                  
i2cbus = SMBus(1)          
oled = ssd1306(i2cbus)   # creazione dell'oggetto oled.
draw = oled.canvas       # "Disengnare" in questo canvas.

#Media troncata
from numpy import mean
from numpy import arccos
from numpy import sqrt
percentuale=50           #provare diversi valori per calibrare
def mediatroncata(arr, percentuale):
  n = len(arr)
  k = int(round(n*(float(percentuale)/100)/2))
  return mean(arr[k+1:n-k])

#Schermata di avvio oled
draw.rectangle((0, 0, oled.width-1, oled.height-1), outline=1, fill=0)
font = ImageFont.truetype('FreeMono.ttf', 30)
oled.canvas.text((3,15),    'ATTENDI', font=font, fill=1)
oled.display()

# Calibrazione post-processing
c1 = 1        # parametro 1
c2 = 2        # parametro 2
c3 = 3        # parametro 3


# Referenze BCM GPIO anziche i numeri fisici dei pin.
GPIO.setmode(GPIO.BCM)

# Definizione dei  GPIO per il sensore.
GPIO_TRIGGER = 18
GPIO_ECHO    = 17

# Velocita del suono in cm/s con temperatura
temperature = 20
speedSound = 33100 + (0.6*temperature)

# Settaggio dei pin
GPIO.setup(GPIO_TRIGGER,GPIO.OUT)  # Trigger
GPIO.setup(GPIO_ECHO,GPIO.IN)      # Echo
tot = 0             #inizializzazione somma delle misurazioni
arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
#inizializzazione lista

for x in range(20):
# Set trigger to False (Low)
   GPIO.output(GPIO_TRIGGER, False)
   
# Dai tempo al sensore
   time.sleep(0.1)

# Invia una pulsazione di 10us al trigger
   GPIO.output(GPIO_TRIGGER, True)

# Aspetta 10us
   time.sleep(0.00001)
   GPIO.output(GPIO_TRIGGER, False)
   start = time.time()

   while GPIO.input(GPIO_ECHO)==0:
     start = time.time()

   while GPIO.input(GPIO_ECHO)==1:
     stop = time.time()

# Calcola la lunghezza dell'impulso
   elapsed = stop-start

# Calcola la distanza
   y = elapsed * speedSound

# Dimezza il valore della distanza(andata+ritorno)
   y = y / 2
   arr[x]=y
   
arr.sort()        #ordina per applicare la media troncata

y=mediatroncata(arr,percentuale)     #distanza finale
yft=y*c1                 #impostare c1 per convertire in piedi

print("{0:5.1f}".format(y))         #stampa la distanza[cm]
print("{0:5.1f}".format(yft))        #stampa la distanza[ft]

# Scrivi il testo per il display.
draw.rectangle((0, 0, oled.width-1, oled.height-1), outline=1, fill=0)
font = ImageFont.truetype('FreeMono.ttf', 13)
oled.canvas.text((3,1),    y, font=font, fill=1)
oled.canvas.text((40,1),    "cm", font=font, fill=1)
oled.canvas.text((3,40),    yft, font=font, fill=1)
oled.canvas.text((40,40),    "ft", font=font, fill=1)

# mostra il canvas sul display.
oled.display()
sleep(5)
oled.cls()      # Oled ancora acceso, ma il contenuto dello schermo e spento

# Reset GPIO
GPIO.cleanup()
 
Inoltre, io faccio partire lo script tramite php e quindi questi
Codice:
print("{0:5.1f}".format(y))         #stampa la distanza[cm]
print("{0:5.1f}".format(yft))        #stampa la distanza[ft]

restituiscono come risposta, al browser, i valori della distanza che poi utilizzo come mi pare tramite un comando GET da una applicazione android.
La pagina php nel webserver è fatta più o meno così:
Codice PHP:
<?php
$code 
$_GET['code'];
if (
$code==codice){
    
system("cd /usr/lib/cgi-bin");
    
system("sudo python /....../script_misurazione.py");
}elseif (
$code==codice2){
    
system("cd /usr/lib/cgi-bin");
    
system("sudo python /home/darimos/Desktop/Tank/altro_script.py");
}
?>

quindi:

Diciamo che il file php si chiama peppe.php

Dal browser del cellulare apri webserver_ip/peppe.php e non succede nulla.

Se invece apri webserver_ip/peppe.php?code=codice  allora parte lo script_misurazione e ti stampa il risultato.

Lo stesso per un altro script mettendo l'altro codice.

Poi quel risultato che ti stampa, se ti fai una app dedicata che accede alla pagina, puoi usarlo all'interno di una schermata personalizzata, che poi è bene o male quello che fa blynk (credo).
Risposta
#10
innanzitutto grazie!!!

dopo un primo rapido sguardo trovo un sacco di cose a me sconosciute me anche qualcosina che capisco..

mi e ti chiedo:

quanto ci mette ad effettuare le venti misurazioni? (vediamo se ci metto piu tempo io a calcolarlo o tu a rispondere Big Grin )

ho bisogno di avere almeno tre misurazioni visualizzate al secondo, infatti non so se riuscirò alla fine a mantenere l'epaper , anche se forse con il refresh parziale ci posso stare dentro... boh

le tre visualizzazioni al secondo (almeno) mi servono anche senza fili, quindi sullo schermo del telefono o tablet che sia.

è tutto nuovo per me e leggendo qua e la (al momento sono disoccupato ed insonne quindi ho molto tempo che passo su forum e git hub) mi sembrava di aver capito che il refresh di una pagina in un browser non era abbastanza veloce per le mie esigenze.... mentre delle prove che ho fatto con arduino e blynk mi sembravano soddisfacenti. oltre al fatto che non mi devo studiare anche come mettere su una app o una pagina in un server (credo).

per ora sto ancora combattendo col display e la vedo lunga. Dal demo per un altro display sto cercando di estrapolare le righe che servono a me, cercando di capire come centrare ed ingrandire il font, sfruttare tutto lo schermo e qual'è l'effettivo refresh rate parziale)


grazie ancora
Rpi zero w running 2016-03-18-raspbian-jessie
Rpi 3 b running Openplotter
osx 10.12.5
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect