Enkel Mätinsamling?
Re: Enkel Mätinsamling?
Har inte kollat ELFA men tycker det brukar bli lite dyrt.. Hittade dessa hos electrokit som borde funka?
https://www.electrokit.com/produkt/blue ... 6-seriell/
https://www.electrokit.com/produkt/utve ... mpatibelt/
Men du behöver ändå en mjukvara på datorn som tar emot seriell data från blåtanden. Skulle tro att det kodmässigt blir rätt likt ut det som behövs för att ta emot data seriellt från usb.
Ett annat alternativ kan vara att köra via wifi och en ESP8266. Har själv en temperaturlogger baserat på en sån med ESPeasy installerat. Den pratar MQTT med en raspberry men det går att subscriba på dataflödet från en dator med.
https://www.electrokit.com/produkt/blue ... 6-seriell/
https://www.electrokit.com/produkt/utve ... mpatibelt/
Men du behöver ändå en mjukvara på datorn som tar emot seriell data från blåtanden. Skulle tro att det kodmässigt blir rätt likt ut det som behövs för att ta emot data seriellt från usb.
Ett annat alternativ kan vara att köra via wifi och en ESP8266. Har själv en temperaturlogger baserat på en sån med ESPeasy installerat. Den pratar MQTT med en raspberry men det går att subscriba på dataflödet från en dator med.
Re: Enkel Mätinsamling?
Behöver du det trådlöst?
Om inte så krånglar du till det i onödan. Anslut bara Arduinon och öppna Serial monitor och datan rullar fram.
Om inte så krånglar du till det i onödan. Anslut bara Arduinon och öppna Serial monitor och datan rullar fram.
Re: Enkel Mätinsamling?
Men kan inte blåtanden lagra data i en fil?
, precis som när man för över från mobilen till datorn.
Det är väldigt enkelt i java att öppna och läsa filer.
, precis som när man för över från mobilen till datorn.
Det är väldigt enkelt i java att öppna och läsa filer.
Re: Enkel Mätinsamling?
Tänke väl att jag bygger en liten låda med värmeelement, tempsensor och ansluter en NTC.Borre skrev:Behöver du det trådlöst?
Om inte så krånglar du till det i onödan. Anslut bara Arduinon och öppna Serial monitor och datan rullar fram.
Startar Arduinon - mäter temperaturen och beräknar NTC-motståndet och låter värmeelementet
bli varmare varpå jag mäter på nytt. Om jag kan ställa den prylen i tex kylskåpet så kan jag få
NTC-kurvan redan från låga temperaturer. Det vore praktiskt att slippa sladd.
Re: Enkel Mätinsamling?
Nä en sån BT modul lägger sig som en COM port på datorn när den är ansluten, precis som en arduino gör. Så egentligen skulle du kunna börja utveckla med en arduino kopplad via usb och sen ifall det blir aktuellt med trådlöst koppla på en sån modul på arduinon utan att egentligen behöva koda om något på datorn.
Det var java du ville köra på dator-sidan va?
https://github.com/Fazecast/jSerialComm
Kanske är ett alternativ?
Det var java du ville köra på dator-sidan va?
https://github.com/Fazecast/jSerialComm
Kanske är ett alternativ?
Re: Enkel Mätinsamling?
Det där har jag faktiskt sett förut.
där finns en färdig 64-bitar variant och bra exempel för enklare USB-funktioner.
Jag kan givetvis detta för dåligt ännu men http://rxtx.qbang.org/wiki/index.php/Main_PageEnsure that the Visual Studio C++ Compiler is installed on your system.
där finns en färdig 64-bitar variant och bra exempel för enklare USB-funktioner.
- SeniorLemuren
- Inlägg: 8071
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Enkel Mätinsamling?
Om du har Android så är det gjort på ett kick att göra en app som sparar mottagen data från BlueTooth som en textfil i din androdlur. Jag använder MIT App Inventor när jag gör mina appar. Obefintlig tröskel för att komma igång och göra appar.4kTRB skrev:Men kan inte blåtanden lagra data i en fil?
, precis som när man för över från mobilen till datorn.
Det är väldigt enkelt i java att öppna och läsa filer.
Här är min app som tar emot data från braskaminen och ritar ett diagram. Den tar även emot SMS från en annan mobiltelefon och returnerar på ordern "braskamin" braskamindata via SMS till den andra mobilen i fall jag är utom räckhåll för Blue Tooth. Att även spara inkommen data i en fil är ett par rader till i appen.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Enkel Mätinsamling?
Liten omväg, från Arduino till en fil på mobilen och sen vidare till datorn och där kan mitt java-program
läsa filen.
Kan man inte hoppa över steget med mobilen frågas?
läsa filen.
Kan man inte hoppa över steget med mobilen frågas?
- SeniorLemuren
- Inlägg: 8071
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Enkel Mätinsamling?
Jo visst kan du det. Under förutsättning att du har en dator med Blue Tooth. Det brukar finnas på de flesta laptopdatorer. Om det inte finns så kan man ju hänga på en på USB-porten.
Re: Enkel Mätinsamling?
4kTRB skrev:Det där har jag faktiskt sett förut.Jag kan givetvis detta för dåligt ännu men http://rxtx.qbang.org/wiki/index.php/Main_PageEnsure that the Visual Studio C++ Compiler is installed on your system.
där finns en färdig 64-bitar variant och bra exempel för enklare USB-funktioner.
Men du behöver väl inte bygga jSerialComm själv? Finns färdiga releaser att länka till.
Re: Enkel Mätinsamling?
Tackar!
Jag har köpt en Arduino Uno och så laddade jag hem jSerialComm som jag labbat med en bra stund nu.
Har fått det att lira med Java så jag kan låta Arduinon skicka data med Serial.write och sedan
lyckas jag på något vis få upp data som skickas i konsolen på Eclipse. Det är långt ifrån
självklart hur det fungerar mer i detalj men jag kan i vilket fall skapa en tvåradig tabell i
Arduinon och få upp samma i konsolen i Eclipse.
En sak till jag inte hajar är att om jag startar om java-programmet innan Arduinon skrivit klart
tabellen (jag kan inte ha IDE-monitorn igång samtidigt) är att tabellen i Eclipse konsolen
börjar skrivas ut på nytt från START tills p når 100 och com-porten stängs.
Arduinokoden
Tabellen som skrivs ut i Monitorn på Arduino IDE:et
Jag har köpt en Arduino Uno och så laddade jag hem jSerialComm som jag labbat med en bra stund nu.
Har fått det att lira med Java så jag kan låta Arduinon skicka data med Serial.write och sedan
lyckas jag på något vis få upp data som skickas i konsolen på Eclipse. Det är långt ifrån
självklart hur det fungerar mer i detalj men jag kan i vilket fall skapa en tvåradig tabell i
Arduinon och få upp samma i konsolen i Eclipse.
En sak till jag inte hajar är att om jag startar om java-programmet innan Arduinon skrivit klart
tabellen (jag kan inte ha IDE-monitorn igång samtidigt) är att tabellen i Eclipse konsolen
börjar skrivas ut på nytt från START tills p når 100 och com-porten stängs.
Arduinokoden
Kod: Markera allt
int n = 0;
int p = 0;
int o = 0;
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(13, OUTPUT);
Serial.begin(19200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB
}
}
void loop() {
Serial.write("START\n");
while(p<100){
Serial.write("O");
Serial.write(" ");
Serial.print(o);
Serial.write(" ");
Serial.write("P");
Serial.write(" ");
Serial.print(p);
Serial.write('\n');
delay(400);
p = p+2;
o = p+o+p;
}
Serial.end();
}
Kod: Markera allt
START
O 0 P 0
O 4 P 2
O 12 P 4
O 24 P 6
O 40 P 8
O 60 P 10
O 84 P 12
O 112 P 14
O 144 P 16
O 180 P 18
O 220 P 20
O 264 P 22
O 312 P 24
O 364 P 26
O 420 P 28
O 480 P 30
O 544 P 32
O 612 P 34
O 684 P 36
O 760 P 38
O 840 P 40
O 924 P 42
O 1012 P 44
O 1104 P 46
O 1200 P 48
O 1300 P 50
O 1404 P 52
O 1512 P 54
O 1624 P 56
O 1740 P 58
O 1860 P 60
O 1984 P 62
O 2112 P 64
O 2244 P 66
O 2380 P 68
O 2520 P 70
O 2664 P 72
O 2812 P 74
O 2964 P 76
O 3120 P 78
O 3280 P 80
O 3444 P 82
O 3612 P 84
O 3784 P 86
O 3960 P 88
O 4140 P 90
O 4324 P 92
O 4512 P 94
O 4704 P 96
O 4900 P 98
Re: Enkel Mätinsamling?
Så här blir det i Eclipse-konsolen utan att jag har stoppat programmet och startat det på nytt.
Jag tycker det verkar som när Arduinon skriver till porten så lagras data i en buffert som jag
sedan läser med java-programmet även om jag startar java lite senare.
Kom gärna med tips, t.ex det där med serialPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 2500, 0);
, finns det någon särskild vits med att utnyttja den raden?
Jag tycker det verkar som när Arduinon skriver till porten så lagras data i en buffert som jag
sedan läser med java-programmet även om jag startar java lite senare.
Kod: Markera allt
Antal tillgängliga seriella portar: 4
===========================================
HUAWEI Mobile Connect - 3G Modem öppen = false
HUAWEI Mobile Connect - 3G Application Interface (COM4) öppen = false
HUAWEI Mobile Connect - 3G PC UI Interface (COM5) öppen = false
Arduino Uno (COM9) öppen = false
Arduino Uno (COM9) öppnad = true
FlowControl 0
ReadTimeout 1500
START
O 0 P 0
O 4 P 2
O 12 P 4
O 24 P 6
O 40 P 8
O 60 P 10
O 84 P 12
O 112 P 14
O 144 P 16
O 180 P 18
O 220 P 20
O 264 P 22
O 312 P 24
O 364 P 26
O 420 P 28
O 480 P 30
O 544 P 32
O 612 P 34
O 684 P 36
O 760 P 38
O 840 P 40
O 924 P 42
O 1012 P 44
O 1104 P 46
O 1200 P 48
O 1300 P 50
O 1404 P 52
O 1512 P 54
O 1624 P 56
O 1740 P 58
O 1860 P 60
O 1984 P 62
O 2112 P 64
O 2244 P 66
O 2380 P 68
O 2520 P 70
O 2664 P 72
O 2812 P 74
O 2964 P 76
O 3120 P 78
O 3280 P 80
O 3444 P 82
O 3612 P 84
O 3784 P 86
O 3960 P 88
O 4140 P 90
O 4324 P 92
O 4512 P 94
O 4704 P 96
O 4900 P 98
port stängd: true
, finns det någon särskild vits med att utnyttja den raden?
Kod: Markera allt
import java.util.Scanner;
import com.fazecast.jSerialComm.SerialPort;
public class SerialMainScanner {
public static void main(String[] args) {
boolean AUnoFlag = false;
int AUnoIndex = -1;
SerialPort serialPort;
Scanner arduinoScanIn = null;
SerialPort[] sp = SerialPort.getCommPorts();
System.out.println("Antal tillgängliga seriella portar: "+sp.length);
System.out.println("===========================================");
for(int j=0;j<sp.length;j++) {
System.out.println(sp[j].getDescriptivePortName()+" öppen = "+sp[j].isOpen());
if(sp[j].getDescriptivePortName().contains("Arduino Uno")){
AUnoFlag = true;
AUnoIndex = j;
}
}
if(AUnoFlag) {
serialPort = sp[AUnoIndex];
serialPort.openPort(); // Open connection
serialPort.setBaudRate(19200);
serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 1500, 0);
//serialPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 2500, 0);
System.out.println(serialPort.getDescriptivePortName()+ " öppnad = "+serialPort.isOpen());
System.out.println("FlowControl "+serialPort.getFlowControlSettings());
System.out.println("ReadTimeout "+serialPort.getReadTimeout());
if((serialPort.bytesAvailable()>0)) {
try
{
arduinoScanIn = new Scanner(serialPort.getInputStream());
}
catch(Exception e)
{
e.printStackTrace();
}
arduinoScanIn.useDelimiter(" ");
System.out.println(arduinoScanIn.findInLine("START"));
arduinoScanIn.nextLine();
while(arduinoScanIn.hasNextLine())
{
try
{
String line = arduinoScanIn.nextLine();
System.out.println(line);
}
catch(Exception e)
{
arduinoScanIn.close();
e.printStackTrace();
}
}
System.out.println();
arduinoScanIn.close();
}
serialPort.closePort();
System.out.println("port stängd: "+!serialPort.isOpen());
}
}
}
Re: Enkel Mätinsamling?
Jag undrar om det finns någon som kan förklara följande:
Arduino-koden nedan ska ju avsluta efter 100 genomgångna värden.
Det hela avslutas med Serial.end();
loop, vad jag förstår kör koden på nytt men inte ges väl värdet på celsius på nytt 24?
while loopen ska ju hoppas över och så verkar vara fallet.
Men om jag stänger fönstret Serial Monitor och startar det igen så får jag en ny tabell.
Startar alltså monitorn Arduinon på samma sätt som man trycker på reset-knappen på
Arduino-kortet?
Kommentaren är hämtad från ett exempel som följer med IDE...
// the setup function runs once when you press reset or power the board
Arduino-koden nedan ska ju avsluta efter 100 genomgångna värden.
Det hela avslutas med Serial.end();
loop, vad jag förstår kör koden på nytt men inte ges väl värdet på celsius på nytt 24?
while loopen ska ju hoppas över och så verkar vara fallet.
Men om jag stänger fönstret Serial Monitor och startar det igen så får jag en ny tabell.
Startar alltså monitorn Arduinon på samma sätt som man trycker på reset-knappen på
Arduino-kortet?
Kommentaren är hämtad från ett exempel som följer med IDE...
// the setup function runs once when you press reset or power the board
Kod: Markera allt
// the setup function runs once when you press reset or power the board
int celcius = 24;
int ohm = 500;
void setup() {
Serial.begin(19200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB
}
}
void loop() {
Serial.write("START\n");
while(celcius < 100){
Serial.print(celcius);
Serial.write(" ");
Serial.print(ohm);
Serial.write('\n');
delay(100);
celcius++;
ohm = -5.9*celcius+635;
}
//delay(1);
Serial.write("End from Aurdino!\n");
Serial.end();
}
Kod: Markera allt
START
24 500
25 487
26 481
27 475
28 469
29 463
30 458
31 452
32 446
33 440
34 434
35 428
36 422
37 416
38 410
39 404
40 399
41 393
42 387
43 381
44 375
45 369
46 363
47 357
48 351
49 345
50 340
51 334
52 328
53 322
54 316
55 310
56 304
57 298
58 292
59 286
60 281
61 275
62 269
63 263
64 257
65 251
66 245
67 239
68 233
69 227
70 222
71 216
72 210
73 204
74 198
75 192
76 186
77 180
78 174
79 168
80 163
81 157
82 151
83 145
84 139
85 133
86 127
87 121
88 115
89 109
90 104
91 98
92 92
93 86
94 80
95 74
96 68
97 62
98 56
99 50
End from Aurdino!
-
- Inlägg: 1404
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Enkel Mätinsamling?
> Startar alltså monitorn [om] Arduinon på samma sätt som man trycker på reset-knappen på Arduino-kortet?
Ja. Det är skitdumt, men så är det designat.
Ja. Det är skitdumt, men så är det designat.
Re: Enkel Mätinsamling?
Ja, när du öppna serial monitor resetas Arduinon.Startar alltså monitorn Arduinon på samma sätt som man trycker på reset-knappen på
Arduino-kortet?