<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://www.raspibo.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zasf</id>
	<title>raspibo - Contributi utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://www.raspibo.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zasf"/>
	<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php/Speciale:Contributi/Zasf"/>
	<updated>2026-06-14T21:56:50Z</updated>
	<subtitle>Contributi utente</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=ESP8266/collegamentoarduino&amp;diff=4359</id>
		<title>ESP8266/collegamentoarduino</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=ESP8266/collegamentoarduino&amp;diff=4359"/>
		<updated>2015-05-27T20:40:30Z</updated>

		<summary type="html">&lt;p&gt;Zasf: Creata pagina con '400px  Siccome le uscite di Arduino sono a 5V, bisogna utilizzare un partitore di tensione per abbassare la tensione sulla TX da Arduino che va...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Arduino-to-ESP8266.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Siccome le uscite di Arduino sono a 5V, bisogna utilizzare un partitore di tensione per abbassare la tensione sulla TX da Arduino che va alla RX del ESP8266&lt;br /&gt;
&lt;br /&gt;
== Sketch ==&lt;br /&gt;
  // Basic serial communication with ESP8266&lt;br /&gt;
  // Uses serial monitor for communication with ESP8266&lt;br /&gt;
  //&lt;br /&gt;
  //  Pins&lt;br /&gt;
  //  Arduino pin 2 (RX) to ESP8266 TX&lt;br /&gt;
  //  Arduino pin 3 to voltage divider then to ESP8266 RX&lt;br /&gt;
  //  Connect GND from the Arduiono to GND on the ESP8266&lt;br /&gt;
  //  Pull ESP8266 CH_PD HIGH&lt;br /&gt;
  //&lt;br /&gt;
  // When a command is entered in to the serial monitor on the computer &lt;br /&gt;
  // the Arduino will relay it to the ESP8266&lt;br /&gt;
  //&lt;br /&gt;
  #include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
  SoftwareSerial ESPserial(2, 3); // RX | TX&lt;br /&gt;
  void setup() &lt;br /&gt;
  {&lt;br /&gt;
      pinMode(LEDPIN, OUTPUT);&lt;br /&gt;
      Serial.begin(9600);     // communication with the host computer&lt;br /&gt;
      //while (!Serial)   { ; }&lt;br /&gt;
      // Start the software serial for communication with the ESP8266&lt;br /&gt;
      ESPserial.begin(9600);  &lt;br /&gt;
      Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
      Serial.println(&amp;quot;Remember to to set Both NL &amp;amp; CR in the serial monitor.&amp;quot;);&lt;br /&gt;
      Serial.println(&amp;quot;Ready&amp;quot;);&lt;br /&gt;
      Serial.println(&amp;quot;&amp;quot;);    &lt;br /&gt;
  }&lt;br /&gt;
  void loop() &lt;br /&gt;
  {&lt;br /&gt;
      // listen for communication from the ESP8266 and then write it to the serial monitor&lt;br /&gt;
      if ( ESPserial.available() )   {  Serial.write( ESPserial.read() );  }&lt;br /&gt;
      // listen for user input and send it to the ESP8266&lt;br /&gt;
      if ( Serial.available() )       {  ESPserial.write( Serial.read() );  }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
cambiare la velocità del seriale in base al firmware del ESP8266&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Arduino-to-ESP8266.jpg&amp;diff=4358</id>
		<title>File:Arduino-to-ESP8266.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Arduino-to-ESP8266.jpg&amp;diff=4358"/>
		<updated>2015-05-27T20:35:50Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&amp;diff=4357</id>
		<title>Elettronica Componenti</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&amp;diff=4357"/>
		<updated>2015-05-27T20:34:57Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Elettronica]]&lt;br /&gt;
&lt;br /&gt;
[[1Wire_e_il_sensore_di_temperatura_ds18s10|Sensore di temperatura DS18S10 (1 wire)]]&lt;br /&gt;
&lt;br /&gt;
[[Misurare_la_Temperatura|Sensore di temperatura LM35 (Analogico)]]&lt;br /&gt;
&lt;br /&gt;
[[Input_Analogico_SPI:_gli_integrati_MCP300x|Integrato MCP300x (Ingressi analogici)]]&lt;br /&gt;
&lt;br /&gt;
[[Input_analogico_I2C:_MCP3424|Integrato MCP3424 (Ingressi analogici)]]&lt;br /&gt;
&lt;br /&gt;
[[GPIO_aggiuntivi_MCP23x17|Integrato MCP23x17 (Ingressi/Uscite digitali)]]&lt;br /&gt;
&lt;br /&gt;
[[Collegare_una_porta_seriale_RS-232|Integrato MAX3232 (RS-232)]]&lt;br /&gt;
&lt;br /&gt;
[[ESP8266|Integrato wireless ESP8266]]&lt;br /&gt;
&lt;br /&gt;
- [[ESP8266/templogger | sensore di temperatura wireless basato su ESP8266]]&lt;br /&gt;
&lt;br /&gt;
- [[ESP8266/collegamentoarduino | collegare ESP8266 ad Arduino]]&lt;br /&gt;
&lt;br /&gt;
[[Display LCD]]&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&amp;diff=4356</id>
		<title>Elettronica Componenti</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&amp;diff=4356"/>
		<updated>2015-05-27T20:34:08Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Elettronica]]&lt;br /&gt;
&lt;br /&gt;
[[1Wire_e_il_sensore_di_temperatura_ds18s10|Sensore di temperatura DS18S10 (1 wire)]]&lt;br /&gt;
&lt;br /&gt;
[[Misurare_la_Temperatura|Sensore di temperatura LM35 (Analogico)]]&lt;br /&gt;
&lt;br /&gt;
[[Input_Analogico_SPI:_gli_integrati_MCP300x|Integrato MCP300x (Ingressi analogici)]]&lt;br /&gt;
&lt;br /&gt;
[[Input_analogico_I2C:_MCP3424|Integrato MCP3424 (Ingressi analogici)]]&lt;br /&gt;
&lt;br /&gt;
[[GPIO_aggiuntivi_MCP23x17|Integrato MCP23x17 (Ingressi/Uscite digitali)]]&lt;br /&gt;
&lt;br /&gt;
[[Collegare_una_porta_seriale_RS-232|Integrato MAX3232 (RS-232)]]&lt;br /&gt;
&lt;br /&gt;
[[ESP8266|Integrato wireless ESP8266]]&lt;br /&gt;
&lt;br /&gt;
- [[ESP8266/templogger | sensore di temperatura wireless basato su ESP8266]]&lt;br /&gt;
&lt;br /&gt;
[[Display LCD]]&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&amp;diff=4355</id>
		<title>Elettronica Componenti</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&amp;diff=4355"/>
		<updated>2015-05-27T20:33:32Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Elettronica]]&lt;br /&gt;
&lt;br /&gt;
[[1Wire_e_il_sensore_di_temperatura_ds18s10|Sensore di temperatura DS18S10 (1 wire)]]&lt;br /&gt;
&lt;br /&gt;
[[Misurare_la_Temperatura|Sensore di temperatura LM35 (Analogico)]]&lt;br /&gt;
&lt;br /&gt;
[[Input_Analogico_SPI:_gli_integrati_MCP300x|Integrato MCP300x (Ingressi analogici)]]&lt;br /&gt;
&lt;br /&gt;
[[Input_analogico_I2C:_MCP3424|Integrato MCP3424 (Ingressi analogici)]]&lt;br /&gt;
&lt;br /&gt;
[[GPIO_aggiuntivi_MCP23x17|Integrato MCP23x17 (Ingressi/Uscite digitali)]]&lt;br /&gt;
&lt;br /&gt;
[[Collegare_una_porta_seriale_RS-232|Integrato MAX3232 (RS-232)]]&lt;br /&gt;
&lt;br /&gt;
[[ESP8266|Integrato wireless ESP8266]]&lt;br /&gt;
&lt;br /&gt;
- [[ESP8266/wifitemplogger | sensore di temperatura wireless basato su ESP8266]]&lt;br /&gt;
&lt;br /&gt;
[[Display LCD]]&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4296</id>
		<title>ESP8266/templogger</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4296"/>
		<updated>2015-05-01T14:28:56Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L'ESP8266 può essere utilizzato come microcontrollore ''standalone'' con il firmware Nodemcu. Grazie ai due GPIO pins si possono collegare sensori di temperatura, led, relè o altro. In questo esempio il GPIO2 è collegato ad un sensore DS18B20 per la misurazione della temperatura e ogni 30 secondi la lettura viene inviata a [http://www.ThingSpeak.com ThingSpeak]&lt;br /&gt;
