Compare commits

..

7 commits

Author SHA1 Message Date
f
5c68e94310 terminar el mensaje con un salto de línea 2022-06-08 10:36:35 -03:00
f
a58cb67017 esperar al final del loop 2022-06-08 10:35:13 -03:00
f
dca7f9e7dd no escribir una línea vacía si no hay pregunta 2022-06-08 10:34:12 -03:00
f
de4d4f06a2 esperar al terminar el loop de temperatura 2022-06-08 10:32:56 -03:00
f
3717b24234 esperar si ningún arduino responde
no afecta el buen funcionamiento, pero si los arduinos se desconectan,
el lector hace un pico de uso de cpu.
2022-06-08 10:30:34 -03:00
f
a70d4734b7 aumentar el timeout en la conexión serial
si el arduino tarda en leer los datos podemos obtener una respuesta
vacía
2022-06-08 10:29:10 -03:00
f
e4bf856b5f placa lista para producción y documentación 2022-06-08 10:27:55 -03:00
6 changed files with 30960 additions and 64 deletions

View file

@ -58,11 +58,10 @@ void loop() {
Serial.write(" "); Serial.write(" ");
Serial.write("C"); Serial.write("C");
Serial.write(" "); Serial.write(" ");
Serial.write("99"); Serial.write("99\n");
} }
} }
delay(1000);
} }

View file

@ -8,7 +8,7 @@ int inQuery;
int getData() { int getData() {
int sensorValue = analogRead(A7); int sensorValue = analogRead(A2);
return (map(sensorValue, 0, 700, 100, 0)); return (map(sensorValue, 0, 700, 100, 0));
} }
@ -20,9 +20,6 @@ void setup() {
void loop() { void loop() {
Serial.write("\n");
delay(1000);
if ( Serial.available() > 0) { if ( Serial.available() > 0) {
inQuery = Serial.read(); inQuery = Serial.read();
@ -42,9 +39,9 @@ void loop() {
Serial.write(" "); Serial.write(" ");
Serial.write("TSS"); Serial.write("TSS");
Serial.write(" "); Serial.write(" ");
Serial.write("99"); Serial.write("99\n");
} }
} }
delay(1000);
} }

View file

@ -363,61 +363,59 @@ Ver el estado del servicio de envío de datos.
$ sudo systemctl status nodemecu.service $ sudo systemctl status nodemecu.service
``` ```
## Placas (PCB)
La última versión de la placa se encuentra en `placas/nodemecu.fz`. Es
un archivo en el formato de [Fritzing](https://fritzing.org/) que
permite editar esquemático, protoboard y PCB en un mismo archivo.
El archivo se guarda en `.fz` y no en `.fzz` para que podamos tener
registro de cambios con `git`. El segundo es un formato comprimido.
Para producir las placas físicas, primero se exporta el archivo Fritzing
a PDF utilizando el botón "Exportar para PCB".
Los archivos imprimibles son los que tienen el sufijo `mirror`, con
estos se pueden imprimir PCBs de forma casera.
### Funcionamiento
Todos los Arduinos se encuentran conectados con la Raspberry en modo
"maestro-esclavos" a través de una conexión serie de tipo UART.
Esto permite que la Raspberry pregunte y solo un Arduino responda por
vez, usando la misma conexión serie.
Cada Arduino tiene un ID de dispositivo que es único en toda la placa:
| Sensor | ID |
| ------------- | -- |
| Temperatura | 1 |
| Turbidez | 2 |
| pH | 3 |
| Conductividad | 4 |
La conexión serie se realizó adaptando el modelo ["UART/TTL-Serial
network with single master and multiple
slaves"](http://cool-emerald.blogspot.com/2009/10/multidrop-network-for-rs232.html),
donde los RX (recepción) y TX (transmisión) de los Arduinos y Raspberry
están conectados entre sí. Para activar la transmisión (respuesta) de
los Arduinos, los diodos Schottky son activados por una resistencia
pull-up de 10K.
Para poder activar la recepción de la Raspberry a través de un GPIO de
3.3V, se introdujo un divisor de tensión que baja el voltaje de 5 a 3.3V
en la misma línea.
Con esta conexión los Arduinos y la Raspberry pueden hablar entre sí.
### Historial
El historial de desarrollo de Nodemecu se encuentra en el directorio
`esquematicos/`.
### Gerber
Para generar los archivos Gerber, con el archivo Fritzing abierto, ir al
menú Archivo > Exportar > Para producción > Gerber Extendido (RS-274X)
y elegir un directorio/carpeta donde guardar los archivos.

30905
placa/nodemecu.fz Normal file

File diff suppressed because it is too large Load diff

View file

@ -10,7 +10,7 @@ ser = serial.Serial(
parity=serial.PARITY_NONE, parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE, stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS, bytesize=serial.EIGHTBITS,
timeout=1 timeout=2
) )
ser.flush() ser.flush()
@ -22,13 +22,10 @@ ser.flush()
while True: while True:
if ser.in_waiting > 0: if ser.in_waiting > 0:
line = ser.readline().decode('utf-8', errors='replace').rstrip() line = ser.readline().decode('utf-8', errors='replace').rstrip()
#time.sleep(0.1)
print(line) print(line)
ser.flush() ser.flush()
break break
time.sleep(1)
quit() quit()

View file

@ -26,8 +26,8 @@ ficheros="bin envs arduinos.py generador_json funciones registrador desinstalar"
echo "1. Instalando dependencias echo "1. Instalando dependencias
" "
apt update && apt install -y python3-pip jsonlint jq uuid #apt update && apt install -y python3-pip jsonlint jq uuid
pip3 install pyserial #pip3 install pyserial
echo "" echo ""