Resultados da busca - %E5%8D%8E%E5%AE%87%E5%BD%A9%E7%A5%A8%E6%9C%89%E6%89%98%E5%90%97%E3%80%90%E2%94%8B%E7%A8%B3%E5%AE%9A2%E2%92%8F7%E2%92%8F01705%E2%94%8B%E6%89%A3%E3%80%93%E3%80%91
scolares(e estudante vive sempre duro ha ha ha) a coisa pega ! Acabei de comprar ontem 4 sensores ultrasonicos pra uma montagem usando os 4 ao mesmo tempo que um amigo tá fazendo, cada sensor foi comprado por apenas R$ 6,50.
MASSSSSSSSSS... Já que o assunto é trazer teorias de nível de caixa d'agua, lá vai mais uma.
Em minha casa eu tenho um sistema de irrigação controlado por arduino, tentei usar essas boias de caixa d'agua e com o tempo elas sempre davam pau, resultado criei o que chamei de BOIA DIGITAL PASSIVA (depois descobri que muita gente usa, mas a minha eu tirei da cabeça).
Com essa boia e um arduino dá pra medir até SEIS NÍVEIS diferentes, pois cada nível é ligado a uma porta analogica do arduino, e ele tem 6 portas, obvio que se vocÊ usar um mega, a historia é outra.
VAMOS A MONTAGEM DA BOIA DIGITAL PASSIVA:
1º- Consiga uma placa de plastico(pode-se até usar outros materiais como madeira, mas não recomendo, o plastico é o ideal) que seja do tamanho da profundidade de sua caixa d'agua.
2º- Consiga fios ou fita inox (eu usei dessas fitas que é utilizada pelas companhias eletricas para prender coisas aos postes, elas são baratas e faceis de achar, no meu caso eu achei e só reciclei)
3º- Fios com o numero de pernas relativos ao numero de sensores que você deseja ter ( no meu caso só pus 2, um em cima e um em baixo, dai usei fio com 3 pernas)
4º- Um arduino ( fica ao gosto do cliente )
MONTAGEM:
a) Pegue a placa de plastico e prenda com arrebite um pedaço da fita de aço no tamanho que vá do topo a base da placa, mas sem topar em baixo.
b) agora dê aproximadamente 1,5cm de distancia e coloque uma segunda fita inox, dessa vez do topo até o ponto mais baixo onde você deseja que seja indicado o fundo da caixa d'agua.
c) agora vá dando 1,5cm de distancia e vá colocando quantas fitas inox quiser cada uma saindo do topo e indo até um ponto, formando uma especie de escada.
d) pegue o fio e ligue cada uma das penas em cada uma das pontas da fita que fica no topo, vocÊ pode soldar ou só fixar nos arrebites.
A LIGAÇÃO:
O primeiro fio, que esta ligado na primeira fita que vai até o fundo, deverá ser ligado nos 5v do arduino.
Cada um dos demais fios, ligados a uma fita que vai até uma profundidade deverá ser ligado a uma porta analogica do arduino.
PROGRAMANDO:
Abra a IDE do arduino, vá em examples, basics e abra o AnalogReadSerial.
Onde há: int sensorValue = AnalogRead(A0); copie a linha e replique pelo numero de pontos desejado, por exemplo:
int sensorValue1 = AnalogRead(A1);
int sensorValue2 = AnalogRead(A2);
int sensorValue3 = AnalogRead(A3);
e pro ultimo faça o mesmo na parte que manda aparecer o resultado na serial:
Serialprintln(sensorValue1);
Serialprintln(sensorValue2);
Serialprintln(sensorValue3);
TESTANDO:
Ligue o SENSOR DIGITAL PASSIVO no arduino e leve ele até a caixa d'agua que para teste deverá estar cheia.
Abra um terminal serial e veja que os resultados deverão estar 0, se não tiver ligue um RESISTOR DE PULL DOWN em cada uma das portas.
Por ultimo vá submergindo o SENSOR DIGITAL PASSIVO dentro da caixa e você notará que quando chegar em cada fita que a água tocar nele, automaticamente o valor aumentará.
TÁ PRONTO ! a partir daqui é só programação.
espero que tenham gostado, esse eu já tô usando a mais de um ano e a precisão é absoluta, não rola falhas.
Outro fato legal desse "Sensor" é que ele é "passivo" ou seja, não existem partes móveis, ativas ou eletrônicas, são apenas astes de inox, que o unico trabalho que você terá de tempos em tempos é passar um pano pra limpar alguma sujeita que esteja alterando a condutividade.
Resumindo, o troço não quebra.
…
Adicionado por Weider Duarte ao 10:38 em 29 julho 2014
e
#define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
LiquidCrystal lcd(6, 7, 5, 4, 3, 2);
char st[20];
void setup() { Serial.begin(9600); // Inicia a serial
SPI.begin(); // Inicia SPI bus
mfrc522.PCD_Init(); // Inicia MFRC522
Serial.println("Aproxime o seu cartao do leitor...");
Serial.println();
//Define o número de colunas e linhas do LCD:
lcd.begin(16, 2);
mensageminicial();
}
void loop() { // Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Mostra UID na serial
Serial.print("UID da tag :");
String conteudo= "";
byte letra;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Mensagem : ");
conteudo.toUpperCase();
if (conteudo.substring(1) == "ED 78 03 CA") //UID 1 - Chaveiro
{
Serial.println("Ola FILIPEFLOP !");
Serial.println();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ola FILIPEFLOP !");
lcd.setCursor(0,1);
lcd.print("Acesso liberado!");
delay(3000);
mensageminicial();
}
if (conteudo.substring(1) == "BD 9B 06 7D") //UID 2 - Cartao { Serial.println("Ola Cartao !");
Serial.println();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ola Cartao !");
lcd.setCursor(0,1);
lcd.print("Acesso Negado !");
delay(3000);
mensageminicial();
}
}
void mensageminicial() { lcd.clear();
lcd.print(" Aproxime o seu");
lcd.setCursor(0,1);
lcd.print("cartao do leitor");
}
ai aparece a msg na caixa de msg
C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522.cpp: In member function 'bool MFRC522::MIFARE_SetUid(byte*, byte, bool)':
C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522.cpp:1818:39: warning: 'bool MFRC522::MIFARE_OpenUidBackdoor(bool)' is deprecated (declared at C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522.cpp:1674): will move to extra class in next version [-Wdeprecated-declarations]
if (!MIFARE_OpenUidBackdoor(logErrors)) {
^
C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522.cpp: In member function 'bool MFRC522::MIFARE_UnbrickUidSector(bool)':
C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522.cpp:1847:34: warning: 'bool MFRC522::MIFARE_OpenUidBackdoor(bool)' is deprecated (declared at C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522.cpp:1674): will move to extra class in next version [-Wdeprecated-declarations]
MIFARE_OpenUidBackdoor(logErrors);
^
In file included from C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522Extended.cpp:8:0:
C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522Extended.h: In constructor 'MFRC522Extended::MFRC522Extended(uint8_t)':
C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522Extended.h:81:44: warning: 'MFRC522::MFRC522(byte)' is deprecated (declared at C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\MFRC522\src\MFRC522.h:335): use MFRC522(byte chipSelectPin, byte resetPowerDownPin) [-Wdeprecated-declarations]
MFRC522Extended(uint8_t rst) : MFRC522(rst) {};
^
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPIClass::begin()'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
c:/users/pca/downloads/documents/arduino-1.6.12-windows/arduino-1.6.12/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPIClass::initialized'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPIClass::end()'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPIClass::interruptMode'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPIClass::usingInterrupt(unsigned char)'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPIClass::interruptMask'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPIClass::notUsingInterrupt(unsigned char)'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPIClass::interruptSave'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SPI\SPI.cpp.o (symbol from plugin): In function `SPIClass::begin()':
(.text+0x0): multiple definition of `SPI'
libraries\SPI\SPI (2).cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Foram encontradas múltiplas bibliotecas para "SPI.h" Usado: C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\hardware\arduino\avr\libraries\SPI Não usado: C:\Users\PCA\Downloads\Documents\arduino-1.6.12-windows\arduino-1.6.12\libraries\SPI-master
exit status 1
Erro compilando para a placa Arduino/Genuino Mega or Mega 2560
alguma ajuda…
#include <Servo.h>
//Cria objeto para controlar o servo base
Servo servo_base;
//Cria objeto para controlar o servo inclinacao
Servo servo_inclinacao;
int pino_x = A4; //Pino ligado ao X do joystick
int pino_y = A5; //Pino ligado ao Y do joystick
int val_x; //Armazena o valor do eixo X
int val_y; //Armazena o valor do eixo Y
void setup()
{
//Define a porta a ser ligada ao servo base
servo_base.attach(7);
//Define a porta a ser ligada ao servo inclinacao
servo_inclinacao.attach(8);
}
void loop()
{
//Recebe o valor do joystick, eixo X
val_x = analogRead(pino_x);
//Converte o valor lido para um valor entre 1 e 180 graus
val_x = map(val_x, 0, 1023, 1, 180);
//Move o servo base para a posicao definida pelo joystick
servo_base.write(val_x);
//Recebe o valor do joystick, eixo Y
val_y = analogRead(pino_y);
//Converte o valor lido para um valor entre 1 e 180 graus
val_y = map(val_y, 0, 1023, 1, 180);
//Move o servo inclinacao para a posicao definida pelo joystick
servo_inclinacao.write(val_y);
//Aguarda a movimentacao do servo e reinicia a leitura
delay(15);
}
tem como fazer isso que tu falou nele?…
ea industrial que não foi muito longe pois existe muitos obstáculos para a rede mas também fiz e em uma area residencial consegui da a volta no meu quarteirão tranquilo sem perda de dados o ponto mais longe foi de 200 metros de um Esp32LoRa da Heltec do outro
Mas isto eu fiz configurando um como Receptor e outro como Transmissor, mas eu queria utiliza-los como os 2 sendo Receptor e Transmissor para fazer uma comunicação de mão dupla os 2 mandam informações e os 2 recebe informações
Tentei simplesmente misturar os 2 programas o do Receptor com Transmissor mas parece que não estou conseguindo configura-lo... Fiquei ate na duvida se e possível mesmo fazer com mão dupla ?
Alguém teria alguma ideia de como fazer ?
PROGRAMA DO RECEPTOR
/* This is a simple example show the Heltec.LoRa recived data in OLED.
The onboard OLED display is SSD1306 driver and I2C interface. In order to make the OLED correctly operation, you should output a high-low-high(1-0-1) signal by soft- ware to OLED's reset pin, the low-level signal at least 5ms.
OLED pins to ESP32 GPIOs via this connecthin: OLED_SDA -- GPIO4 OLED_SCL -- GPIO15 OLED_RST -- GPIO16
by Aaron.Lee from HelTec AutoMation, ChengDu, China 成都惠利特自动化科技有限公司 www.heltec.cn
This project is also available on GitHub: https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series */ #include "heltec.h"
#define BAND 915E6 //you can set band here directly,e.g. 868E6,915E6,433E6 String rssi = "RSSI --"; String packSize = "--"; String packet ;
void LoRaData() { Heltec.display->clear(); Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT); Heltec.display->setFont(ArialMT_Plain_10); Heltec.display->drawString(0 , 15 , "Recebido " + packSize + " bytes"); Heltec.display->drawStringMaxWidth(0 , 26 , 128, packet); Heltec.display->drawString(0, 0, rssi); Heltec.display->display(); }
void cbk(int packetSize) { packet = ""; packSize = String(packetSize, DEC); for (int i = 0; i < packetSize; i++) { packet += (char) LoRa.read(); } rssi = "RSSI " + String(LoRa.packetRssi(), DEC) ; LoRaData();
}
void setup() {
Serial.begin(115200); //WIFI Kit series V1 not support Vext control Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);
Heltec.display->init(); Heltec.display->flipScreenVertically(); Heltec.display->setFont(ArialMT_Plain_10); delay(1500); Heltec.display->clear();
Heltec.display->drawString(0, 0, "CNCTEX.Lora Iniciado!"); Heltec.display->drawString(0, 10, "Espere o dado recebido ..."); Heltec.display->display(); delay(1000); //LoRa.onReceive(cbk); LoRa.receive(); }
void loop() { int packetSize = LoRa.parsePacket(); if (packetSize) { cbk(packetSize); } }
PROGRAMA DO TRANSMISSOR
/* This is a simple example show the Heltec.LoRa sended data in OLED.
The onboard OLED display is SSD1306 driver and I2C interface. In order to make the OLED correctly operation, you should output a high-low-high(1-0-1) signal by soft- ware to OLED's reset pin, the low-level signal at least 5ms.
OLED pins to ESP32 GPIOs via this connecthin: OLED_SDA -- GPIO4 OLED_SCL -- GPIO15 OLED_RST -- GPIO16
by Aaron.Lee from HelTec AutoMation, ChengDu, China 成都惠利特自动化科技有限公司 https://heltec.org
this project also realess in GitHub: https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series */
#include "heltec.h"
#define BAND 915E6 //you can set band here directly,e.g. 868E6,915E6,433E6
unsigned int counter = 0; String rssi = "RSSI --"; String packSize = "--"; String packet ;
void setup() { //WIFI Kit series V1 not support Vext control Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);
Heltec.display->init(); Heltec.display->flipScreenVertically(); Heltec.display->setFont(ArialMT_Plain_10); delay(1500); Heltec.display->clear();
Heltec.display->drawString(0, 0, "CNCTEX.Lora Iniciado!"); Heltec.display->display(); delay(1000); } void loop() { Heltec.display->clear(); Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT); Heltec.display->setFont(ArialMT_Plain_10);
Heltec.display->drawString(0, 0, "Sending packet: "); Heltec.display->drawString(90, 0, String(counter)); Heltec.display->display();
// send packet LoRa.beginPacket(); /* LoRa.setTxPower(txPower,RFOUT_pin); txPower -- 0 ~ 20 RFOUT_pin could be RF_PACONFIG_PASELECT_PABOOST or RF_PACONFIG_PASELECT_RFO - RF_PACONFIG_PASELECT_PABOOST -- LoRa single output via PABOOST, maximum output 20dBm - RF_PACONFIG_PASELECT_RFO -- LoRa single output via RFO_HF / RFO_LF, maximum output 14dBm */ LoRa.setTxPower(14, RF_PACONFIG_PASELECT_PABOOST); LoRa.print("Hello "); LoRa.print(counter); LoRa.endPacket();
counter++; digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level) delay(10); // wait for a second digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW delay(10); // wait for a second }// =========================================================== //
RESOLVIDO
Eu mudei o código para facilitar, ao invés de mandar informações escrita no display fiz ele apenas com 2 botoes e 2 leds um acedendo um lede do outro
Um liga o led do outro com um interruptor que eu fiz pelo software usando um micro swith
lembrando os botoes tem que esta cons resistores pro pull down
PROGRAMA DO TRANSMISSOR RECEPTOR (so passar esse programa no 2 microcontrolador)
/*This is a simple example show the Heltec.LoRa sended data in OLED.
The onboard OLED display is SSD1306 driver and I2C interface. In order to make theOLED correctly operation, you should output a high-low-high(1-0-1) signal by soft-ware to OLED's reset pin, the low-level signal at least 5ms.
OLED pins to ESP32 GPIOs via this connecthin:OLED_SDA -- GPIO4OLED_SCL -- GPIO15OLED_RST -- GPIO16
by Aaron.Lee from HelTec AutoMation, ChengDu, China成都惠利特自动化科技有限公司https://heltec.org
this project also realess in GitHub:https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series*/
#include "heltec.h"
#define BAND 915E6 //you can set band here directly,e.g. 868E6,915E6,433E6
#define botao 36#define led 12
boolean status_Botao = LOW;boolean statusAnt_Botao = LOW;boolean sinal = 0;String packSize = "--";String packet ;
void cbk(int packetSize) { // recebe e converte dos dados recebidos em texto para facilitar o manuzeiopacket = "";packSize = String(packetSize, DEC);for (int i = 0; i < packetSize; i++) {packet += (char) LoRa.read();}}
void setup() {
pinMode (botao, INPUT);pinMode (led , OUTPUT);
//WIFI Kit series V1 not support Vext controlHeltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);LoRa.receive();}void loop() {
status_Botao = digitalRead (botao);delay(5);if (status_Botao == HIGH) statusAnt_Botao = HIGH;if (status_Botao == LOW && statusAnt_Botao == HIGH) {sinal = !sinal;statusAnt_Botao = LOW;LoRa.beginPacket(); // liga o envioLoRa.setTxPower(14, RF_PACONFIG_PASELECT_PABOOST);LoRa.print(sinal);LoRa.endPacket(); // deliga o envio}
// LoRa.onReceive(cbk);
int packetSize = LoRa.parsePacket();if (packetSize) {cbk(packetSize);}
if (packet == "1") {digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)//delay(10); // wait for a second}
if (packet == "0") {digitalWrite(led, LOW); // turn the LED off by making the voltage LOW//delay(10);}}…
Adicionado por Vitor S Costa ao 10:11 em 30 julho 2020