&lt;br /&gt;
[[File:wifi_temp_logger2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schema elettrico ==&lt;br /&gt;
[[File:Wifi_temp_logger2_schem.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Consiglio di alimentare ESP8266 attraverso un alimentatore dedicato, non utilizzare i collegamenti forniti da altro micro controllore tipo Arduino, nè quelli del convertitore USB-TTL.&lt;br /&gt;
&lt;br /&gt;
Nella millefori è utile predisporre anche le uscite dei pin RX, TX, GND, GPIO2, GPIO0 in modo da avere massima flessibilità e poter facilmente collegare l'unità per la programmazione oppure per sperimentare con le uscite.&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Collegare TX del convertitore USB-TTL a RX del ESP8266 e RX del convertitore a TX del ESP8266. Nota: il convertitore deve funzionare 3,3V e non a 5V!&lt;br /&gt;
&lt;br /&gt;
Scaricare l'ultima versione di Nodemcu e attraverso ESPlorer caricare i tre sketch lua&lt;br /&gt;
=== ds18b20.lua ===&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- DS18B20 one wire module for NODEMCU&lt;br /&gt;
  -- NODEMCU TEAM&lt;br /&gt;
  -- LICENCE: http://opensource.org/licenses/MIT&lt;br /&gt;
  -- Vowstar &amp;lt;vowstar@nodemcu.com&amp;gt;&lt;br /&gt;
  -- 2015/02/14 sza2 &amp;lt;sza2trash@gmail.com&amp;gt; Fix for negative values&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Set module name as parameter of require&lt;br /&gt;
  local modname = ...&lt;br /&gt;
  local M = {}&lt;br /&gt;
  _G[modname] = M&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Local used variables&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- DS18B20 dq pin&lt;br /&gt;
  local pin = nil&lt;br /&gt;
  -- DS18B20 default pin&lt;br /&gt;
  local defaultPin = 9&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Local used modules&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Table module&lt;br /&gt;
  local table = table&lt;br /&gt;
  -- String module&lt;br /&gt;
  local string = string&lt;br /&gt;
  -- One wire module&lt;br /&gt;
  local ow = ow&lt;br /&gt;
  -- Timer module&lt;br /&gt;
  local tmr = tmr&lt;br /&gt;
  -- Limited to local environment&lt;br /&gt;
  setfenv(1,M)&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Implementation&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  C = 0&lt;br /&gt;
  F = 1&lt;br /&gt;
  K = 2&lt;br /&gt;
  function setup(dq)&lt;br /&gt;
    pin = dq&lt;br /&gt;
    if(pin == nil) then&lt;br /&gt;
      pin = defaultPin&lt;br /&gt;
    end&lt;br /&gt;
    ow.setup(pin)&lt;br /&gt;
  end&lt;br /&gt;
  function addrs()&lt;br /&gt;
    setup(pin)&lt;br /&gt;
    tbl = {}&lt;br /&gt;
    ow.reset_search(pin)&lt;br /&gt;
    repeat&lt;br /&gt;
      addr = ow.search(pin)&lt;br /&gt;
      if(addr ~= nil) then&lt;br /&gt;
        table.insert(tbl, addr)&lt;br /&gt;
      end&lt;br /&gt;
      tmr.wdclr()&lt;br /&gt;
    until (addr == nil)&lt;br /&gt;
    ow.reset_search(pin)&lt;br /&gt;
    return tbl&lt;br /&gt;
  end&lt;br /&gt;
  function readNumber(addr, unit)&lt;br /&gt;
    result = nil&lt;br /&gt;
    setup(pin)&lt;br /&gt;
    flag = false&lt;br /&gt;
    if(addr == nil) then&lt;br /&gt;
      ow.reset_search(pin)&lt;br /&gt;
      count = 0&lt;br /&gt;
      repeat&lt;br /&gt;
        count = count + 1&lt;br /&gt;
        addr = ow.search(pin)&lt;br /&gt;
        tmr.wdclr()&lt;br /&gt;
      until((addr ~= nil) or (count &amp;gt; 100))&lt;br /&gt;
      ow.reset_search(pin)&lt;br /&gt;
    end&lt;br /&gt;
    if(addr == nil) then&lt;br /&gt;
      return result&lt;br /&gt;
    end&lt;br /&gt;
    crc = ow.crc8(string.sub(addr,1,7))&lt;br /&gt;
    if (crc == addr:byte(8)) then&lt;br /&gt;
      if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then&lt;br /&gt;
        -- print(&amp;quot;Device is a DS18S20 family device.&amp;quot;)&lt;br /&gt;
        ow.reset(pin)&lt;br /&gt;
        ow.select(pin, addr)&lt;br /&gt;
        ow.write(pin, 0x44, 1)&lt;br /&gt;
        -- tmr.delay(1000000)&lt;br /&gt;
        present = ow.reset(pin)&lt;br /&gt;
        ow.select(pin, addr)&lt;br /&gt;
        ow.write(pin,0xBE,1)&lt;br /&gt;
        -- print(&amp;quot;P=&amp;quot;..present)&lt;br /&gt;
        data = nil&lt;br /&gt;
        data = string.char(ow.read(pin))&lt;br /&gt;
        for i = 1, 8 do&lt;br /&gt;
          data = data .. string.char(ow.read(pin))&lt;br /&gt;
        end&lt;br /&gt;
        -- print(data:byte(1,9))&lt;br /&gt;
        crc = ow.crc8(string.sub(data,1,8))&lt;br /&gt;
        -- print(&amp;quot;CRC=&amp;quot;..crc)&lt;br /&gt;
        if (crc == data:byte(9)) then&lt;br /&gt;
          t = (data:byte(1) + data:byte(2) * 256)&lt;br /&gt;
          if (t &amp;gt; 32767) then&lt;br /&gt;
            t = t - 65536&lt;br /&gt;
          end&lt;br /&gt;
          if(unit == nil or unit == C) then&lt;br /&gt;
            t = t * 625&lt;br /&gt;
          elseif(unit == F) then&lt;br /&gt;
            t = t * 1125 + 320000&lt;br /&gt;
          elseif(unit == K) then&lt;br /&gt;
            t = t * 625 + 2731500&lt;br /&gt;
          else&lt;br /&gt;
            return nil&lt;br /&gt;
          end&lt;br /&gt;
          t = t / 10000&lt;br /&gt;
          -- print(&amp;quot;Temperature=&amp;quot;..t1..&amp;quot;.&amp;quot;..t2..&amp;quot; Centigrade&amp;quot;)&lt;br /&gt;
          -- result = t1..&amp;quot;.&amp;quot;..t2&lt;br /&gt;
          return t&lt;br /&gt;
        end&lt;br /&gt;
        tmr.wdclr()&lt;br /&gt;
      else&lt;br /&gt;
      -- print(&amp;quot;Device family is not recognized.&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
    -- print(&amp;quot;CRC is not valid!&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    return result&lt;br /&gt;
  end&lt;br /&gt;
  function read(addr, unit)&lt;br /&gt;
    t = readNumber(addr, unit)&lt;br /&gt;
    if (t == nil) then&lt;br /&gt;
      return nil&lt;br /&gt;
    else&lt;br /&gt;
      return t&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  -- Return module table&lt;br /&gt;
  return M&lt;br /&gt;
&lt;br /&gt;
=== postThingSpeak.lua ===&lt;br /&gt;
  function postThingSpeak(level)&lt;br /&gt;
    conn=net.createConnection(net.TCP, 0)&lt;br /&gt;
    conn:on(&amp;quot;receive&amp;quot;, function(conn, payload)&lt;br /&gt;
      if (string.find(payload, &amp;quot;Status: 200 OK&amp;quot;) ~= nil) then&lt;br /&gt;
        print(&amp;quot;Posted OK&amp;quot;);&lt;br /&gt;
      end&lt;br /&gt;
    end)&lt;br /&gt;
    conn:on(&amp;quot;connection&amp;quot;, function(connout, payloadout)&lt;br /&gt;
      print (&amp;quot;Posting...&amp;quot;);&lt;br /&gt;
      conn:send(&amp;quot;GET /update?api_key=CHIAVE&amp;amp;field1=&amp;quot; .. level&lt;br /&gt;
        .. &amp;quot; HTTP/1.1\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Host: api.thingspeak.com\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Connection: close\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;\r\n&amp;quot;)&lt;br /&gt;
    end)&lt;br /&gt;
    conn:on(&amp;quot;disconnection&amp;quot;, function(connout, payloadout)&lt;br /&gt;
      connout:close();&lt;br /&gt;
      collectgarbage();&lt;br /&gt;
    end)&lt;br /&gt;
    conn:connect(80,'184.106.153.149') -- api.thingspeak.com 184.106.153.149&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Sostituire CHIAVE con la chiave ottenuta dalla registrazione su Thingspeak.com&lt;br /&gt;
&lt;br /&gt;
=== init.lua ===&lt;br /&gt;
  --init.lua&lt;br /&gt;
  require(&amp;quot;postThingSpeak&amp;quot;)&lt;br /&gt;
  ledPin = 3 --&amp;gt; GPIO0&lt;br /&gt;
  value = gpio.LOW&lt;br /&gt;
  -- Initialise the pin&lt;br /&gt;
  gpio.mode(ledPin, gpio.OUTPUT)&lt;br /&gt;
  gpio.write(ledPin, value)&lt;br /&gt;
  print(&amp;quot;Setting up WIFI...&amp;quot;)&lt;br /&gt;
  wifi.setmode(wifi.STATION)&lt;br /&gt;
  wifi.sta.config(&amp;quot;ssid&amp;quot;,&amp;quot;pw&amp;quot;)&lt;br /&gt;
  wifi.sta.connect()&lt;br /&gt;
  tmr.alarm(1, 30*1000, 1, function()&lt;br /&gt;
    t = require(&amp;quot;ds18b20&amp;quot;)&lt;br /&gt;
    tempPin = 4 --&amp;gt; GPIO2&lt;br /&gt;
    t.setup(tempPin)&lt;br /&gt;
    temp = t.read()&lt;br /&gt;
    print(&amp;quot;Temperature: &amp;quot;..temp..&amp;quot;C&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Sending data to thingspeak.com&amp;quot;)&lt;br /&gt;
    postThingSpeak(temp)&lt;br /&gt;
    -- Don't forget to release it after use&lt;br /&gt;
    t = nil&lt;br /&gt;
    ds18b20 = nil&lt;br /&gt;
    package.loaded[&amp;quot;ds18b20&amp;quot;]=nil&lt;br /&gt;
  end)&lt;br /&gt;
&lt;br /&gt;
Sostiture ssid e pw con il nome del access point e la password&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ThingSpeak ==&lt;br /&gt;
&lt;br /&gt;
https://thingspeak.com/channels/32934&lt;br /&gt;
&lt;br /&gt;
== Riferimenti ==&lt;br /&gt;
- http://www.instructables.com/id/Low-cost-WIFI-temperature-data-logger-based-on-ESP/?ALLSTEPS&lt;br /&gt;
- https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_modules/ds18b20/ds18b20.lua&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=ESP8266&amp;diff=4295</id>
		<title>ESP8266</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=ESP8266&amp;diff=4295"/>
		<updated>2015-05-01T14:27:28Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Negli ultimi tempi ho visto diversi articoli riguardanto un modulo WiFi low cost venduto principalmente da siti cinesi. &lt;br /&gt;
&lt;br /&gt;
Il prezzo è veramente interessante si va da 3 a 5 dollari mediamente. &lt;br /&gt;
&lt;br /&gt;
[[File:VariantiESP8266.jpg|400px|thumb|right|Vari modelli ESP8266]]&lt;br /&gt;
&lt;br /&gt;
Me ne sono procurati alcuni pezzi e qui raccolgo alcune notizie in vista di usarli in qualche progetto.&lt;br /&gt;
&lt;br /&gt;
'''Il modulo funziona a 3.3 Volts perciò attenzione ad usarlo in combinazione con Arduino perchè si rischia di bruciarlo se alimentato a 5 Volts.&lt;br /&gt;
Si rischia di bruciare arduino se il modulo wifi viene collegato all'uscita 3.3.V perchè i consumi di sono maggiori di quello che arduino può erogare.'''&lt;br /&gt;
&lt;br /&gt;
Passiamo ai collegamenti, oltre all'alimentazione ed ai collegamenti TX - RX, per dialogare con il modulo va collegato a Vcc il pin CH_PD.&lt;br /&gt;
&lt;br /&gt;
Quando il modulo viene alimentato si accende un led rosso e lamepggia per un attimo il led blu.&lt;br /&gt;
&lt;br /&gt;
Ci sono diverse versioni della board in giro, e con diverse versioni di firmware che comunicano in seriale a diverse velocità. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Minicom_flow.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I firmware Version:0.9.2.2 comunicano a 9600 mentre quelli più recenti a 57600 e 115200. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per comunicare con il modulo ho dovuto togliere l'hardware flow control altrimenti ricevevo solo il messaggio al boot ma non riuscivo a dare i comandi.&lt;br /&gt;
&lt;br /&gt;
[[File:Minicom.png]]&lt;br /&gt;
&lt;br /&gt;
Il tasto Enter deve inviare CR+LF con minicom (CTRL+A poi Z ed infine A), ma a me non funziona (ci devo guardare meglio potrebbe essere un bug di minicom su Debian), in alternativa, ma è abbastanza noiso, dopo aver dato enter, inviare LF con CTRL+J ogni volta.&lt;br /&gt;
&lt;br /&gt;
Per chi usa screen ho trovato queste indicazioni&lt;br /&gt;
&lt;br /&gt;
 It’s possible to use GNU Screen out of the box with the default version of the firmware (00160901)&lt;br /&gt;
 which expects Carriage-Return-only line endings, e.g. (on OS X):&lt;br /&gt;
 screen /dev/tty.usbserial-AB12345 115200&lt;br /&gt;
 Unfortunately the updated firmware versions require Carriage-Return-and-New-Line line endings and&lt;br /&gt;
 there appears to be no way to configure screen to send both with one key press. Instead, you need&lt;br /&gt;
 to press &amp;lt;enter&amp;gt; or Ctrl-M then follow that with Ctrl-J.&lt;br /&gt;
 You might have more success with something like minicom or picocom with later firmware versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il modulo si programma con i comandi AT in maiuscolo (forse anche questo dipende dalla versione del firmware) seguiti da enter:&lt;br /&gt;
&lt;br /&gt;
- AT risponde OK e serve a capire sel il modulo è in ascolto&lt;br /&gt;
- AT+RST resetta il modulo&lt;br /&gt;
- AT+CWMODE=&amp;lt;mode&amp;gt; (seleziona in quale modalità  deve lavorare il chip (1= Client, 2= AccessPoint, 3=entrambi), quindi es AT+CWMODE=1 trasforma il modulo in un client wifi&lt;br /&gt;
- AT+CWLAP lancia una scansione degli access poinT di seguito un esempio di output&lt;br /&gt;
&lt;br /&gt;
 AT+CWLAP&lt;br /&gt;
 +CWLAP:(3,&amp;quot;Cast_WiFi&amp;quot;,-80,&amp;quot;00:22:b0:43:8d:7b&amp;quot;,1)&lt;br /&gt;
 +CWLAP:(0,&amp;quot;D-Link DSL-2640B&amp;quot;,-58,&amp;quot;b8:a3:86:e9:e2:6c&amp;quot;,1)&lt;br /&gt;
 +CWLAP:(4,&amp;quot;Cast_WiFi&amp;quot;,-49,&amp;quot;9c:97:26:d3:be:23&amp;quot;,1)&lt;br /&gt;
 +CWLAP:(0,&amp;quot;NinuxBO&amp;quot;,-56,&amp;quot;6a:72:51:00:df:f6&amp;quot;,11)&lt;br /&gt;
 +CWLAP:(0,&amp;quot;NinuxBO-mesh&amp;quot;,-57,&amp;quot;68:72:51:00:df:f6&amp;quot;,11)&lt;br /&gt;
 +CWLAP:(0,&amp;quot;NinuxBO&amp;quot;,-81,&amp;quot;12:fe:ed:2b:19:e2&amp;quot;,11)&lt;br /&gt;
 +CWLAP:(3,&amp;quot;Cast_WiFi&amp;quot;,-52,&amp;quot;a0:21:b7:ba:ff:d6&amp;quot;,6)&lt;br /&gt;
 OK&lt;br /&gt;
 &lt;br /&gt;
- AT+CWJAP=&amp;quot;&amp;lt;access_point_name&amp;gt;&amp;quot;,&amp;quot;&amp;lt;password&amp;gt;&amp;quot; connette il modulo ad un access point &lt;br /&gt;
 &lt;br /&gt;
 AT+CWJAP=&amp;quot;NinuxBO&amp;quot;,&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- AT+CWJAP? verifica a quale access point si è agganciato il modulo&lt;br /&gt;
 &lt;br /&gt;
 AT+CWJAP?&lt;br /&gt;
 +CWJAP:&amp;quot;NinuxBO&amp;quot;&lt;br /&gt;
 OK&lt;br /&gt;
&lt;br /&gt;
- AT+CIFSR verifica l'ip del modulo &lt;br /&gt;
 &lt;br /&gt;
 AT+CIFSR&lt;br /&gt;
 10.51.22.40&lt;br /&gt;
 OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
+CWLAP:(3,&amp;quot;Cast_WiFi&amp;quot;,-80,&amp;quot;00:22:b0:43:8d:7b&amp;quot;,1)&lt;br /&gt;
 +CWLAP:(0,&amp;quot;D-Link DSL-2640B&amp;quot;,-58,&amp;quot;b8:a3:86:e9:e2:6c&amp;quot;,1)&lt;br /&gt;
 +CWLAP:(4,&amp;quot;Cast_WiFi&amp;quot;,-49,&amp;quot;9c:97:26:d3:be:23&amp;quot;,1)&lt;br /&gt;
 +CWLAP:(0,&amp;quot;NinuxBO&amp;quot;,-56,&amp;quot;6a:72:51:00:df:f6&amp;quot;,11)&lt;br /&gt;
 +CWLAP:(0,&amp;quot;NinuxBO-mesh&amp;quot;,-57,&amp;quot;68:72:51:00:df:f6&amp;quot;,11)&lt;br /&gt;
 +CWLAP:(0,&amp;quot;NinuxBO&amp;quot;,-81,&amp;quot;12:fe:ed:2b:19:e2&amp;quot;,11)&lt;br /&gt;
 +CWLAP:(3,&amp;quot;Cast_WiFi&amp;quot;,-52,&amp;quot;a0:21:b7:ba:ff:d6&amp;quot;,6)&lt;br /&gt;
 OK&lt;br /&gt;
 &lt;br /&gt;
- AT+CWJAP=&amp;quot;&amp;lt;access_point_name&amp;gt;&amp;quot;,&amp;quot;&amp;lt;password&amp;gt;&amp;quot; connette il modulo ad un access point &lt;br /&gt;
 &lt;br /&gt;
 AT+CWJAP=&amp;quot;NinuxBO&amp;quot;,&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- AT+CWJAP? verifica a quale access point si è agganciato il modulo&lt;br /&gt;
 &lt;br /&gt;
 AT+CWJAP?&lt;br /&gt;
 +CWJAP:&amp;quot;NinuxBO&amp;quot;&lt;br /&gt;
 OK&lt;br /&gt;
&lt;br /&gt;
- AT+CIFSR verifica l'ip del modulo &lt;br /&gt;
 &lt;br /&gt;
 AT+CIFSR&lt;br /&gt;
 10.51.22.40&lt;br /&gt;
 OK&lt;br /&gt;
&lt;br /&gt;
=== Upload di un nuovo firmware ===&lt;br /&gt;
&lt;br /&gt;
Per aggiornare il firmware collegare a massa il pin GPIO0 e RST a Vcc (garantisce reset anche se il mudulo ha uno script che va in errore e provoca il riavvio).&lt;br /&gt;
&lt;br /&gt;
Ora passiamo ad aggiornare il [https://github.com/nodemcu/nodemcu-firmware/raw/master/pre_build/latest/nodemcu_latest.bin firmware] (ispirato a [http://www.whatimade.today/flashing-the-nodemcu-firmware-on-the-esp8266-linux-guide/ questa guida]):&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/themadinventor/esptool&lt;br /&gt;
 sudo python esptool.py --port /dev/ttyUSB0 write_flash 0x00000 nodemcu_latest.bin&lt;br /&gt;
durante queste operazioni oltre all'avanzamento a video lampeggia il led blu&lt;br /&gt;
&lt;br /&gt;
Terminato l'aggiornamento scollegare da massa il ping GPIO0 e riavviare, ora possiamo dare comandi al modulo pilotando i pin del gpio, creando file da eseguire all'avvio ecc....&lt;br /&gt;
&lt;br /&gt;
Per capire meglio cosa è possibile fare con questo firmware si può fare riferimento al [https://github.com/nodemcu/nodemcu-firmware readme su github], vedi anche [[ESP8266/templogger]]&lt;br /&gt;
&lt;br /&gt;
Ora si possono caricare degli script e qualcuno ha creato un [https://github.com/4refr0nt/luatool comodo script in python]&lt;br /&gt;
&lt;br /&gt;
Il nuovo firmware è molto potente, permette di creare dei files direttamente sul modulo in formato [http://it.wikipedia.org/wiki/Lua lua] che ho scoperto proprio ora. Sul modulo si può creare un file init.lua che verrà eseguito all'avvio oppure altri files che possono essere richiamati a piacimento oppure direttamente dal file init.&lt;br /&gt;
&lt;br /&gt;
Questo firmware permette ad esempio di collegarsi in wifi dal prompt in modo semplice digitando pochi comandi:&lt;br /&gt;
&lt;br /&gt;
 ip = wifi.sta.getip()&lt;br /&gt;
 print(ip)&lt;br /&gt;
 --nil&lt;br /&gt;
 wifi.setmode(wifi.STATION)&lt;br /&gt;
 wifi.sta.config(&amp;quot;SSID&amp;quot;,&amp;quot;password&amp;quot;)&lt;br /&gt;
 ip = wifi.sta.getip()&lt;br /&gt;
 print(ip)&lt;br /&gt;
 --192.168.18.110&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questo ad esempio è un semlice server telnet, collegandoci all'indirizzo del modulo sulla porta 23 quello che digitiamo sulla tastiera verrà trascritto sui pin tx ed rx. &lt;br /&gt;
Quindi se questo lo colleghiamo ad un mcrocontrollore avremo aggiunto un'interfaccia wifi ad esempio ad Arduino, '''sempre ricordando di adattare i livelli di tensione e di non alimentare il modulo direttamente da 3.3V di Arduino'''&lt;br /&gt;
&lt;br /&gt;
 s=net.createServer(net.TCP,180) &lt;br /&gt;
 s:listen(23,function(c) &lt;br /&gt;
     c:on(&amp;quot;receive&amp;quot;,function(c,l)&lt;br /&gt;
       -- i comandi verranno scritti direttamente sulla porta seriale del microcontrollore             &lt;br /&gt;
       print(l)           &lt;br /&gt;
     end) &lt;br /&gt;
 end)&lt;br /&gt;
&lt;br /&gt;
Usando solo il modulo, si possono comandare i 2 pin del gpio del modulo come su arduino, inoltre i due pin possono essere usati come interfaccia verso i noti bus i2c, 1wire ecc..... rimando al file [https://github.com/nodemcu/nodemcu-firmware Readme] del firmware [https://github.com/nodemcu/nodemcu-firmware nodemcu]&lt;br /&gt;
&lt;br /&gt;
Ci sono esempi in rete per creare sensori wifi, o comunicare a distanza lo stato di uno switch.&lt;br /&gt;
&lt;br /&gt;
Qui invece la lista dei [https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en comandi disponibili] per il firmware nodemcu.&lt;br /&gt;
&lt;br /&gt;
=== Problemi e debug ===&lt;br /&gt;
&lt;br /&gt;
Al boot può capitare che vengano visualizzati caratteri incompresibili e che poi il modulo non sia più contattabile: modificare la velocità edlla porta a 74880 per vedere i messaggi di boot e proseguire con l'analisi.&lt;br /&gt;
&lt;br /&gt;
=== Ide di sviluppo ===&lt;br /&gt;
&lt;br /&gt;
Per semplificare tutte le operazioni viste sopra è disponibile un comodo IDE multipiattaforma in Java [http://esp8266.ru/esplorer/ ESPlorer] che permettere sia di impartire i comandi al vecchio firmware che di interrogare e programmare il nodemcu.&lt;br /&gt;
&lt;br /&gt;
Dopo pochi minuti di utilizzo si rivela molto utile, ci sono comandi da inviare al volo al modulo per fare test, si possono creare bottoni per i comandi usati più di frequente, alcune macro per listare i files in memoria, vale la pena di provarlo.&lt;br /&gt;
&lt;br /&gt;
[[File:ESPlorer.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Riferimenti ===&lt;br /&gt;
 &lt;br /&gt;
A questo indirizzo una lista completa dei comandi AT: [https://nurdspace.nl/ESP8266 ESP8266]&lt;br /&gt;
&lt;br /&gt;
Ho trovato questo documento che ho usato per qualche indicazione: [http://rancidbacon.com/files/kiwicon8/ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.pighixxx.com/test/wp-content/uploads/2014/12/ESP8266Ref.pdf ESP8266Ref.pdf]&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266&lt;br /&gt;
&lt;br /&gt;
http://www.esp8266.com/&lt;br /&gt;
&lt;br /&gt;
http://www.esp8266.com/wiki/doku.php&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4294</id>
		<title>ESP8266/templogger</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4294"/>
		<updated>2015-05-01T14:24:41Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L'ESP8266 può essere utilizzato come microcontrollore ''standalone'' con il firmware Nodemcu. Grazie ai due GPIO pins si possono collegare sensori di temperatura, led, relè o altro. In questo esempio il GPIO2 è collegato ad un sensore DS18B20 per la misurazione della temperatura e ogni 30 secondi la lettura viene inviata a [http://www.ThingSpeak.com ThingSpeak]&lt;br /&gt;
&lt;br /&gt;
[[File:wifi_temp_logger2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schema elettrico ==&lt;br /&gt;
[[File:Wifi_temp_logger2_schem.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Consiglio di alimentare ESP8266 attraverso un alimentatore dedicato, non utilizzare i collegamenti forniti da altro micro controllore tipo Arduino, nè quelli del convertitore USB-TTL.&lt;br /&gt;
&lt;br /&gt;
Nella millefori è utile predisporre anche le uscite dei pin RX, TX, GND, GPIO2, GPIO0 in modo da avere massima flessibilità e poter facilmente collegare l'unità per la programmazione oppure per sperimentare con le uscite.&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Collegare TX del convertitore USB-TTL a RX del ESP8266 e RX del convertitore a TX del ESP8266. Nota: il convertitore deve funzionare 3,3V e non a 5V!&lt;br /&gt;
&lt;br /&gt;
Scaricare l'ultima versione di Nodemcu e attraverso ESPlorer caricare i tre sketch lua&lt;br /&gt;
=== ds18b20.lua ===&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- DS18B20 one wire module for NODEMCU&lt;br /&gt;
  -- NODEMCU TEAM&lt;br /&gt;
  -- LICENCE: http://opensource.org/licenses/MIT&lt;br /&gt;
  -- Vowstar &amp;lt;vowstar@nodemcu.com&amp;gt;&lt;br /&gt;
  -- 2015/02/14 sza2 &amp;lt;sza2trash@gmail.com&amp;gt; Fix for negative values&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Set module name as parameter of require&lt;br /&gt;
  local modname = ...&lt;br /&gt;
  local M = {}&lt;br /&gt;
  _G[modname] = M&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Local used variables&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- DS18B20 dq pin&lt;br /&gt;
  local pin = nil&lt;br /&gt;
  -- DS18B20 default pin&lt;br /&gt;
  local defaultPin = 9&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Local used modules&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Table module&lt;br /&gt;
  local table = table&lt;br /&gt;
  -- String module&lt;br /&gt;
  local string = string&lt;br /&gt;
  -- One wire module&lt;br /&gt;
  local ow = ow&lt;br /&gt;
  -- Timer module&lt;br /&gt;
  local tmr = tmr&lt;br /&gt;
  -- Limited to local environment&lt;br /&gt;
  setfenv(1,M)&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Implementation&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  C = 0&lt;br /&gt;
  F = 1&lt;br /&gt;
  K = 2&lt;br /&gt;
  function setup(dq)&lt;br /&gt;
    pin = dq&lt;br /&gt;
    if(pin == nil) then&lt;br /&gt;
      pin = defaultPin&lt;br /&gt;
    end&lt;br /&gt;
    ow.setup(pin)&lt;br /&gt;
  end&lt;br /&gt;
  function addrs()&lt;br /&gt;
    setup(pin)&lt;br /&gt;
    tbl = {}&lt;br /&gt;
    ow.reset_search(pin)&lt;br /&gt;
    repeat&lt;br /&gt;
      addr = ow.search(pin)&lt;br /&gt;
      if(addr ~= nil) then&lt;br /&gt;
        table.insert(tbl, addr)&lt;br /&gt;
      end&lt;br /&gt;
      tmr.wdclr()&lt;br /&gt;
    until (addr == nil)&lt;br /&gt;
    ow.reset_search(pin)&lt;br /&gt;
    return tbl&lt;br /&gt;
  end&lt;br /&gt;
  function readNumber(addr, unit)&lt;br /&gt;
    result = nil&lt;br /&gt;
    setup(pin)&lt;br /&gt;
    flag = false&lt;br /&gt;
    if(addr == nil) then&lt;br /&gt;
      ow.reset_search(pin)&lt;br /&gt;
      count = 0&lt;br /&gt;
      repeat&lt;br /&gt;
        count = count + 1&lt;br /&gt;
        addr = ow.search(pin)&lt;br /&gt;
        tmr.wdclr()&lt;br /&gt;
      until((addr ~= nil) or (count &amp;gt; 100))&lt;br /&gt;
      ow.reset_search(pin)&lt;br /&gt;
    end&lt;br /&gt;
    if(addr == nil) then&lt;br /&gt;
      return result&lt;br /&gt;
    end&lt;br /&gt;
    crc = ow.crc8(string.sub(addr,1,7))&lt;br /&gt;
    if (crc == addr:byte(8)) then&lt;br /&gt;
      if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then&lt;br /&gt;
        -- print(&amp;quot;Device is a DS18S20 family device.&amp;quot;)&lt;br /&gt;
        ow.reset(pin)&lt;br /&gt;
        ow.select(pin, addr)&lt;br /&gt;
        ow.write(pin, 0x44, 1)&lt;br /&gt;
        -- tmr.delay(1000000)&lt;br /&gt;
        present = ow.reset(pin)&lt;br /&gt;
        ow.select(pin, addr)&lt;br /&gt;
        ow.write(pin,0xBE,1)&lt;br /&gt;
        -- print(&amp;quot;P=&amp;quot;..present)&lt;br /&gt;
        data = nil&lt;br /&gt;
        data = string.char(ow.read(pin))&lt;br /&gt;
        for i = 1, 8 do&lt;br /&gt;
          data = data .. string.char(ow.read(pin))&lt;br /&gt;
        end&lt;br /&gt;
        -- print(data:byte(1,9))&lt;br /&gt;
        crc = ow.crc8(string.sub(data,1,8))&lt;br /&gt;
        -- print(&amp;quot;CRC=&amp;quot;..crc)&lt;br /&gt;
        if (crc == data:byte(9)) then&lt;br /&gt;
          t = (data:byte(1) + data:byte(2) * 256)&lt;br /&gt;
          if (t &amp;gt; 32767) then&lt;br /&gt;
            t = t - 65536&lt;br /&gt;
          end&lt;br /&gt;
          if(unit == nil or unit == C) then&lt;br /&gt;
            t = t * 625&lt;br /&gt;
          elseif(unit == F) then&lt;br /&gt;
            t = t * 1125 + 320000&lt;br /&gt;
          elseif(unit == K) then&lt;br /&gt;
            t = t * 625 + 2731500&lt;br /&gt;
          else&lt;br /&gt;
            return nil&lt;br /&gt;
          end&lt;br /&gt;
          t = t / 10000&lt;br /&gt;
          -- print(&amp;quot;Temperature=&amp;quot;..t1..&amp;quot;.&amp;quot;..t2..&amp;quot; Centigrade&amp;quot;)&lt;br /&gt;
          -- result = t1..&amp;quot;.&amp;quot;..t2&lt;br /&gt;
          return t&lt;br /&gt;
        end&lt;br /&gt;
        tmr.wdclr()&lt;br /&gt;
      else&lt;br /&gt;
      -- print(&amp;quot;Device family is not recognized.&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
    -- print(&amp;quot;CRC is not valid!&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    return result&lt;br /&gt;
  end&lt;br /&gt;
  function read(addr, unit)&lt;br /&gt;
    t = readNumber(addr, unit)&lt;br /&gt;
    if (t == nil) then&lt;br /&gt;
      return nil&lt;br /&gt;
    else&lt;br /&gt;
      return t&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  -- Return module table&lt;br /&gt;
  return M&lt;br /&gt;
&lt;br /&gt;
=== postThingSpeak.lua ===&lt;br /&gt;
  function postThingSpeak(level)&lt;br /&gt;
    conn=net.createConnection(net.TCP, 0)&lt;br /&gt;
    conn:on(&amp;quot;receive&amp;quot;, function(conn, payload)&lt;br /&gt;
      if (string.find(payload, &amp;quot;Status: 200 OK&amp;quot;) ~= nil) then&lt;br /&gt;
        print(&amp;quot;Posted OK&amp;quot;);&lt;br /&gt;
      end&lt;br /&gt;
    end)&lt;br /&gt;
    conn:on(&amp;quot;connection&amp;quot;, function(connout, payloadout)&lt;br /&gt;
      print (&amp;quot;Posting...&amp;quot;);&lt;br /&gt;
      conn:send(&amp;quot;GET /update?api_key=CHIAVE&amp;amp;field1=&amp;quot; .. level&lt;br /&gt;
        .. &amp;quot; HTTP/1.1\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Host: api.thingspeak.com\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Connection: close\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;\r\n&amp;quot;)&lt;br /&gt;
    end)&lt;br /&gt;
    conn:on(&amp;quot;disconnection&amp;quot;, function(connout, payloadout)&lt;br /&gt;
      connout:close();&lt;br /&gt;
      collectgarbage();&lt;br /&gt;
    end)&lt;br /&gt;
    conn:connect(80,'184.106.153.149') -- api.thingspeak.com 184.106.153.149&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Sostituire CHIAVE con la chiave ottenuta dalla registrazione su Thingspeak.com&lt;br /&gt;
&lt;br /&gt;
=== init.lua ===&lt;br /&gt;
  --init.lua&lt;br /&gt;
  require(&amp;quot;postThingSpeak&amp;quot;)&lt;br /&gt;
  ledPin = 3 --&amp;gt; GPIO0&lt;br /&gt;
  value = gpio.LOW&lt;br /&gt;
  -- Initialise the pin&lt;br /&gt;
  gpio.mode(ledPin, gpio.OUTPUT)&lt;br /&gt;
  gpio.write(ledPin, value)&lt;br /&gt;
  print(&amp;quot;Setting up WIFI...&amp;quot;)&lt;br /&gt;
  wifi.setmode(wifi.STATION)&lt;br /&gt;
  wifi.sta.config(&amp;quot;ssid&amp;quot;,&amp;quot;pw&amp;quot;)&lt;br /&gt;
  wifi.sta.connect()&lt;br /&gt;
  tmr.alarm(1, 30*1000, 1, function()&lt;br /&gt;
    t = require(&amp;quot;ds18b20&amp;quot;)&lt;br /&gt;
    tempPin = 4 --&amp;gt; GPIO2&lt;br /&gt;
    t.setup(tempPin)&lt;br /&gt;
    temp = t.read()&lt;br /&gt;
    print(&amp;quot;Temperature: &amp;quot;..temp..&amp;quot;C&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Sending data to thingspeak.com&amp;quot;)&lt;br /&gt;
    postThingSpeak(temp)&lt;br /&gt;
    -- Don't forget to release it after use&lt;br /&gt;
    t = nil&lt;br /&gt;
    ds18b20 = nil&lt;br /&gt;
    package.loaded[&amp;quot;ds18b20&amp;quot;]=nil&lt;br /&gt;
  end)&lt;br /&gt;
&lt;br /&gt;
Sostiture ssid e pw con il nome del access point e la password&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ThingSpeak ==&lt;br /&gt;
&lt;br /&gt;
https://thingspeak.com/channels/32934&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4293</id>
		<title>ESP8266/templogger</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4293"/>
		<updated>2015-05-01T14:23:23Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== esp8266 temp logger ==&lt;br /&gt;
&lt;br /&gt;
L'ESP8266 può essere utilizzato come microcontrollore ''standalone'' con il firmware Nodemcu. Grazie ai due GPIO pins si possono collegare sensori di temperatura, led, relè o altro. In questo esempio il GPIO2 è collegato ad un sensore DS18B20 per la misurazione della temperatura e ogni 30 secondi la lettura viene inviata a [http://www.ThingSpeak.com ThingSpeak]&lt;br /&gt;
&lt;br /&gt;
[[File:wifi_temp_logger2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schema elettrico ===&lt;br /&gt;
[[File:Wifi_temp_logger2_schem.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Consiglio di alimentare ESP8266 attraverso un alimentatore dedicato, non utilizzare i collegamenti forniti da altro micro controllore tipo Arduino, nè quelli del convertitore USB-TTL.&lt;br /&gt;
&lt;br /&gt;
Nella millefori è utile predisporre anche le uscite dei pin RX, TX, GND, GPIO2, GPIO0 in modo da avere massima flessibilità e poter facilmente collegare l'unità per la programmazione oppure per sperimentare con le uscite.&lt;br /&gt;
&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
Collegare TX del convertitore USB-TTL a RX del ESP8266 e RX del convertitore a TX del ESP8266. Nota: il convertitore deve funzionare 3,3V e non a 5V!&lt;br /&gt;
&lt;br /&gt;
Scaricare l'ultima versione di Nodemcu e attraverso ESPlorer caricare i tre sketch lua&lt;br /&gt;
==== ds18b20.lua ====&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- DS18B20 one wire module for NODEMCU&lt;br /&gt;
  -- NODEMCU TEAM&lt;br /&gt;
  -- LICENCE: http://opensource.org/licenses/MIT&lt;br /&gt;
  -- Vowstar &amp;lt;vowstar@nodemcu.com&amp;gt;&lt;br /&gt;
  -- 2015/02/14 sza2 &amp;lt;sza2trash@gmail.com&amp;gt; Fix for negative values&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Set module name as parameter of require&lt;br /&gt;
  local modname = ...&lt;br /&gt;
  local M = {}&lt;br /&gt;
  _G[modname] = M&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Local used variables&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- DS18B20 dq pin&lt;br /&gt;
  local pin = nil&lt;br /&gt;
  -- DS18B20 default pin&lt;br /&gt;
  local defaultPin = 9&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Local used modules&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Table module&lt;br /&gt;
  local table = table&lt;br /&gt;
  -- String module&lt;br /&gt;
  local string = string&lt;br /&gt;
  -- One wire module&lt;br /&gt;
  local ow = ow&lt;br /&gt;
  -- Timer module&lt;br /&gt;
  local tmr = tmr&lt;br /&gt;
  -- Limited to local environment&lt;br /&gt;
  setfenv(1,M)&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Implementation&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  C = 0&lt;br /&gt;
  F = 1&lt;br /&gt;
  K = 2&lt;br /&gt;
  function setup(dq)&lt;br /&gt;
    pin = dq&lt;br /&gt;
    if(pin == nil) then&lt;br /&gt;
      pin = defaultPin&lt;br /&gt;
    end&lt;br /&gt;
    ow.setup(pin)&lt;br /&gt;
  end&lt;br /&gt;
  function addrs()&lt;br /&gt;
    setup(pin)&lt;br /&gt;
    tbl = {}&lt;br /&gt;
    ow.reset_search(pin)&lt;br /&gt;
    repeat&lt;br /&gt;
      addr = ow.search(pin)&lt;br /&gt;
      if(addr ~= nil) then&lt;br /&gt;
        table.insert(tbl, addr)&lt;br /&gt;
      end&lt;br /&gt;
      tmr.wdclr()&lt;br /&gt;
    until (addr == nil)&lt;br /&gt;
    ow.reset_search(pin)&lt;br /&gt;
    return tbl&lt;br /&gt;
  end&lt;br /&gt;
  function readNumber(addr, unit)&lt;br /&gt;
    result = nil&lt;br /&gt;
    setup(pin)&lt;br /&gt;
    flag = false&lt;br /&gt;
    if(addr == nil) then&lt;br /&gt;
      ow.reset_search(pin)&lt;br /&gt;
      count = 0&lt;br /&gt;
      repeat&lt;br /&gt;
        count = count + 1&lt;br /&gt;
        addr = ow.search(pin)&lt;br /&gt;
        tmr.wdclr()&lt;br /&gt;
      until((addr ~= nil) or (count &amp;gt; 100))&lt;br /&gt;
      ow.reset_search(pin)&lt;br /&gt;
    end&lt;br /&gt;
    if(addr == nil) then&lt;br /&gt;
      return result&lt;br /&gt;
    end&lt;br /&gt;
    crc = ow.crc8(string.sub(addr,1,7))&lt;br /&gt;
    if (crc == addr:byte(8)) then&lt;br /&gt;
      if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then&lt;br /&gt;
        -- print(&amp;quot;Device is a DS18S20 family device.&amp;quot;)&lt;br /&gt;
        ow.reset(pin)&lt;br /&gt;
        ow.select(pin, addr)&lt;br /&gt;
        ow.write(pin, 0x44, 1)&lt;br /&gt;
        -- tmr.delay(1000000)&lt;br /&gt;
        present = ow.reset(pin)&lt;br /&gt;
        ow.select(pin, addr)&lt;br /&gt;
        ow.write(pin,0xBE,1)&lt;br /&gt;
        -- print(&amp;quot;P=&amp;quot;..present)&lt;br /&gt;
        data = nil&lt;br /&gt;
        data = string.char(ow.read(pin))&lt;br /&gt;
        for i = 1, 8 do&lt;br /&gt;
          data = data .. string.char(ow.read(pin))&lt;br /&gt;
        end&lt;br /&gt;
        -- print(data:byte(1,9))&lt;br /&gt;
        crc = ow.crc8(string.sub(data,1,8))&lt;br /&gt;
        -- print(&amp;quot;CRC=&amp;quot;..crc)&lt;br /&gt;
        if (crc == data:byte(9)) then&lt;br /&gt;
          t = (data:byte(1) + data:byte(2) * 256)&lt;br /&gt;
          if (t &amp;gt; 32767) then&lt;br /&gt;
            t = t - 65536&lt;br /&gt;
          end&lt;br /&gt;
          if(unit == nil or unit == C) then&lt;br /&gt;
            t = t * 625&lt;br /&gt;
          elseif(unit == F) then&lt;br /&gt;
            t = t * 1125 + 320000&lt;br /&gt;
          elseif(unit == K) then&lt;br /&gt;
            t = t * 625 + 2731500&lt;br /&gt;
          else&lt;br /&gt;
            return nil&lt;br /&gt;
          end&lt;br /&gt;
          t = t / 10000&lt;br /&gt;
          -- print(&amp;quot;Temperature=&amp;quot;..t1..&amp;quot;.&amp;quot;..t2..&amp;quot; Centigrade&amp;quot;)&lt;br /&gt;
          -- result = t1..&amp;quot;.&amp;quot;..t2&lt;br /&gt;
          return t&lt;br /&gt;
        end&lt;br /&gt;
        tmr.wdclr()&lt;br /&gt;
      else&lt;br /&gt;
      -- print(&amp;quot;Device family is not recognized.&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
    -- print(&amp;quot;CRC is not valid!&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    return result&lt;br /&gt;
  end&lt;br /&gt;
  function read(addr, unit)&lt;br /&gt;
    t = readNumber(addr, unit)&lt;br /&gt;
    if (t == nil) then&lt;br /&gt;
      return nil&lt;br /&gt;
    else&lt;br /&gt;
      return t&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  -- Return module table&lt;br /&gt;
  return M&lt;br /&gt;
&lt;br /&gt;
==== postThingSpeak.lua ====&lt;br /&gt;
&lt;br /&gt;
  function postThingSpeak(level)&lt;br /&gt;
    conn=net.createConnection(net.TCP, 0)&lt;br /&gt;
    conn:on(&amp;quot;receive&amp;quot;, function(conn, payload)&lt;br /&gt;
      if (string.find(payload, &amp;quot;Status: 200 OK&amp;quot;) ~= nil) then&lt;br /&gt;
        print(&amp;quot;Posted OK&amp;quot;);&lt;br /&gt;
      end&lt;br /&gt;
    end)&lt;br /&gt;
    conn:on(&amp;quot;connection&amp;quot;, function(connout, payloadout)&lt;br /&gt;
      print (&amp;quot;Posting...&amp;quot;);&lt;br /&gt;
      conn:send(&amp;quot;GET /update?api_key=CHIAVE&amp;amp;field1=&amp;quot; .. level&lt;br /&gt;
        .. &amp;quot; HTTP/1.1\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Host: api.thingspeak.com\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Connection: close\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;\r\n&amp;quot;)&lt;br /&gt;
    end)&lt;br /&gt;
    conn:on(&amp;quot;disconnection&amp;quot;, function(connout, payloadout)&lt;br /&gt;
      connout:close();&lt;br /&gt;
      collectgarbage();&lt;br /&gt;
    end)&lt;br /&gt;
    conn:connect(80,'184.106.153.149') -- api.thingspeak.com 184.106.153.149&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Sostituire CHIAVE con la chiave ottenuta dalla registrazione su Thingspeak.com&lt;br /&gt;
&lt;br /&gt;
==== init.lua ====&lt;br /&gt;
  --init.lua&lt;br /&gt;
  require(&amp;quot;postThingSpeak&amp;quot;)&lt;br /&gt;
  ledPin = 3 --&amp;gt; GPIO0&lt;br /&gt;
  value = gpio.LOW&lt;br /&gt;
  -- Initialise the pin&lt;br /&gt;
  gpio.mode(ledPin, gpio.OUTPUT)&lt;br /&gt;
  gpio.write(ledPin, value)&lt;br /&gt;
  print(&amp;quot;Setting up WIFI...&amp;quot;)&lt;br /&gt;
  wifi.setmode(wifi.STATION)&lt;br /&gt;
  wifi.sta.config(&amp;quot;ssid&amp;quot;,&amp;quot;pw&amp;quot;)&lt;br /&gt;
  wifi.sta.connect()&lt;br /&gt;
  tmr.alarm(1, 30*1000, 1, function()&lt;br /&gt;
    t = require(&amp;quot;ds18b20&amp;quot;)&lt;br /&gt;
    tempPin = 4 --&amp;gt; GPIO2&lt;br /&gt;
    t.setup(tempPin)&lt;br /&gt;
    temp = t.read()&lt;br /&gt;
    print(&amp;quot;Temperature: &amp;quot;..temp..&amp;quot;C&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Sending data to thingspeak.com&amp;quot;)&lt;br /&gt;
    postThingSpeak(temp)&lt;br /&gt;
    -- Don't forget to release it after use&lt;br /&gt;
    t = nil&lt;br /&gt;
    ds18b20 = nil&lt;br /&gt;
    package.loaded[&amp;quot;ds18b20&amp;quot;]=nil&lt;br /&gt;
  end)&lt;br /&gt;
&lt;br /&gt;
Sostiture ssid e pw con il nome del access point e la password&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ThingSpeak ===&lt;br /&gt;
&lt;br /&gt;
https://thingspeak.com/channels/32934&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4292</id>
		<title>ESP8266/templogger</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4292"/>
		<updated>2015-05-01T14:21:23Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* esp8266 temp logger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== esp8266 temp logger ==&lt;br /&gt;
&lt;br /&gt;
L'ESP8266 può essere utilizzato come microcontrollore ''standalone'' con il firmware Nodemcu. Grazie ai due GPIO pins si possono collegare sensori di temperatura, led, relè o altro. In questo esempio il GPIO2 è collegato ad un sensore DS18B20 per la misurazione della temperatura e ogni 30 secondi la lettura viene inviata a [http://www.ThingSpeak.com ThingSpeak]&lt;br /&gt;
&lt;br /&gt;
[[File:wifi_temp_logger2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schema elettrico ===&lt;br /&gt;
[[File:Wifi_temp_logger2_schem.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Consiglio di alimentare ESP8266 attraverso un alimentatore dedicato, non utilizzare i collegamenti forniti da altro micro controllore tipo Arduino, nè quelli del convertitore USB-TTL.&lt;br /&gt;
&lt;br /&gt;
Nella millefori è utile predisporre anche le uscite dei pin RX, TX, GND, GPIO2, GPIO0 in modo da avere massima flessibilità e poter facilmente collegare l'unità per la programmazione oppure per sperimentare con le uscite.&lt;br /&gt;
&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
Collegare TX del convertitore USB-TTL a RX del ESP8266 e RX del convertitore a TX del ESP8266. Nota: il convertitore deve funzionare 3,3V e non a 5V!&lt;br /&gt;
&lt;br /&gt;
Scaricare l'ultima versione di Nodemcu e attraverso ESPlorer caricare i tre sketch lua&lt;br /&gt;
== ds18b20.lua ==&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- DS18B20 one wire module for NODEMCU&lt;br /&gt;
  -- NODEMCU TEAM&lt;br /&gt;
  -- LICENCE: http://opensource.org/licenses/MIT&lt;br /&gt;
  -- Vowstar &amp;lt;vowstar@nodemcu.com&amp;gt;&lt;br /&gt;
  -- 2015/02/14 sza2 &amp;lt;sza2trash@gmail.com&amp;gt; Fix for negative values&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Set module name as parameter of require&lt;br /&gt;
  local modname = ...&lt;br /&gt;
  local M = {}&lt;br /&gt;
  _G[modname] = M&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Local used variables&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- DS18B20 dq pin&lt;br /&gt;
  local pin = nil&lt;br /&gt;
  -- DS18B20 default pin&lt;br /&gt;
  local defaultPin = 9&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Local used modules&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Table module&lt;br /&gt;
  local table = table&lt;br /&gt;
  -- String module&lt;br /&gt;
  local string = string&lt;br /&gt;
  -- One wire module&lt;br /&gt;
  local ow = ow&lt;br /&gt;
  -- Timer module&lt;br /&gt;
  local tmr = tmr&lt;br /&gt;
  -- Limited to local environment&lt;br /&gt;
  setfenv(1,M)&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  -- Implementation&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  C = 0&lt;br /&gt;
  F = 1&lt;br /&gt;
  K = 2&lt;br /&gt;
  function setup(dq)&lt;br /&gt;
    pin = dq&lt;br /&gt;
    if(pin == nil) then&lt;br /&gt;
      pin = defaultPin&lt;br /&gt;
    end&lt;br /&gt;
    ow.setup(pin)&lt;br /&gt;
  end&lt;br /&gt;
  function addrs()&lt;br /&gt;
    setup(pin)&lt;br /&gt;
    tbl = {}&lt;br /&gt;
    ow.reset_search(pin)&lt;br /&gt;
    repeat&lt;br /&gt;
      addr = ow.search(pin)&lt;br /&gt;
      if(addr ~= nil) then&lt;br /&gt;
        table.insert(tbl, addr)&lt;br /&gt;
      end&lt;br /&gt;
      tmr.wdclr()&lt;br /&gt;
    until (addr == nil)&lt;br /&gt;
    ow.reset_search(pin)&lt;br /&gt;
    return tbl&lt;br /&gt;
  end&lt;br /&gt;
  function readNumber(addr, unit)&lt;br /&gt;
    result = nil&lt;br /&gt;
    setup(pin)&lt;br /&gt;
    flag = false&lt;br /&gt;
    if(addr == nil) then&lt;br /&gt;
      ow.reset_search(pin)&lt;br /&gt;
      count = 0&lt;br /&gt;
      repeat&lt;br /&gt;
        count = count + 1&lt;br /&gt;
        addr = ow.search(pin)&lt;br /&gt;
        tmr.wdclr()&lt;br /&gt;
      until((addr ~= nil) or (count &amp;gt; 100))&lt;br /&gt;
      ow.reset_search(pin)&lt;br /&gt;
    end&lt;br /&gt;
    if(addr == nil) then&lt;br /&gt;
      return result&lt;br /&gt;
    end&lt;br /&gt;
    crc = ow.crc8(string.sub(addr,1,7))&lt;br /&gt;
    if (crc == addr:byte(8)) then&lt;br /&gt;
      if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then&lt;br /&gt;
        -- print(&amp;quot;Device is a DS18S20 family device.&amp;quot;)&lt;br /&gt;
        ow.reset(pin)&lt;br /&gt;
        ow.select(pin, addr)&lt;br /&gt;
        ow.write(pin, 0x44, 1)&lt;br /&gt;
        -- tmr.delay(1000000)&lt;br /&gt;
        present = ow.reset(pin)&lt;br /&gt;
        ow.select(pin, addr)&lt;br /&gt;
        ow.write(pin,0xBE,1)&lt;br /&gt;
        -- print(&amp;quot;P=&amp;quot;..present)&lt;br /&gt;
        data = nil&lt;br /&gt;
        data = string.char(ow.read(pin))&lt;br /&gt;
        for i = 1, 8 do&lt;br /&gt;
          data = data .. string.char(ow.read(pin))&lt;br /&gt;
        end&lt;br /&gt;
        -- print(data:byte(1,9))&lt;br /&gt;
        crc = ow.crc8(string.sub(data,1,8))&lt;br /&gt;
        -- print(&amp;quot;CRC=&amp;quot;..crc)&lt;br /&gt;
        if (crc == data:byte(9)) then&lt;br /&gt;
          t = (data:byte(1) + data:byte(2) * 256)&lt;br /&gt;
          if (t &amp;gt; 32767) then&lt;br /&gt;
            t = t - 65536&lt;br /&gt;
          end&lt;br /&gt;
          if(unit == nil or unit == C) then&lt;br /&gt;
            t = t * 625&lt;br /&gt;
          elseif(unit == F) then&lt;br /&gt;
            t = t * 1125 + 320000&lt;br /&gt;
          elseif(unit == K) then&lt;br /&gt;
            t = t * 625 + 2731500&lt;br /&gt;
          else&lt;br /&gt;
            return nil&lt;br /&gt;
          end&lt;br /&gt;
          t = t / 10000&lt;br /&gt;
          -- print(&amp;quot;Temperature=&amp;quot;..t1..&amp;quot;.&amp;quot;..t2..&amp;quot; Centigrade&amp;quot;)&lt;br /&gt;
          -- result = t1..&amp;quot;.&amp;quot;..t2&lt;br /&gt;
          return t&lt;br /&gt;
        end&lt;br /&gt;
        tmr.wdclr()&lt;br /&gt;
      else&lt;br /&gt;
      -- print(&amp;quot;Device family is not recognized.&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
    -- print(&amp;quot;CRC is not valid!&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    return result&lt;br /&gt;
  end&lt;br /&gt;
  function read(addr, unit)&lt;br /&gt;
    t = readNumber(addr, unit)&lt;br /&gt;
    if (t == nil) then&lt;br /&gt;
      return nil&lt;br /&gt;
    else&lt;br /&gt;
      return t&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  -- Return module table&lt;br /&gt;
  return M&lt;br /&gt;
&lt;br /&gt;
== postThingSpeak.lua ==&lt;br /&gt;
&lt;br /&gt;
  function postThingSpeak(level)&lt;br /&gt;
    conn=net.createConnection(net.TCP, 0)&lt;br /&gt;
    conn:on(&amp;quot;receive&amp;quot;, function(conn, payload)&lt;br /&gt;
      if (string.find(payload, &amp;quot;Status: 200 OK&amp;quot;) ~= nil) then&lt;br /&gt;
        print(&amp;quot;Posted OK&amp;quot;);&lt;br /&gt;
      end&lt;br /&gt;
    end)&lt;br /&gt;
    conn:on(&amp;quot;connection&amp;quot;, function(connout, payloadout)&lt;br /&gt;
      print (&amp;quot;Posting...&amp;quot;);&lt;br /&gt;
      conn:send(&amp;quot;GET /update?api_key=CHIAVE&amp;amp;field1=&amp;quot; .. level&lt;br /&gt;
        .. &amp;quot; HTTP/1.1\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Host: api.thingspeak.com\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Connection: close\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n&amp;quot;&lt;br /&gt;
        .. &amp;quot;\r\n&amp;quot;)&lt;br /&gt;
    end)&lt;br /&gt;
    conn:on(&amp;quot;disconnection&amp;quot;, function(connout, payloadout)&lt;br /&gt;
      connout:close();&lt;br /&gt;
      collectgarbage();&lt;br /&gt;
    end)&lt;br /&gt;
    conn:connect(80,'184.106.153.149') -- api.thingspeak.com 184.106.153.149&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Sostituire CHIAVE con la chiave ottenuta dalla registrazione su Thingspeak.com&lt;br /&gt;
&lt;br /&gt;
== init.lua ==&lt;br /&gt;
  --init.lua&lt;br /&gt;
  require(&amp;quot;postThingSpeak&amp;quot;)&lt;br /&gt;
  ledPin = 3 --&amp;gt; GPIO0&lt;br /&gt;
  value = gpio.LOW&lt;br /&gt;
  -- Initialise the pin&lt;br /&gt;
  gpio.mode(ledPin, gpio.OUTPUT)&lt;br /&gt;
  gpio.write(ledPin, value)&lt;br /&gt;
  print(&amp;quot;Setting up WIFI...&amp;quot;)&lt;br /&gt;
  wifi.setmode(wifi.STATION)&lt;br /&gt;
  wifi.sta.config(&amp;quot;ssid&amp;quot;,&amp;quot;pw&amp;quot;)&lt;br /&gt;
  wifi.sta.connect()&lt;br /&gt;
  tmr.alarm(1, 30*1000, 1, function()&lt;br /&gt;
    t = require(&amp;quot;ds18b20&amp;quot;)&lt;br /&gt;
    tempPin = 4 --&amp;gt; GPIO2&lt;br /&gt;
    t.setup(tempPin)&lt;br /&gt;
    temp = t.read()&lt;br /&gt;
    print(&amp;quot;Temperature: &amp;quot;..temp..&amp;quot;C&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Sending data to thingspeak.com&amp;quot;)&lt;br /&gt;
    postThingSpeak(temp)&lt;br /&gt;
    -- Don't forget to release it after use&lt;br /&gt;
    t = nil&lt;br /&gt;
    ds18b20 = nil&lt;br /&gt;
    package.loaded[&amp;quot;ds18b20&amp;quot;]=nil&lt;br /&gt;
  end)&lt;br /&gt;
&lt;br /&gt;
Sostiture ssid e pw con il nome del access point e la password&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4283</id>
		<title>ESP8266/templogger</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4283"/>
		<updated>2015-04-29T20:40:24Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* esp8266 temp logger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== esp8266 temp logger ===&lt;br /&gt;
&lt;br /&gt;
[[File:wifi_temp_logger2.jpg|400px]]&lt;br /&gt;
[[File:Wifi_temp_logger2_schem.png|400px]]&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Wifi_temp_logger2.jpg&amp;diff=4282</id>
		<title>File:Wifi temp logger2.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Wifi_temp_logger2.jpg&amp;diff=4282"/>
		<updated>2015-04-29T20:38:01Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4281</id>
		<title>ESP8266/templogger</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&amp;diff=4281"/>
		<updated>2015-04-29T20:35:14Z</updated>

		<summary type="html">&lt;p&gt;Zasf: Creata pagina con '=== esp8266 temp logger ===  400px 400px'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== esp8266 temp logger ===&lt;br /&gt;
&lt;br /&gt;
[[File:esptemplogger.jpeg|400px]]&lt;br /&gt;
[[File:Wifi_temp_logger2_schem.png|400px]]&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Wifi_temp_logger2_schem.png&amp;diff=4280</id>
		<title>File:Wifi temp logger2 schem.png</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Wifi_temp_logger2_schem.png&amp;diff=4280"/>
		<updated>2015-04-29T20:32:55Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4081</id>
		<title>Padella reflowing</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4081"/>
		<updated>2015-03-09T18:09:22Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Reflowing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Padella reflowing ==&lt;br /&gt;
&lt;br /&gt;
Tecnica di reflowing casalingo per componenti SMD&lt;br /&gt;
&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative&lt;br /&gt;
* usate tutte le precauzioni del caso: guanti, pinze, etc&lt;br /&gt;
* utilizzate una padella che non utilizzerete più per uso alimentare&lt;br /&gt;
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cosa serve ===&lt;br /&gt;
&lt;br /&gt;
* sonda di temperatura&lt;br /&gt;
* padella&lt;br /&gt;
* PCB + componenti SMD&lt;br /&gt;
* stagnatore + stagno, nastro kapton, pinzette per SMD&lt;br /&gt;
&lt;br /&gt;
==== Sonda di temperatura ====&lt;br /&gt;
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato cose che avevo già in casa, cioè:&lt;br /&gt;
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d&lt;br /&gt;
* lcd 16x2 + backpack&lt;br /&gt;
* attiny85&lt;br /&gt;
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805&lt;br /&gt;
* regolatore di tensione&lt;br /&gt;
&lt;br /&gt;
Per il collegamento del termistore [http://reprap.org/wiki/Temperature_Sensor_1_1 vi consiglio questo schema], lo sketch che ho utilizzato invece è una [https://learn.adafruit.com/thermistor/using-a-thermistor modifica di questo].&lt;br /&gt;
&lt;br /&gt;
Ovviamente potete utilizzare quello che volete, basta che la sonda sia in grado di raggiungere i 300 gradi e che i cavi siano protetti da tubo sterlingato ad alta temperatura.&lt;br /&gt;
&lt;br /&gt;
===== Sketch =====&lt;br /&gt;
  // 100k ohm EPCOS 100k (4.7k pullup)&lt;br /&gt;
  &lt;br /&gt;
  // which analog pin to connect&lt;br /&gt;
  #define THERMISTORPIN 2         &lt;br /&gt;
  // resistance at 25 degrees C&lt;br /&gt;
  #define THERMISTORNOMINAL 100000      &lt;br /&gt;
  // temp. for nominal resistance (almost always 25 C)&lt;br /&gt;
  #define TEMPERATURENOMINAL 25   &lt;br /&gt;
  // how many samples to take and average, more takes longer&lt;br /&gt;
  // but is more 'smooth'&lt;br /&gt;
  #define NUMSAMPLES 10&lt;br /&gt;
  // The beta coefficient of the thermistor (usually 3000-4000)&lt;br /&gt;
  #define BCOEFFICIENT 4066&lt;br /&gt;
  // the value of the 'other' resistor&lt;br /&gt;
  #define SERIESRESISTOR 4700    &lt;br /&gt;
   &lt;br /&gt;
  #include &amp;lt;TinyWireM.h&amp;gt;                 &lt;br /&gt;
  #include &amp;lt;LiquidCrystal_I2C_852.h&amp;gt;         &lt;br /&gt;
   &lt;br /&gt;
  LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
  &lt;br /&gt;
  int samples[NUMSAMPLES];&lt;br /&gt;
   &lt;br /&gt;
  void setup()&lt;br /&gt;
  {&lt;br /&gt;
    lcd.init();                           // initialize the lcd &lt;br /&gt;
    lcd.backlight();                      // Print a message to the LCD.&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(&amp;quot;Temp:&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  void loop(void) {&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
    float average;&lt;br /&gt;
   &lt;br /&gt;
    // take N samples in a row, with a slight delay&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
     samples[i] = analogRead(THERMISTORPIN);&lt;br /&gt;
     delay(10);&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    // average all the samples out&lt;br /&gt;
    average = 0;&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
       average += samples[i];&lt;br /&gt;
    }&lt;br /&gt;
    average /= NUMSAMPLES;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
    // convert the value to resistance&lt;br /&gt;
    average = 1023 / average - 1;&lt;br /&gt;
    average = SERIESRESISTOR / average;&lt;br /&gt;
   &lt;br /&gt;
    float steinhart;&lt;br /&gt;
    steinhart = average / THERMISTORNOMINAL;     // (R/Ro)&lt;br /&gt;
    steinhart = log(steinhart);                  // ln(R/Ro)&lt;br /&gt;
    steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)&lt;br /&gt;
    steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)&lt;br /&gt;
    steinhart = 1.0 / steinhart;                 // Invert&lt;br /&gt;
    steinhart -= 273.15;                         // convert to C&lt;br /&gt;
   &lt;br /&gt;
  &lt;br /&gt;
    lcd.setCursor(6, 0);&lt;br /&gt;
    lcd.print(steinhart, 1);&lt;br /&gt;
    lcd.print(&amp;quot;C  &amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Padella ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.&lt;br /&gt;
&lt;br /&gt;
Mettete la sonda sulla superficie della padella con un pezzo di nastro Kapton e fate qualche prova di temperatura. Nel mio fornellino più piccolo, col fuoco al minimo, la padella raggiunge i 300 gradi. Decisamente troppo, per cui bisogna stare attenti e togliere la scheda al momento giusto. Prima di fare la stagnatura vera e propria, vi consiglio di verificare le temperature che raggiungete e verificate la temperatura a cui il componente smd deve essere stagnato sul datasheet.&lt;br /&gt;
&lt;br /&gt;
==== PCB + componenti SMD ====&lt;br /&gt;
&lt;br /&gt;
Mettete un po' di stagno sulle piazzole del componente smd, giusto una gocciolina. La piazzola dev'essere bella lucente e con un po' di pancia ma non troppa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reflowing ==&lt;br /&gt;
&lt;br /&gt;
=== Prima ===&lt;br /&gt;
Estraete il componente SMD dalla sua custodia, verificate con un tester le resistenze tra i piedini e segnatele su un pezzo di carta. Dopo averlo stagnato, potete verificare che le resistenza siano le stesse e quindi verificare che sia tutto a posto.&lt;br /&gt;
&lt;br /&gt;
=== Durante ===&lt;br /&gt;
Prendete il componente SMD con le pinzette e verificate la posizione in cui lo adagierete sul PCB. Mettete il PCB con le piazzole preparate nella padella e accendete il gas. La temperatura salirà velocemente, intorno ai 200-220 gradi lo stagno comincia a sciogliersi, a queso punto appoggiate il componente SMD, vedrete che si posiziona da solo nella sua collocazione. Questa operazione deve durare qualche secondo, mentre la temperatura è a 220-230 gradi. Togliete con le pinze il pcb dalla padella e spegnete il gas.&lt;br /&gt;
&lt;br /&gt;
=== Risultato ===&lt;br /&gt;
Verificate che le resistenze siano le stesse che vi siete appuntati, se qualche resistenza è diversa potrebbe essere un problema di stagnatura oppure avete bruciato il componente.&lt;br /&gt;
&lt;br /&gt;
[[File:padella_reflowing_pcb1.jpg|150px]] [[File:padella_reflowing_pcb2.jpg|150px]] [[File:padella_reflowing_pcb3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Nella seconda foto, la seconda stagnatura da sinistra non è bellissima, però il sensore funziona.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
Sarebbe molto carino utilizzare, anzichè la padella, una resistenza elettrica posizionata su una lamiera di metallo. Lo sketch potrebbe essere migliorato e diventare un vero e proprio PID. L'Attiny85 ha pin liberi che potrebbero essere utilizzati per un potenziometro per regolare la temperatura e una uscita PWM con cui pilotare la resistenza.&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4080</id>
		<title>Padella reflowing</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4080"/>
		<updated>2015-03-09T18:05:54Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Sonda di temperatura */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Padella reflowing ==&lt;br /&gt;
&lt;br /&gt;
Tecnica di reflowing casalingo per componenti SMD&lt;br /&gt;
&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative&lt;br /&gt;
* usate tutte le precauzioni del caso: guanti, pinze, etc&lt;br /&gt;
* utilizzate una padella che non utilizzerete più per uso alimentare&lt;br /&gt;
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cosa serve ===&lt;br /&gt;
&lt;br /&gt;
* sonda di temperatura&lt;br /&gt;
* padella&lt;br /&gt;
* PCB + componenti SMD&lt;br /&gt;
* stagnatore + stagno, nastro kapton, pinzette per SMD&lt;br /&gt;
&lt;br /&gt;
==== Sonda di temperatura ====&lt;br /&gt;
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato cose che avevo già in casa, cioè:&lt;br /&gt;
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d&lt;br /&gt;
* lcd 16x2 + backpack&lt;br /&gt;
* attiny85&lt;br /&gt;
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805&lt;br /&gt;
* regolatore di tensione&lt;br /&gt;
&lt;br /&gt;
Per il collegamento del termistore [http://reprap.org/wiki/Temperature_Sensor_1_1 vi consiglio questo schema], lo sketch che ho utilizzato invece è una [https://learn.adafruit.com/thermistor/using-a-thermistor modifica di questo].&lt;br /&gt;
&lt;br /&gt;
Ovviamente potete utilizzare quello che volete, basta che la sonda sia in grado di raggiungere i 300 gradi e che i cavi siano protetti da tubo sterlingato ad alta temperatura.&lt;br /&gt;
&lt;br /&gt;
===== Sketch =====&lt;br /&gt;
  // 100k ohm EPCOS 100k (4.7k pullup)&lt;br /&gt;
  &lt;br /&gt;
  // which analog pin to connect&lt;br /&gt;
  #define THERMISTORPIN 2         &lt;br /&gt;
  // resistance at 25 degrees C&lt;br /&gt;
  #define THERMISTORNOMINAL 100000      &lt;br /&gt;
  // temp. for nominal resistance (almost always 25 C)&lt;br /&gt;
  #define TEMPERATURENOMINAL 25   &lt;br /&gt;
  // how many samples to take and average, more takes longer&lt;br /&gt;
  // but is more 'smooth'&lt;br /&gt;
  #define NUMSAMPLES 10&lt;br /&gt;
  // The beta coefficient of the thermistor (usually 3000-4000)&lt;br /&gt;
  #define BCOEFFICIENT 4066&lt;br /&gt;
  // the value of the 'other' resistor&lt;br /&gt;
  #define SERIESRESISTOR 4700    &lt;br /&gt;
   &lt;br /&gt;
  #include &amp;lt;TinyWireM.h&amp;gt;                 &lt;br /&gt;
  #include &amp;lt;LiquidCrystal_I2C_852.h&amp;gt;         &lt;br /&gt;
   &lt;br /&gt;
  LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
  &lt;br /&gt;
  int samples[NUMSAMPLES];&lt;br /&gt;
   &lt;br /&gt;
  void setup()&lt;br /&gt;
  {&lt;br /&gt;
    lcd.init();                           // initialize the lcd &lt;br /&gt;
    lcd.backlight();                      // Print a message to the LCD.&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(&amp;quot;Temp:&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  void loop(void) {&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
    float average;&lt;br /&gt;
   &lt;br /&gt;
    // take N samples in a row, with a slight delay&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
     samples[i] = analogRead(THERMISTORPIN);&lt;br /&gt;
     delay(10);&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    // average all the samples out&lt;br /&gt;
    average = 0;&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
       average += samples[i];&lt;br /&gt;
    }&lt;br /&gt;
    average /= NUMSAMPLES;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
    // convert the value to resistance&lt;br /&gt;
    average = 1023 / average - 1;&lt;br /&gt;
    average = SERIESRESISTOR / average;&lt;br /&gt;
   &lt;br /&gt;
    float steinhart;&lt;br /&gt;
    steinhart = average / THERMISTORNOMINAL;     // (R/Ro)&lt;br /&gt;
    steinhart = log(steinhart);                  // ln(R/Ro)&lt;br /&gt;
    steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)&lt;br /&gt;
    steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)&lt;br /&gt;
    steinhart = 1.0 / steinhart;                 // Invert&lt;br /&gt;
    steinhart -= 273.15;                         // convert to C&lt;br /&gt;
   &lt;br /&gt;
  &lt;br /&gt;
    lcd.setCursor(6, 0);&lt;br /&gt;
    lcd.print(steinhart, 1);&lt;br /&gt;
    lcd.print(&amp;quot;C  &amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Padella ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.&lt;br /&gt;
&lt;br /&gt;
Mettete la sonda sulla superficie della padella con un pezzo di nastro Kapton e fate qualche prova di temperatura. Nel mio fornellino più piccolo, col fuoco al minimo, la padella raggiunge i 300 gradi. Decisamente troppo, per cui bisogna stare attenti e togliere la scheda al momento giusto. Prima di fare la stagnatura vera e propria, vi consiglio di verificare le temperature che raggiungete e verificate la temperatura a cui il componente smd deve essere stagnato sul datasheet.&lt;br /&gt;
&lt;br /&gt;
==== PCB + componenti SMD ====&lt;br /&gt;
&lt;br /&gt;
Mettete un po' di stagno sulle piazzole del componente smd, giusto una gocciolina. La piazzola dev'essere bella lucente e con un po' di pancia ma non troppa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reflowing ==&lt;br /&gt;
&lt;br /&gt;
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.&lt;br /&gt;
Mettete il PCB con le piazzole preparate nella padella e accendete il gas. La temperatura salirà velocemente, intorno ai 200-220 gradi lo stagno comincia a sciogliersi, a queso punto appoggiate il componente SMD, vedrete che si posiziona da solo nella sua collocazione. Questa operazione deve durare qualche secondo, mentre la temperatura è a 220-230 gradi. Togliete con le pinze il pcb dalla padella e spegnete il gas.&lt;br /&gt;
&lt;br /&gt;
=== Risultato ===&lt;br /&gt;
[[File:padella_reflowing_pcb1.jpg|150px]] [[File:padella_reflowing_pcb2.jpg|150px]] [[File:padella_reflowing_pcb3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Nella seconda foto, la seconda stagnatura da sinistra non è bellissima, però il sensore funziona.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
Sarebbe molto carino utilizzare, anzichè la padella, una resistenza elettrica posizionata su una lamiera di metallo. Lo sketch potrebbe essere migliorato e diventare un vero e proprio PID. L'Attiny85 ha pin liberi che potrebbero essere utilizzati per un potenziometro per regolare la temperatura e una uscita PWM con cui pilotare la resistenza.&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4079</id>
		<title>Padella reflowing</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4079"/>
		<updated>2015-03-09T18:03:33Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Reflowing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Padella reflowing ==&lt;br /&gt;
&lt;br /&gt;
Tecnica di reflowing casalingo per componenti SMD&lt;br /&gt;
&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative&lt;br /&gt;
* usate tutte le precauzioni del caso: guanti, pinze, etc&lt;br /&gt;
* utilizzate una padella che non utilizzerete più per uso alimentare&lt;br /&gt;
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cosa serve ===&lt;br /&gt;
&lt;br /&gt;
* sonda di temperatura&lt;br /&gt;
* padella&lt;br /&gt;
* PCB + componenti SMD&lt;br /&gt;
* stagnatore + stagno, nastro kapton, pinzette per SMD&lt;br /&gt;
&lt;br /&gt;
==== Sonda di temperatura ====&lt;br /&gt;
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato cose che avevo già in casa, cioè:&lt;br /&gt;
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d&lt;br /&gt;
* lcd 16x2 + backpack&lt;br /&gt;
* attiny85&lt;br /&gt;
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805&lt;br /&gt;
* regolatore di tensione&lt;br /&gt;
&lt;br /&gt;
Per il collegamento del termistore [http://reprap.org/wiki/Temperature_Sensor_1_1 vi consiglio questo schema], lo sketch che ho utilizzato invece è una [https://learn.adafruit.com/thermistor/using-a-thermistor modifica di questo]&lt;br /&gt;
&lt;br /&gt;
===== Sketch =====&lt;br /&gt;
  // 100k ohm EPCOS 100k (4.7k pullup)&lt;br /&gt;
  &lt;br /&gt;
  // which analog pin to connect&lt;br /&gt;
  #define THERMISTORPIN 2         &lt;br /&gt;
  // resistance at 25 degrees C&lt;br /&gt;
  #define THERMISTORNOMINAL 100000      &lt;br /&gt;
  // temp. for nominal resistance (almost always 25 C)&lt;br /&gt;
  #define TEMPERATURENOMINAL 25   &lt;br /&gt;
  // how many samples to take and average, more takes longer&lt;br /&gt;
  // but is more 'smooth'&lt;br /&gt;
  #define NUMSAMPLES 10&lt;br /&gt;
  // The beta coefficient of the thermistor (usually 3000-4000)&lt;br /&gt;
  #define BCOEFFICIENT 4066&lt;br /&gt;
  // the value of the 'other' resistor&lt;br /&gt;
  #define SERIESRESISTOR 4700    &lt;br /&gt;
   &lt;br /&gt;
  #include &amp;lt;TinyWireM.h&amp;gt;                 &lt;br /&gt;
  #include &amp;lt;LiquidCrystal_I2C_852.h&amp;gt;         &lt;br /&gt;
   &lt;br /&gt;
  LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
  &lt;br /&gt;
  int samples[NUMSAMPLES];&lt;br /&gt;
   &lt;br /&gt;
  void setup()&lt;br /&gt;
  {&lt;br /&gt;
    lcd.init();                           // initialize the lcd &lt;br /&gt;
    lcd.backlight();                      // Print a message to the LCD.&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(&amp;quot;Temp:&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  void loop(void) {&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
    float average;&lt;br /&gt;
   &lt;br /&gt;
    // take N samples in a row, with a slight delay&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
     samples[i] = analogRead(THERMISTORPIN);&lt;br /&gt;
     delay(10);&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    // average all the samples out&lt;br /&gt;
    average = 0;&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
       average += samples[i];&lt;br /&gt;
    }&lt;br /&gt;
    average /= NUMSAMPLES;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
    // convert the value to resistance&lt;br /&gt;
    average = 1023 / average - 1;&lt;br /&gt;
    average = SERIESRESISTOR / average;&lt;br /&gt;
   &lt;br /&gt;
    float steinhart;&lt;br /&gt;
    steinhart = average / THERMISTORNOMINAL;     // (R/Ro)&lt;br /&gt;
    steinhart = log(steinhart);                  // ln(R/Ro)&lt;br /&gt;
    steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)&lt;br /&gt;
    steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)&lt;br /&gt;
    steinhart = 1.0 / steinhart;                 // Invert&lt;br /&gt;
    steinhart -= 273.15;                         // convert to C&lt;br /&gt;
   &lt;br /&gt;
  &lt;br /&gt;
    lcd.setCursor(6, 0);&lt;br /&gt;
    lcd.print(steinhart, 1);&lt;br /&gt;
    lcd.print(&amp;quot;C  &amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Padella ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.&lt;br /&gt;
&lt;br /&gt;
Mettete la sonda sulla superficie della padella con un pezzo di nastro Kapton e fate qualche prova di temperatura. Nel mio fornellino più piccolo, col fuoco al minimo, la padella raggiunge i 300 gradi. Decisamente troppo, per cui bisogna stare attenti e togliere la scheda al momento giusto. Prima di fare la stagnatura vera e propria, vi consiglio di verificare le temperature che raggiungete e verificate la temperatura a cui il componente smd deve essere stagnato sul datasheet.&lt;br /&gt;
&lt;br /&gt;
==== PCB + componenti SMD ====&lt;br /&gt;
&lt;br /&gt;
Mettete un po' di stagno sulle piazzole del componente smd, giusto una gocciolina. La piazzola dev'essere bella lucente e con un po' di pancia ma non troppa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reflowing ==&lt;br /&gt;
&lt;br /&gt;
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.&lt;br /&gt;
Mettete il PCB con le piazzole preparate nella padella e accendete il gas. La temperatura salirà velocemente, intorno ai 200-220 gradi lo stagno comincia a sciogliersi, a queso punto appoggiate il componente SMD, vedrete che si posiziona da solo nella sua collocazione. Questa operazione deve durare qualche secondo, mentre la temperatura è a 220-230 gradi. Togliete con le pinze il pcb dalla padella e spegnete il gas.&lt;br /&gt;
&lt;br /&gt;
=== Risultato ===&lt;br /&gt;
[[File:padella_reflowing_pcb1.jpg|150px]] [[File:padella_reflowing_pcb2.jpg|150px]] [[File:padella_reflowing_pcb3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Nella seconda foto, la seconda stagnatura da sinistra non è bellissima, però il sensore funziona.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
Sarebbe molto carino utilizzare, anzichè la padella, una resistenza elettrica posizionata su una lamiera di metallo. Lo sketch potrebbe essere migliorato e diventare un vero e proprio PID. L'Attiny85 ha pin liberi che potrebbero essere utilizzati per un potenziometro per regolare la temperatura e una uscita PWM con cui pilotare la resistenza.&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb3.jpg&amp;diff=4078</id>
		<title>File:Padella reflowing pcb3.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb3.jpg&amp;diff=4078"/>
		<updated>2015-03-09T18:03:00Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb2.jpg&amp;diff=4077</id>
		<title>File:Padella reflowing pcb2.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb2.jpg&amp;diff=4077"/>
		<updated>2015-03-09T18:01:27Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb1.jpg&amp;diff=4076</id>
		<title>File:Padella reflowing pcb1.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb1.jpg&amp;diff=4076"/>
		<updated>2015-03-09T18:00:49Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4075</id>
		<title>Padella reflowing</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4075"/>
		<updated>2015-03-09T17:53:03Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Reflowing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Padella reflowing ==&lt;br /&gt;
&lt;br /&gt;
Tecnica di reflowing casalingo per componenti SMD&lt;br /&gt;
&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative&lt;br /&gt;
* usate tutte le precauzioni del caso: guanti, pinze, etc&lt;br /&gt;
* utilizzate una padella che non utilizzerete più per uso alimentare&lt;br /&gt;
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cosa serve ===&lt;br /&gt;
&lt;br /&gt;
* sonda di temperatura&lt;br /&gt;
* padella&lt;br /&gt;
* PCB + componenti SMD&lt;br /&gt;
* stagnatore + stagno, nastro kapton, pinzette per SMD&lt;br /&gt;
&lt;br /&gt;
==== Sonda di temperatura ====&lt;br /&gt;
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato cose che avevo già in casa, cioè:&lt;br /&gt;
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d&lt;br /&gt;
* lcd 16x2 + backpack&lt;br /&gt;
* attiny85&lt;br /&gt;
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805&lt;br /&gt;
* regolatore di tensione&lt;br /&gt;
&lt;br /&gt;
Per il collegamento del termistore [http://reprap.org/wiki/Temperature_Sensor_1_1 vi consiglio questo schema], lo sketch che ho utilizzato invece è una [https://learn.adafruit.com/thermistor/using-a-thermistor modifica di questo]&lt;br /&gt;
&lt;br /&gt;
===== Sketch =====&lt;br /&gt;
  // 100k ohm EPCOS 100k (4.7k pullup)&lt;br /&gt;
  &lt;br /&gt;
  // which analog pin to connect&lt;br /&gt;
  #define THERMISTORPIN 2         &lt;br /&gt;
  // resistance at 25 degrees C&lt;br /&gt;
  #define THERMISTORNOMINAL 100000      &lt;br /&gt;
  // temp. for nominal resistance (almost always 25 C)&lt;br /&gt;
  #define TEMPERATURENOMINAL 25   &lt;br /&gt;
  // how many samples to take and average, more takes longer&lt;br /&gt;
  // but is more 'smooth'&lt;br /&gt;
  #define NUMSAMPLES 10&lt;br /&gt;
  // The beta coefficient of the thermistor (usually 3000-4000)&lt;br /&gt;
  #define BCOEFFICIENT 4066&lt;br /&gt;
  // the value of the 'other' resistor&lt;br /&gt;
  #define SERIESRESISTOR 4700    &lt;br /&gt;
   &lt;br /&gt;
  #include &amp;lt;TinyWireM.h&amp;gt;                 &lt;br /&gt;
  #include &amp;lt;LiquidCrystal_I2C_852.h&amp;gt;         &lt;br /&gt;
   &lt;br /&gt;
  LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
  &lt;br /&gt;
  int samples[NUMSAMPLES];&lt;br /&gt;
   &lt;br /&gt;
  void setup()&lt;br /&gt;
  {&lt;br /&gt;
    lcd.init();                           // initialize the lcd &lt;br /&gt;
    lcd.backlight();                      // Print a message to the LCD.&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(&amp;quot;Temp:&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  void loop(void) {&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
    float average;&lt;br /&gt;
   &lt;br /&gt;
    // take N samples in a row, with a slight delay&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
     samples[i] = analogRead(THERMISTORPIN);&lt;br /&gt;
     delay(10);&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    // average all the samples out&lt;br /&gt;
    average = 0;&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
       average += samples[i];&lt;br /&gt;
    }&lt;br /&gt;
    average /= NUMSAMPLES;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
    // convert the value to resistance&lt;br /&gt;
    average = 1023 / average - 1;&lt;br /&gt;
    average = SERIESRESISTOR / average;&lt;br /&gt;
   &lt;br /&gt;
    float steinhart;&lt;br /&gt;
    steinhart = average / THERMISTORNOMINAL;     // (R/Ro)&lt;br /&gt;
    steinhart = log(steinhart);                  // ln(R/Ro)&lt;br /&gt;
    steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)&lt;br /&gt;
    steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)&lt;br /&gt;
    steinhart = 1.0 / steinhart;                 // Invert&lt;br /&gt;
    steinhart -= 273.15;                         // convert to C&lt;br /&gt;
   &lt;br /&gt;
  &lt;br /&gt;
    lcd.setCursor(6, 0);&lt;br /&gt;
    lcd.print(steinhart, 1);&lt;br /&gt;
    lcd.print(&amp;quot;C  &amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Padella ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.&lt;br /&gt;
&lt;br /&gt;
Mettete la sonda sulla superficie della padella con un pezzo di nastro Kapton e fate qualche prova di temperatura. Nel mio fornellino più piccolo, col fuoco al minimo, la padella raggiunge i 300 gradi. Decisamente troppo, per cui bisogna stare attenti e togliere la scheda al momento giusto. Prima di fare la stagnatura vera e propria, vi consiglio di verificare le temperature che raggiungete e verificate la temperatura a cui il componente smd deve essere stagnato sul datasheet.&lt;br /&gt;
&lt;br /&gt;
==== PCB + componenti SMD ====&lt;br /&gt;
&lt;br /&gt;
Mettete un po' di stagno sulle piazzole del componente smd, giusto una gocciolina. La piazzola dev'essere bella lucente e con un po' di pancia ma non troppa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reflowing ==&lt;br /&gt;
&lt;br /&gt;
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.&lt;br /&gt;
Mettete il PCB con le piazzole preparate nella padella e accendete il gas. La temperatura salirà velocemente, intorno ai 200-220 gradi lo stagno comincia a sciogliersi, a queso punto appoggiate il componente SMD, vedrete che si posiziona da solo nella sua collocazione. Questa operazione deve durare qualche secondo, mentre la temperatura è a 220-230 gradi. Togliete con le pinze il pcb dalla padella e spegnete il gas.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
Sarebbe molto carino utilizzare, anzichè la padella, una resistenza elettrica posizionata su una lamiera di metallo. Lo sketch potrebbe essere migliorato e diventare un vero e proprio PID. L'Attiny85 ha pin liberi che potrebbero essere utilizzati per un potenziometro per regolare la temperatura e una uscita PWM con cui pilotare la resistenza.&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4074</id>
		<title>Padella reflowing</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4074"/>
		<updated>2015-03-09T17:49:32Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Padella */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Padella reflowing ==&lt;br /&gt;
&lt;br /&gt;
Tecnica di reflowing casalingo per componenti SMD&lt;br /&gt;
&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative&lt;br /&gt;
* usate tutte le precauzioni del caso: guanti, pinze, etc&lt;br /&gt;
* utilizzate una padella che non utilizzerete più per uso alimentare&lt;br /&gt;
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cosa serve ===&lt;br /&gt;
&lt;br /&gt;
* sonda di temperatura&lt;br /&gt;
* padella&lt;br /&gt;
* PCB + componenti SMD&lt;br /&gt;
* stagnatore + stagno, nastro kapton, pinzette per SMD&lt;br /&gt;
&lt;br /&gt;
==== Sonda di temperatura ====&lt;br /&gt;
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato cose che avevo già in casa, cioè:&lt;br /&gt;
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d&lt;br /&gt;
* lcd 16x2 + backpack&lt;br /&gt;
* attiny85&lt;br /&gt;
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805&lt;br /&gt;
* regolatore di tensione&lt;br /&gt;
&lt;br /&gt;
Per il collegamento del termistore [http://reprap.org/wiki/Temperature_Sensor_1_1 vi consiglio questo schema], lo sketch che ho utilizzato invece è una [https://learn.adafruit.com/thermistor/using-a-thermistor modifica di questo]&lt;br /&gt;
&lt;br /&gt;
===== Sketch =====&lt;br /&gt;
  // 100k ohm EPCOS 100k (4.7k pullup)&lt;br /&gt;
  &lt;br /&gt;
  // which analog pin to connect&lt;br /&gt;
  #define THERMISTORPIN 2         &lt;br /&gt;
  // resistance at 25 degrees C&lt;br /&gt;
  #define THERMISTORNOMINAL 100000      &lt;br /&gt;
  // temp. for nominal resistance (almost always 25 C)&lt;br /&gt;
  #define TEMPERATURENOMINAL 25   &lt;br /&gt;
  // how many samples to take and average, more takes longer&lt;br /&gt;
  // but is more 'smooth'&lt;br /&gt;
  #define NUMSAMPLES 10&lt;br /&gt;
  // The beta coefficient of the thermistor (usually 3000-4000)&lt;br /&gt;
  #define BCOEFFICIENT 4066&lt;br /&gt;
  // the value of the 'other' resistor&lt;br /&gt;
  #define SERIESRESISTOR 4700    &lt;br /&gt;
   &lt;br /&gt;
  #include &amp;lt;TinyWireM.h&amp;gt;                 &lt;br /&gt;
  #include &amp;lt;LiquidCrystal_I2C_852.h&amp;gt;         &lt;br /&gt;
   &lt;br /&gt;
  LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
  &lt;br /&gt;
  int samples[NUMSAMPLES];&lt;br /&gt;
   &lt;br /&gt;
  void setup()&lt;br /&gt;
  {&lt;br /&gt;
    lcd.init();                           // initialize the lcd &lt;br /&gt;
    lcd.backlight();                      // Print a message to the LCD.&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(&amp;quot;Temp:&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  void loop(void) {&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
    float average;&lt;br /&gt;
   &lt;br /&gt;
    // take N samples in a row, with a slight delay&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
     samples[i] = analogRead(THERMISTORPIN);&lt;br /&gt;
     delay(10);&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    // average all the samples out&lt;br /&gt;
    average = 0;&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
       average += samples[i];&lt;br /&gt;
    }&lt;br /&gt;
    average /= NUMSAMPLES;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
    // convert the value to resistance&lt;br /&gt;
    average = 1023 / average - 1;&lt;br /&gt;
    average = SERIESRESISTOR / average;&lt;br /&gt;
   &lt;br /&gt;
    float steinhart;&lt;br /&gt;
    steinhart = average / THERMISTORNOMINAL;     // (R/Ro)&lt;br /&gt;
    steinhart = log(steinhart);                  // ln(R/Ro)&lt;br /&gt;
    steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)&lt;br /&gt;
    steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)&lt;br /&gt;
    steinhart = 1.0 / steinhart;                 // Invert&lt;br /&gt;
    steinhart -= 273.15;                         // convert to C&lt;br /&gt;
   &lt;br /&gt;
  &lt;br /&gt;
    lcd.setCursor(6, 0);&lt;br /&gt;
    lcd.print(steinhart, 1);&lt;br /&gt;
    lcd.print(&amp;quot;C  &amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Padella ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.&lt;br /&gt;
&lt;br /&gt;
Mettete la sonda sulla superficie della padella con un pezzo di nastro Kapton e fate qualche prova di temperatura. Nel mio fornellino più piccolo, col fuoco al minimo, la padella raggiunge i 300 gradi. Decisamente troppo, per cui bisogna stare attenti e togliere la scheda al momento giusto. Prima di fare la stagnatura vera e propria, vi consiglio di verificare le temperature che raggiungete e verificate la temperatura a cui il componente smd deve essere stagnato sul datasheet.&lt;br /&gt;
&lt;br /&gt;
==== PCB + componenti SMD ====&lt;br /&gt;
&lt;br /&gt;
Mettete un po' di stagno sulle piazzole del componente smd, giusto una gocciolina. La piazzola dev'essere bella lucente e con un po' di pancia ma non troppa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reflowing ===&lt;br /&gt;
&lt;br /&gt;
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.&lt;br /&gt;
Mettete il PCB con le piazzole preparate nella padella e accendete il gas. La temperatura salirà velocemente, intorno ai 200-220 gradi lo stagno comincia a sciogliersi, a queso punto appoggiate il componente SMD, vedrete che si posiziona da solo nella sua collocazione. Questa operazione deve durare qualche secondo, mentre la temperatura è a 220-230 gradi. Togliete con le pinze il pcb dalla padella e spegnete il gas.&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4073</id>
		<title>Padella reflowing</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4073"/>
		<updated>2015-03-09T17:48:43Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Sonda di temperatura */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Padella reflowing ==&lt;br /&gt;
&lt;br /&gt;
Tecnica di reflowing casalingo per componenti SMD&lt;br /&gt;
&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative&lt;br /&gt;
* usate tutte le precauzioni del caso: guanti, pinze, etc&lt;br /&gt;
* utilizzate una padella che non utilizzerete più per uso alimentare&lt;br /&gt;
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cosa serve ===&lt;br /&gt;
&lt;br /&gt;
* sonda di temperatura&lt;br /&gt;
* padella&lt;br /&gt;
* PCB + componenti SMD&lt;br /&gt;
* stagnatore + stagno, nastro kapton, pinzette per SMD&lt;br /&gt;
&lt;br /&gt;
==== Sonda di temperatura ====&lt;br /&gt;
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato cose che avevo già in casa, cioè:&lt;br /&gt;
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d&lt;br /&gt;
* lcd 16x2 + backpack&lt;br /&gt;
* attiny85&lt;br /&gt;
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805&lt;br /&gt;
* regolatore di tensione&lt;br /&gt;
&lt;br /&gt;
Per il collegamento del termistore [http://reprap.org/wiki/Temperature_Sensor_1_1 vi consiglio questo schema], lo sketch che ho utilizzato invece è una [https://learn.adafruit.com/thermistor/using-a-thermistor modifica di questo]&lt;br /&gt;
&lt;br /&gt;
===== Sketch =====&lt;br /&gt;
  // 100k ohm EPCOS 100k (4.7k pullup)&lt;br /&gt;
  &lt;br /&gt;
  // which analog pin to connect&lt;br /&gt;
  #define THERMISTORPIN 2         &lt;br /&gt;
  // resistance at 25 degrees C&lt;br /&gt;
  #define THERMISTORNOMINAL 100000      &lt;br /&gt;
  // temp. for nominal resistance (almost always 25 C)&lt;br /&gt;
  #define TEMPERATURENOMINAL 25   &lt;br /&gt;
  // how many samples to take and average, more takes longer&lt;br /&gt;
  // but is more 'smooth'&lt;br /&gt;
  #define NUMSAMPLES 10&lt;br /&gt;
  // The beta coefficient of the thermistor (usually 3000-4000)&lt;br /&gt;
  #define BCOEFFICIENT 4066&lt;br /&gt;
  // the value of the 'other' resistor&lt;br /&gt;
  #define SERIESRESISTOR 4700    &lt;br /&gt;
   &lt;br /&gt;
  #include &amp;lt;TinyWireM.h&amp;gt;                 &lt;br /&gt;
  #include &amp;lt;LiquidCrystal_I2C_852.h&amp;gt;         &lt;br /&gt;
   &lt;br /&gt;
  LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
  &lt;br /&gt;
  int samples[NUMSAMPLES];&lt;br /&gt;
   &lt;br /&gt;
  void setup()&lt;br /&gt;
  {&lt;br /&gt;
    lcd.init();                           // initialize the lcd &lt;br /&gt;
    lcd.backlight();                      // Print a message to the LCD.&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(&amp;quot;Temp:&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  void loop(void) {&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
    float average;&lt;br /&gt;
   &lt;br /&gt;
    // take N samples in a row, with a slight delay&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
     samples[i] = analogRead(THERMISTORPIN);&lt;br /&gt;
     delay(10);&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    // average all the samples out&lt;br /&gt;
    average = 0;&lt;br /&gt;
    for (i=0; i&amp;lt; NUMSAMPLES; i++) {&lt;br /&gt;
       average += samples[i];&lt;br /&gt;
    }&lt;br /&gt;
    average /= NUMSAMPLES;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
    // convert the value to resistance&lt;br /&gt;
    average = 1023 / average - 1;&lt;br /&gt;
    average = SERIESRESISTOR / average;&lt;br /&gt;
   &lt;br /&gt;
    float steinhart;&lt;br /&gt;
    steinhart = average / THERMISTORNOMINAL;     // (R/Ro)&lt;br /&gt;
    steinhart = log(steinhart);                  // ln(R/Ro)&lt;br /&gt;
    steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)&lt;br /&gt;
    steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)&lt;br /&gt;
    steinhart = 1.0 / steinhart;                 // Invert&lt;br /&gt;
    steinhart -= 273.15;                         // convert to C&lt;br /&gt;
   &lt;br /&gt;
  &lt;br /&gt;
    lcd.setCursor(6, 0);&lt;br /&gt;
    lcd.print(steinhart, 1);&lt;br /&gt;
    lcd.print(&amp;quot;C  &amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    delay(500);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Padella ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.&lt;br /&gt;
&lt;br /&gt;
Mettete la sonda sulla superficie della padella con un pezzo di nastro Kapton e fate qualche prova di temperatura. Nel mio fornellino più piccolo, col fuoco al minimo, la padella raggiunge i 300 gradi. Decisamente troppo, per cui bisogna stare attenti e togliere la scheda al momento giusto. Prima di fare la stagnatura vera e propria, vi consiglio di verificare le temperature che raggiungete.&lt;br /&gt;
&lt;br /&gt;
==== PCB + componenti SMD ====&lt;br /&gt;
&lt;br /&gt;
Mettete un po' di stagno sulle piazzole del componente smd, giusto una gocciolina. La piazzola dev'essere bella lucente e con un po' di pancia ma non troppa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reflowing ===&lt;br /&gt;
&lt;br /&gt;
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.&lt;br /&gt;
Mettete il PCB con le piazzole preparate nella padella e accendete il gas. La temperatura salirà velocemente, intorno ai 200-220 gradi lo stagno comincia a sciogliersi, a queso punto appoggiate il componente SMD, vedrete che si posiziona da solo nella sua collocazione. Questa operazione deve durare qualche secondo, mentre la temperatura è a 220-230 gradi. Togliete con le pinze il pcb dalla padella e spegnete il gas.&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4072</id>
		<title>Padella reflowing</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4072"/>
		<updated>2015-03-09T17:42:24Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Sonda di temperatura */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Padella reflowing ==&lt;br /&gt;
&lt;br /&gt;
Tecnica di reflowing casalingo per componenti SMD&lt;br /&gt;
&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative&lt;br /&gt;
* usate tutte le precauzioni del caso: guanti, pinze, etc&lt;br /&gt;
* utilizzate una padella che non utilizzerete più per uso alimentare&lt;br /&gt;
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cosa serve ===&lt;br /&gt;
&lt;br /&gt;
* sonda di temperatura&lt;br /&gt;
* padella&lt;br /&gt;
* PCB + componenti SMD&lt;br /&gt;
* stagnatore + stagno, nastro kapton, pinzette per SMD&lt;br /&gt;
&lt;br /&gt;
==== Sonda di temperatura ====&lt;br /&gt;
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato cose che avevo già in casa, cioè:&lt;br /&gt;
* termistore EPCOS 100k, ricambio della stampante 3d&lt;br /&gt;
* lcd 16x2 + backpack&lt;br /&gt;
* attiny85&lt;br /&gt;
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805&lt;br /&gt;
* regolatore di tensione&lt;br /&gt;
&lt;br /&gt;
Per il collegamento del termistore [http://reprap.org/wiki/Temperature_Sensor_1_1 vi consiglio questo schema], lo sketch che ho utilizzato invece è una [https://learn.adafruit.com/thermistor/using-a-thermistor modifica di questo]&lt;br /&gt;
&lt;br /&gt;
==== Padella ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.&lt;br /&gt;
&lt;br /&gt;
Mettete la sonda sulla superficie della padella con un pezzo di nastro Kapton e fate qualche prova di temperatura. Nel mio fornellino più piccolo, col fuoco al minimo, la padella raggiunge i 300 gradi. Decisamente troppo, per cui bisogna stare attenti e togliere la scheda al momento giusto. Prima di fare la stagnatura vera e propria, vi consiglio di verificare le temperature che raggiungete.&lt;br /&gt;
&lt;br /&gt;
==== PCB + componenti SMD ====&lt;br /&gt;
&lt;br /&gt;
Mettete un po' di stagno sulle piazzole del componente smd, giusto una gocciolina. La piazzola dev'essere bella lucente e con un po' di pancia ma non troppa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reflowing ===&lt;br /&gt;
&lt;br /&gt;
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.&lt;br /&gt;
Mettete il PCB con le piazzole preparate nella padella e accendete il gas. La temperatura salirà velocemente, intorno ai 200-220 gradi lo stagno comincia a sciogliersi, a queso punto appoggiate il componente SMD, vedrete che si posiziona da solo nella sua collocazione. Questa operazione deve durare qualche secondo, mentre la temperatura è a 220-230 gradi. Togliete con le pinze il pcb dalla padella e spegnete il gas.&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda3.jpg&amp;diff=4071</id>
		<title>File:Padella reflowing sonda3.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda3.jpg&amp;diff=4071"/>
		<updated>2015-03-09T17:42:19Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda2.jpg&amp;diff=4070</id>
		<title>File:Padella reflowing sonda2.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda2.jpg&amp;diff=4070"/>
		<updated>2015-03-09T17:41:19Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda1.jpg&amp;diff=4069</id>
		<title>File:Padella reflowing sonda1.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda1.jpg&amp;diff=4069"/>
		<updated>2015-03-09T17:39:03Z</updated>

		<summary type="html">&lt;p&gt;Zasf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4068</id>
		<title>Padella reflowing</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Padella_reflowing&amp;diff=4068"/>
		<updated>2015-03-09T17:37:37Z</updated>

		<summary type="html">&lt;p&gt;Zasf: Creata pagina con ' == Padella reflowing ==  Tecnica di reflowing casalingo per componenti SMD  AVVERTENZE: * ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Padella reflowing ==&lt;br /&gt;
&lt;br /&gt;
Tecnica di reflowing casalingo per componenti SMD&lt;br /&gt;
&lt;br /&gt;
AVVERTENZE:&lt;br /&gt;
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative&lt;br /&gt;
* usate tutte le precauzioni del caso: guanti, pinze, etc&lt;br /&gt;
* utilizzate una padella che non utilizzerete più per uso alimentare&lt;br /&gt;
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cosa serve ===&lt;br /&gt;
&lt;br /&gt;
* sonda di temperatura&lt;br /&gt;
* padella&lt;br /&gt;
* PCB + componenti SMD&lt;br /&gt;
* stagnatore + stagno, nastro kapton, pinzette per SMD&lt;br /&gt;
&lt;br /&gt;
==== Sonda di temperatura ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato cose che avevo già in casa, cioè:&lt;br /&gt;
* termistore EPCOS 100k, ricambio della stampante 3d&lt;br /&gt;
* lcd 16x2 + backpack&lt;br /&gt;
* attiny85&lt;br /&gt;
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805&lt;br /&gt;
* regolatore di tensione&lt;br /&gt;
&lt;br /&gt;
Per il collegamento del termistore [http://reprap.org/wiki/Temperature_Sensor_1_1 vi consiglio questo schema], lo sketch che ho utilizzato invece è una [https://learn.adafruit.com/thermistor/using-a-thermistor modifica di questo]&lt;br /&gt;
&lt;br /&gt;
==== Padella ====&lt;br /&gt;
&lt;br /&gt;
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.&lt;br /&gt;
&lt;br /&gt;
Mettete la sonda sulla superficie della padella con un pezzo di nastro Kapton e fate qualche prova di temperatura. Nel mio fornellino più piccolo, col fuoco al minimo, la padella raggiunge i 300 gradi. Decisamente troppo, per cui bisogna stare attenti e togliere la scheda al momento giusto. Prima di fare la stagnatura vera e propria, vi consiglio di verificare le temperature che raggiungete.&lt;br /&gt;
&lt;br /&gt;
==== PCB + componenti SMD ====&lt;br /&gt;
&lt;br /&gt;
Mettete un po' di stagno sulle piazzole del componente smd, giusto una gocciolina. La piazzola dev'essere bella lucente e con un po' di pancia ma non troppa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reflowing ===&lt;br /&gt;
&lt;br /&gt;
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.&lt;br /&gt;
Mettete il PCB con le piazzole preparate nella padella e accendete il gas. La temperatura salirà velocemente, intorno ai 200-220 gradi lo stagno comincia a sciogliersi, a queso punto appoggiate il componente SMD, vedrete che si posiziona da solo nella sua collocazione. Questa operazione deve durare qualche secondo, mentre la temperatura è a 220-230 gradi. Togliete con le pinze il pcb dalla padella e spegnete il gas.&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&amp;diff=4067</id>
		<title>Gruppo CNC</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&amp;diff=4067"/>
		<updated>2015-03-09T17:15:50Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Idee folli */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gruppo&lt;br /&gt;
|nome=CNC&lt;br /&gt;
|descrizione=stampante 3D e tornio&lt;br /&gt;
|icona=Icon_gruppo_3d.jpeg&lt;br /&gt;
|mailinglist=http://liste.raspibo.org/wws/subscribe/cnc-3d Vuoi partecipare o solamente essere informato? Iscriviti alla mailing list&lt;br /&gt;
|iscritti=(impazienti) &lt;br /&gt;
Mirco [http://raspibo.ofpcina.net/profile/Mirco.B  Mirco.B], Gabriele [http://raspibo.ofpcina.net/profile/gielle Gielle], &lt;br /&gt;
Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], Alessandro [http://raspibo.ofpcina.net/profile/axr75 axr75], &lt;br /&gt;
Daniele [http://raspibo.ofpcina.net/profile/dancast78 dancast78], [http://raspibo.ofpcina.net/profile/robertoc RobertoC] , Savino [http://raspibo.ofpcina.net/profile/thegamer thegamer]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(polleggiati)&amp;lt;br/&amp;gt; &lt;br /&gt;
Gabriele[http://raspibo.ofpcina.net/profile/gielle Gielle], Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], &lt;br /&gt;
Yogi, Andrea, Giacomo [http://raspibo.ofpcina.net/profile/eineki eineki], [http://raspibo.ofpcina.net/profile/renzo Renzo], &lt;br /&gt;
Davide, [http://raspibo.ofpcina.net/profile/sini Psini], [http://raspibo.ofpcina.net/profile/dave4rp Dave4rp],&lt;br /&gt;
Walter [http://raspibo.ofpcina.net/profile/wave wave], [http://raspibo.ofpcina.net/profile/GioCupo Giovanni]}}&lt;br /&gt;
&lt;br /&gt;
= Prossimo incontro =&lt;br /&gt;
Proponilo in [http://liste.raspibo.org/wws/compose_mail/cnc-3d lista]!&lt;br /&gt;
&lt;br /&gt;
Ad esempio in una delle prossime date di NonCorso o in una delle serate al MakerSpace.&lt;br /&gt;
&lt;br /&gt;
= Progetti in corso =&lt;br /&gt;
&lt;br /&gt;
* [[3Drag]]: un gruppo ha fatto un acquisto collettivo di una [[3Drag]], la stampante proposta da  [http://3dprint.elettronicain.it/ Futura Elettronica]. [[3Drag|Qui]] il passo passo dell'assemblaggio e le esperienze d'utilizzo.&lt;br /&gt;
* [[Stampante_3D_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B].&lt;br /&gt;
* Assemblaggio e costruzione di [[raspiBo_stampante_3D_001|stampanti 3D]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Progetti completati =&lt;br /&gt;
&lt;br /&gt;
[[Fresa_CNC_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B]&lt;br /&gt;
&lt;br /&gt;
= Idee folli =&lt;br /&gt;
* [[Padella reflowing]]&lt;br /&gt;
&lt;br /&gt;
= Materiali =&lt;br /&gt;
&lt;br /&gt;
'''Componenti meccanici:'''&lt;br /&gt;
*Viti a ricircolazione di sfere,[http://www.servomech.it/Pdf/prodotti/SERVOMECH-catalogo-viti-e-madreviti-a-sfere.pdf guida]&lt;br /&gt;
&lt;br /&gt;
*Guide e tavole lineari,[http://www.bettsistemi.com/index.php?page=hbbett&amp;amp;prod=3&amp;amp;sez=pano catalogo]&lt;br /&gt;
&lt;br /&gt;
'''Elettronica'''&lt;br /&gt;
*[http://reprap.org/wiki/Sanguinololu Sanguinololu]&lt;br /&gt;
*[[Programmazione di Sanguinololu]]&lt;br /&gt;
&lt;br /&gt;
'''Software'''&lt;br /&gt;
*[http://www.linuxcnc.org/ Linux CNC]&lt;br /&gt;
*[http://slic3r.org/about  Slic3r] G-code generator for 3D printers   [[Installazione Slic3r su Debian]]&lt;br /&gt;
*[https://github.com/ErikZalm/Marlin Marlin] Firmware per scheda di controllo&lt;br /&gt;
*[http://www.thingiverse.com/thing:35248 GCode Analyzer/Visualizer] Visualizza il gcode dopo lo slicing permette di vedere il percorso che seguirà l'estrusore, è una applicazione web che gira anche in locale.&lt;br /&gt;
*[[http://www.raspibo.org/wiki/index.php/Blender Blender]] slides intrduttive all'uso di blender per la stampa 3D&lt;br /&gt;
&lt;br /&gt;
'''Guide pratiche'''&lt;br /&gt;
*[[Cronaca dei miei primi esperimenti di CNC]] le indicazioni di Renzo per configurazione dei software e delle seriali&lt;br /&gt;
*[[Estrudere un file vettoriale]] per creare un file stl&lt;br /&gt;
*[[Convertire stl in gcode]], da modello 3D a comandi per la stampante&lt;br /&gt;
&lt;br /&gt;
= Incontri =&lt;br /&gt;
*[[10 luglio 2013 - Introduzione alla stampa 3D]]&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&amp;diff=4066</id>
		<title>Gruppo CNC</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&amp;diff=4066"/>
		<updated>2015-03-09T17:12:05Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Idee folli */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gruppo&lt;br /&gt;
|nome=CNC&lt;br /&gt;
|descrizione=stampante 3D e tornio&lt;br /&gt;
|icona=Icon_gruppo_3d.jpeg&lt;br /&gt;
|mailinglist=http://liste.raspibo.org/wws/subscribe/cnc-3d Vuoi partecipare o solamente essere informato? Iscriviti alla mailing list&lt;br /&gt;
|iscritti=(impazienti) &lt;br /&gt;
Mirco [http://raspibo.ofpcina.net/profile/Mirco.B  Mirco.B], Gabriele [http://raspibo.ofpcina.net/profile/gielle Gielle], &lt;br /&gt;
Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], Alessandro [http://raspibo.ofpcina.net/profile/axr75 axr75], &lt;br /&gt;
Daniele [http://raspibo.ofpcina.net/profile/dancast78 dancast78], [http://raspibo.ofpcina.net/profile/robertoc RobertoC] , Savino [http://raspibo.ofpcina.net/profile/thegamer thegamer]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(polleggiati)&amp;lt;br/&amp;gt; &lt;br /&gt;
Gabriele[http://raspibo.ofpcina.net/profile/gielle Gielle], Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], &lt;br /&gt;
Yogi, Andrea, Giacomo [http://raspibo.ofpcina.net/profile/eineki eineki], [http://raspibo.ofpcina.net/profile/renzo Renzo], &lt;br /&gt;
Davide, [http://raspibo.ofpcina.net/profile/sini Psini], [http://raspibo.ofpcina.net/profile/dave4rp Dave4rp],&lt;br /&gt;
Walter [http://raspibo.ofpcina.net/profile/wave wave], [http://raspibo.ofpcina.net/profile/GioCupo Giovanni]}}&lt;br /&gt;
&lt;br /&gt;
= Prossimo incontro =&lt;br /&gt;
Proponilo in [http://liste.raspibo.org/wws/compose_mail/cnc-3d lista]!&lt;br /&gt;
&lt;br /&gt;
Ad esempio in una delle prossime date di NonCorso o in una delle serate al MakerSpace.&lt;br /&gt;
&lt;br /&gt;
= Progetti in corso =&lt;br /&gt;
&lt;br /&gt;
* [[3Drag]]: un gruppo ha fatto un acquisto collettivo di una [[3Drag]], la stampante proposta da  [http://3dprint.elettronicain.it/ Futura Elettronica]. [[3Drag|Qui]] il passo passo dell'assemblaggio e le esperienze d'utilizzo.&lt;br /&gt;
* [[Stampante_3D_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B].&lt;br /&gt;
* Assemblaggio e costruzione di [[raspiBo_stampante_3D_001|stampanti 3D]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Progetti completati =&lt;br /&gt;
&lt;br /&gt;
[[Fresa_CNC_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B]&lt;br /&gt;
&lt;br /&gt;
= Idee folli =&lt;br /&gt;
- [[Padella reflowing]]&lt;br /&gt;
&lt;br /&gt;
= Materiali =&lt;br /&gt;
&lt;br /&gt;
'''Componenti meccanici:'''&lt;br /&gt;
*Viti a ricircolazione di sfere,[http://www.servomech.it/Pdf/prodotti/SERVOMECH-catalogo-viti-e-madreviti-a-sfere.pdf guida]&lt;br /&gt;
&lt;br /&gt;
*Guide e tavole lineari,[http://www.bettsistemi.com/index.php?page=hbbett&amp;amp;prod=3&amp;amp;sez=pano catalogo]&lt;br /&gt;
&lt;br /&gt;
'''Elettronica'''&lt;br /&gt;
*[http://reprap.org/wiki/Sanguinololu Sanguinololu]&lt;br /&gt;
*[[Programmazione di Sanguinololu]]&lt;br /&gt;
&lt;br /&gt;
'''Software'''&lt;br /&gt;
*[http://www.linuxcnc.org/ Linux CNC]&lt;br /&gt;
*[http://slic3r.org/about  Slic3r] G-code generator for 3D printers   [[Installazione Slic3r su Debian]]&lt;br /&gt;
*[https://github.com/ErikZalm/Marlin Marlin] Firmware per scheda di controllo&lt;br /&gt;
*[http://www.thingiverse.com/thing:35248 GCode Analyzer/Visualizer] Visualizza il gcode dopo lo slicing permette di vedere il percorso che seguirà l'estrusore, è una applicazione web che gira anche in locale.&lt;br /&gt;
*[[http://www.raspibo.org/wiki/index.php/Blender Blender]] slides intrduttive all'uso di blender per la stampa 3D&lt;br /&gt;
&lt;br /&gt;
'''Guide pratiche'''&lt;br /&gt;
*[[Cronaca dei miei primi esperimenti di CNC]] le indicazioni di Renzo per configurazione dei software e delle seriali&lt;br /&gt;
*[[Estrudere un file vettoriale]] per creare un file stl&lt;br /&gt;
*[[Convertire stl in gcode]], da modello 3D a comandi per la stampante&lt;br /&gt;
&lt;br /&gt;
= Incontri =&lt;br /&gt;
*[[10 luglio 2013 - Introduzione alla stampa 3D]]&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&amp;diff=4065</id>
		<title>Gruppo CNC</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&amp;diff=4065"/>
		<updated>2015-03-09T17:11:25Z</updated>

		<summary type="html">&lt;p&gt;Zasf: /* Idee folli */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gruppo&lt;br /&gt;
|nome=CNC&lt;br /&gt;
|descrizione=stampante 3D e tornio&lt;br /&gt;
|icona=Icon_gruppo_3d.jpeg&lt;br /&gt;
|mailinglist=http://liste.raspibo.org/wws/subscribe/cnc-3d Vuoi partecipare o solamente essere informato? Iscriviti alla mailing list&lt;br /&gt;
|iscritti=(impazienti) &lt;br /&gt;
Mirco [http://raspibo.ofpcina.net/profile/Mirco.B  Mirco.B], Gabriele [http://raspibo.ofpcina.net/profile/gielle Gielle], &lt;br /&gt;
Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], Alessandro [http://raspibo.ofpcina.net/profile/axr75 axr75], &lt;br /&gt;
Daniele [http://raspibo.ofpcina.net/profile/dancast78 dancast78], [http://raspibo.ofpcina.net/profile/robertoc RobertoC] , Savino [http://raspibo.ofpcina.net/profile/thegamer thegamer]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(polleggiati)&amp;lt;br/&amp;gt; &lt;br /&gt;
Gabriele[http://raspibo.ofpcina.net/profile/gielle Gielle], Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], &lt;br /&gt;
Yogi, Andrea, Giacomo [http://raspibo.ofpcina.net/profile/eineki eineki], [http://raspibo.ofpcina.net/profile/renzo Renzo], &lt;br /&gt;
Davide, [http://raspibo.ofpcina.net/profile/sini Psini], [http://raspibo.ofpcina.net/profile/dave4rp Dave4rp],&lt;br /&gt;
Walter [http://raspibo.ofpcina.net/profile/wave wave], [http://raspibo.ofpcina.net/profile/GioCupo Giovanni]}}&lt;br /&gt;
&lt;br /&gt;
= Prossimo incontro =&lt;br /&gt;
Proponilo in [http://liste.raspibo.org/wws/compose_mail/cnc-3d lista]!&lt;br /&gt;
&lt;br /&gt;
Ad esempio in una delle prossime date di NonCorso o in una delle serate al MakerSpace.&lt;br /&gt;
&lt;br /&gt;
= Progetti in corso =&lt;br /&gt;
&lt;br /&gt;
* [[3Drag]]: un gruppo ha fatto un acquisto collettivo di una [[3Drag]], la stampante proposta da  [http://3dprint.elettronicain.it/ Futura Elettronica]. [[3Drag|Qui]] il passo passo dell'assemblaggio e le esperienze d'utilizzo.&lt;br /&gt;
* [[Stampante_3D_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B].&lt;br /&gt;
* Assemblaggio e costruzione di [[raspiBo_stampante_3D_001|stampanti 3D]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Progetti completati =&lt;br /&gt;
&lt;br /&gt;
[[Fresa_CNC_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B]&lt;br /&gt;
&lt;br /&gt;
= Idee folli =&lt;br /&gt;
- [[padella_reflowing]]&lt;br /&gt;
&lt;br /&gt;
= Materiali =&lt;br /&gt;
&lt;br /&gt;
'''Componenti meccanici:'''&lt;br /&gt;
*Viti a ricircolazione di sfere,[http://www.servomech.it/Pdf/prodotti/SERVOMECH-catalogo-viti-e-madreviti-a-sfere.pdf guida]&lt;br /&gt;
&lt;br /&gt;
*Guide e tavole lineari,[http://www.bettsistemi.com/index.php?page=hbbett&amp;amp;prod=3&amp;amp;sez=pano catalogo]&lt;br /&gt;
&lt;br /&gt;
'''Elettronica'''&lt;br /&gt;
*[http://reprap.org/wiki/Sanguinololu Sanguinololu]&lt;br /&gt;
*[[Programmazione di Sanguinololu]]&lt;br /&gt;
&lt;br /&gt;
'''Software'''&lt;br /&gt;
*[http://www.linuxcnc.org/ Linux CNC]&lt;br /&gt;
*[http://slic3r.org/about  Slic3r] G-code generator for 3D printers   [[Installazione Slic3r su Debian]]&lt;br /&gt;
*[https://github.com/ErikZalm/Marlin Marlin] Firmware per scheda di controllo&lt;br /&gt;
*[http://www.thingiverse.com/thing:35248 GCode Analyzer/Visualizer] Visualizza il gcode dopo lo slicing permette di vedere il percorso che seguirà l'estrusore, è una applicazione web che gira anche in locale.&lt;br /&gt;
*[[http://www.raspibo.org/wiki/index.php/Blender Blender]] slides intrduttive all'uso di blender per la stampa 3D&lt;br /&gt;
&lt;br /&gt;
'''Guide pratiche'''&lt;br /&gt;
*[[Cronaca dei miei primi esperimenti di CNC]] le indicazioni di Renzo per configurazione dei software e delle seriali&lt;br /&gt;
*[[Estrudere un file vettoriale]] per creare un file stl&lt;br /&gt;
*[[Convertire stl in gcode]], da modello 3D a comandi per la stampante&lt;br /&gt;
&lt;br /&gt;
= Incontri =&lt;br /&gt;
*[[10 luglio 2013 - Introduzione alla stampa 3D]]&lt;/div&gt;</summary>
		<author><name>Zasf</name></author>
	</entry>
</feed>