<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=47&amp;t=15203&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-04-26T20:42:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=15203&amp;mode</id>
<entry>
<author><name><![CDATA[ruch]]></name></author>
<updated>2016-04-26T20:42:53+01:00</updated>
<published>2016-04-26T20:42:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159395#p159395</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159395#p159395"/>
<title type="html"><![CDATA[Re: DS18B20 czasy odczytu temperatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159395#p159395"><![CDATA[
Ja mam inny problem postaram się go opisać ale połączony z ds18b20 i czasem odczytu dlatego napiszę tutaj. Robię układ który ma wysyłać temperaturę do aplikacji napisanej na b4a. <br />Dokładnie wykorzystany sprzęt to : Arduino Nano + esp8266 &lt;-&gt; komunikacja komendami AT &lt;-----&gt; Aplikacja B4A na telefon.<br />Kod wysyłający dane:<br />[syntax=c]Sensor.requestTemperatures();<br />       <br />       String ToSend = &quot;AT=CH,&quot;; <br />       ToSend += String(Sensor.getTempCByIndex(0));<br />       ToSend += &quot;,&quot;;<br />       ToSend += String(LocalDuty);<br />       ToSend += '\r';<br />       ToSend += '\n';<br />       <br />       SendESP(ToSend);[/syntax]<br /><br />Funkcja SendESP to:<br />[syntax=c]void SendESP(String GetStr)<br />{<br />  String cmd =&quot;AT+CIPSEND=4,&quot;;<br />  cmd += String( ( GetStr.length() ) );<br />  Serial.println(cmd);<br />  long int time = millis();<br />  if(Serial.find( (char *) &quot;&gt;&quot; ) )<br />  {<br />    Serial.print(GetStr);<br />  }<br />  else<br />  {<br />    Serial.println(&quot;AT+CIPCLOSE&quot;);<br />    sendData(&quot;AT+CIPSTART=4,\&quot;UDP\&quot;,\&quot;255.255.255.255\&quot;,32000,32000,0\r\n&quot;, 2000); // Ustanawia połączenie z zewnętrznym serwerem UDP, <br />  }<br />}[/syntax]<br /><br />Ustawienia ESP jako Access Point transmisja po UDP dokładne ustawienia:<br />[syntax=c]void InitEsp(void)<br />{<br /><br />  sendData(&quot;AT+RST\r\n&quot;, 2000); // reset modułu<br />  sendData(&quot;AT+CWMODE=2\r\n&quot;, 1000); // ustawienie w trybie Access Point<br />  sendData(&quot;AT+CIPMODE=0\r\n&quot;, 1000); //AT+CIPMODE=1 – dane odbiorcze wysyłane są bezpośrednio na port szeregowy<br /> /*AT+CIPSTART=&lt;kanal&gt;,&lt;typ&gt;,&lt;adres&gt;,&lt;port&gt;*/ /*192.168.4.2*/<br />  sendData(&quot;AT+CIPMUX=1\r\n&quot;, 1000); //<br />  sendData(&quot;AT+CIPSTART=4,\&quot;UDP\&quot;,\&quot;255.255.255.255\&quot;,32000,32000,0\r\n&quot;, 2000); // Ustanawia połączenie z zewnętrznym serwerem UDP, <br />}[/syntax]<br /><br />Problem jest taki, że aplikacja na b4a nie odbiera danych. Natomiast aplikacja od Pana Mirka na komputer napisana w B4J odbiera wszystko idealnie. <br />Aplikacja na b4a zaczyna odbierać dopiero poprawnie dane gdy zakomentuje operacje z temperatura, a w miejsce temperatury wstawię zwykłą wartość wtedy działa wszystko ok. <br />Komunikacja pomiedzy PC (B4J) - Aplikacja(B4A) również działa dobrze. Czy problemem może być zbyt długi odczyt temperatury?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9888">ruch</a> — 26 kwi 2016, o 20:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-04-25T08:13:44+01:00</updated>
<published>2016-04-25T08:13:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159227#p159227</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159227#p159227"/>
<title type="html"><![CDATA[Re: DS18B20 czasy odczytu temperatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159227#p159227"><![CDATA[
Skąd wniosek, że wyniki które otrzymałeś zależą wprost od czujnika? Korzystasz przecież z biblioteki, która chyba nie daje Ci gwarancji uzyskania katalogowych czasów operacji na czujniku. A co do samych pomiarów, to należałoby zrobić raczej po 10 pomiarów dla każdej rozdzielczości, odrzucić błędy grube, i uśrednić wyniki. Ale tak jak mówię, przyczyn takiego zachowania należy upatrywać raczej w samej bibliotece, a niżeli w czujniku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 25 kwi 2016, o 08:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[spayder]]></name></author>
<updated>2016-04-24T17:46:55+01:00</updated>
<published>2016-04-24T17:46:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159174#p159174</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159174#p159174"/>
<title type="html"><![CDATA[DS18B20 czasy odczytu temperatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15203&amp;p=159174#p159174"><![CDATA[
Zaobserwowałem dziwne zachowanie czujnika temperatury DS18B20, mieliście coś podobnego lub możecie sprawdzić u siebie.<br /><br />Poniżej kod na którym robiłem małe testy. Wgrywałem go wielokrotnie do arduino zmieniając za każdym razem rozdzielczość 9,10,11 i 12. Po czym notuje czas działania funkcji odczytTerm(); i skok temperatury jaką otrzymuje oto pierwszy test:<br /><br />Rozdzielczość czas(ms) skok('C)<br />9 125 0,5<br />10 125 0,25<br />11 218 0,12<br />12 406 0,06<br /><br />To co wyżej pewnie wygląda dla wszystkich OK (przypominam zmieniam tylko rozdzielczość w funkcji ustTerm() i nic więcej nie ruszam wgrywam tylko po jednym RAZIE). To teraz lecę dalej to samo teraz wgrywam każdą wersję po dwa razy:<br /><br />Rozdzielczość czas(ms) skok('C)<br />9 781 0,5<br />9 125 0,5<br />10 125 0,25<br />10 218 0,25<br />11 218 0,12<br />11 406 0,12<br />12 406 0,06<br />12 780 0,06<br /><br />Czy ktoś potrafi mi to wytłumaczyć? Poniżej kod z którego korzystałem<br /><br />[syntax=cpp]#include &lt;OneWire.h&gt;<br />#include &lt;DallasTemperature.h&gt;<br /><br />OneWire ds18x20;<br />DallasTemperature sensor;<br /><br />void setup() {<br />  Serial.begin(9600);<br />  ustTerm();<br />}<br /><br />void loop() {<br />  unsigned int czas1, czas2;<br />  int czas;<br />  float temp;<br />  czas1 = millis();<br />  <br />  temp = odczytTerm();<br />  <br />  czas2 = millis();<br />  czas = czas2-czas1;<br />  Serial.println(czas);<br />  Serial.println(temp);<br />}<br /><br />float odczytTerm()<br />{<br />  float temp;<br />  temp = sensor.getTempCByIndex(0);<br />  sensor.requestTemperatures();<br />  return temp;<br />}<br /><br />void ustTerm()<br />{<br />  DeviceAddress deviceAddress;<br />  ds18x20.setPin(4);<br />    sensor.setOneWire(&amp;ds18x20);<br />    sensor.begin();<br />    if (sensor.getAddress(deviceAddress,0))<br />    {<br />      Serial.println(&quot;Ustawiam rozdzielczosc&quot;);<br />      sensor.setResolution(deviceAddress,9);<br />      sensor.requestTemperatures();<br />     <br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13447">spayder</a> — 24 kwi 2016, o 17:46</p><hr />
]]></content>
</entry>
</feed>