mashiro2004
Maestro
- Registrato
- 26 Febbraio 2014
- Messaggi
- 182
- Località
- Aosta
- Corpo macchina
- Nikon d800 + Nikon d300 + Panasonic lx5
- Sesso
- Maschio
Ciao a tutti,
la mia idea è di "motorizzare" una slitta micrometrica o un soffietto....
Materiale:
Veniamo al materiale, io sono già in possesso di tutto tranne del motore, che però devo capire se può bastare un motorino da 5V e/o che caratteristiche debba avere, se qualcuno ha competenze in merito me lo facia sapere.
Per il momento sto facendo delle prove con il raspberry pi3 + relé 5volt.
Ho provveduto a collegare il relé al rasp in questa maniera:
Positivo del relé al pin 2 ed il negative al pin 6, mentre il contatto del relé (impostato se aperto di default) è collegato al pin 15 (gpio 15).
La mia idea è di fare tramite il raspberry una pagina in php dove inserire i parametri tramite browser dello smartphone collegato in wifi al rasp.
La seconda fase potrebbe essere un app per android che richiami la pagina in php. Oppure che lanci I comandi via wifi o alter soluzioni ma lo valuterò in un secondo momento.
Ho installato sul raspberry centos 7 in versione arm per raspberry priva di interfaccia grafica, tanto non serve per lo scopo ed ho meno occupazione di risorse sul rasp che già ne ha poche….
Ho installato apache e php… e fatto un servizio di linux che richiama uno script che all’avvio mi ability il gpio 15 e lo seta in output, inoltre dà I permessi ad pache di di scrivere il valore 0 o 1 relativi al gpio 15.
Ecco quanto fatto per ora
Servizio denominato gpio.service:
[Unit]
Description=Permessi e creazione GPIO
After = network.target
[Service]
ExecStart=/bin/bash /usr/bin/rasp/init.sh
[Install]
WantedBy = multi-user.target
Settato il servizio che parta in automatic e lanci lo script /usr/bin/rasp/init.sh
Ecco lo script:
#!/bin/bash
echo 15 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio15/direction
chmod 777 /sys/class/gpio/gpio15/value
Questa era la parte per me più facile facendo il sistemista riesco a districarmi bene con i sistemi.
Ora arriva la parte di programmazione dove sono molto carente, ma tuttavia ho fatto qualcosa che per ora funziona, ecco iI codice (non ho badato all'impaginazione css ecc.... quello in un secondo momento):
<!DOCTYPE html>
<html>
<head>
<title>Motor Stacking</title>
</head>
<body>
<form method="post">
<label for="fname">Scatti da effettuare:</label>
<input type="text" id="scatti" name="scatti"><br><br>
<p>
<button name="start">Start</button>
</p>
</form>
<!-- Progress bar -->
<div id="progress" style="width:500px;border:1px solid #ccc;"></div>
<!-- Stato del progresso -->
<div id="information" style="width"></div>
<?php
$status = "Pronto per lo stacking";
if (isset($_POST['start']))
{
set_time_limit(300);
// Numero di scatti da effettuare, li prenderà poi da una textbox
$total = $_POST['scatti'];
// Loop fino alla fine degli scatti da effettuare
for($i=1; $i<=$total; $i++){
// Calcolo della percentuale
$percent = intval($i/$total * 100)."%";
// Javascript per fare l'update della barra di scorrimenti e segnala il numero di scatti
echo '<script language="javascript">
document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\"> </div>";
document.getElementById("information").innerHTML="Scatto: '.$i.' di '.$total.'";
</script>';
// Chiude il relé e lo riapre
$output = shell_exec('echo 1 > /sys/class/gpio/gpio15/value');
sleep(1);
$output = shell_exec('echo 0 > /sys/class/gpio/gpio15/value');
// Buffer e flush data
echo str_repeat(' ',1024*64);
// Manda l'output al browser
flush();
// Tempo che si deve aspettare tra uno scatto e l'altro
sleep(1);
$status = "Stacking terminato";
}
}
// Segnala che è pronto per lo stacking o il numero di scatti è terminato
echo '<script language="javascript">document.getElementById("information").innerHTML="'.$status.'"</script>';
?>
</body>
</html>
Ora una volta capire che motorino ordinare, posso integrare il codice per la rotazione del motore.
Se qualcuno ha suggerimenti o vuole partecipare al progetto mi faccia sapere….
Se qualcuno è interessato posso condividere anche direttamente la img da caricare sul rasp.
la mia idea è di "motorizzare" una slitta micrometrica o un soffietto....
Materiale:
- Raspberry
- Motore passo passo
- Relé
- Powerbank
- Stampa 3d per accoppiamento motore-slitta
Veniamo al materiale, io sono già in possesso di tutto tranne del motore, che però devo capire se può bastare un motorino da 5V e/o che caratteristiche debba avere, se qualcuno ha competenze in merito me lo facia sapere.
Per il momento sto facendo delle prove con il raspberry pi3 + relé 5volt.
Ho provveduto a collegare il relé al rasp in questa maniera:
Positivo del relé al pin 2 ed il negative al pin 6, mentre il contatto del relé (impostato se aperto di default) è collegato al pin 15 (gpio 15).
La mia idea è di fare tramite il raspberry una pagina in php dove inserire i parametri tramite browser dello smartphone collegato in wifi al rasp.
La seconda fase potrebbe essere un app per android che richiami la pagina in php. Oppure che lanci I comandi via wifi o alter soluzioni ma lo valuterò in un secondo momento.
Ho installato sul raspberry centos 7 in versione arm per raspberry priva di interfaccia grafica, tanto non serve per lo scopo ed ho meno occupazione di risorse sul rasp che già ne ha poche….
Ho installato apache e php… e fatto un servizio di linux che richiama uno script che all’avvio mi ability il gpio 15 e lo seta in output, inoltre dà I permessi ad pache di di scrivere il valore 0 o 1 relativi al gpio 15.
Ecco quanto fatto per ora
Servizio denominato gpio.service:
[Unit]
Description=Permessi e creazione GPIO
After = network.target
[Service]
ExecStart=/bin/bash /usr/bin/rasp/init.sh
[Install]
WantedBy = multi-user.target
Settato il servizio che parta in automatic e lanci lo script /usr/bin/rasp/init.sh
Ecco lo script:
#!/bin/bash
echo 15 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio15/direction
chmod 777 /sys/class/gpio/gpio15/value
Questa era la parte per me più facile facendo il sistemista riesco a districarmi bene con i sistemi.
Ora arriva la parte di programmazione dove sono molto carente, ma tuttavia ho fatto qualcosa che per ora funziona, ecco iI codice (non ho badato all'impaginazione css ecc.... quello in un secondo momento):
<!DOCTYPE html>
<html>
<head>
<title>Motor Stacking</title>
</head>
<body>
<form method="post">
<label for="fname">Scatti da effettuare:</label>
<input type="text" id="scatti" name="scatti"><br><br>
<p>
<button name="start">Start</button>
</p>
</form>
<!-- Progress bar -->
<div id="progress" style="width:500px;border:1px solid #ccc;"></div>
<!-- Stato del progresso -->
<div id="information" style="width"></div>
<?php
$status = "Pronto per lo stacking";
if (isset($_POST['start']))
{
set_time_limit(300);
// Numero di scatti da effettuare, li prenderà poi da una textbox
$total = $_POST['scatti'];
// Loop fino alla fine degli scatti da effettuare
for($i=1; $i<=$total; $i++){
// Calcolo della percentuale
$percent = intval($i/$total * 100)."%";
// Javascript per fare l'update della barra di scorrimenti e segnala il numero di scatti
echo '<script language="javascript">
document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\"> </div>";
document.getElementById("information").innerHTML="Scatto: '.$i.' di '.$total.'";
</script>';
// Chiude il relé e lo riapre
$output = shell_exec('echo 1 > /sys/class/gpio/gpio15/value');
sleep(1);
$output = shell_exec('echo 0 > /sys/class/gpio/gpio15/value');
// Buffer e flush data
echo str_repeat(' ',1024*64);
// Manda l'output al browser
flush();
// Tempo che si deve aspettare tra uno scatto e l'altro
sleep(1);
$status = "Stacking terminato";
}
}
// Segnala che è pronto per lo stacking o il numero di scatti è terminato
echo '<script language="javascript">document.getElementById("information").innerHTML="'.$status.'"</script>';
?>
</body>
</html>
Ora una volta capire che motorino ordinare, posso integrare il codice per la rotazione del motore.
Se qualcuno ha suggerimenti o vuole partecipare al progetto mi faccia sapere….
Se qualcuno è interessato posso condividere anche direttamente la img da caricare sul rasp.