ven0m
Vytvořené odpovědi
-
AutorPříspěvky
-
caci
ÚčastníkDobrý den.
Zní to jako zajímavý projekt. Pokud by z Vaší strany trval zájem, prosím kontaktujte mne na cacany@iclona.cz .S pozdravem
Čačaný Jáncaci
ÚčastníkDobrý den.
Aktuálně na jednom takovém projektu začínám dělat. Nyní vyrábím příslušenství pro Milestag II protokol, ale mám v plánu udělat kompletně vlastní lasergame včetně software.
Pokud byste měli zájem na spolupráci ozvěte se na cacany@iclona.cz a domluvíme se.S pozdravem
Čačaný Jánposjirka
Účastníkno já se u té optiky bojím spíš soli, nebo poškrábání opvrchu plexiskla. To už může být vyhodonoceno jako dotyk. U té kapacity si nejsem jistý s funkčnosti ve vlhkem prostředí. citlivost můžeš vyzkoušet pomocí jedné knihovny, kdy arduino proměníš v kapaciní snímač/klávesnice:
http://playground.arduino.cc/Main/CapacitiveSensor?from=Main.CapSensezjistíš, že to není tak jednoduchý. se zvětšující se vzdáleností se snižuje kapacita mezi plochou a tvým prstem. na tento drobný rozdíl pak nestačí detektor vyhosnoti změnu frekvence oscilátoru. podívej se n theremin , ten funguje napodobném pricnipů. jen to jeho odstínění je brutus. žijeme se světě el.mag smogu a když zvětšíš „citlivost“ budeš chytat kdejaký bordel (rádio, dálk. ovl., metoestanicie, wifi,..) a není zajištěna spolehlivost. I na lodi máš vysílačku, možná něco na principu radaru, el.motory, ….
Oldřich Horáček
SprávceZdravím Aleši, ano přehodíme, ale bohužel to trvá, nové fórum je připravené na nové webovce, třeba tam udělat nějaké grafické úpravy, staré taky zkoušíme převést do nového ale je to dost práce. Jinými slovy chce to hlavně čas. Aby to někdo udělal na to nemám volné prostředky. Vydržte prosím. Oldřich
petouf
ÚčastníkNo, nad antivandal tlačítkama jsem taky uvažoval, ale museli by být z nerezu, ty z GM jsou poniklovaná mosaz, ty nevydrží. Na Ebay jsem nějaké nerez objevil, ale byly dost drahé a navíc nevím, jak by se osvědčila nerez z číny 🙂 Ovládání mobilem by mohl být další level, ale zase by mobil musel být vodotěsný a navíc – no, je to v kokpitu lodi další „adept“ na utopení 🙂
Co se optiky týká nebál bych se zanešení, bylo by to pod plexisklem. Pokusil bych se experimentovat s https://www.gme.cz/cny70, ale nevím, zda by to bylo funkční. Ty kapacitní senzory by se asi po přelití vlnou začaly chovat podivně, ale to by snad šlo ošetřit. Ten kapacitní by byl podle mého ideální, jen ta citlivost…. :/Vojtěch Vosáhlo
ÚčastníkTak jo, po troše trápení mám kód který funguje. Je pořád co doplňovat ale to už byste mohl zvládnout vy. Co to teď dělá? Prakticky je schopný zjistit jestli má spojení s procesorem a přečíst jeho podpis (device signature), také už je hotová skoro celá rutina na zápis do paměti, tu si ale musíte dodělat vy. Nevím jak budete stahovat data z netu takže si sám budete muset doplnit smyčku která nafluše data na sériový port, na to už by ale mělo stačit jen jednoduché for(). No, níže přikládám ten kód, je to prakticky ready to go, jediné co budete muset změnit je rychlost software serial, pro UNO je to 115200, Nano je 57600 a pro Diecemila a Duemilanove je to 19200. Piny software serialu jsou nastavené na 10 jako RX a 11 jako TX, reset pin je na 2. Vše se dá změnit hned nahoře nad setupem. Všechny funkce vracejí 1 pokud jsou úspěšně provedeny a 0 pokud je někde chyba. Tak snad bude fungovat 😉
Hezký zbytek víkendu.
KÓD:
Je na pastebinu https://pastebin.com/rQaMxMc7posjirka
Účastníkještě mě napadá použít něco totálně odděleného, jako třeba mobil + bluetooth.
Optické čidla se zanesou do soli a nebudou fungovat, magnetické kontakty nejsou tak nic extra. u tšch kapacitních senzoru, nevím jak se budou chovat na lodi …posjirka
Účastníkno zvažoval jsem bu´d použití gumy nad panel nebo gumovou klávesnici. Tu ale stejně neutěsníš (reps. její přívod). Co takhle použít anitvandal tlačítka. Ty mají mít krytí IP65:
https://www.gme.cz/antivandal-spinac-hbgq16ph-10-j-npetouf
ÚčastníkNo, určitě čísla 0-9, plus minimálně dvě navíc, ale ideálně čísla 0-9 plus 6 ovládacích kláves (kurzory, enter, esc.) Ale to chci už asi moc… 🙂
jan123
ÚčastníkZdravím,
tak ty odpory pomohli, opravdu děkuji moc, zachránilo mi to projekt :).posjirka
Účastníka kolik klaves potrebujes?
michal09
ÚčastníkDíky, to je více méně. Zkusím pokud se mi podaří stáhnout ty knihovny, jelikož DS knihovnu používám jinou.
posjirka
Účastníkzkušenosti s tím nemale ale našel jsem ještě toto:
http://www.zive.cz/clanky/pojdme-programovat-elektroniku-rtc-hodiny-aneb-kdyz-arduino-vi-kolik-je-opravdu-hodin/sc-3-a-184666/default.aspxmichal09
ÚčastníkVýsledkem by mělo být, že mi arduino změří venkovní teplotu ca každých 10 minut a odešle pře vysílač 433MHZ a půjde zase spát. Jelikož za oknem nemám zásuvku, tak bude arduino napájeno z baterie a proto nutnost uspání. Nicméně moje kroky jsou postupné, tzn, nejprve si chci odladit kód pro uspání a následně přidat odesílání přes vysíláč 433Mhz.
V kódu jsem našel již také chybu a také jsem našel na youtubu dobrý zdroj na uspání arduina, ale ani to mi nefunguje:
Na serial monitoru se mi objeví následující:
07/04/2017 20:33:17
Woke up
Woke up
07/04/2017 20:33:18
Woke up
Woke up
07/04/2017 20:33:19
Woke up
alarm zpusten
Woke up
Woke up
vstup do spanku
Woke up
07/04/2017 20:33:22
07/04/2017 20:33:23
07/04/2017 20:33:24
07/04/2017 20:33:25
07/04/2017 20:33:26
07/04/2017 20:33:27
07/04/2017 20:33:28
07/04/2017 20:33:29
07/04/2017 20:33:30
07/04/2017 20:33:31
07/04/2017 20:33:32
07/04/2017 20:33:33
07/04/2017 20:33:34
07/04/2017 20:33:35
07/04/2017 20:33:36
07/04/2017 20:33:37
07/04/2017 20:33:38
07/04/2017 20:33:39
07/04/2017 20:33:40
07/04/2017 20:33:41
07/04/2017 20:33:42
07/04/2017 20:33:43
07/04/2017 20:33:44
07/04/2017 20:33:45
07/04/2017 20:33:46
07/04/2017 20:33:47
07/04/2017 20:33:48
07/04/2017 20:33:49
07/04/2017 20:33:50
07/04/2017 20:33:51
07/04/2017 20:33:52
07/04/2017 20:33:53
07/04/2017 20:33:54
07/04/2017 20:33:55
07/04/2017 20:33:56
07/04/2017 20:33:57
07/04/2017 20:33:58
07/04/2017 20:33:59
07/04/2017 20:34:00
07/04/2017 20:34:01
07/04/2017 20:34:02
07/04/2017 20:34:03
07/04/2017 20:34:04
07/04/2017 20:34:05
07/04/2017 20:34:06
07/04/2017 20:34:07
07/04/2017 20:34:08
07/04/2017 20:34:09
07/04/2017 20:34:10
07/04/2017 20:34:11
07/04/2017 20:34:12
07/04/2017 20:34:13
07/04/2017 20:34:14
07/04/2017 20:34:15
07/04/2017 20:34:16
07/04/2017 20:34:17
07/04/2017 20:34:18
07/04/2017 20:34:19
07/04/2017 20:34:20
alarm zpusten
vstup do spanku
Woke up
Woke up
07/04/2017 20:34:22
07/04/2017 20:34:23
07/04/2017 20:34:24
07/04/2017 20:34:25
07/04/2017 20:34:26Trochu mi to přijde, jako by mi na ten pin 2 co mi má probouzet arduino ze spánku pořád něco posílalo bez ohledu na nastavený alarm.
Na pin 2 jsem přivedl přímo SQW z DS3231, tak jako je to v tom odkazu na youtubu, ale když změřím napětí mezi GND a SQW, tak zjistím, že z SQW mi vlastně lezou pulzy, což by mě mohlo neustále zapína arduino bez ohledu na nastavený alarm.
Původně mi ještě napadl rezistor mezi pinem 2 a SQW, ale to nepomohlo. Více méně mi stačí poradit jak rozchodit program co je na youtubu a měl bych vystaráno.kód z youtubu:
#include <DS3231.h>
#include <avr/sleep.h>
#include <Wire.h>int wakePin = 2;
int led = 13;DS3231 clock;
RTCDateTime t;void setup() {
Serial.begin(9600);
Serial.println(„initislizace“);
clock.begin();
pinMode(wakePin, INPUT_PULLUP);
pinMode(led,OUTPUT);clock.armAlarm1(false);
clock.clearAlarm1();
clock.setAlarm1(0,0,0,20,DS3231_MATCH_S);
attachInterrupt(0,wakeUpNow,CHANGE);
CheckAlarms();
}void CheckAlarms(){
RTCAlarmTime a1;
RTCAlarmTime a2;
if(clock.isArmed1()){
a1 = clock.getAlarm1();
Serial.print(„Alarm1 je nastaven“);
switch(clock.getAlarmType1()){
case DS3231_MATCH_S:
Serial.print(„when second match: „);
Serial.println(clock.dateFormat(„_ _:_:s“,a1));
delay(100);
break;
default:
Serial.println(„nezname nastaveni RTC“);
break;
}}
}void wakeUpNow(){
Serial.println(„Woke up“);
delay(300);
}void sleepNow(){
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
attachInterrupt(0,wakeUpNow,CHANGE);
sleep_mode();sleep_disable();
detachInterrupt(0);
}void loop() {
t = clock.getDateTime();
Serial.println(clock.dateFormat(„d/m/Y H:i:s“, t));
delay(100);if (clock.isAlarm1()){
Serial.println(„alarm zpusten“);
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
Serial.println(„vstup do spanku“);
delay(100);
sleepNow();
}delay(900);
}posjirka
Účastníkkdyž jsem to porovnal s examplem:
http://arduino8.webnode.cz/news/lekce-27-adruino-a-napajeni-z-baterie-aneb-jak-uspat-arduino/
tak máš řešení úplně jinak. Třeba pořadí příkazů ve sleepNow(), v režimu SLEEP_MODE_PWR_DOWN je interní časovač mrtvý a nelze se na něj odkazovat, nechápu princip attachInterrupt(0,alarmIsr,CHANGE); v kodu.
Spíš napiš co chceš aby to dělalo a můžeme se na to podívat ..jan123
ÚčastníkDobrá zkusím ty odpory, zatím díky moc.
jan123
ÚčastníkNo právě ono se k němu nejde vůbec připojit ani ping. IP a MAC adresy mám zkontrolované nekolidují, právě proto o to je to divější. Síťový sken arduino vůbec nenajde, ale ostatní pc připojená ke switchi fungují, ale ani po jejich odpojení arduino nefunguje.
BlindP
ÚčastníkNejsi sám :). Tady se to řeší, popř. tady . Holandsky neumím, ale podle googlu:
Sám jsem udělal nějaký výzkum a ukázalo se, že někdy používají špatné odpory na konektoru RJ45. Zřejmě to vytváří elektrický incompatiliteit Některé routery nebo přepínače. Jsem umístil dalších 100 ohm odpor mezi čepem 1-2 a 3-6 konektoru a nyní, že problémy se
posjirka
Účastníka jak se nefunkcnost projevuje? nepripojis ho do site nebo ti posila chybne hodnoty?
vetsinou to byva problem IP adresy kdy ti koliduje z nejakym jinym zarizenim v tomto pripade asi switchem
honzaSL
ÚčastníkTCRT5000 má sloužit pouze jako orientační čidlo pro robota na minisumo budou umístěny na boku na předek mam UZ senzor takže nepotřebuju buhví jakou citlivost.
Axamith
ÚčastníkJeště jsem trochu prohledával své uložené linky. Tady je velmi detailně vysvětlena problematika vážení tenzometry, zpracování signálů, ukázkové kódy atd.
Tady je další skvělý článek o speciální desce OpenScale, určené přímo ke zpracování signálu z tenzometrů a teplotního čidla.
Deska není zrovna levná, OpenScale na eBay, ale zřejmě to bude slušný výrobek. Zde je kompletní dokumentace. nemám s tím žádnou zkušenost, ale možná se někdy odhodlám a zkusím ji pořídit.
Luke_CZ
ÚčastníkA, k jakému účelu ten TCRT5000 bude?
B, než zvedat citlivost, tak se raději podívej na jiné senzory, zvýšením citlivosti přináší samozřejmě zvýšené riziko chybných signálůL:
michal123
ÚčastníkDěkuji, tohle mi hodně pomohlo, už mi to začíná být jasné. Za nějaký kód budu také moc rád. Přeji pěkný víkend.
Vojtěch Vosáhlo
ÚčastníkNo ono to odposlouchávání není nutné, ta stránka kterou jsem posílal to řeší za vás, tam je odposlech komunikace mezi arduinem UNO a Arduino IDE (respektive avrdude který je řízený Arduino IDE).
Vše co je tam vypsáno je rozhovor který spolu avrdude a arduino vedou, u každého příkazu je napsáno zkratkou co znamená a je u něj hexadecimální reprezentace.Ukážu tady jak bych tím procházel já. Pojďme vzít první dva řádky zaznamenané komunikace z té stránky.
Avrdude/Arduino IDE:#30#20 STK_GET_SYNCH (mělo by být jen STK_GET_SYNC), Sync_CRC_EOP
Target/Arduino UNO: #14#10 STK_INSYNC, STK_OKPrvní je Avrdude/Arduino IDE:#30#20 STK_GET_SYNCH, Sync_CRC_EOP, to je tedy sada příkazů kterou pošle avrdude na sériový port, ve vašem případě by tyto příkazy odesílal aktualizační procesor. #30#20 je vlastně ta HEX reprezentace příkazů, první má tedy hodnotu 0x30 a druhý 0x20, to co následuje je jen vysvětlení toho příkazu jeho zkráceným názvem. 0x30 má tedy název STK_GET_SYNC a už podle názvu se dá usoudit že avrdude zjišťuje jestli je spojené s procesorem a snaží se s ním spojit. Kdyby to bylo málo, otevřu si datasheet STK500 a vyhledám si příkaz buď podle HEX čísla nebo zkratky. U tohoto příkazu bych dostal takovéto detaily
Use this command to try to regain synchronization when sync is lost. Send this command
until Resp_STK_INSYNC is received.plus nějaké další věci. Druhý příkaz bych si opět dohledal atd…
Druhý řádek už je odpověď arduina na dotazy, přesněji Target/Arduino UNO: #14#10 STK_INSYNC, STK_OK. Opět dostaneme nazpět HEX čísla, tentokrát 0x14 a 0x10 a jejich vysvětlení. Mohl byste tedy odpověď přečíst a po jejím vyhodnocení pokračovat dál.
Příkazy u kterých je v závorce text Command that is consumed but ignored by the bootloader prakticky nemusíte posílat vzhledem k tomu že je bootloader ignoruje.
Kdyby jste tedy chtěl napsat program který by tuto komunikaci simuloval, musíte odesílat do arduina příkazy přavě jako jejich HEX hodnoty. Na odesílání by stačilo použít třeba Serial.print(DEC reprezentace prikazu, HEX);
Například pro poslání příkazu s kódem 0x30 by byl Serial.print(48, HEX);
48 je 0x30 převedeno na desítkovou soustavu.
nemělo by být potřeba posílat <CR> nebo <LF>, alespoň to není zmíněno.Já se vám tu asi o víkendu až budu mít čas ještě ozvu s nějakým kódem, sám si to rád zkusím. Vy se zatím můžete ještě podívat na to co jsem napsal.
Hezký večer
michal123
ÚčastníkJe mi tedy jasné, že resetuji procesor a pak ho začnu programovat, ale stále se v těch příkazech nějak nevyznám.
Prošel jsem výše zmíněné odkazy ale nekokážu si podle toho ani předsatvit jak by měl vypadat funkční výsledek.
Nevím jaké příkazy použít bylo by prosím možné odkázat na nějaký příklad? takový kde by bylo nejlépe Serial.write(„prikaz1“) a seznam rpikazu tak jak se pouzivaji.
Chtěl jsem odposlechnout stávající komunikaci při programování za prevodnikem z usb ale k tomu mi nyní jedno arduino chybí, takže budu muset počkat.
Doufám, že mi to brzy dojde a naprogramování se podaří.honzaSL
ÚčastníkNo jako ja jedno schema našel, ale právě si nejsem moc jistej jestli se to nebude hřát protože nemam zrovna možnost tam dat chladič a nacpat to na plošák 40×40 (ty TCRT tam musim dat 2)
SCHEMA http://robotelektro.cz/image/cache/data/16.7.2016/TCRT%20zapojen%C3%AD-500×500.jpg
Luke_CZ
ÚčastníkVšecko jde, enem hledat 🙂
L.
posjirka
Účastníkvidim dva mozne problem
bud je spatny bluetooth modul nebo seriova komunikace. ruseni rovnou odstreluji protoze to je podle me blbost. pokud bych mel sazet tipoval bych seriova komunikace.
zkus si nechat poslat na serial monitor vsechno co bluetooth prijme a over si tvoji teorii.
pak budes vedet.
no nelibi se mi ze pouzivas interni uart. predpokladam ze mas desku treba arduino nano kde je na tomto portu usb prevodnik. sam o sobe je v pohode ale nemuzes vyuzivat tento port pro pc i pro bluetooth. nikde si to nepsal jen upozornuji.
no pak jedine stabilita krystaly …MilosMerta
ÚčastníkAplikácia- Bluetooth RC Controller (Android)
Vždy keď pošle mobil povel vpred tak naskočí iný znak v serial monitor.// CxemCAR 1.0 (06.01.2013) // Project Page: http://solderer.tv/arduino-rc-car/ #include "EEPROM.h" #define D1 2 // direction of motor rotation 1 #define M1 3 // PWM left motor #define D2 4 // direction of motor rotation 2 #define M2 5 // PWM right motor #define HORN 13 // additional channel 1 //#define autoOFF 2500 // milliseconds after which the robot stops when the connection #define cmdL 'L' // UART-command for left motor #define cmdR 'R' // UART-command for right motor #define cmdH 'H' // UART-command for additional channel (for example Horn) #define cmdF 'F' // UART-command for EEPROM operation #define cmdr 'r' // UART-command for EEPROM operation (read) #define cmdw 'w' // UART-command for EEPROM operation (write) char incomingByte; // incoming data char L_Data[4]; // array data for left motor byte L_index = 0; // index of array L char R_Data[4]; // array data for right motor byte R_index = 0; // index of array R char H_Data[1]; // array data for additional channel byte H_index = 0; // index of array H char F_Data[8]; // array data for EEPROM byte F_index = 0; // index of array F char command; // command unsigned long currentTime, lastTimeCommand, autoOFF; void setup() { Serial.begin(9600); // initialization UART pinMode(HORN, OUTPUT); // additional channel pinMode(D1, OUTPUT); // output for motor rotation pinMode(D2, OUTPUT); // output for motor rotation /*EEPROM.write(0,255); EEPROM.write(1,255); EEPROM.write(2,255); EEPROM.write(3,255);*/ timer_init(); // initialization software timer } void timer_init() { uint8_t sw_autoOFF = EEPROM.read(0); // read EEPROM "is activated or not stopping the car when losing connection" if(sw_autoOFF == '1'){ // if activated char var_Data[3]; var_Data[0] = EEPROM.read(1); var_Data[1] = EEPROM.read(2); var_Data[2] = EEPROM.read(3); autoOFF = atoi(var_Data)*100; // variable autoOFF ms } else if(sw_autoOFF == '0'){ autoOFF = 999999; } else if(sw_autoOFF == 255){ autoOFF = 2500; // if the EEPROM is blank, dafault value is 2.5 sec } currentTime = millis(); // read the time elapsed since application start } void loop() { if (Serial.available() > 0) { // if received UART data incomingByte = Serial.read(); // raed byte Serial.println(incomingByte); // výpis dát if(incomingByte == cmdL) { // if received data for left motor L command = cmdL; // current command memset(L_Data,0,sizeof(L_Data)); // clear array L_index = 0; // resetting array index } else if(incomingByte == cmdR) { // if received data for left motor R command = cmdR; memset(R_Data,0,sizeof(R_Data)); R_index = 0; } else if(incomingByte == cmdH) { // if received data for additional channel command = cmdH; memset(H_Data,0,sizeof(H_Data)); H_index = 0; } else if(incomingByte == cmdF) { // if received data for EEPROM op command = cmdF; memset(F_Data,0,sizeof(F_Data)); F_index = 0; } else if(incomingByte == '\r') command = 'e'; // end of line else if(incomingByte == '\t') command = 't'; // end of line for EEPROM op if(command == cmdL && incomingByte != cmdL){ L_Data[L_index] = incomingByte; // store each byte in the array L_index++; // increment array index } else if(command == cmdR && incomingByte != cmdR){ R_Data[R_index] = incomingByte; R_index++; } else if(command == cmdH && incomingByte != cmdH){ H_Data[H_index] = incomingByte; H_index++; } else if(command == cmdF && incomingByte != cmdF){ F_Data[F_index] = incomingByte; F_index++; } else if(command == 'e'){ // if we take the line end Control4WD(atoi(L_Data),atoi(R_Data),atoi(H_Data)); delay(10); } else if(command == 't'){ // if we take the EEPROM line end Flash_Op(F_Data[0],F_Data[1],F_Data[2],F_Data[3],F_Data[4]); } lastTimeCommand = millis(); // read the time elapsed since application start } if(millis() >= (lastTimeCommand + autoOFF)){ // compare the current timer with variable lastTimeCommand + autoOFF Control4WD(0,0,0); // stop the car } } void Control4WD(int mLeft, int mRight, uint8_t Horn){ bool directionL, directionR; // direction of motor rotation L298N byte valueL, valueR; // PWM M1, M2 (0-255) if(mLeft > 0){ valueL = mLeft; directionL = 0; } else if(mLeft < 0){ valueL = 255 - abs(mLeft); directionL = 1; } else { directionL = 0; valueL = 0; } if(mRight > 0){ valueR = mRight; directionR = 0; } else if(mRight < 0){ valueR = 255 - abs(mRight); directionR = 1; } else { directionR = 0; valueR = 0; } analogWrite(M1, valueL); // set speed for left motor analogWrite(M2, valueR); // set speed for right motor digitalWrite(D1, directionL); // set direction of left motor rotation digitalWrite(D2, directionR); // set direction of right motor rotation digitalWrite(HORN, Horn); // additional channel } void Flash_Op(char FCMD, uint8_t z1, uint8_t z2, uint8_t z3, uint8_t z4){ if(FCMD == cmdr){ // if EEPROM data read command Serial.print("FData:"); // send EEPROM data Serial.write(EEPROM.read(0)); // read value from the memory with 0 address and print it to UART Serial.write(EEPROM.read(1)); Serial.write(EEPROM.read(2)); Serial.write(EEPROM.read(3)); Serial.print("\r\n"); // mark the end of the transmission of data EEPROM } else if(FCMD == cmdw){ // if EEPROM data write command EEPROM.write(0,z1); // z1 record to a memory with 0 address EEPROM.write(1,z2); EEPROM.write(2,z3); EEPROM.write(3,z4); timer_init(); // reinitialize the timer Serial.print("FWOK\r\n"); // send a message that the data is successfully written to EEPROM } }
tuto je celý kód
lkvapil
ÚčastníkAha. Tak já to risknu a objednám to. Díky za pomoc
-
AutorPříspěvky