logo

domenica 17 novembre 2024

Progetto Domotica: Esp8266 tasmota mqtt

Progetto domotica nasce dall'esigenza di poter controllare l'abitazione a distanza, inizialmente il progetto è iniziato dalla programmazione di arduino, utilizzando la libreria web server e caricando tutti i file della programmazione e dell'interfaccia utente, ma cio ha rallentato notevolmente le prestazioni di arduino uno con modulo ethernet e scheda sd. la necessità di alleggerire arduino ha portato a cercare soluzioni alternative per l'interfaccia grafica, essendo stata realizzata con codice html e php è stato installato XAMPP avendo risorse maggiori lato server l'interfaccia è stata migliorata utiizzando anche il database mysql. Con l'avvento di raspberry pi l'interfaccia è stata trasferita per poter proporre una soluzione server hub domotico, preconfigurato ed accessibile ad un numero superiore di utenti. Per poter gestire tutti i dispotivi occorre un applicativo molto piu complesso di un interfaccia dedicata ad uno Stack arduino raspberry pi,quindi cercando nel web mi sono imbattuto in openhab e successivamente in home asssistant una volta provati entrambi su raspberry pi la sceltaè ricaduta  su HomeHassistant versatile e compatibile con altri dispositivi e firmware, inoltre è compatibile con alexa e google home nonchè dispositivi con firmware tasmota.

 

Progetto Domotica si divide in tre parti:

 

1 Hardware:

L'hardware utilizzato non ha vincoli è possibile utilizzare qualsiasi dispositivo, arduino, esp8266, sonoff, shelly


2 Firmware:

anche il firmware come l'hardware è libero in quanto verranno utilizzati piu protocolli di comunicazione tcp, mqtt. firmware tasmota, scketch personalizzato arduino, firmware scritto in micropython, etc...


3 Controllo centralizzato:

tramite App, server locale, server remoto


il progetto domotica inizia con delle linee guida che sono: firmware tasmota, caricato su esp8266 o simili tramite tasmotizer, l'utilizzo del server Logikcloud consente il controllo remoto tramite mqtt, app come tasmocontrol per la configurazione e controllo del dispositivo


Il progetto è aperto a suggerimenti ed eventuali collaboratori.

lunedì 28 aprile 2014

Spazio web Hosting gratuito

Lo spazio Web gratis è un servizio dove non  si può ottenere un volume di traffico elevato. Inoltre non puoi usufruire delle tante risorse che gli host a pagamento possano offrirti.registrare un dominio Se vuoi iniziare con il piede giusto con un piccolo contributo annuo puoi facilmente realizzare il tuo sito web.
Ti consiglio prima d'iniziare, se non hai le idee chiare di  soffermarti nella scelta del nome del sito è molto importante oltre ad indicare il tuo business sara' una marcia in più per farti trovare dai visitatori (scegli il nome più attinente per i contenuti che vuoi inserire nel tuo sito)

Effettua la ricerca se il tuo nome da te scelto è già presente nel web ovvero se qualcuno prima di te lo ha registrato.

Tutti i siti web hanno bisogno di spazio per archiviare i propri file. Se si sta creando una singola pagina Web, o un progetto grande , multi-page di un sito Web, abbiamo scelto per voi la giusta quantità di spazio web per il vostro bisogno.

dopo aver provato numerosi servizi hosting gratuiti, ho scelto hostinger, che è il più completo e conveniente io per esempio ho scelto il piano gratuito che prevede:

Spazio sul disco 2 gb

Banda 100gb

Registrazione dominio.com gratuito

Installatore CMS che contiene 50 script, e semplifica di molto la realizzazione del nostro sito web. (sito di annunci osclass, E-commerce prestashop, zen cart, ecc... ) con pochi semplici passi guidati si può realizzare la base del nostro sito web, poi basterà inserire i contenuti anch' essi molto semplici da realizzare.

Database mysql 2

phpmyadmin

accesso ftp

streaming audio/video

2 account email con estensione del dominio es @dominio.com

supporto e  assistenza di base

e molto altro tutto gratuito, 

cliccando sul banner potrete registrarvi al sito ed avere un sito in 24/48 ore pronto e poter avviare la vostra attività riducendo le spese. 



domenica 9 giugno 2013

Arduino monitor temperatura con display lcd

Misureremo,  la quantità di luce attorno al nostro Arduino facendo uso di un fotoresistore e faremo lo stesso per la temperatura utilizzando un termistore.

