Compare commits
17 commits
Author | SHA1 | Date | |
---|---|---|---|
d015af3cd6 | |||
637e744386 | |||
079b6152ce | |||
ff1797c66c | |||
cc0ff602eb | |||
ce2e217e72 | |||
d7ee7c5447 | |||
ed27e9a67e | |||
2e11006105 | |||
54f2de544c | |||
71e00f81aa | |||
0843aea109 | |||
68314e4c82 | |||
f4d9bb50a0 | |||
ffb7126f21 | |||
abf9d7ee0d | |||
8c3c46056f |
18 changed files with 515 additions and 2 deletions
|
@ -64,5 +64,5 @@ void loop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
delay(100);
|
||||||
}
|
}
|
||||||
|
|
31
0x03-conductividad/0x03-conductividad.ino
Normal file
31
0x03-conductividad/0x03-conductividad.ino
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
// Dispositivo
|
||||||
|
int devID = 3;
|
||||||
|
char devIDstr[5];
|
||||||
|
int inQuery;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
Serial.write("\n");
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
if ( Serial.available() > 0) {
|
||||||
|
|
||||||
|
|
||||||
|
if ( inQuery == devID) {
|
||||||
|
|
||||||
|
Serial.write(itoa(devID, devIDstr, 10));
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Tur");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
16
Debug/0x00_debug/0x00_debug.ino
Normal file
16
Debug/0x00_debug/0x00_debug.ino
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
int inQuery;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
if ( Serial.available() > 0) {
|
||||||
|
inQuery = Serial.read();
|
||||||
|
Serial.print("Decimal: ");
|
||||||
|
Serial.println(inQuery);
|
||||||
|
Serial.print("Hexadecimal: ");
|
||||||
|
Serial.println(inQuery, HEX);
|
||||||
|
}
|
||||||
|
}
|
25
Debug/0x01_debug/0x01_debug.ino
Normal file
25
Debug/0x01_debug/0x01_debug.ino
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Dispositivo
|
||||||
|
const int devID = 1;
|
||||||
|
int inQuery;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
|
||||||
|
}
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
if ( Serial.available() > 0) {
|
||||||
|
inQuery = Serial.read();
|
||||||
|
if ( inQuery == devID) {
|
||||||
|
Serial.write("1");
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
1
Debug/0x01_debug/config.ino
Normal file
1
Debug/0x01_debug/config.ino
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
25
Debug/0x02_debug/0x02_debug.ino
Normal file
25
Debug/0x02_debug/0x02_debug.ino
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Dispositivo
|
||||||
|
const int devID = 2;
|
||||||
|
int inQuery;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
|
||||||
|
}
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
if ( Serial.available() > 0) {
|
||||||
|
inQuery = Serial.read();
|
||||||
|
if ( inQuery == devID) {
|
||||||
|
Serial.write("2");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
1
Debug/0x02_debug/config.ino
Normal file
1
Debug/0x02_debug/config.ino
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
167
Debug/README.md
Normal file
167
Debug/README.md
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
## Prueba 1
|
||||||
|
|
||||||
|
### 1. Protoboard
|
||||||
|
|
||||||
|
Montar componentes según la imagen.
|
||||||
|
|
||||||
|
**IMPORTANTE:** El pin `Tx` del Arduino no está conectado al diodo.
|
||||||
|
|
||||||
|
![protoboard](proto_01.png)
|
||||||
|
|
||||||
|
El protoboard se confecciono según el circuito impreso.
|
||||||
|
|
||||||
|
![](placa_impresa.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 2. Firmware
|
||||||
|
|
||||||
|
Cargar el fichero `0x00_debug/0x00_debug.ino` en el Arduino 0x01.
|
||||||
|
|
||||||
|
Fichero `0x00_debug.ino`.
|
||||||
|
|
||||||
|
```
|
||||||
|
int inQuery;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
if ( Serial.available() > 0) {
|
||||||
|
inQuery = Serial.read();
|
||||||
|
Serial.print("Decimal: ");
|
||||||
|
Serial.println(inQuery);
|
||||||
|
Serial.print("Hexadecimal: ");
|
||||||
|
Serial.println(inQuery, HEX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 4. Raspbian
|
||||||
|
|
||||||
|
**Paso 1.**
|
||||||
|
|
||||||
|
Hacer una instalación fresca del sistema operativo (version lite).
|
||||||
|
|
||||||
|
**Paso 2.**
|
||||||
|
|
||||||
|
Configurar SO.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ sudo raspi-config
|
||||||
|
```
|
||||||
|
|
||||||
|
Seguir el siguiente patrón de opciones:
|
||||||
|
|
||||||
|
3 Interface Options > I6 Serial Port > Would you like a login shell to be accessible over serial? \<No\> > Would you like the serial port hardware to be enabled? \<Yes\>. > Seleccionar \<Ok\> > Seleccionar \<Finish\> > Would you like to reboot now? \<Yes\>.
|
||||||
|
|
||||||
|
**Paso 3.**
|
||||||
|
|
||||||
|
Instalar 'pyserial'.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ sudo apt update && sudo apt upgrade
|
||||||
|
$ sudo apt install python3-pip
|
||||||
|
$ sudo pip3 install pyserial
|
||||||
|
```
|
||||||
|
|
||||||
|
**Paso 4.**
|
||||||
|
|
||||||
|
Clonar repositorio en la raspberry.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone https://gitea.nulo.in/Nodemecu/nodemecu.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Entrar al directorio de trabajo.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd nodemecu
|
||||||
|
```
|
||||||
|
|
||||||
|
Cambiar a rama testing.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git checkout testing
|
||||||
|
```
|
||||||
|
|
||||||
|
Verificar.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git branch
|
||||||
|
master
|
||||||
|
placa
|
||||||
|
* testing
|
||||||
|
```
|
||||||
|
|
||||||
|
Entrar al directorio `Debug`.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd Debug
|
||||||
|
```
|
||||||
|
|
||||||
|
**Paso 5.**
|
||||||
|
|
||||||
|
En la computadora, desde el Arduino IDE, abrir el monitor serial.
|
||||||
|
|
||||||
|
**NOTA:** El Arduino debe estar conectado tanto a la raspberry como a la pc por USB según el esquema del protoboard al inicio.
|
||||||
|
|
||||||
|
En la raspberry ejecutar `arduinos.py` para enviar caracteres por serial (interrumpir el comando con ctrl-c).
|
||||||
|
|
||||||
|
```
|
||||||
|
$ sudo python arduinos.py 1
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
En el monitor Arduino debería imprimirse lo siguiente.
|
||||||
|
|
||||||
|
![](monitor_01.png)
|
||||||
|
|
||||||
|
Probar con otros numeros
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Prueba 2
|
||||||
|
|
||||||
|
**Paso 1**
|
||||||
|
|
||||||
|
Actualizar repositorio en la raspberry, corroborar que se este trabajando en la rama `testing` (ver pasos anteriores).
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git pull
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Paso 2.**
|
||||||
|
|
||||||
|
Apagar la Raspberry y retirar los Arduinos del protoboard y cargar a cada uno el fichero `.ino` correspondiente:
|
||||||
|
|
||||||
|
- Fichero `0x01_debug.ino` -> Arduino `0x01`.
|
||||||
|
|
||||||
|
- Fichero `0x02_debug.ino` -> Arduino `0x02`.
|
||||||
|
|
||||||
|
Volver a montar en protoboard.
|
||||||
|
|
||||||
|
**Paso 3**
|
||||||
|
|
||||||
|
El montaje debe quedar de la siguiente forma:
|
||||||
|
|
||||||
|
![](proto_02.png)
|
||||||
|
|
||||||
|
**Paso 4.**
|
||||||
|
|
||||||
|
En la Raspberry ejecutar en terminal.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ sudo python arduinos.py 1
|
||||||
|
1
|
||||||
|
$ sudo python arduinos.py 2
|
||||||
|
2
|
||||||
|
```
|
||||||
|
|
||||||
|
Al pasar los argumentos `1` y `2` el comando debe devolver solo el número pasado, no acepta otros números.
|
30
Debug/arduinos.py
Normal file
30
Debug/arduinos.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
import time
|
||||||
|
import serial
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
ser = serial.Serial(
|
||||||
|
port='/dev/serial0', #Replace ttyS0 with ttyAM0 for Pi1,Pi2,Pi0
|
||||||
|
baudrate = 9600,
|
||||||
|
parity=serial.PARITY_NONE,
|
||||||
|
stopbits=serial.STOPBITS_ONE,
|
||||||
|
bytesize=serial.EIGHTBITS,
|
||||||
|
timeout=1
|
||||||
|
)
|
||||||
|
|
||||||
|
ser.flush()
|
||||||
|
|
||||||
|
cw = int(sys.argv[1], 0)
|
||||||
|
com = [cw]
|
||||||
|
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
|
||||||
|
|
||||||
|
quit()
|
BIN
Debug/monitor_01.png
Normal file
BIN
Debug/monitor_01.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
Debug/placa_impresa.png
Normal file
BIN
Debug/placa_impresa.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 MiB |
BIN
Debug/placa_mod_1.png
Normal file
BIN
Debug/placa_mod_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 MiB |
BIN
Debug/proto.png
Normal file
BIN
Debug/proto.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 295 KiB |
BIN
Debug/proto_01.png
Normal file
BIN
Debug/proto_01.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 310 KiB |
BIN
Debug/proto_02.png
Normal file
BIN
Debug/proto_02.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 296 KiB |
|
@ -63,7 +63,7 @@ Una vez que finaliza la grabación extraer la tarjeta MicroSD y colocarla en la
|
||||||
Abra una terminal e instale 'git'.
|
Abra una terminal e instale 'git'.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo apt update && apt install git
|
$ sudo apt update && sudo apt install git
|
||||||
```
|
```
|
||||||
|
|
||||||
**Paso 2**
|
**Paso 2**
|
||||||
|
|
104
arduino_master_1/arduino_master_1.ino
Normal file
104
arduino_master_1/arduino_master_1.ino
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
|
||||||
|
#include <OneWire.h>
|
||||||
|
#include <DallasTemperature.h>
|
||||||
|
#define address 99 //default I2C ID number for EZO pH Circuit.
|
||||||
|
|
||||||
|
|
||||||
|
// SENSOR TEMPERATURA
|
||||||
|
// Pin donde se conecta el bus 1-Wire
|
||||||
|
const int pinDatosDQ = 2;
|
||||||
|
// Instancia a las clases OneWire y DallasTemperature
|
||||||
|
OneWire oneWireObjeto(pinDatosDQ);
|
||||||
|
DallasTemperature sensorDS18B20(&oneWireObjeto);
|
||||||
|
// Funcion que llama al sensor de temperatura
|
||||||
|
float getDataTemp() {
|
||||||
|
sensorDS18B20.requestTemperatures();
|
||||||
|
return (sensorDS18B20.getTempCByIndex(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// SENSOR TURBIDEZ
|
||||||
|
// Funcion que llama al sensor de turbidez
|
||||||
|
int getDataTur() {
|
||||||
|
int sensorValue = analogRead(A7);
|
||||||
|
return (map(sensorValue, 0, 700, 100, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
char devIDstr[5];
|
||||||
|
int inQuery;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
// Sensor temperatura
|
||||||
|
sensorDS18B20.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
if ( Serial.available() > 0) {
|
||||||
|
inQuery = Serial.read();
|
||||||
|
|
||||||
|
switch (inQuery) {
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
Serial.write("1");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("T");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("00");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("C");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("99");
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Serial.write("2");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Tur");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("123");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("TSS");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("99");
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
Serial.write("3");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Con");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("97");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Con");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("99");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
Serial.write("4");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Ph");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("98");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Ph");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("99");
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delay(100);
|
||||||
|
}
|
113
arduino_master_2/arduino_master_2.ino
Normal file
113
arduino_master_2/arduino_master_2.ino
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
|
||||||
|
#include <OneWire.h>
|
||||||
|
#include <DallasTemperature.h>
|
||||||
|
#define address 99 //default I2C ID number for EZO pH Circuit.
|
||||||
|
|
||||||
|
|
||||||
|
// SENSOR TEMPERATURA
|
||||||
|
// Pin donde se conecta el bus 1-Wire
|
||||||
|
const int pinDatosDQ = 2;
|
||||||
|
// Instancia a las clases OneWire y DallasTemperature
|
||||||
|
OneWire oneWireObjeto(pinDatosDQ);
|
||||||
|
DallasTemperature sensorDS18B20(&oneWireObjeto);
|
||||||
|
// Funcion que llama al sensor de temperatura
|
||||||
|
float getDataTemp() {
|
||||||
|
sensorDS18B20.requestTemperatures();
|
||||||
|
return (sensorDS18B20.getTempCByIndex(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// SENSOR TURBIDEZ
|
||||||
|
// Funcion que llama al sensor de turbidez
|
||||||
|
int getDataTur() {
|
||||||
|
int sensorValue = analogRead(A7);
|
||||||
|
return (map(sensorValue, 0, 700, 100, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
char devIDstr[5];
|
||||||
|
int inQuery;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
// Sensor temperatura
|
||||||
|
sensorDS18B20.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
if ( Serial.available() > 0) {
|
||||||
|
inQuery = Serial.read();
|
||||||
|
|
||||||
|
switch (inQuery) {
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
Serial.write("1");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("T");
|
||||||
|
Serial.write(" ");
|
||||||
|
char lecturaStrTemp[6]; // Buffer big enough for 7-character float
|
||||||
|
dtostrf(getDataTemp(), 2, 4, lecturaStrTemp); // Leave room for too large numbers!
|
||||||
|
Serial.write(lecturaStrTemp);
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("C");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("99");
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Serial.write("2");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Tur");
|
||||||
|
Serial.write(" ");
|
||||||
|
|
||||||
|
//char lecturaStr[6]; // Buffer big enough for 7-character float
|
||||||
|
//dtostrf(getData(), 2, 4, lecturaStr); // Leave room for too large numbers!
|
||||||
|
char lecturaStrTur[5]; // Buffer big enough for 7-character float
|
||||||
|
|
||||||
|
dtostrf(getDataTur(), 3, 2, lecturaStrTur); // Leave room for too large numbers!
|
||||||
|
|
||||||
|
Serial.write(lecturaStrTur);
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("TSS");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("99");
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
Serial.write("3");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Con");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("97");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Con");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("99");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
Serial.write("4");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Ph");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("98");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("Ph");
|
||||||
|
Serial.write(" ");
|
||||||
|
Serial.write("99");
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delay(100);
|
||||||
|
}
|
Loading…
Reference in a new issue