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
5 changed files with 30957 additions and 61 deletions

View file

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

View file

@ -20,9 +20,6 @@ void setup() {
void loop() {
Serial.write("\n");
delay(1000);
if ( Serial.available() > 0) {
inQuery = Serial.read();
@ -42,9 +39,9 @@ void loop() {
Serial.write(" ");
Serial.write("TSS");
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
```
## 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,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
timeout=2
)
ser.flush()
@ -21,14 +21,11 @@ ser.write(serial.to_bytes(com))
ser.flush()
while True:
if ser.in_waiting > 0:
line = ser.readline().decode('utf-8', errors='replace').rstrip()
#time.sleep(0.1)
print(line)
ser.flush()
break
line = ser.readline().decode('utf-8', errors='replace').rstrip()
print(line)
ser.flush()
break
time.sleep(1)
quit()