Placa y arreglos #13
5 changed files with 30957 additions and 61 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
82
README.md
82
README.md
|
@ -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
30905
placa/nodemecu.fz
Normal file
File diff suppressed because it is too large
Load diff
|
@ -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()
|
||||||
|
@ -21,14 +21,11 @@ ser.write(serial.to_bytes(com))
|
||||||
ser.flush()
|
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()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue