I nostri progetti con il Raspberry Pi

Computer Multimediali e Mini PC

MrColo

Utente Èlite
Ciao ragazzi, ho aperto questa discussione per pura curiosità e per conoscere e scoprire i progetti che avete fatto con il vostro raspberry.

Mmmh sono proprio curioso... ahah

P.s. mi scuso se la sezione non è quella giusta, ma non sono riuscito a trovarne nessuna apposita.
 
Ultima modifica:
#1

pentothal

Seguo con interesse
 
#2

Gio22

Seguo! :cavallo:
 
#3

Hacker91

Penso che sia la sezione sbagliata per parlare di questo argomento.

Comunque sono interessato anch'io. :D
 
Ultima modifica:
#4

Moffetta88

Staff Forum
Utente Èlite
Interessato seguo.
 
#5

La sezione è giusta in quanto ci sono anche le guide officiali al raspberry.

Sbizzarritevi!
 
#6

Moffetta88

Staff Forum
Utente Èlite
Beh dai parto io ^^
Il mio è un semplice progetto, che può esser fatto con qualsiasi minipc.
Utilizzo uno dei rpi3 come server piHole + server openVpn + server CardDAV + gestionale in php/mysql(molto semplice: carico/scarico merce, gestione clienti, creazione fatture/preventivi/ddt ) per una piccola azienda, tutto gestito da interfaccia webmin )
Link delle varie componenti:

Tutta la rete usa come server DNS il raspberry pi3 model B ( sono 5 pc ), in contemporanea usano una rubrica condivisa ed un gestionale fatto su misura.
Per quando vogliono accedere alle varie risorse da esterno gli abbiamo messo un server openVPN così da non dover aprire troppe porte sul router/modem,ed in più possono stampare in ufficio anche quando sono all'estero.
E' su tipo da 2/3 anni, tranne per la parte openVPN che è ha meno di un anno.
Mai dato problemi, molto soddisfatto
Ah naturalmente non è appeso o appoggiato così a zonzo, ha un suo case con ventola
 
#7

MrColo

Utente Èlite
Moffetta88 ha detto:
Beh dai parto io ^^
Il mio è un semplice progetto, che può esser fatto con qualsiasi minipc.
Utilizzo uno dei rpi3 come server piHole + server openVpn + server CardDAV + gestionale in php/mysql(molto semplice: carico/scarico merce, gestione clienti, creazione fatture/preventivi/ddt ) per una piccola azienda, tutto gestito da interfaccia webmin )
Link delle varie componenti:

Tutta la rete usa come server DNS il raspberry pi3 model B ( sono 5 pc ), in contemporanea usano una rubrica condivisa ed un gestionale fatto su misura.
Per quando vogliono accedere alle varie risorse da esterno gli abbiamo messo un server openVPN così da non dover aprire troppe porte sul router/modem,ed in più possono stampare in ufficio anche quando sono all'estero.
E' su tipo da 2/3 anni, tranne per la parte openVPN che è ha meno di un anno.
Mai dato problemi, molto soddisfatto
Ah naturalmente non è appeso o appoggiato così a zonzo, ha un suo case con ventola
Grande Moffetta, è un progetto molto interessante e utile! Mi sa che in futuro scoppiazzerò un pochino XD.

Attendiamo altri progetti!
 
Mi Piace: Moffetta88
#8

NT.Wardenclyffe

Seguo.. :+1:
 
#9

MrColo

Utente Èlite
Uppettino!
 
#10

Moffetta88