MATERIALE UTILIZZATO:
  1. Arduino Uno
  2. Breadboard
  3. 1 Fotoresistore
  4. 1 Termistore
  5. 2 Resistori (10 Ohm)
  6. Cavetteria
  7. LCD I2C (OPZIONALE)

Per prima cosa,vediamo come collegare opportunamente i vari componenti fra loro con delle immagini:


Abbiamo utilizzato i cavi di colore rosso per identificare la tensione di 5V mentre i cavi neri per identificare la Terra (GND).
I cavi di colore giallo,invece,sono stati usati per identificare gli Output analogici provenienti dai sensori,che andranno inseriti appunto nei Pin analogici sulla nostra scheda Arduino.
Fatto ciò,passiamo al codice.
Per quanto riguarda il "void setup()",andremo a definire i due pin nei quali arrivano gli output dei sensori,come pin di INPUT e inizializzeremo il Seriale a 9600 baud:
  • void setup()
  • {
  •   Serial.begin(9600);
  •   pinMode(A0,INPUT);//pin di INPUT per il fotoresistore
  •   pinMode(A1,INPUT);//pin di INPUT per il termistore
  • }
     
Nel nostro "void loop()" invece,dobbiamo prima dutto leggere i valori che ci vengono forniti dai due sensori posti sulla Breadboard e successivamente stamparli.
Implementiamo prima una versione per chi fosse sprovvisto di LCD
  • void loop()
  • {   
  •     ValoreLuce=analogRead(A0); //ValoreLuce è una variabile di tipo INT dichiarata in precedenza(il fotoresistore fornisce valori interi da 0 a 1023)
  •     ValoreTemp=analogRead(A1);//ValoreTemp è una variabile di tipo INT dichiarata in precedenza
Fatto ciò,possiamo passare alla stampa :
  • Serial.print("Fotoresistore = ");
  • Serial.print(ValoreLuce);
  • Serial.print(" Temperatura = ");
  • Serial.println(ValoreTemp);
Possiamo infire definire un intervallo di Delay che permetterà al nostro Arduino di Trasmettere dati ogni TOT millisecondi:
delay(1000);//Esempio: Intervallo di 1 secondo
Per chi invece fosse provvisto di LCD,una possibile soluzione potrebbe essere la seguente(NB: Alcuni comandi potrebbero non funzionare in base alla libreria del proprio LCD.Si raccomanda,pertanto,di consultare il proprio file library.h per documentarsi sulle funzioni implementabili sul proprio LCD):
  • lcd.setCursor(0,0);
  • lcd.print("Sensore = ");
  • lcd.setCursor(11,0);
  • lcd.print(ValoreLuce);
Stesso meccanismo per il Termistore.
 Infine,"giocando" un pò col codice,possiamo riuscire a tirar fuori dal nostro Arduino qualcosa di molto divertente e funzionale come mostra la seguente foto.

Se avete dei problemi a far funzionare il circuito commentate o scrivete sul forum.

Arduino hello world display lcd

Per poter pilotare il display avete necessità di utilizzare la libreria LiquidCrystal.h che vi permette di comunicare in modalità 4 bit o 8 bit, questo vuol dire che per la trasmissione dati possono essere utilizzate 4 o 8 linee di controllo a queste si aggiungono le due linee di controllo: Register Select (RS) e Enable (E) e alla linea opzionale Read/Write (RW).
In classe ho utilizzato la modalità a 4 bit, la stessa del tutorial sul sito Arduino, ciò comporta l’utilizzo di 6 uscite digitali sulla scheda Arduino.

Nella tabella allegata trovate le funzioni di ogni piedino.

Ricordate che la piedinatura di questi display è comune alla maggior parte degli LCD 16 x 2 standard Hitachi HD44780, ma potreste trovare qualche variazione tipicamente accade per i pin 15 e 16 che potrebbero essere al posto dei pin 1 e 2 (non è il caso di questo display).
In ogni caso come potete vedere dalle fotografie (sopra) il display reca sul lato piste, una legenda con il riferimento piedino -> funzione quindi, non potete sbagliarvi.
Funzione dei piedini
  • Pin 1: Vss – collegato al GND
  • Pin 2: VDD – collegato a +5V
  • Pin 3: V0 – controllo del contrasto dei caratteri. In genere viene collegato ad un potenziometro o trimmer in configurazione partitore di tensione in modo che possiate applicare sul Pin 3 una tensione che varia da 0 a +5V e al variare della tensione varia il contrasto.
  • Pin 4: RS segnale di selezione registro – per selezionare il registro nel quale registrare ciò che appare sul display oppure selezionare il registro di funzionamento in cui viene memorizzata di volta in volta l’istruzione da eseguire per il funzionamento dell’LCD
  • Pin 5: segnale Read/Write – per selezionare la modalità di funzionamento: lettura/scrittura – collegato a GND
  • Pin 6: segnale Enable (E) – per abilitare la scrittura nei registri
  • Pin 7 al Pin 14: linee dati che si inviano o si ricebono dai registri del display. Un valore HIGH (H) indica scrittura (WRITE) del bit nel registro del display, un valore LOW (L) indica un valore letto (READ) da un registro.
  • Pin 15: A (Anodo) – piedino a cui collegare una tensione positiva (nel caso del display descritto +4,2V) che serve per la retroilluminazione del display.
  • Pin 16: K (Catodo) – piedino da collegare a GND per consentire la retroilluminazione.
I collegamenti realizzati sono identici a quelli che trovate sul tutorial: LiquidCrystal – “Hello World!” dove al posto del potenziometro abbiamo utilizzato un trimmer:

Codice:
/* uso del display LCD 16x2 standard Hitachi HD44780

  Circuito:
 * pin RS collegato al pin digitale 12
 * pin E (Enable) collegato al pin digitale 11
 * pin D4 collegato al pin digitale 5
 * pin D5 collegato al pin digitale 4
 * pin D6 collegato al pin digitale 3
 * pin D7 collegato al pin digitale 2
 * pin R/W collegato al GND
 * pin 1 e pin 4 collegati a GND
 * pin 2 collegato a +Vcc
 * centrale del potenziometro/trimmer da 10 KOhm collegato al pin 3 del'LCD
 * pin SX potenziometro/trimmer collegato a +Vcc
 * pin DX potenziometro/trimmer collegato a GND
 * i pin SX e DX del potenziometro/trimmer possono essere interscambiati
*/

// includere la libreria:
#include < LiquidCrystal.h >

/*
   Viene creata l'istanza dell'oggetto LiquidCrystal chiamata lcd in cui
   sono indicati i pin dell'LCD collegati alle uscite digitali di Arduino
*/
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
   //impostiamo il numero di colonne ed il numero di righe di lcd
  lcd.begin(16, 2);
  // Visualizzo il messaggio sul display
  lcd.print("Salve mondo!");
}

