[RISOLTO] Mandare mail con arduino e python

Salve a tutti,

Volevo creare un programma python che mandasse una mail ogni qual volta che venga premuto un tasto...

Ho trovato questo: Overview | Arduino Lesson 17. Email Sending Movement Detector | Adafruit Learning System

ma il problema è che o arduino o il computer impazziscono dato che cerco di usare la medesima porta sia per python che per arduino.
Stò impazzendo...

Potreste aiutarmi? (uno dei miei problemi è inoltre avviare un programma di python da linea di comando...dopo averlo digitato su IDLE dove lo devo salvare? come faccio poi ad aprirlo?

Grazie in anticipo!

Saluti

David

La seriale non puó essere usata lato PC da 2 programmi. Se hai bisogno di usare 2 seriali devi mettere una seconda su Arduino ( softwareserial e adattatore seriale-USB).

Ciao Uwe.

Mi spiace Uwe ma non ti seguo affatto anche perché non capisco dove nei programmi il programma di Arduino "passa" l informazione a Python... Mentre con processing mi è tutto chiaro qui brancolo nel buio totale...

Magari sarebbe preferibile per me non seguire quel tutorial e ricominciare da capo seguendo delle vostre indicazioni? Sappiate che il programma per Arduino per la pressione del bottone la so fare mentre per Python sono totalmente ignorante... Non riesco nemmeno a capire come scrivere un programmino su Python...

Ditemi se potete aiutarmi a ricominciare...

Grazie per l attenzione... Apprezzò davvero molto

Saluti

David

Il posto migliore per studiare un linguaggio di programmazione è il suo sito ufficiale :):

Per l'interazione python/arduino guardati:
http://pyserial.sourceforge.net/

Buon divertimento :smiley:

Grazie yoshi ma mi sembra un tantinello generico...

Nessuno ha mai fatto Una cosa simile prima? Nessuno ha un programma Python che può passarmi e spiegarmi come aprirlo?

grazie

David

Ho provato lo stesso sketch che è nel tutorial che hai linkato e funziona perfettamente… Non è che per caso hai l’IDE aperta mentre esegui lo script di python?

ecco tana per l errore!

Si tengo aperto l IDE di arduino...Non dovrei? Come faccio ad eseguire una script di python? Basta aprire IDLE e cliccare su run? perchè non riesco a farlo da terminale! Sai come aiutarmi marinaio?

Grazie mille della disponibilità!

David

Se hai seguito la guida alla lettera, devi poter avviare il programmino da terminale... E logicamente l'ide devi chiuderla altrimenti ti blocca la com... Riprova e se hai problemi posta esattamente quello che fai.

Turbodede, l'Arduino ha una sola seriale, quindi un solo canale seriale su cui mandare e ricevere i dati.
Quindi se usi quel canale per comunicare tra l'Arduino e l'IDE di Arduino stesso, non puoi usarlo per far dialogare l'Arduino con un altro programma sul PC che usa la seriale, quindi Python in questo caso.

Grazie leo per la risposta!

Grazie mille tutto funziona a meraviglia ora!

la cosa che mi interessa è capire però come fa arduino a comunicare a python che è avvenuto un cambiamento su di un pin…

Non riesco a vederlo dal codice di python mentre ad esempio con processing mi era chiaro come le due entità (arduino e il computer) si scambiavano dei dati…

Qualche dritta?

Grazie infinite…

David

Non so programmare in Python ma esiste una libreria per gestire la seriale, che ti ha linkato Yoshi93.
Devi usare quella e poi implementare un piccolo protocollo di comunicazione dati fra l'Arduino ed il programma in Python.
Ad esempio, devi impostare un modo per far trasmettere all'Arduino la variazione di un pin e scrivere una routine in Python lato PC per "capire" questi dati.
Ad esempio: potresti spedire il carattere "P" per dire che stai trasmettendo lo stato di un pin, poi spedire il suo valore come byte (ASCII 13 ad esempio per il pin 13) ed infine un altro byte per lo stato del pin, i caratteri "0" o "1" ad esempio, oppure i valori 0 e 1.

grazie leo temo che dovrò studiarmi un minimo di python per proseguire...il mio obiettivo finale è quello di creare un allarme per casa che quando rileva un effrazione manda una mail...
E' un progetto a lungo termine....quindi c'è tempo intanto quello che ho appreso ora lo metto da parte...
Poi si vedrà!

Grazie mille per la collaborazione!

A presto

(metto risolto sul post)

Saluti

David

Tecnicamente è possibile usare python e il serial monitor allo stesso tempo, almeno in lettura. Io ho usato entrambi per il debug della mia ByteSerial.
Per far dialogare python ed arduino devi usare la byteserial di uno e la classe serial dell'altro. Il protocollo lo definisci tu, un esempio è quello che ti ha fatto leo ma puoi sceglierne altri magari che utilizzano un solo byte per comunicare lo stato dei pin.

Su IDLE basta che fai run per avviare lo script (oppure la combinazione di tasti associata per fare più in fretta). Gli script li puoi salvare dove vuoi e poi basta fare Ctrl+s per salvare le modifiche.
L'avvio da terminale degli script è una rottura su windows perchè devi aggiungere l'interprete al path mentre se usi linux basta che dai: python nomescript.py (eventualmente python3 se usi quella versione).

Come avrai notato poi python è piuttosto minimale (ma potentissimo) come linguaggio e le identazioni sono obbligatorie perchè è tramite esse che l'interprete capisce come è suddiviso il codice.

Nel codice del link che hai messo la lettura di ciò che invia l'arduino viene fatta alla riga 29 con ser.readline().

Se fai uno script di prova ricordati di mettere un delay di 2 secondi dopo l'apertura della porta seriale su python perchè così eviti instabilità dovute all'autoreset dell'arduino.

x iscrizione (python)