Založen: Dec 20, 2007 Příspěvky: 1316 Bydliště: Chýnov - to je kousek od Tábora
Zaslal: so duben 01 2023, 8:00 Předmět: Arduino a bouřkový senzor, zprovoznění a úprava kódu.
Zdravím.
Mohl by mi tu někdo poradit se zprovozněním a úpravou programu bouřkového senzoru? Předem upozorňuju, že Cčko mi absolutně nic neříká, patrně ho ani v budoucnu používat nebudu, tak případný rádce bude muset mít velkou trpělivost a nejlépe mi napsat, jak upravit příslušnou část kódu.
Zakoupil jsem tento senzor a snažím se ho zprovoznit podle těchto stránek:
https://wiki.dfrobot.com/Gravity%3A%20Lightning%20Sensor%20SKU%3A%20SEN0290#target_5
Bohužel k pokusům mám v současnosti pouze desku LEONARDO R3 a tak nevím, zda je to důvod, proč se to chová následovně:
Zapojil jsem to podle obrázku.
Zkopíroval a vložil do programu arduina v 1.8.13 uvedený kód.
Stáhl a patrně i nainstaloval uvedenou knihovnu (program neprotestuje po ověření).
Nahrál program do LEONARDA.
Spustil sériový monitor, nastavil 115200 baudů.
A… nic. Monitor nic nevypíše.
Vůbec netuším co s tím, poradíte někdo?
Založen: Jun 26, 2009 Příspěvky: 1382 Bydliště: Hlohovec (Sk)
Zaslal: so duben 01 2023, 8:38 Předmět:
Zacni tym ze zistis ci ti vobec komunikuje arduino s pc. Nejaky jednoduchy kod na serial.print si stiahni z netu.
Odporucam niekoho poprosit aby Ti kod upravil.
Založen: Apr 02, 2011 Příspěvky: 19332 Bydliště: Nový Bydžov
Zaslal: so duben 01 2023, 9:05 Předmět:
Nastavils před nahráním (předpokládám v Arduino IDE) opravdu Leonardo? Pokud se třeba u desky Pro Micro ATmega32U4, (co má stejnej procík) nechá nastavení na některou desku s ATmega328P,(Uno, Mini, Nano) tak to spolehlivě zruší bootloader a musí se přes SPI obnovit. A když odpráskneš bootloader, tak nejde sériák. Zkus to nahrát znova, pokud to nepůjde, jseš bez bootloaderu.
Koukal jsem na ten program a je psanej pro ESP. Obávám se, že bez úpravy Ti na Leonardu nepůjde. _________________ Jirka
Založen: Jul 27, 2004 Příspěvky: 4635 Bydliště: 25km na západ od Prahy
Zaslal: so duben 01 2023, 10:16 Předmět:
Tak nevím, já to nahrál do UNO a sériová komunikace funguje. Asi by to opravdu chtělo zkontrolovat tu komunikaci.
Mám s tímhle čidlem postavený detektor s Nokia 5110 displejem. Navíc je tam ještě BMP180 na výpis teploty a tlaku.
Na vyzkoušení stačí tenhle program a navíc bude vidět jakou má modul adresu.
citace:
// Arduino I2C skener
// navody.dratek.cz
// připojení potřebné knihovny
#include <Wire.h>
// nastavení čísel propojovacích pinů
#define I2C_SDA 21
#define I2C_SCL 22
void setup() {
// zahájení komunikace po I2C sběrnici,
// lze použít buď výchozí piny s variantou ()
// nebo specifikovat piny např. u ESP desek (SDA, SCL)
Wire.begin();
//Wire.begin(I2C_SDA, I2C_SCL);
// zahájení komunikace po sériové lince
Serial.begin(9600);
Serial.println("Start I2C skeneru...");
}
void loop() {
// vytvoření pomocných proměnných
byte chyba, adresa;
int pocetZarizeni = 0;
Serial.println("Zacatek hledani...");
// smyčka pro hledání zařízení
// I2C zařízení mohou mít adresu 1-126
for (adresa = 1; adresa < 127; adresa++ ) {
// zahájení komunikace a jeho následné ukončení,
// při ukončení probíhá detekce zařízení pomocí
// kontroly návratové hodnoty
Wire.beginTransmission(adresa);
chyba = Wire.endTransmission();
// pokud nám zařízení odpoví '0',
// tak funguje správně
if (chyba == 0) {
// vytištění informací o zařízení včetně
// jeho adresy v hexa formátu
Serial.print("I2C zarizeni nalezeno na adrese 0x");
Serial.print(adresa, HEX);
Serial.println(" !");
// inkrementace počítadla zařízení
pocetZarizeni++;
}
// při chybě v komunikaci je chybný výstup 4
else if (chyba == 4) {
// vytištění informací o zařízení včetně
// jeho adresy v hexa formátu
Serial.print("Neznama chyba na adrese 0x");
Serial.println(adresa, HEX);
}
}
// kontrola počítadla zařízení
if (pocetZarizeni == 0) {
// nebylo nalezeno žádné zařízení, protože neproběhla inkrementace
Serial.println("Zadne I2C zarizeni nebylo nalezeno.");
}
else {
// oznámení o konci hledání
Serial.print("Konec hledani, nalezeno ");
Serial.print(pocetZarizeni);
Serial.println(" zarizeni.");
}
// pauza před novým během smyčky
delay(5000);
}
_________________ Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Založen: Dec 20, 2007 Příspěvky: 1316 Bydliště: Chýnov - to je kousek od Tábora
Zaslal: so duben 01 2023, 10:22 Předmět:
Sice většině termínům nerozumím, ale pokusím se odpovědět intuitivně.
LEOPNARDO bylo nastavené, pokud do něj pošlu jednoduchý kód s textem a nastavím monitor na 9600b. tak to text zobrazí. Takže předpokládám, že je vše ostatní v pořádku.
Ještě jsem našel ARDUINO MEGA 2560 a zdá se, že se něco děje.
Monitor vypsal:
DFRobot AS3935 lightning sensor begin!
set up for indoor operation
disturber detection enabled
AS3935 manual cal complete
Tak nyní jen zjistit jestli to něco chytí. Na zapalovač to nereaguje a nejbližší bouřka je někde nad Balkánem
Založen: Jul 27, 2004 Příspěvky: 4635 Bydliště: 25km na západ od Prahy
Zaslal: so duben 01 2023, 10:34 Předmět:
Výpis je stejný jako ten můj, takže to funguje. A jestli to něco vypíše když to škádlíš zapalovačem, tak je i adresa OK.
Ale na tohle by mělo stačit i NANO. _________________ Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Založen: Dec 20, 2007 Příspěvky: 1316 Bydliště: Chýnov - to je kousek od Tábora
Zaslal: so duben 01 2023, 10:41 Předmět:
Tak jsem z toho ještě víc zmatený. Když do těch dvou desek nahraju ten Arduino I2C skener, tak ani jedna deska ten detektor blesků nenajde
C mám zapojené na A5, D na A4. Jiné čipy ARDUINA zatím nemám, ty detektory blesku mám 2 a tak předpokládám, že alespoň jeden by měl být funkční.
Založen: Jul 27, 2004 Příspěvky: 4635 Bydliště: 25km na západ od Prahy
Zaslal: so duben 01 2023, 10:59 Předmět:
Nevím jestli jsem to co jsi napsal pochopil správně.
Leonardo má piny SCL a SDA první dva v řadě pod tlačítkem.
U Mega jsou to poslední dva v řadě na opačné straně než je napájecí konektor.
A u obou by to mělo na deskách být i popsané. Takže jestli to máš jinde, tak to nic najít nemůže. _________________ Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Založen: Dec 20, 2007 Příspěvky: 1316 Bydliště: Chýnov - to je kousek od Tábora
Zaslal: so duben 01 2023, 11:31 Předmět:
Ano, chyba na mojí straně. Netušil jsem, že ty mé desky mají přímou komunikaci I2C na samostatných pinech. Mám to na té MEGě a ta už detektor našla na adrese 0x2.
Já ale mám ten program pro UNO a tam se používaly piny A4, A5.
Takže předpokládám, že se musí i ten původní program upravit na ty piny sběrnice I2C, nebo mám použít ty piny A4, A5?
Nebo to zatím mám nechat být a koupit to UNO?
Ve výsledku bych se potřeboval dopracovat k obvodu, který při zaregistrování blesků v určité vzdálenosti například pod 10km, sepne relé a po určitém času, např. 20minut, pokud už do 10 km žádné blesky nezaregistruje, zase relé vypne. Nic víc od toho nechci. Předpokládám, pro člověka znalého, otázka pár minut dát takový program dohromady, pro mě zatím evidentně věc nemožná
Tohle jen říká, že POKUD je použita deska s ESP32 nebo ESP8266, tak se předefinuje IRQ pin, nic víc.
@jova1: Obojí je správně, můžeš si koupit Uno, a nebo jak píše Hafca, můžeš nastavit I2C piny tam kde je ten procák a deska doopravdy mají, jinak to nebude fungovat. Co se týče simulace blesku, lepší by byl blesk od foťáku (nejlépe ještě klasickýho s výbojkou).
Založen: Jul 27, 2004 Příspěvky: 4635 Bydliště: 25km na západ od Prahy
Zaslal: so duben 01 2023, 12:12 Předmět:
Zkusil bych tenhle jednoduchý program. Zapojení pinů tam je a to co od toho tazatel chce by se tam snad dalo dopsat. Fungovat by to mělo na MEGA i Leonardo.
// interrupt trigger global var
volatile int8_t AS3935_ISR_Trig = 0;
// defines for hardware config
#define SI_PIN 9
#define IRQ_PIN 2 // digital pins 2 and 3 are available for interrupt capability
#define AS3935_ADD 0x03 // x03 - standard PWF SEN-39001-R01 config
#define AS3935_CAPACITANCE 72 // <-- SET THIS VALUE TO THE NUMBER LISTED ON YOUR BOARD
// defines for general chip settings
#define AS3935_INDOORS 0
#define AS3935_OUTDOORS 1
#define AS3935_DIST_DIS 0
#define AS3935_DIST_EN 1
// setup for the the I2C library: (enable pullups, set speed to 400kHz)
I2c.begin();
I2c.pullup(true);
I2c.setSpeed(1);
delay(2);
lightning0.AS3935_DefInit(); // set registers to default
// now update sensor cal for your application and power up chip
lightning0.AS3935_ManualCal(AS3935_CAPACITANCE, AS3935_OUTDOORS, AS3935_DIST_EN);
// AS3935_ManualCal Parameters:
// --> capacitance, in pF (marked on package)
// --> indoors/outdoors (AS3935_INDOORS:0 / AS3935_OUTDOORS:1)
// --> disturbers (AS3935_DIST_EN:1 / AS3935_DIST_DIS:2)
// function also powers up the chip
void loop()
{
// This program only handles an AS3935 lightning sensor. It does nothing until
// an interrupt is detected on the IRQ pin.
while(0 == AS3935_ISR_Trig){}
delay(5);
// reset interrupt flag
AS3935_ISR_Trig = 0;
// now get interrupt source
uint8_t int_src = lightning0.AS3935_GetInterruptSrc();
if(0 == int_src)
{
Serial.println("interrupt source result not expected");
}
else if(1 == int_src)
{
uint8_t lightning_dist_km = lightning0.AS3935_GetLightningDistKm();
Serial.print("Lightning detected! Distance to strike: ");
Serial.print(lightning_dist_km);
Serial.println(" kilometers");
}
else if(2 == int_src)
{
Serial.println("Disturber detected");
}
else if(3 == int_src)
{
Serial.println("Noise level too high");
}
lightning0.AS3935_PrintAllRegs(); // for debug...
}
// this is irq handler for AS3935 interrupts, has to return void and take no arguments
// always make code in interrupt handlers fast and short
void AS3935_ISR()
{
AS3935_ISR_Trig = 1;
}
_________________ Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Založen: Dec 20, 2007 Příspěvky: 1316 Bydliště: Chýnov - to je kousek od Tábora
Zaslal: so duben 01 2023, 19:17 Předmět:
Mahoney napsal(a):
@jova1: Obojí je správně, můžeš si koupit Uno, a nebo jak píše Hafca, můžeš nastavit I2C piny tam kde je ten procák a deska doopravdy mají, jinak to nebude fungovat. Co se týče simulace blesku, lepší by byl blesk od foťáku (nejlépe ještě klasickýho s výbojkou).
Uno až příští týden, na I2C to sice připojím, ale program si opravit nedokážu, takže nic.
hafca napsal(a):
Zkusil bych tenhle jednoduchý program. Zapojení pinů tam je a to co od toho tazatel chce by se tam snad dalo dopsat. Fungovat by to mělo na MEGA i Leonardo.
Je to sice možné, ale chce to nějakou knihovnu I2C.h kterou se mi nedaří najít a ty co jsem našel, zase nejdou nahrát. Navíc je to psané pro nějaký jiný obvod, takže taky nic.
Peču na to, zabil jsem s tím půl dne a výsledek 0.
Děkuji všem za snahu.
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2Další
Strana 1 z 2
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.