void loop() {
  // posiziona il cursore in colonna 0 e linea 1
  // (nota: la linea 1 e la seconda linea, poichè si conta incominciando da 0):
  lcd.setCursor(0, 1);
  // stampa il numero di secondi dall'ultimo reset
  lcd.print(millis()/1000);
}



 Nel caso in cui colleghiamo il Pin 15 a +5V e il Pin 16 a GND abbiamo la retroilluminazione:


Se avete dei problemi a far funzionare il circuito commentate o scrivete sul forum.

mercoledì 7 novembre 2012

Raspberry PI


Guida rapida

Configurazione di base
La procedura descritta qui è la più semplice, utilizzando solo le porte USB sulla scheda e un televisore o  un monitor. 
Avrete bisogno di:
  • Tastiera e mouse USB.
  • SD card (vedi sotto).
  • HDMI o composito televisione, o un monitor con DVI o HDMI, e un HDMI / cavo composito.
  • Micro USB di alimentazione - assicurarsi di utilizzare una buona qualità, in grado di fornire almeno 700mA a 5V. Non tentare di alimentare il Raspberry Pi collegandolo ad un computer o un hub.
  • Cavo LAN Ethernet (opzionale).

Avrete bisogno di una scheda SD con un sistema operativo preinstallato prima di poter avviare il Raspberry Pi. Scheda di 4 GB o più. Per ottenere un'immagine SD card, e per le istruzioni su come flashare una scheda SD da un PC Linux o Windows, fare riferimento al http://www.raspberrypi.org/downloads . Si consiglia agli sviluppatori di utilizzare il Raspian immagine "ansimante", che comprende Python, gcc, e una serie di applicazioni di esempio.
L'audio digitale è disponibile tramite il connettore HDMI. Audio stereo analogico è disponibile presso il jack da 3,5 mm. Per avviare il Raspberry Pi, collegare il mouse, monitor e tastiera, inserire la scheda SD precaricata e collegare l'alimentazione. Se è stato inserito il cavo Ethernet, il dispositivo tenterà di acquisire un lease DHCP in fase di avvio. È possibile effettuare il login con il nome utente e la password nella pagina di download. Per i privilegi di superutente, "sudo" non richiede una password. Una volta effettuato il login, è possibile avviare il sistema X Window utilizzando il comando "startx".
Sorgenti del kernel e un cross-compiling toolchain per l'uso su un PC x86 Linux sono disponibili presso https://github.com/raspberrypi .
Codice di esempio per OpenGL ES, OpenMAX e altre API multimediale è disponibile nella directory / opt / vc / src / hello_pi.