Staff Forum
Utente Èlite
Ma insomma dove sono tutti quegli utenti che compravano il raspberry :P
Dunque, ne segno altri due, uno effettivo e l'altro è in wip.
Il primo è una cosa molto easy, viene fatta con un raspberry pi 3 model b, raspbian ( pen'ultima versione, quella prima di buster per intenderci ), php, apache e arduino.
In camera mia ho un ventilatore da soffitto che funziona SOLO ed esclusivamente con un telecomando 433MHz, quidni se spengo la luce con l'interruttore della camera, gli tolgo totalmente l'alimentazione e ce l'ho in quel posto.
Così, a sbaffo dell'elettricista che diceva che era impossibile clonare il telecomando, mi sono clonato con arduino l'intero set di istruzioni del telecomando:
-5 velocità delle pale
-luce calda, fredda, mista
-intensità della luce
-luce accesa/spenta
-pale in funzione o no
Su arduino poi ho predisposto due cavi ( un - ed un + ) per la trasmissione dei dati con il raspberry ( usando il modulo 433MHz con raspberry, non fornendo i 5V, non dava i segnali giusti... ho tirato giù tutti i santi ).
Sul raspberry mi sono fatto una specie di web app in cui posso controllare questo ventilatore, e i comandi vengono fatti tramite php che esegue delle chiamate sul "cmd" per interagire con la serial port dell'arduino.
In soldoni ho usato apache per il server web, php per le chiamate tra raspberry/gpio/arduino, onsenui come interfaccia grafica.
Includo il codice di arduino ( che attenzione, è un progetto multiplo, infatti c'è collegato display lcd che mi segna temperatura ed ora, e tramite dei bottoni fisici posso accendere e spegnere la retroilluminazione del display. Il tutto per usare una specie di thread e quindi far fare più cose senza bloccare arduino )
C#:
#include "DHT.h"
#include <RCSwitch.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DS1302.h>

#define DHTPIN 11
#define DHTTYPE DHT11
#define INTERVAL_MESSAGE1 1000
#define INTERVAL_MESSAGE2 2000
#define INTERVAL_MESSAGE3 11000
#define INTERVAL_MESSAGE4 13000

unsigned long time_1 = 0;
unsigned long time_2 = 0;
unsigned long time_3 = 0;
unsigned long time_4 = 0;

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
RCSwitch mySwitch = RCSwitch();
DS1302 rtc(2, 3, 4);

String read_serial;
int SWITCH_BCK = 7;
int SWITCH_ONOFF = 6;

int  val = 0;
int cmd = 0;
int val_tmp = 1;

void setup() {
  rtc.halt(false);
  rtc.writeProtect(false);
  dht.begin();
  lcd.init();
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.backlight();
  inizializzalcd();
  mySwitch.enableTransmit(10);
  mySwitch.setProtocol(6);
  mySwitch.setPulseLength(389);
  mySwitch.setRepeatTransmit(15);
  pinMode(SWITCH_BCK, INPUT);
  pinMode(SWITCH_ONOFF, INPUT);


}

void loop() {

  if (millis() > time_1 + INTERVAL_MESSAGE1) {
    time_1 = millis();
    data ();
  }

  if (millis() > time_2 + INTERVAL_MESSAGE2) {
    time_2 = millis();
    temp();
  }


  val = digitalRead(SWITCH_BCK);
  cmd = digitalRead(SWITCH_ONOFF);
  delay(100);
  if (cmd == HIGH) {
    read_serial = "1";
    delay(250);
  }
  if (val == HIGH && val_tmp == 0) {
    val_tmp = 1;
    lcd.setBacklight(HIGH);
    delay(100);
  } else if (val == HIGH && val_tmp == 1) {
    val_tmp = 0;
    lcd.setBacklight(LOW);
    delay(100);
  }

  while (Serial.available()) {
    char c = Serial.read(); 
    read_serial += c;
    delay(2);

  }

  if (read_serial.length() > 0) {
    int n = read_serial.toInt(); 
    Serial.print("--> ");
    Serial.println(n);
    switch (n) {
      case 1:
        //on/off lamp
        mySwitch.send(2768297236, 32);
        break;
      case 2:
        //on/off fan
        mySwitch.send(3959479572, 32);
        break;
      case 3:
        //LOW
        mySwitch.send(1610669332, 32);
        break;
      case 4:
        // MID
        mySwitch.send(100719892, 32);
        break;
      case 5:
        // HIGH
        mySwitch.send(218160404, 32);
        break;
      case 6:
        // LAMP MIN
        mySwitch.send(4110474516, 32);
        break;
      case 7:
        // LAMP MAX
        mySwitch.send(1593892116, 32);
        break;
      case 8:
        //1
        mySwitch.send(4211137812, 32);
        break;
      case 9:
        //2
        mySwitch.send(4261469460, 32);
        break;
      case 10:
        //3
        mySwitch.send(1510006036, 32);
        break;
      case 11:
        //4
        mySwitch.send(4009811220, 32);
        break;
      case 12:
        //5
        mySwitch.send(3204504852, 32);
        break;
      case 13:
        //REV
        mySwitch.send(4244692244, 32);
        break;
      default:
        Serial.print("DEF: ");
        Serial.println(n);
        break;
    }
    read_serial = "";
  }

}

void data () {
  lcd.setCursor(0, 0);
  lcd.print(rtc.getDateStr());
  lcd.print(" ");
  lcd.print(rtc.getTimeStr());
}
void temp() {
  float h = 0.0;
  float t = 0.0;
  h = dht.readHumidity();
  t = dht.readTemperature();
  lcd.setCursor(0, 1);
  lcd.print("Oggi ");
  lcd.print((int)t);
  lcd.print((char)223);
  lcd.print(" con ");
  lcd.print((int)h);
  lcd.print("%");

}
void inizializzalcd() {
  lcd.setCursor(0, 0);
  lcd.print("Inizializzo....");
  //delay(250);
}

Il secondo progetto è un WIP nella mia testa:
Consisterà in una scatoletta elettrica con coperchio ricoperto di pannelli solari che alimenterà un gruppo di batterie per tenere in vita un raspberry w 0 ed alcuni sensori. Tutto che girerà su server linux e salvataggio dei dati ( devo ancora pensare quali xD ) su database o mysql o sqlite e reperibili da remoto + vari allert via email ( avevo in mente di far vedere lo stato della batteria, quanto è efficiente il pannello solare, quanti Watt ha accumulato, vari dati relativi al "server", e stavo pensando di monitorare l'inquinamento acustico )
Naturalmente tutto ancora nella mia testa, ma pian piano prende forma su carta xD
 
#11

NT.Wardenclyffe

Moffetta88 ha detto:
Ma insomma dove sono tutti quegli utenti che compravano il raspberry :P
Dunque, ne segno altri due, uno effettivo e l'altro è in wip.
Il primo è una cosa molto easy, viene fatta con un raspberry pi 3 model b, raspbian ( pen'ultima versione, quella prima di buster per intenderci ), php, apache e arduino.
In camera mia ho un ventilatore da soffitto che funziona SOLO ed esclusivamente con un telecomando 433MHz, quidni se spengo la luce con l'interruttore della camera, gli tolgo totalmente l'alimentazione e ce l'ho in quel posto.
Così, a sbaffo dell'elettricista che diceva che era impossibile clonare il telecomando, mi sono clonato con arduino l'intero set di istruzioni del telecomando:
-5 velocità delle pale
-luce calda, fredda, mista
-intensità della luce
-luce accesa/spenta
-pale in funzione o no
Su arduino poi ho predisposto due cavi ( un - ed un + ) per la trasmissione dei dati con il raspberry ( usando il modulo 433MHz con raspberry, non fornendo i 5V, non dava i segnali giusti... ho tirato giù tutti i santi ).
Sul raspberry mi sono fatto una specie di web app in cui posso controllare questo ventilatore, e i comandi vengono fatti tramite php che esegue delle chiamate sul "cmd" per interagire con la serial port dell'arduino.
In soldoni ho usato apache per il server web, php per le chiamate tra raspberry/gpio/arduino, onsenui come interfaccia grafica.
Includo il codice di arduino ( che attenzione, è un progetto multiplo, infatti c'è collegato display lcd che mi segna temperatura ed ora, e tramite dei bottoni fisici posso accendere e spegnere la retroilluminazione del display. Il tutto per usare una specie di thread e quindi far fare più cose senza bloccare arduino )
C#:
#include "DHT.h"
#include <RCSwitch.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DS1302.h>

#define DHTPIN 11
#define DHTTYPE DHT11
#define INTERVAL_MESSAGE1 1000
#define INTERVAL_MESSAGE2 2000
#define INTERVAL_MESSAGE3 11000
#define INTERVAL_MESSAGE4 13000

unsigned long time_1 = 0;
unsigned long time_2 = 0;
unsigned long time_3 = 0;
unsigned long time_4 = 0;

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
RCSwitch mySwitch = RCSwitch();
DS1302 rtc(2, 3, 4);

String read_serial;
int SWITCH_BCK = 7;
int SWITCH_ONOFF = 6;

int  val = 0;
int cmd = 0;
int val_tmp = 1;

void setup() {
  rtc.halt(false);
  rtc.writeProtect(false);
  dht.begin();
  lcd.init();
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.backlight();
  inizializzalcd();
  mySwitch.enableTransmit(10);
  mySwitch.setProtocol(6);
  mySwitch.setPulseLength(389);
  mySwitch.setRepeatTransmit(15);
  pinMode(SWITCH_BCK, INPUT);
  pinMode(SWITCH_ONOFF, INPUT);


}

void loop() {

  if (millis() > time_1 + INTERVAL_MESSAGE1) {
    time_1 = millis();
    data ();
  }

  if (millis() > time_2 + INTERVAL_MESSAGE2) {
    time_2 = millis();
    temp();
  }


  val = digitalRead(SWITCH_BCK);
  cmd = digitalRead(SWITCH_ONOFF);
  delay(100);
  if (cmd == HIGH) {
    read_serial = "1";
    delay(250);
  }
  if (val == HIGH && val_tmp == 0) {
    val_tmp = 1;
    lcd.setBacklight(HIGH);
    delay(100);
  } else if (val == HIGH && val_tmp == 1) {
    val_tmp = 0;
    lcd.setBacklight(LOW);
    delay(100);
  }

  while (Serial.available()) {
    char c = Serial.read();
    read_serial += c;
    delay(2);

  }

  if (read_serial.length() > 0) {
    int n = read_serial.toInt();
    Serial.print("--> ");
    Serial.println(n);
    switch (n) {
      case 1:
        //on/off lamp
        mySwitch.send(2768297236, 32);
        break;
      case 2:
        //on/off fan
        mySwitch.send(3959479572, 32);
        break;
      case 3:
        //LOW
        mySwitch.send(1610669332, 32);
        break;
      case 4:
        // MID
        mySwitch.send(100719892, 32);
        break;
      case 5:
        // HIGH
        mySwitch.send(218160404, 32);
        break;
      case 6:
        // LAMP MIN
        mySwitch.send(4110474516, 32);
        break;
      case 7:
        // LAMP MAX
        mySwitch.send(1593892116, 32);
        break;
      case 8:
        //1
        mySwitch.send(4211137812, 32);
        break;
      case 9:
        //2
        mySwitch.send(4261469460, 32);
        break;
      case 10:
        //3
        mySwitch.send(1510006036, 32);
        break;
      case 11:
        //4
        mySwitch.send(4009811220, 32);
        break;
      case 12:
        //5
        mySwitch.send(3204504852, 32);
        break;
      case 13:
        //REV
        mySwitch.send(4244692244, 32);
        break;
      default:
        Serial.print("DEF: ");
        Serial.println(n);
        break;
    }
    read_serial = "";
  }

}

void data () {
  lcd.setCursor(0, 0);
  lcd.print(rtc.getDateStr());
  lcd.print(" ");
  lcd.print(rtc.getTimeStr());
}
void temp() {
  float h = 0.0;
  float t = 0.0;
  h = dht.readHumidity();
  t = dht.readTemperature();
  lcd.setCursor(0, 1);
  lcd.print("Oggi ");
  lcd.print((int)t);
  lcd.print((char)223);
  lcd.print(" con ");
  lcd.print((int)h);
  lcd.print("%");

}
void inizializzalcd() {
  lcd.setCursor(0, 0);
  lcd.print("Inizializzo....");
  //delay(250);
}

Il secondo progetto è un WIP nella mia testa:
Consisterà in una scatoletta elettrica con coperchio ricoperto di pannelli solari che alimenterà un gruppo di batterie per tenere in vita un raspberry w 0 ed alcuni sensori. Tutto che girerà su server linux e salvataggio dei dati ( devo ancora pensare quali xD ) su database o mysql o sqlite e reperibili da remoto + vari allert via email ( avevo in mente di far vedere lo stato della batteria, quanto è efficiente il pannello solare, quanti Watt ha accumulato, vari dati relativi al "server", e stavo pensando di monitorare l'inquinamento acustico )
Naturalmente tutto ancora nella mia testa, ma pian piano prende forma su carta xD
Bei progetti complimenti.

In camera mia ho un ventilatore da soffitto che funziona SOLO ed esclusivamente con un telecomando 433MHz, quidni se spengo la luce con l'interruttore della camera, gli tolgo totalmente l'alimentazione e ce l'ho in quel posto.
Così, a sbaffo dell'elettricista che diceva che era impossibile clonare il telecomando, mi sono clonato con arduino l'intero set di istruzioni del telecomando:
-5 velocità delle pale
-luce calda, fredda, mista
-intensità della luce
-luce accesa/spenta
-pale in funzione o no
Non era informato quanto te..! Sei un grande! :brindiamo: :+1:

Ho visto fare una cosa simile a morro guarda qua >
 
#12

Moffetta88

Staff Forum
Utente Èlite
Il problema che bisogna trovare dei moduli 443MHz da 3V, perchè le gpio del raspberry sono da 3V, sto infame, e quindi i moduli che ho io mi buttavano fuori codici diversi ( se no non passavo da arduino ).
ah con FTTT :) Mio fratello con quello aveva un account twitter di una piantina che ogni volta che aveva sete mandava un tweet, oppure quando veniva annaffiata.
Con quel sito si possono fare un macello di cose, molto fighe!
 
#13

Hacker91

Moffetta88 ha detto:
Ma insomma dove sono tutti quegli utenti che compravano il raspberry :P
Dunque, ne segno altri due, uno effettivo e l'altro è in wip.
Il primo è una cosa molto easy, viene fatta con un raspberry pi 3 model b, raspbian ( pen'ultima versione, quella prima di buster per intenderci ), php, apache e arduino.
In camera mia ho un ventilatore da soffitto che funziona SOLO ed esclusivamente con un telecomando 433MHz, quidni se spengo la luce con l'interruttore della camera, gli tolgo totalmente l'alimentazione e ce l'ho in quel posto.
Così, a sbaffo dell'elettricista che diceva che era impossibile clonare il telecomando, mi sono clonato con arduino l'intero set di istruzioni del telecomando:
-5 velocità delle pale
-luce calda, fredda, mista
-intensità della luce
-luce accesa/spenta
-pale in funzione o no
Su arduino poi ho predisposto due cavi ( un - ed un + ) per la trasmissione dei dati con il raspberry ( usando il modulo 433MHz con raspberry, non fornendo i 5V, non dava i segnali giusti... ho tirato giù tutti i santi ).
Sul raspberry mi sono fatto una specie di web app in cui posso controllare questo ventilatore, e i comandi vengono fatti tramite php che esegue delle chiamate sul "cmd" per interagire con la serial port dell'arduino.
In soldoni ho usato apache per il server web, php per le chiamate tra raspberry/gpio/arduino, onsenui come interfaccia grafica.
Includo il codice di arduino ( che attenzione, è un progetto multiplo, infatti c'è collegato display lcd che mi segna temperatura ed ora, e tramite dei bottoni fisici posso accendere e spegnere la retroilluminazione del display. Il tutto per usare una specie di thread e quindi far fare più cose senza bloccare arduino )
C#:
#include "DHT.h"
#include <RCSwitch.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DS1302.h>

#define DHTPIN 11
#define DHTTYPE DHT11
#define INTERVAL_MESSAGE1 1000
#define INTERVAL_MESSAGE2 2000
#define INTERVAL_MESSAGE3 11000
#define INTERVAL_MESSAGE4 13000

unsigned long time_1 = 0;
unsigned long time_2 = 0;
unsigned long time_3 = 0;
unsigned long time_4 = 0;

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
RCSwitch mySwitch = RCSwitch();
DS1302 rtc(2, 3, 4);

String read_serial;
int SWITCH_BCK = 7;
int SWITCH_ONOFF = 6;

int  val = 0;
int cmd = 0;
int val_tmp = 1;

void setup() {
  rtc.halt(false);
  rtc.writeProtect(false);
  dht.begin();
  lcd.init();
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.backlight();
  inizializzalcd();
  mySwitch.enableTransmit(10);
  mySwitch.setProtocol(6);
  mySwitch.setPulseLength(389);
  mySwitch.setRepeatTransmit(15);
  pinMode(SWITCH_BCK, INPUT);
  pinMode(SWITCH_ONOFF, INPUT);


}

void loop() {

  if (millis() > time_1 + INTERVAL_MESSAGE1) {
    time_1 = millis();
    data ();
  }

  if (millis() > time_2 + INTERVAL_MESSAGE2) {
    time_2 = millis();
    temp();
  }


  val = digitalRead(SWITCH_BCK);
  cmd = digitalRead(SWITCH_ONOFF);
  delay(100);
  if (cmd == HIGH) {
    read_serial = "1";
    delay(250);
  }
  if (val == HIGH && val_tmp == 0) {
    val_tmp = 1;
    lcd.setBacklight(HIGH);
    delay(100);
  } else if (val == HIGH && val_tmp == 1) {
    val_tmp = 0;
    lcd.setBacklight(LOW);
    delay(100);
  }

  while (Serial.available()) {
    char c = Serial.read();
    read_serial += c;
    delay(2);

  }

  if (read_serial.length() > 0) {
    int n = read_serial.toInt();
    Serial.print("--> ");
    Serial.println(n);
    switch (n) {
      case 1:
        //on/off lamp
        mySwitch.send(2768297236, 32);
        break;
      case 2:
        //on/off fan
        mySwitch.send(3959479572, 32);
        break;
      case 3:
        //LOW
        mySwitch.send(1610669332, 32);
        break;
      case 4:
        // MID
        mySwitch.send(100719892, 32);
        break;
      case 5:
        // HIGH
        mySwitch.send(218160404, 32);
        break;
      case 6:
        // LAMP MIN
        mySwitch.send(4110474516, 32);
        break;
      case 7:
        // LAMP MAX
        mySwitch.send(1593892116, 32);
        break;
      case 8:
        //1
        mySwitch.send(4211137812, 32);
        break;
      case 9:
        //2
        mySwitch.send(4261469460, 32);
        break;
      case 10:
        //3
        mySwitch.send(1510006036, 32);
        break;
      case 11:
        //4
        mySwitch.send(4009811220, 32);
        break;
      case 12:
        //5
        mySwitch.send(3204504852, 32);
        break;
      case 13:
        //REV
        mySwitch.send(4244692244, 32);
        break;
      default:
        Serial.print("DEF: ");
        Serial.println(n);
        break;
    }
    read_serial = "";
  }

}

void data () {
  lcd.setCursor(0, 0);
  lcd.print(rtc.getDateStr());
  lcd.print(" ");
  lcd.print(rtc.getTimeStr());
}
void temp() {
  float h = 0.0;
  float t = 0.0;
  h = dht.readHumidity();
  t = dht.readTemperature();
  lcd.setCursor(0, 1);
  lcd.print("Oggi ");
  lcd.print((int)t);
  lcd.print((char)223);
  lcd.print(" con ");
  lcd.print((int)h);
  lcd.print("%");

}
void inizializzalcd() {
  lcd.setCursor(0, 0);
  lcd.print("Inizializzo....");
  //delay(250);
}

Il secondo progetto è un WIP nella mia testa:
Consisterà in una scatoletta elettrica con coperchio ricoperto di pannelli solari che alimenterà un gruppo di batterie per tenere in vita un raspberry w 0 ed alcuni sensori. Tutto che girerà su server linux e salvataggio dei dati ( devo ancora pensare quali xD ) su database o mysql o sqlite e reperibili da remoto + vari allert via email ( avevo in mente di far vedere lo stato della batteria, quanto è efficiente il pannello solare, quanti Watt ha accumulato, vari dati relativi al "server", e stavo pensando di monitorare l'inquinamento acustico )
Naturalmente tutto ancora nella mia testa, ma pian piano prende forma su carta xD
Complimenti bei progetti!!! :rock:


Moffetta88 ha detto:
Ma insomma dove sono tutti quegli utenti che compravano il raspberry :P

Ho un raspberry pi 2b in qualche scatolo quasi mai utilizzato e un arduino anche da qualche altra parte che l'ho comprato per imparare con qualche progetto, appena trovo qualcosa di semplice e carina da fare mi ci metto...

Il problema che di programmazione non ci capisco quasi nulla, mentre di elettronica me la cavo...
 
Mi Piace: Moffetta88
#14

MrColo

Utente Èlite
Moffetta88 ha detto:
Ma insomma dove sono tutti quegli utenti che compravano il raspberry
Dunque, ne segno altri due, uno effettivo e l'altro è in wip.
Il primo è una cosa molto easy, viene fatta con un raspberry pi 3 model b, raspbian ( pen'ultima versione, quella prima di buster per intenderci ), php, apache e arduino.
In camera mia ho un ventilatore da soffitto che funziona SOLO ed esclusivamente con un telecomando 433MHz, quidni se spengo la luce con l'interruttore della camera, gli tolgo totalmente l'alimentazione e ce l'ho in quel posto.
Così, a sbaffo dell'elettricista che diceva che era impossibile clonare il telecomando, mi sono clonato con arduino l'intero set di istruzioni del telecomando:
-5 velocità delle pale
-luce calda, fredda, mista
-intensità della luce
-luce accesa/spenta
-pale in funzione o no
Su arduino poi ho predisposto due cavi ( un - ed un + ) per la trasmissione dei dati con il raspberry ( usando il modulo 433MHz con raspberry, non fornendo i 5V, non dava i segnali giusti... ho tirato giù tutti i santi ).
Sul raspberry mi sono fatto una specie di web app in cui posso controllare questo ventilatore, e i comandi vengono fatti tramite php che esegue delle chiamate sul "cmd" per interagire con la serial port dell'arduino.
In soldoni ho usato apache per il server web, php per le chiamate tra raspberry/gpio/arduino, onsenui come interfaccia grafica.
Includo il codice di arduino ( che attenzione, è un progetto multiplo, infatti c'è collegato display lcd che mi segna temperatura ed ora, e tramite dei bottoni fisici posso accendere e spegnere la retroilluminazione del display. Il tutto per usare una specie di thread e quindi far fare più cose senza bloccare arduino )
C#:
#include "DHT.h"
#include 
#include 
#include 
#include 

#define DHTPIN 11
#define DHTTYPE DHT11
#define INTERVAL_MESSAGE1 1000
#define INTERVAL_MESSAGE2 2000
#define INTERVAL_MESSAGE3 11000
#define INTERVAL_MESSAGE4 13000

unsigned long time_1 = 0;
unsigned long time_2 = 0;
unsigned long time_3 = 0;
unsigned long time_4 = 0;

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
RCSwitch mySwitch = RCSwitch();
DS1302 rtc(2, 3, 4);

String read_serial;
int SWITCH_BCK = 7;
int SWITCH_ONOFF = 6;

int val = 0;
int cmd = 0;
int val_tmp = 1;

void setup() {
rtc.halt(false);
rtc.writeProtect(false);
dht.begin();
lcd.init();
Serial.begin(9600);
lcd.begin(16, 2);
lcd.backlight();
inizializzalcd();
mySwitch.enableTransmit(10);
mySwitch.setProtocol(6);
mySwitch.setPulseLength(389);
mySwitch.setRepeatTransmit(15);
pinMode(SWITCH_BCK, INPUT);
pinMode(SWITCH_ONOFF, INPUT);


}

void loop() {

if (millis() > time_1 + INTERVAL_MESSAGE1) {
time_1 = millis();
data ();
}

if (millis() > time_2 + INTERVAL_MESSAGE2) {
time_2 = millis();
temp();
}


val = digitalRead(SWITCH_BCK);
cmd = digitalRead(SWITCH_ONOFF);
delay(100);
if (cmd == HIGH) {
read_serial = "1";
delay(250);
}
if (val == HIGH && val_tmp == 0) {
val_tmp = 1;
lcd.setBacklight(HIGH);
delay(100);
} else if (val == HIGH && val_tmp == 1) {
val_tmp = 0;
lcd.setBacklight(LOW);
delay(100);
}

while (Serial.available()) {
char c = Serial.read(); 
read_serial += c;
delay(2);

}

if (read_serial.length() > 0) {
int n = read_serial.toInt(); 
Serial.print("--> ");
Serial.println(n);
switch (n) {
case 1:
//on/off lamp
mySwitch.send(2768297236, 32);
break;
case 2:
//on/off fan
mySwitch.send(3959479572, 32);
break;
case 3:
//LOW
mySwitch.send(1610669332, 32);
break;
case 4:
// MID
mySwitch.send(100719892, 32);
break;
case 5:
// HIGH
mySwitch.send(218160404, 32);
break;
case 6:
// LAMP MIN
mySwitch.send(4110474516, 32);
break;
case 7:
// LAMP MAX
mySwitch.send(1593892116, 32);
break;
case 8:
//1
mySwitch.send(4211137812, 32);
break;
case 9:
//2
mySwitch.send(4261469460, 32);
break;
case 10:
//3
mySwitch.send(1510006036, 32);
break;
case 11:
//4
mySwitch.send(4009811220, 32);
break;
case 12:
//5
mySwitch.send(3204504852, 32);
break;
case 13:
//REV
mySwitch.send(4244692244, 32);
break;
default:
Serial.print("DEF: ");
Serial.println(n);
break;
}
read_serial = "";
}

}

void data () {
lcd.setCursor(0, 0);
lcd.print(rtc.getDateStr());
lcd.print(" ");
lcd.print(rtc.getTimeStr());
}
void temp() {
float h = 0.0;
float t = 0.0;
h = dht.readHumidity();
t = dht.readTemperature();
lcd.setCursor(0, 1);
lcd.print("Oggi ");
lcd.print((int)t);
lcd.print((char)223);
lcd.print(" con ");
lcd.print((int)h);
lcd.print("%");

}
void inizializzalcd() {
lcd.setCursor(0, 0);
lcd.print("Inizializzo....");
//delay(250);
}

Il secondo progetto è un WIP nella mia testa:
Consisterà in una scatoletta elettrica con coperchio ricoperto di pannelli solari che alimenterà un gruppo di batterie per tenere in vita un raspberry w 0 ed alcuni sensori. Tutto che girerà su server linux e salvataggio dei dati ( devo ancora pensare quali xD ) su database o mysql o sqlite e reperibili da remoto + vari allert via email ( avevo in mente di far vedere lo stato della batteria, quanto è efficiente il pannello solare, quanti Watt ha accumulato, vari dati relativi al "server", e stavo pensando di monitorare l'inquinamento acustico )
Naturalmente tutto ancora nella mia testa, ma pian piano prende forma su carta xD
Grande moffetta! :+1: :brindiamo:
 
#15