Prossimi aggiornamenti

Nuove immagini della scheda SD vengono rilasciate regolarmente da http://www.raspberrypi.org/downloads . 

giovedì 1 novembre 2012

Relè ir programmabile


In ogni abitazione è presente almeno un telecomando ir utilizzato per controllare dispositivi come tv, dvd, hi-fi, ecc.. Il sistema di comunicazione utilizzato per la trasmissione dei dati è l’infrarosso anche se in quest’ultimo periodo alcune case produttrici hanno adottato sistemi comunicanti ad onde radio.

La comunicazione è affidata ad un diodo funzionante nello spettro dell’infrarosso, il quale trasmette il codice di bit in sequenza, modulato ad una frequenza compresa tra 30 e 60Khz; l’utilizzo di una portante elevata permette di abbattere le interferenze generate da varie fonti presenti nell’ambiente.

Per far si che i disturbi vengano eliminati correttamente, il ricevitore dispone di un filtro passa-banda centrato sulla frequenza della portante. La frequenza portante maggiormente utilizzata è la 38Khz.

Questo progetto destinato all’automazione domestica, infatti permette di pilotare carichi elettrici utilizzando trasmettitori già presenti all’interno dell’abitazione restando comodamente seduti sulla poltrona; il dispositivo è stato progettato per essere alloggiato nelle normali scatolette 503 cosi da poter essere inserito all’interno dell’impianto elettrico senza effettuare particolari modifiche.


Lo schema è molto semplice, le parti si dividono in due blocchi, il primo in altro riguarda la sezione di alimentazione necessaria alla fornitura dei 5V indispensabili per il funzionamento del micro e del sensore.
Il blocco centrale è in sostanza il cuore del circuito, infatti tutte le operazioni vengono eseguite dal microcontrollore PIC12F1840, esso provvede al riconoscimento del dato prelevato dal sensore IR TSOP1738(o equivalente) connesso al connettore X1, e confrontarlo con il dato precedentemente memorizzato; se l’attribuzione di uguaglianza è positiva provvede ad abilitare l’uscita(relè) nella modalità preselezionata(monostabile o bistabile).


Procedura di autoapprendimento:
L’autoapprendimento del codice deve essere eseguito nel seguente modo:

- Per prima cosa alimentare il circuito tramite il connettore X3;
- Premere e mantenere premuto il tasto S1, a questo punto il led LED1 rimarrà acceso;
- Premere un tasto sul telecomando con il quale si vuole commutare l’uscita, se la memorizzazione del codice è avvenuta in modo corretto, il led LED1 lampeggerà velocemente;
- Rilasciare il tasto S1;

Ora è possibile utilizzare il ricevitore.
P.S.
In assenza di alimentazione il micro memorizza nel’eprom il dato ricevuto, per poi caricarlo nuovamente alla successiva accensione, ciò evita di dover eseguire l’autoapprendimento ogni volta che viene tolta l’alimentazione. 













sabato 20 ottobre 2012

Esecuzione di applicazioni ASP.NET in Ubuntu con ModMono


ModMono è un modulo Apache che fornisce il supporto per ASP.NET web server Apache. Useremo Apache come alternativa per IIS di Microsoft in Windows.
Parte uno: installazione di
Per ModMono di lavorare per prima cosa dovete installare Apache. È possibile fare clic qui per istruzioni su come installare Apache. Se avete già installato Apache, è possibile saltare questo passaggio.
Dopo di che, installare ModMono eseguendo il comando seguente (una riga). Verrà installato ModMono con il supporto per ASP.NET 2.0
sudo apt-get install libapache2-mod-mono mono-apache-server2
Una volta completata l'installazione, riavviare Apache e attivare il modulo ModMono eseguendo i seguenti comandi:
sudo / etc/init.d/apache2 restart
sudo a2enmod mod_mono
Ora dobbiamo cambiare il ASP.NET versione 2.0 nel file di configurazione.Aprire il file di configurazione in Gedit:
gksu gedit / etc/apache2/mods-available/mod_mono.conf
Una volta che il file di configurazione è aperto in Gedit, mettere un cancelletto (#) davanti alla riga "Include / etc / mono-server / mono-server-hosts.conf" ed eliminare l'hash di fronte a "Include / etc / mono -server2/mono-server2-hosts.conf ". Ora le due linee dovrebbe essere simile a questo:
# Include / etc / mono-server / mono-server-hosts.conf
Include / etc/mono-server2/mono-server2-hosts.conf
Salvare il file e chiuderlo. Ora riavviare Apache ancora una volta
sudo / etc/init.d/apache2 restart
L'installazione è completata.
Parte 2: Prove
Ora è il momento per verificare l'installazione. Abbiamo intenzione di creare un sito chiamato Ubuntu. Ma prima è necessario creare un file di configurazione per questo sito all'interno della directory "etc/apache2/sites-available /". Per effettuare questa operazione, eseguire il seguente comando:
gksu nautilus / etc/apache2/sites-available /
Si aprirà la cartella in Nautilus. Ora tasto destro del mouse all'interno della finestra e creare un nuovo file vuoto e il nome "Ubuntu". Quindi aprire il file utilizzando un editor di testo e incollare il seguente testo al suo interno, salvare e chiudere.
Alias ​​/ Ubuntu "/ var / www / Ubuntu"
AddMonoApplications default "/ Ubuntu :/ var / www / Ubuntu"
<Location /Ubuntu>
SetHandler mono
</ Location>
** Nota : .. La formattazione dei doppi apici nel codice sopra riportato deve essere modificato manualmente Basta eliminare tutte le virgolette e digitare di nuovo nuovo Assicurati di fare questo, altrimenti non può funzionare.)
Ora all'interno di Nautilus, accedere a / var / www / directory e creare una nuova cartella chiamata "Ubuntu". All'interno di questa cartella creare un nuovo file vuoto e il nome "index.aspx". Quindi aprire il file utilizzando un editor di testo e digitare la seguente riga di codice in esso. (Ancora una volta, non dimenticare di cancellare e ri-digitare le virgolette.)
<% Response.Write ("Funziona come un fascino!");%>
Salvare il file, chiudere e chiudere Nautilus troppo. Poi vengono le fasi finali in cui si attiva il sito e riavviare Apache per l'ultima volta:
a2ensite Ubuntu
sudo / etc/init.d/apache2 restart
Questo è tutto! Ora, aprire il browser web e scegliere:http://localhost/Ubuntu/index.aspx
Si dovrebbe vedere il testo "Funziona come un fascino!" Nella pagina.
Parte 3 (Facoltativo): disattivazione di un sito
Nella parte 2 abbiamo creato un sito chiamato Ubuntu. Prima siamo stati in grado di visualizzare la pagina aspx correttamente abbiamo bisogno di attivare il sito in Apache. Dopo che abbiamo finito test non è necessario per il sito di Ubuntu più. Prima di rimuovere i file, è necessario disabilitare il primo sito.
Aprire una nuova finestra di Terminale ed eseguire il seguente comando:
a2dissite Ubuntu
Ora è necessario rimuovere il file "Ubuntu" che abbiamo creato nel "etc/apache2/sites-available /" directory:
cd / etc/apache2/sites-available /
sudo rm Ubuntu
Allora dobbiamo cancellare la cartella "Ubuntu" all'interno della directory "/ var / www /" directory (che contiene il file index.aspx) e riavviare Apache:
cd / var / www /
sudo rm-rf Ubuntu
sudo / etc/init.d/apache2 restart
Ora è possibile chiudere Terminal. Aprite il vostro browser, cache chiaro e scegliere http://localhost/Ubuntu/index.aspx , ma non funzionerà più.
Nota
Anche se si dispone di PHP 5 e MySQL installato, l'installazione ModMono non li riguardano. Così si sarà in grado di lavorare con il vostro file PHP e ASP.NET allo stesso tempo.
Riferimenti :
Ubuntu Comunità e SqlServerDotNet . Parti 1 e 2 sono principalmente sulla base delle informazioni da queste due fonti, ma ho aggiunto alcuni passi al fine di semplificare ulteriormente il processo.