https://www.raspibo.org/wiki/api.php?action=feedcontributions&user=Zasf&feedformat=atomraspibo - Contributi utente [it]2024-03-29T10:53:58ZContributi utenteMediaWiki 1.35.5https://www.raspibo.org/wiki/index.php?title=ESP8266/collegamentoarduino&diff=4359ESP8266/collegamentoarduino2015-05-27T20:40:30Z<p>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...'</p>
<hr />
<div>[[File:Arduino-to-ESP8266.jpg|400px]]<br />
<br />
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<br />
<br />
== Sketch ==<br />
// Basic serial communication with ESP8266<br />
// Uses serial monitor for communication with ESP8266<br />
//<br />
// Pins<br />
// Arduino pin 2 (RX) to ESP8266 TX<br />
// Arduino pin 3 to voltage divider then to ESP8266 RX<br />
// Connect GND from the Arduiono to GND on the ESP8266<br />
// Pull ESP8266 CH_PD HIGH<br />
//<br />
// When a command is entered in to the serial monitor on the computer <br />
// the Arduino will relay it to the ESP8266<br />
//<br />
#include <SoftwareSerial.h><br />
SoftwareSerial ESPserial(2, 3); // RX | TX<br />
void setup() <br />
{<br />
pinMode(LEDPIN, OUTPUT);<br />
Serial.begin(9600); // communication with the host computer<br />
//while (!Serial) { ; }<br />
// Start the software serial for communication with the ESP8266<br />
ESPserial.begin(9600); <br />
Serial.println("");<br />
Serial.println("Remember to to set Both NL & CR in the serial monitor.");<br />
Serial.println("Ready");<br />
Serial.println(""); <br />
}<br />
void loop() <br />
{<br />
// listen for communication from the ESP8266 and then write it to the serial monitor<br />
if ( ESPserial.available() ) { Serial.write( ESPserial.read() ); }<br />
// listen for user input and send it to the ESP8266<br />
if ( Serial.available() ) { ESPserial.write( Serial.read() ); }<br />
}<br />
<br />
cambiare la velocità del seriale in base al firmware del ESP8266</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Arduino-to-ESP8266.jpg&diff=4358File:Arduino-to-ESP8266.jpg2015-05-27T20:35:50Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&diff=4357Elettronica Componenti2015-05-27T20:34:57Z<p>Zasf: </p>
<hr />
<div>[[Categoria:Elettronica]]<br />
<br />
[[1Wire_e_il_sensore_di_temperatura_ds18s10|Sensore di temperatura DS18S10 (1 wire)]]<br />
<br />
[[Misurare_la_Temperatura|Sensore di temperatura LM35 (Analogico)]]<br />
<br />
[[Input_Analogico_SPI:_gli_integrati_MCP300x|Integrato MCP300x (Ingressi analogici)]]<br />
<br />
[[Input_analogico_I2C:_MCP3424|Integrato MCP3424 (Ingressi analogici)]]<br />
<br />
[[GPIO_aggiuntivi_MCP23x17|Integrato MCP23x17 (Ingressi/Uscite digitali)]]<br />
<br />
[[Collegare_una_porta_seriale_RS-232|Integrato MAX3232 (RS-232)]]<br />
<br />
[[ESP8266|Integrato wireless ESP8266]]<br />
<br />
- [[ESP8266/templogger | sensore di temperatura wireless basato su ESP8266]]<br />
<br />
- [[ESP8266/collegamentoarduino | collegare ESP8266 ad Arduino]]<br />
<br />
[[Display LCD]]</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&diff=4356Elettronica Componenti2015-05-27T20:34:08Z<p>Zasf: </p>
<hr />
<div>[[Categoria:Elettronica]]<br />
<br />
[[1Wire_e_il_sensore_di_temperatura_ds18s10|Sensore di temperatura DS18S10 (1 wire)]]<br />
<br />
[[Misurare_la_Temperatura|Sensore di temperatura LM35 (Analogico)]]<br />
<br />
[[Input_Analogico_SPI:_gli_integrati_MCP300x|Integrato MCP300x (Ingressi analogici)]]<br />
<br />
[[Input_analogico_I2C:_MCP3424|Integrato MCP3424 (Ingressi analogici)]]<br />
<br />
[[GPIO_aggiuntivi_MCP23x17|Integrato MCP23x17 (Ingressi/Uscite digitali)]]<br />
<br />
[[Collegare_una_porta_seriale_RS-232|Integrato MAX3232 (RS-232)]]<br />
<br />
[[ESP8266|Integrato wireless ESP8266]]<br />
<br />
- [[ESP8266/templogger | sensore di temperatura wireless basato su ESP8266]]<br />
<br />
[[Display LCD]]</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Elettronica_Componenti&diff=4355Elettronica Componenti2015-05-27T20:33:32Z<p>Zasf: </p>
<hr />
<div>[[Categoria:Elettronica]]<br />
<br />
[[1Wire_e_il_sensore_di_temperatura_ds18s10|Sensore di temperatura DS18S10 (1 wire)]]<br />
<br />
[[Misurare_la_Temperatura|Sensore di temperatura LM35 (Analogico)]]<br />
<br />
[[Input_Analogico_SPI:_gli_integrati_MCP300x|Integrato MCP300x (Ingressi analogici)]]<br />
<br />
[[Input_analogico_I2C:_MCP3424|Integrato MCP3424 (Ingressi analogici)]]<br />
<br />
[[GPIO_aggiuntivi_MCP23x17|Integrato MCP23x17 (Ingressi/Uscite digitali)]]<br />
<br />
[[Collegare_una_porta_seriale_RS-232|Integrato MAX3232 (RS-232)]]<br />
<br />
[[ESP8266|Integrato wireless ESP8266]]<br />
<br />
- [[ESP8266/wifitemplogger | sensore di temperatura wireless basato su ESP8266]]<br />
<br />
[[Display LCD]]</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&diff=4296ESP8266/templogger2015-05-01T14:28:56Z<p>Zasf: </p>
<hr />
<div>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]<br />
<br />
[[File:wifi_temp_logger2.jpg|400px]]<br />
<br />
<br />
== Schema elettrico ==<br />
[[File:Wifi_temp_logger2_schem.png|400px]]<br />
<br />
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.<br />
<br />
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.<br />
<br />
== Firmware ==<br />
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!<br />
<br />
Scaricare l'ultima versione di Nodemcu e attraverso ESPlorer caricare i tre sketch lua<br />
=== ds18b20.lua ===<br />
--------------------------------------------------------------------------------<br />
-- DS18B20 one wire module for NODEMCU<br />
-- NODEMCU TEAM<br />
-- LICENCE: http://opensource.org/licenses/MIT<br />
-- Vowstar <vowstar@nodemcu.com><br />
-- 2015/02/14 sza2 <sza2trash@gmail.com> Fix for negative values<br />
--------------------------------------------------------------------------------<br />
-- Set module name as parameter of require<br />
local modname = ...<br />
local M = {}<br />
_G[modname] = M<br />
--------------------------------------------------------------------------------<br />
-- Local used variables<br />
--------------------------------------------------------------------------------<br />
-- DS18B20 dq pin<br />
local pin = nil<br />
-- DS18B20 default pin<br />
local defaultPin = 9<br />
--------------------------------------------------------------------------------<br />
-- Local used modules<br />
--------------------------------------------------------------------------------<br />
-- Table module<br />
local table = table<br />
-- String module<br />
local string = string<br />
-- One wire module<br />
local ow = ow<br />
-- Timer module<br />
local tmr = tmr<br />
-- Limited to local environment<br />
setfenv(1,M)<br />
--------------------------------------------------------------------------------<br />
-- Implementation<br />
--------------------------------------------------------------------------------<br />
C = 0<br />
F = 1<br />
K = 2<br />
function setup(dq)<br />
pin = dq<br />
if(pin == nil) then<br />
pin = defaultPin<br />
end<br />
ow.setup(pin)<br />
end<br />
function addrs()<br />
setup(pin)<br />
tbl = {}<br />
ow.reset_search(pin)<br />
repeat<br />
addr = ow.search(pin)<br />
if(addr ~= nil) then<br />
table.insert(tbl, addr)<br />
end<br />
tmr.wdclr()<br />
until (addr == nil)<br />
ow.reset_search(pin)<br />
return tbl<br />
end<br />
function readNumber(addr, unit)<br />
result = nil<br />
setup(pin)<br />
flag = false<br />
if(addr == nil) then<br />
ow.reset_search(pin)<br />
count = 0<br />
repeat<br />
count = count + 1<br />
addr = ow.search(pin)<br />
tmr.wdclr()<br />
until((addr ~= nil) or (count > 100))<br />
ow.reset_search(pin)<br />
end<br />
if(addr == nil) then<br />
return result<br />
end<br />
crc = ow.crc8(string.sub(addr,1,7))<br />
if (crc == addr:byte(8)) then<br />
if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then<br />
-- print("Device is a DS18S20 family device.")<br />
ow.reset(pin)<br />
ow.select(pin, addr)<br />
ow.write(pin, 0x44, 1)<br />
-- tmr.delay(1000000)<br />
present = ow.reset(pin)<br />
ow.select(pin, addr)<br />
ow.write(pin,0xBE,1)<br />
-- print("P="..present)<br />
data = nil<br />
data = string.char(ow.read(pin))<br />
for i = 1, 8 do<br />
data = data .. string.char(ow.read(pin))<br />
end<br />
-- print(data:byte(1,9))<br />
crc = ow.crc8(string.sub(data,1,8))<br />
-- print("CRC="..crc)<br />
if (crc == data:byte(9)) then<br />
t = (data:byte(1) + data:byte(2) * 256)<br />
if (t > 32767) then<br />
t = t - 65536<br />
end<br />
if(unit == nil or unit == C) then<br />
t = t * 625<br />
elseif(unit == F) then<br />
t = t * 1125 + 320000<br />
elseif(unit == K) then<br />
t = t * 625 + 2731500<br />
else<br />
return nil<br />
end<br />
t = t / 10000<br />
-- print("Temperature="..t1.."."..t2.." Centigrade")<br />
-- result = t1.."."..t2<br />
return t<br />
end<br />
tmr.wdclr()<br />
else<br />
-- print("Device family is not recognized.")<br />
end<br />
else<br />
-- print("CRC is not valid!")<br />
end<br />
return result<br />
end<br />
function read(addr, unit)<br />
t = readNumber(addr, unit)<br />
if (t == nil) then<br />
return nil<br />
else<br />
return t<br />
end<br />
end<br />
-- Return module table<br />
return M<br />
<br />
=== postThingSpeak.lua ===<br />
function postThingSpeak(level)<br />
conn=net.createConnection(net.TCP, 0)<br />
conn:on("receive", function(conn, payload)<br />
if (string.find(payload, "Status: 200 OK") ~= nil) then<br />
print("Posted OK");<br />
end<br />
end)<br />
conn:on("connection", function(connout, payloadout)<br />
print ("Posting...");<br />
conn:send("GET /update?api_key=CHIAVE&field1=" .. level<br />
.. " HTTP/1.1\r\n"<br />
.. "Host: api.thingspeak.com\r\n"<br />
.. "Connection: close\r\n"<br />
.. "Accept: */*\r\n"<br />
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"<br />
.. "\r\n")<br />
end)<br />
conn:on("disconnection", function(connout, payloadout)<br />
connout:close();<br />
collectgarbage();<br />
end)<br />
conn:connect(80,'184.106.153.149') -- api.thingspeak.com 184.106.153.149<br />
end<br />
<br />
Sostituire CHIAVE con la chiave ottenuta dalla registrazione su Thingspeak.com<br />
<br />
=== init.lua ===<br />
--init.lua<br />
require("postThingSpeak")<br />
ledPin = 3 --> GPIO0<br />
value = gpio.LOW<br />
-- Initialise the pin<br />
gpio.mode(ledPin, gpio.OUTPUT)<br />
gpio.write(ledPin, value)<br />
print("Setting up WIFI...")<br />
wifi.setmode(wifi.STATION)<br />
wifi.sta.config("ssid","pw")<br />
wifi.sta.connect()<br />
tmr.alarm(1, 30*1000, 1, function()<br />
t = require("ds18b20")<br />
tempPin = 4 --> GPIO2<br />
t.setup(tempPin)<br />
temp = t.read()<br />
print("Temperature: "..temp.."C")<br />
print("Sending data to thingspeak.com")<br />
postThingSpeak(temp)<br />
-- Don't forget to release it after use<br />
t = nil<br />
ds18b20 = nil<br />
package.loaded["ds18b20"]=nil<br />
end)<br />
<br />
Sostiture ssid e pw con il nome del access point e la password<br />
<br />
<br />
== ThingSpeak ==<br />
<br />
https://thingspeak.com/channels/32934<br />
<br />
== Riferimenti ==<br />
- http://www.instructables.com/id/Low-cost-WIFI-temperature-data-logger-based-on-ESP/?ALLSTEPS<br />
- https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_modules/ds18b20/ds18b20.lua</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=ESP8266&diff=4295ESP82662015-05-01T14:27:28Z<p>Zasf: </p>
<hr />
<div>Negli ultimi tempi ho visto diversi articoli riguardanto un modulo WiFi low cost venduto principalmente da siti cinesi. <br />
<br />
Il prezzo è veramente interessante si va da 3 a 5 dollari mediamente. <br />
<br />
[[File:VariantiESP8266.jpg|400px|thumb|right|Vari modelli ESP8266]]<br />
<br />
Me ne sono procurati alcuni pezzi e qui raccolgo alcune notizie in vista di usarli in qualche progetto.<br />
<br />
'''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.<br />
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.'''<br />
<br />
Passiamo ai collegamenti, oltre all'alimentazione ed ai collegamenti TX - RX, per dialogare con il modulo va collegato a Vcc il pin CH_PD.<br />
<br />
Quando il modulo viene alimentato si accende un led rosso e lamepggia per un attimo il led blu.<br />
<br />
Ci sono diverse versioni della board in giro, e con diverse versioni di firmware che comunicano in seriale a diverse velocità. <br />
<br />
<br />
[[File:Minicom_flow.png]]<br />
<br />
<br />
I firmware Version:0.9.2.2 comunicano a 9600 mentre quelli più recenti a 57600 e 115200. <br />
<br />
<br />
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.<br />
<br />
[[File:Minicom.png]]<br />
<br />
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.<br />
<br />
Per chi usa screen ho trovato queste indicazioni<br />
<br />
It’s possible to use GNU Screen out of the box with the default version of the firmware (00160901)<br />
which expects Carriage-Return-only line endings, e.g. (on OS X):<br />
screen /dev/tty.usbserial-AB12345 115200<br />
Unfortunately the updated firmware versions require Carriage-Return-and-New-Line line endings and<br />
there appears to be no way to configure screen to send both with one key press. Instead, you need<br />
to press <enter> or Ctrl-M then follow that with Ctrl-J.<br />
You might have more success with something like minicom or picocom with later firmware versions.<br />
<br />
<br />
Il modulo si programma con i comandi AT in maiuscolo (forse anche questo dipende dalla versione del firmware) seguiti da enter:<br />
<br />
- AT risponde OK e serve a capire sel il modulo è in ascolto<br />
- AT+RST resetta il modulo<br />
- AT+CWMODE=<mode> (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<br />
- AT+CWLAP lancia una scansione degli access poinT di seguito un esempio di output<br />
<br />
AT+CWLAP<br />
+CWLAP:(3,"Cast_WiFi",-80,"00:22:b0:43:8d:7b",1)<br />
+CWLAP:(0,"D-Link DSL-2640B",-58,"b8:a3:86:e9:e2:6c",1)<br />
+CWLAP:(4,"Cast_WiFi",-49,"9c:97:26:d3:be:23",1)<br />
+CWLAP:(0,"NinuxBO",-56,"6a:72:51:00:df:f6",11)<br />
+CWLAP:(0,"NinuxBO-mesh",-57,"68:72:51:00:df:f6",11)<br />
+CWLAP:(0,"NinuxBO",-81,"12:fe:ed:2b:19:e2",11)<br />
+CWLAP:(3,"Cast_WiFi",-52,"a0:21:b7:ba:ff:d6",6)<br />
OK<br />
<br />
- AT+CWJAP="<access_point_name>","<password>" connette il modulo ad un access point <br />
<br />
AT+CWJAP="NinuxBO",""<br />
<br />
- AT+CWJAP? verifica a quale access point si è agganciato il modulo<br />
<br />
AT+CWJAP?<br />
+CWJAP:"NinuxBO"<br />
OK<br />
<br />
- AT+CIFSR verifica l'ip del modulo <br />
<br />
AT+CIFSR<br />
10.51.22.40<br />
OK<br />
<br />
<br />
<br />
+CWLAP:(3,"Cast_WiFi",-80,"00:22:b0:43:8d:7b",1)<br />
+CWLAP:(0,"D-Link DSL-2640B",-58,"b8:a3:86:e9:e2:6c",1)<br />
+CWLAP:(4,"Cast_WiFi",-49,"9c:97:26:d3:be:23",1)<br />
+CWLAP:(0,"NinuxBO",-56,"6a:72:51:00:df:f6",11)<br />
+CWLAP:(0,"NinuxBO-mesh",-57,"68:72:51:00:df:f6",11)<br />
+CWLAP:(0,"NinuxBO",-81,"12:fe:ed:2b:19:e2",11)<br />
+CWLAP:(3,"Cast_WiFi",-52,"a0:21:b7:ba:ff:d6",6)<br />
OK<br />
<br />
- AT+CWJAP="<access_point_name>","<password>" connette il modulo ad un access point <br />
<br />
AT+CWJAP="NinuxBO",""<br />
<br />
- AT+CWJAP? verifica a quale access point si è agganciato il modulo<br />
<br />
AT+CWJAP?<br />
+CWJAP:"NinuxBO"<br />
OK<br />
<br />
- AT+CIFSR verifica l'ip del modulo <br />
<br />
AT+CIFSR<br />
10.51.22.40<br />
OK<br />
<br />
=== Upload di un nuovo firmware ===<br />
<br />
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).<br />
<br />
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]):<br />
<br />
git clone https://github.com/themadinventor/esptool<br />
sudo python esptool.py --port /dev/ttyUSB0 write_flash 0x00000 nodemcu_latest.bin<br />
durante queste operazioni oltre all'avanzamento a video lampeggia il led blu<br />
<br />
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....<br />
<br />
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]]<br />
<br />
Ora si possono caricare degli script e qualcuno ha creato un [https://github.com/4refr0nt/luatool comodo script in python]<br />
<br />
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.<br />
<br />
Questo firmware permette ad esempio di collegarsi in wifi dal prompt in modo semplice digitando pochi comandi:<br />
<br />
ip = wifi.sta.getip()<br />
print(ip)<br />
--nil<br />
wifi.setmode(wifi.STATION)<br />
wifi.sta.config("SSID","password")<br />
ip = wifi.sta.getip()<br />
print(ip)<br />
--192.168.18.110<br />
<br />
<br />
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. <br />
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'''<br />
<br />
s=net.createServer(net.TCP,180) <br />
s:listen(23,function(c) <br />
c:on("receive",function(c,l)<br />
-- i comandi verranno scritti direttamente sulla porta seriale del microcontrollore <br />
print(l) <br />
end) <br />
end)<br />
<br />
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]<br />
<br />
Ci sono esempi in rete per creare sensori wifi, o comunicare a distanza lo stato di uno switch.<br />
<br />
Qui invece la lista dei [https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en comandi disponibili] per il firmware nodemcu.<br />
<br />
=== Problemi e debug ===<br />
<br />
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.<br />
<br />
=== Ide di sviluppo ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
[[File:ESPlorer.png|600px]]<br />
<br />
=== Riferimenti ===<br />
<br />
A questo indirizzo una lista completa dei comandi AT: [https://nurdspace.nl/ESP8266 ESP8266]<br />
<br />
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]<br />
<br />
[http://www.pighixxx.com/test/wp-content/uploads/2014/12/ESP8266Ref.pdf ESP8266Ref.pdf]<br />
<br />
https://github.com/esp8266<br />
<br />
http://www.esp8266.com/<br />
<br />
http://www.esp8266.com/wiki/doku.php</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&diff=4294ESP8266/templogger2015-05-01T14:24:41Z<p>Zasf: </p>
<hr />
<div>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]<br />
<br />
[[File:wifi_temp_logger2.jpg|400px]]<br />
<br />
<br />
== Schema elettrico ==<br />
[[File:Wifi_temp_logger2_schem.png|400px]]<br />
<br />
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.<br />
<br />
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.<br />
<br />
== Firmware ==<br />
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!<br />
<br />
Scaricare l'ultima versione di Nodemcu e attraverso ESPlorer caricare i tre sketch lua<br />
=== ds18b20.lua ===<br />
--------------------------------------------------------------------------------<br />
-- DS18B20 one wire module for NODEMCU<br />
-- NODEMCU TEAM<br />
-- LICENCE: http://opensource.org/licenses/MIT<br />
-- Vowstar <vowstar@nodemcu.com><br />
-- 2015/02/14 sza2 <sza2trash@gmail.com> Fix for negative values<br />
--------------------------------------------------------------------------------<br />
-- Set module name as parameter of require<br />
local modname = ...<br />
local M = {}<br />
_G[modname] = M<br />
--------------------------------------------------------------------------------<br />
-- Local used variables<br />
--------------------------------------------------------------------------------<br />
-- DS18B20 dq pin<br />
local pin = nil<br />
-- DS18B20 default pin<br />
local defaultPin = 9<br />
--------------------------------------------------------------------------------<br />
-- Local used modules<br />
--------------------------------------------------------------------------------<br />
-- Table module<br />
local table = table<br />
-- String module<br />
local string = string<br />
-- One wire module<br />
local ow = ow<br />
-- Timer module<br />
local tmr = tmr<br />
-- Limited to local environment<br />
setfenv(1,M)<br />
--------------------------------------------------------------------------------<br />
-- Implementation<br />
--------------------------------------------------------------------------------<br />
C = 0<br />
F = 1<br />
K = 2<br />
function setup(dq)<br />
pin = dq<br />
if(pin == nil) then<br />
pin = defaultPin<br />
end<br />
ow.setup(pin)<br />
end<br />
function addrs()<br />
setup(pin)<br />
tbl = {}<br />
ow.reset_search(pin)<br />
repeat<br />
addr = ow.search(pin)<br />
if(addr ~= nil) then<br />
table.insert(tbl, addr)<br />
end<br />
tmr.wdclr()<br />
until (addr == nil)<br />
ow.reset_search(pin)<br />
return tbl<br />
end<br />
function readNumber(addr, unit)<br />
result = nil<br />
setup(pin)<br />
flag = false<br />
if(addr == nil) then<br />
ow.reset_search(pin)<br />
count = 0<br />
repeat<br />
count = count + 1<br />
addr = ow.search(pin)<br />
tmr.wdclr()<br />
until((addr ~= nil) or (count > 100))<br />
ow.reset_search(pin)<br />
end<br />
if(addr == nil) then<br />
return result<br />
end<br />
crc = ow.crc8(string.sub(addr,1,7))<br />
if (crc == addr:byte(8)) then<br />
if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then<br />
-- print("Device is a DS18S20 family device.")<br />
ow.reset(pin)<br />
ow.select(pin, addr)<br />
ow.write(pin, 0x44, 1)<br />
-- tmr.delay(1000000)<br />
present = ow.reset(pin)<br />
ow.select(pin, addr)<br />
ow.write(pin,0xBE,1)<br />
-- print("P="..present)<br />
data = nil<br />
data = string.char(ow.read(pin))<br />
for i = 1, 8 do<br />
data = data .. string.char(ow.read(pin))<br />
end<br />
-- print(data:byte(1,9))<br />
crc = ow.crc8(string.sub(data,1,8))<br />
-- print("CRC="..crc)<br />
if (crc == data:byte(9)) then<br />
t = (data:byte(1) + data:byte(2) * 256)<br />
if (t > 32767) then<br />
t = t - 65536<br />
end<br />
if(unit == nil or unit == C) then<br />
t = t * 625<br />
elseif(unit == F) then<br />
t = t * 1125 + 320000<br />
elseif(unit == K) then<br />
t = t * 625 + 2731500<br />
else<br />
return nil<br />
end<br />
t = t / 10000<br />
-- print("Temperature="..t1.."."..t2.." Centigrade")<br />
-- result = t1.."."..t2<br />
return t<br />
end<br />
tmr.wdclr()<br />
else<br />
-- print("Device family is not recognized.")<br />
end<br />
else<br />
-- print("CRC is not valid!")<br />
end<br />
return result<br />
end<br />
function read(addr, unit)<br />
t = readNumber(addr, unit)<br />
if (t == nil) then<br />
return nil<br />
else<br />
return t<br />
end<br />
end<br />
-- Return module table<br />
return M<br />
<br />
=== postThingSpeak.lua ===<br />
function postThingSpeak(level)<br />
conn=net.createConnection(net.TCP, 0)<br />
conn:on("receive", function(conn, payload)<br />
if (string.find(payload, "Status: 200 OK") ~= nil) then<br />
print("Posted OK");<br />
end<br />
end)<br />
conn:on("connection", function(connout, payloadout)<br />
print ("Posting...");<br />
conn:send("GET /update?api_key=CHIAVE&field1=" .. level<br />
.. " HTTP/1.1\r\n"<br />
.. "Host: api.thingspeak.com\r\n"<br />
.. "Connection: close\r\n"<br />
.. "Accept: */*\r\n"<br />
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"<br />
.. "\r\n")<br />
end)<br />
conn:on("disconnection", function(connout, payloadout)<br />
connout:close();<br />
collectgarbage();<br />
end)<br />
conn:connect(80,'184.106.153.149') -- api.thingspeak.com 184.106.153.149<br />
end<br />
<br />
Sostituire CHIAVE con la chiave ottenuta dalla registrazione su Thingspeak.com<br />
<br />
=== init.lua ===<br />
--init.lua<br />
require("postThingSpeak")<br />
ledPin = 3 --> GPIO0<br />
value = gpio.LOW<br />
-- Initialise the pin<br />
gpio.mode(ledPin, gpio.OUTPUT)<br />
gpio.write(ledPin, value)<br />
print("Setting up WIFI...")<br />
wifi.setmode(wifi.STATION)<br />
wifi.sta.config("ssid","pw")<br />
wifi.sta.connect()<br />
tmr.alarm(1, 30*1000, 1, function()<br />
t = require("ds18b20")<br />
tempPin = 4 --> GPIO2<br />
t.setup(tempPin)<br />
temp = t.read()<br />
print("Temperature: "..temp.."C")<br />
print("Sending data to thingspeak.com")<br />
postThingSpeak(temp)<br />
-- Don't forget to release it after use<br />
t = nil<br />
ds18b20 = nil<br />
package.loaded["ds18b20"]=nil<br />
end)<br />
<br />
Sostiture ssid e pw con il nome del access point e la password<br />
<br />
<br />
== ThingSpeak ==<br />
<br />
https://thingspeak.com/channels/32934</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&diff=4293ESP8266/templogger2015-05-01T14:23:23Z<p>Zasf: </p>
<hr />
<div>== esp8266 temp logger ==<br />
<br />
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]<br />
<br />
[[File:wifi_temp_logger2.jpg|400px]]<br />
<br />
<br />
=== Schema elettrico ===<br />
[[File:Wifi_temp_logger2_schem.png|400px]]<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Firmware ===<br />
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!<br />
<br />
Scaricare l'ultima versione di Nodemcu e attraverso ESPlorer caricare i tre sketch lua<br />
==== ds18b20.lua ====<br />
--------------------------------------------------------------------------------<br />
-- DS18B20 one wire module for NODEMCU<br />
-- NODEMCU TEAM<br />
-- LICENCE: http://opensource.org/licenses/MIT<br />
-- Vowstar <vowstar@nodemcu.com><br />
-- 2015/02/14 sza2 <sza2trash@gmail.com> Fix for negative values<br />
--------------------------------------------------------------------------------<br />
-- Set module name as parameter of require<br />
local modname = ...<br />
local M = {}<br />
_G[modname] = M<br />
--------------------------------------------------------------------------------<br />
-- Local used variables<br />
--------------------------------------------------------------------------------<br />
-- DS18B20 dq pin<br />
local pin = nil<br />
-- DS18B20 default pin<br />
local defaultPin = 9<br />
--------------------------------------------------------------------------------<br />
-- Local used modules<br />
--------------------------------------------------------------------------------<br />
-- Table module<br />
local table = table<br />
-- String module<br />
local string = string<br />
-- One wire module<br />
local ow = ow<br />
-- Timer module<br />
local tmr = tmr<br />
-- Limited to local environment<br />
setfenv(1,M)<br />
--------------------------------------------------------------------------------<br />
-- Implementation<br />
--------------------------------------------------------------------------------<br />
C = 0<br />
F = 1<br />
K = 2<br />
function setup(dq)<br />
pin = dq<br />
if(pin == nil) then<br />
pin = defaultPin<br />
end<br />
ow.setup(pin)<br />
end<br />
function addrs()<br />
setup(pin)<br />
tbl = {}<br />
ow.reset_search(pin)<br />
repeat<br />
addr = ow.search(pin)<br />
if(addr ~= nil) then<br />
table.insert(tbl, addr)<br />
end<br />
tmr.wdclr()<br />
until (addr == nil)<br />
ow.reset_search(pin)<br />
return tbl<br />
end<br />
function readNumber(addr, unit)<br />
result = nil<br />
setup(pin)<br />
flag = false<br />
if(addr == nil) then<br />
ow.reset_search(pin)<br />
count = 0<br />
repeat<br />
count = count + 1<br />
addr = ow.search(pin)<br />
tmr.wdclr()<br />
until((addr ~= nil) or (count > 100))<br />
ow.reset_search(pin)<br />
end<br />
if(addr == nil) then<br />
return result<br />
end<br />
crc = ow.crc8(string.sub(addr,1,7))<br />
if (crc == addr:byte(8)) then<br />
if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then<br />
-- print("Device is a DS18S20 family device.")<br />
ow.reset(pin)<br />
ow.select(pin, addr)<br />
ow.write(pin, 0x44, 1)<br />
-- tmr.delay(1000000)<br />
present = ow.reset(pin)<br />
ow.select(pin, addr)<br />
ow.write(pin,0xBE,1)<br />
-- print("P="..present)<br />
data = nil<br />
data = string.char(ow.read(pin))<br />
for i = 1, 8 do<br />
data = data .. string.char(ow.read(pin))<br />
end<br />
-- print(data:byte(1,9))<br />
crc = ow.crc8(string.sub(data,1,8))<br />
-- print("CRC="..crc)<br />
if (crc == data:byte(9)) then<br />
t = (data:byte(1) + data:byte(2) * 256)<br />
if (t > 32767) then<br />
t = t - 65536<br />
end<br />
if(unit == nil or unit == C) then<br />
t = t * 625<br />
elseif(unit == F) then<br />
t = t * 1125 + 320000<br />
elseif(unit == K) then<br />
t = t * 625 + 2731500<br />
else<br />
return nil<br />
end<br />
t = t / 10000<br />
-- print("Temperature="..t1.."."..t2.." Centigrade")<br />
-- result = t1.."."..t2<br />
return t<br />
end<br />
tmr.wdclr()<br />
else<br />
-- print("Device family is not recognized.")<br />
end<br />
else<br />
-- print("CRC is not valid!")<br />
end<br />
return result<br />
end<br />
function read(addr, unit)<br />
t = readNumber(addr, unit)<br />
if (t == nil) then<br />
return nil<br />
else<br />
return t<br />
end<br />
end<br />
-- Return module table<br />
return M<br />
<br />
==== postThingSpeak.lua ====<br />
<br />
function postThingSpeak(level)<br />
conn=net.createConnection(net.TCP, 0)<br />
conn:on("receive", function(conn, payload)<br />
if (string.find(payload, "Status: 200 OK") ~= nil) then<br />
print("Posted OK");<br />
end<br />
end)<br />
conn:on("connection", function(connout, payloadout)<br />
print ("Posting...");<br />
conn:send("GET /update?api_key=CHIAVE&field1=" .. level<br />
.. " HTTP/1.1\r\n"<br />
.. "Host: api.thingspeak.com\r\n"<br />
.. "Connection: close\r\n"<br />
.. "Accept: */*\r\n"<br />
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"<br />
.. "\r\n")<br />
end)<br />
conn:on("disconnection", function(connout, payloadout)<br />
connout:close();<br />
collectgarbage();<br />
end)<br />
conn:connect(80,'184.106.153.149') -- api.thingspeak.com 184.106.153.149<br />
end<br />
<br />
Sostituire CHIAVE con la chiave ottenuta dalla registrazione su Thingspeak.com<br />
<br />
==== init.lua ====<br />
--init.lua<br />
require("postThingSpeak")<br />
ledPin = 3 --> GPIO0<br />
value = gpio.LOW<br />
-- Initialise the pin<br />
gpio.mode(ledPin, gpio.OUTPUT)<br />
gpio.write(ledPin, value)<br />
print("Setting up WIFI...")<br />
wifi.setmode(wifi.STATION)<br />
wifi.sta.config("ssid","pw")<br />
wifi.sta.connect()<br />
tmr.alarm(1, 30*1000, 1, function()<br />
t = require("ds18b20")<br />
tempPin = 4 --> GPIO2<br />
t.setup(tempPin)<br />
temp = t.read()<br />
print("Temperature: "..temp.."C")<br />
print("Sending data to thingspeak.com")<br />
postThingSpeak(temp)<br />
-- Don't forget to release it after use<br />
t = nil<br />
ds18b20 = nil<br />
package.loaded["ds18b20"]=nil<br />
end)<br />
<br />
Sostiture ssid e pw con il nome del access point e la password<br />
<br />
<br />
=== ThingSpeak ===<br />
<br />
https://thingspeak.com/channels/32934</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&diff=4292ESP8266/templogger2015-05-01T14:21:23Z<p>Zasf: /* esp8266 temp logger */</p>
<hr />
<div>== esp8266 temp logger ==<br />
<br />
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]<br />
<br />
[[File:wifi_temp_logger2.jpg|400px]]<br />
<br />
<br />
=== Schema elettrico ===<br />
[[File:Wifi_temp_logger2_schem.png|400px]]<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Firmware ===<br />
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!<br />
<br />
Scaricare l'ultima versione di Nodemcu e attraverso ESPlorer caricare i tre sketch lua<br />
== ds18b20.lua ==<br />
--------------------------------------------------------------------------------<br />
-- DS18B20 one wire module for NODEMCU<br />
-- NODEMCU TEAM<br />
-- LICENCE: http://opensource.org/licenses/MIT<br />
-- Vowstar <vowstar@nodemcu.com><br />
-- 2015/02/14 sza2 <sza2trash@gmail.com> Fix for negative values<br />
--------------------------------------------------------------------------------<br />
-- Set module name as parameter of require<br />
local modname = ...<br />
local M = {}<br />
_G[modname] = M<br />
--------------------------------------------------------------------------------<br />
-- Local used variables<br />
--------------------------------------------------------------------------------<br />
-- DS18B20 dq pin<br />
local pin = nil<br />
-- DS18B20 default pin<br />
local defaultPin = 9<br />
--------------------------------------------------------------------------------<br />
-- Local used modules<br />
--------------------------------------------------------------------------------<br />
-- Table module<br />
local table = table<br />
-- String module<br />
local string = string<br />
-- One wire module<br />
local ow = ow<br />
-- Timer module<br />
local tmr = tmr<br />
-- Limited to local environment<br />
setfenv(1,M)<br />
--------------------------------------------------------------------------------<br />
-- Implementation<br />
--------------------------------------------------------------------------------<br />
C = 0<br />
F = 1<br />
K = 2<br />
function setup(dq)<br />
pin = dq<br />
if(pin == nil) then<br />
pin = defaultPin<br />
end<br />
ow.setup(pin)<br />
end<br />
function addrs()<br />
setup(pin)<br />
tbl = {}<br />
ow.reset_search(pin)<br />
repeat<br />
addr = ow.search(pin)<br />
if(addr ~= nil) then<br />
table.insert(tbl, addr)<br />
end<br />
tmr.wdclr()<br />
until (addr == nil)<br />
ow.reset_search(pin)<br />
return tbl<br />
end<br />
function readNumber(addr, unit)<br />
result = nil<br />
setup(pin)<br />
flag = false<br />
if(addr == nil) then<br />
ow.reset_search(pin)<br />
count = 0<br />
repeat<br />
count = count + 1<br />
addr = ow.search(pin)<br />
tmr.wdclr()<br />
until((addr ~= nil) or (count > 100))<br />
ow.reset_search(pin)<br />
end<br />
if(addr == nil) then<br />
return result<br />
end<br />
crc = ow.crc8(string.sub(addr,1,7))<br />
if (crc == addr:byte(8)) then<br />
if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then<br />
-- print("Device is a DS18S20 family device.")<br />
ow.reset(pin)<br />
ow.select(pin, addr)<br />
ow.write(pin, 0x44, 1)<br />
-- tmr.delay(1000000)<br />
present = ow.reset(pin)<br />
ow.select(pin, addr)<br />
ow.write(pin,0xBE,1)<br />
-- print("P="..present)<br />
data = nil<br />
data = string.char(ow.read(pin))<br />
for i = 1, 8 do<br />
data = data .. string.char(ow.read(pin))<br />
end<br />
-- print(data:byte(1,9))<br />
crc = ow.crc8(string.sub(data,1,8))<br />
-- print("CRC="..crc)<br />
if (crc == data:byte(9)) then<br />
t = (data:byte(1) + data:byte(2) * 256)<br />
if (t > 32767) then<br />
t = t - 65536<br />
end<br />
if(unit == nil or unit == C) then<br />
t = t * 625<br />
elseif(unit == F) then<br />
t = t * 1125 + 320000<br />
elseif(unit == K) then<br />
t = t * 625 + 2731500<br />
else<br />
return nil<br />
end<br />
t = t / 10000<br />
-- print("Temperature="..t1.."."..t2.." Centigrade")<br />
-- result = t1.."."..t2<br />
return t<br />
end<br />
tmr.wdclr()<br />
else<br />
-- print("Device family is not recognized.")<br />
end<br />
else<br />
-- print("CRC is not valid!")<br />
end<br />
return result<br />
end<br />
function read(addr, unit)<br />
t = readNumber(addr, unit)<br />
if (t == nil) then<br />
return nil<br />
else<br />
return t<br />
end<br />
end<br />
-- Return module table<br />
return M<br />
<br />
== postThingSpeak.lua ==<br />
<br />
function postThingSpeak(level)<br />
conn=net.createConnection(net.TCP, 0)<br />
conn:on("receive", function(conn, payload)<br />
if (string.find(payload, "Status: 200 OK") ~= nil) then<br />
print("Posted OK");<br />
end<br />
end)<br />
conn:on("connection", function(connout, payloadout)<br />
print ("Posting...");<br />
conn:send("GET /update?api_key=CHIAVE&field1=" .. level<br />
.. " HTTP/1.1\r\n"<br />
.. "Host: api.thingspeak.com\r\n"<br />
.. "Connection: close\r\n"<br />
.. "Accept: */*\r\n"<br />
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"<br />
.. "\r\n")<br />
end)<br />
conn:on("disconnection", function(connout, payloadout)<br />
connout:close();<br />
collectgarbage();<br />
end)<br />
conn:connect(80,'184.106.153.149') -- api.thingspeak.com 184.106.153.149<br />
end<br />
<br />
Sostituire CHIAVE con la chiave ottenuta dalla registrazione su Thingspeak.com<br />
<br />
== init.lua ==<br />
--init.lua<br />
require("postThingSpeak")<br />
ledPin = 3 --> GPIO0<br />
value = gpio.LOW<br />
-- Initialise the pin<br />
gpio.mode(ledPin, gpio.OUTPUT)<br />
gpio.write(ledPin, value)<br />
print("Setting up WIFI...")<br />
wifi.setmode(wifi.STATION)<br />
wifi.sta.config("ssid","pw")<br />
wifi.sta.connect()<br />
tmr.alarm(1, 30*1000, 1, function()<br />
t = require("ds18b20")<br />
tempPin = 4 --> GPIO2<br />
t.setup(tempPin)<br />
temp = t.read()<br />
print("Temperature: "..temp.."C")<br />
print("Sending data to thingspeak.com")<br />
postThingSpeak(temp)<br />
-- Don't forget to release it after use<br />
t = nil<br />
ds18b20 = nil<br />
package.loaded["ds18b20"]=nil<br />
end)<br />
<br />
Sostiture ssid e pw con il nome del access point e la password</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&diff=4283ESP8266/templogger2015-04-29T20:40:24Z<p>Zasf: /* esp8266 temp logger */</p>
<hr />
<div>=== esp8266 temp logger ===<br />
<br />
[[File:wifi_temp_logger2.jpg|400px]]<br />
[[File:Wifi_temp_logger2_schem.png|400px]]</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Wifi_temp_logger2.jpg&diff=4282File:Wifi temp logger2.jpg2015-04-29T20:38:01Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=ESP8266/templogger&diff=4281ESP8266/templogger2015-04-29T20:35:14Z<p>Zasf: Creata pagina con '=== esp8266 temp logger === 400px 400px'</p>
<hr />
<div>=== esp8266 temp logger ===<br />
<br />
[[File:esptemplogger.jpeg|400px]]<br />
[[File:Wifi_temp_logger2_schem.png|400px]]</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Wifi_temp_logger2_schem.png&diff=4280File:Wifi temp logger2 schem.png2015-04-29T20:32:55Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Padella_reflowing&diff=4081Padella reflowing2015-03-09T18:09:22Z<p>Zasf: /* Reflowing */</p>
<hr />
<div><br />
== Padella reflowing ==<br />
<br />
Tecnica di reflowing casalingo per componenti SMD<br />
<br />
AVVERTENZE:<br />
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative<br />
* usate tutte le precauzioni del caso: guanti, pinze, etc<br />
* utilizzate una padella che non utilizzerete più per uso alimentare<br />
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]<br />
<br />
<br />
=== Cosa serve ===<br />
<br />
* sonda di temperatura<br />
* padella<br />
* PCB + componenti SMD<br />
* stagnatore + stagno, nastro kapton, pinzette per SMD<br />
<br />
==== Sonda di temperatura ====<br />
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]<br />
<br />
Io ho utilizzato cose che avevo già in casa, cioè:<br />
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d<br />
* lcd 16x2 + backpack<br />
* attiny85<br />
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805<br />
* regolatore di tensione<br />
<br />
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].<br />
<br />
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.<br />
<br />
===== Sketch =====<br />
// 100k ohm EPCOS 100k (4.7k pullup)<br />
<br />
// which analog pin to connect<br />
#define THERMISTORPIN 2 <br />
// resistance at 25 degrees C<br />
#define THERMISTORNOMINAL 100000 <br />
// temp. for nominal resistance (almost always 25 C)<br />
#define TEMPERATURENOMINAL 25 <br />
// how many samples to take and average, more takes longer<br />
// but is more 'smooth'<br />
#define NUMSAMPLES 10<br />
// The beta coefficient of the thermistor (usually 3000-4000)<br />
#define BCOEFFICIENT 4066<br />
// the value of the 'other' resistor<br />
#define SERIESRESISTOR 4700 <br />
<br />
#include <TinyWireM.h> <br />
#include <LiquidCrystal_I2C_852.h> <br />
<br />
LiquidCrystal_I2C lcd(0x27, 16, 2);<br />
<br />
int samples[NUMSAMPLES];<br />
<br />
void setup()<br />
{<br />
lcd.init(); // initialize the lcd <br />
lcd.backlight(); // Print a message to the LCD.<br />
lcd.setCursor(0, 0);<br />
lcd.print("Temp:");<br />
}<br />
<br />
void loop(void) {<br />
uint8_t i;<br />
float average;<br />
<br />
// take N samples in a row, with a slight delay<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
samples[i] = analogRead(THERMISTORPIN);<br />
delay(10);<br />
}<br />
<br />
// average all the samples out<br />
average = 0;<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
average += samples[i];<br />
}<br />
average /= NUMSAMPLES;<br />
<br />
<br />
// convert the value to resistance<br />
average = 1023 / average - 1;<br />
average = SERIESRESISTOR / average;<br />
<br />
float steinhart;<br />
steinhart = average / THERMISTORNOMINAL; // (R/Ro)<br />
steinhart = log(steinhart); // ln(R/Ro)<br />
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)<br />
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)<br />
steinhart = 1.0 / steinhart; // Invert<br />
steinhart -= 273.15; // convert to C<br />
<br />
<br />
lcd.setCursor(6, 0);<br />
lcd.print(steinhart, 1);<br />
lcd.print("C ");<br />
<br />
delay(500);<br />
}<br />
<br />
==== Padella ====<br />
<br />
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.<br />
<br />
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.<br />
<br />
==== PCB + componenti SMD ====<br />
<br />
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.<br />
<br />
<br />
== Reflowing ==<br />
<br />
=== Prima ===<br />
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.<br />
<br />
=== Durante ===<br />
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.<br />
<br />
=== Risultato ===<br />
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.<br />
<br />
[[File:padella_reflowing_pcb1.jpg|150px]] [[File:padella_reflowing_pcb2.jpg|150px]] [[File:padella_reflowing_pcb3.jpg|150px]]<br />
<br />
Nella seconda foto, la seconda stagnatura da sinistra non è bellissima, però il sensore funziona.<br />
<br />
== TODO ==<br />
<br />
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.</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Padella_reflowing&diff=4080Padella reflowing2015-03-09T18:05:54Z<p>Zasf: /* Sonda di temperatura */</p>
<hr />
<div><br />
== Padella reflowing ==<br />
<br />
Tecnica di reflowing casalingo per componenti SMD<br />
<br />
AVVERTENZE:<br />
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative<br />
* usate tutte le precauzioni del caso: guanti, pinze, etc<br />
* utilizzate una padella che non utilizzerete più per uso alimentare<br />
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]<br />
<br />
<br />
=== Cosa serve ===<br />
<br />
* sonda di temperatura<br />
* padella<br />
* PCB + componenti SMD<br />
* stagnatore + stagno, nastro kapton, pinzette per SMD<br />
<br />
==== Sonda di temperatura ====<br />
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]<br />
<br />
Io ho utilizzato cose che avevo già in casa, cioè:<br />
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d<br />
* lcd 16x2 + backpack<br />
* attiny85<br />
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805<br />
* regolatore di tensione<br />
<br />
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].<br />
<br />
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.<br />
<br />
===== Sketch =====<br />
// 100k ohm EPCOS 100k (4.7k pullup)<br />
<br />
// which analog pin to connect<br />
#define THERMISTORPIN 2 <br />
// resistance at 25 degrees C<br />
#define THERMISTORNOMINAL 100000 <br />
// temp. for nominal resistance (almost always 25 C)<br />
#define TEMPERATURENOMINAL 25 <br />
// how many samples to take and average, more takes longer<br />
// but is more 'smooth'<br />
#define NUMSAMPLES 10<br />
// The beta coefficient of the thermistor (usually 3000-4000)<br />
#define BCOEFFICIENT 4066<br />
// the value of the 'other' resistor<br />
#define SERIESRESISTOR 4700 <br />
<br />
#include <TinyWireM.h> <br />
#include <LiquidCrystal_I2C_852.h> <br />
<br />
LiquidCrystal_I2C lcd(0x27, 16, 2);<br />
<br />
int samples[NUMSAMPLES];<br />
<br />
void setup()<br />
{<br />
lcd.init(); // initialize the lcd <br />
lcd.backlight(); // Print a message to the LCD.<br />
lcd.setCursor(0, 0);<br />
lcd.print("Temp:");<br />
}<br />
<br />
void loop(void) {<br />
uint8_t i;<br />
float average;<br />
<br />
// take N samples in a row, with a slight delay<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
samples[i] = analogRead(THERMISTORPIN);<br />
delay(10);<br />
}<br />
<br />
// average all the samples out<br />
average = 0;<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
average += samples[i];<br />
}<br />
average /= NUMSAMPLES;<br />
<br />
<br />
// convert the value to resistance<br />
average = 1023 / average - 1;<br />
average = SERIESRESISTOR / average;<br />
<br />
float steinhart;<br />
steinhart = average / THERMISTORNOMINAL; // (R/Ro)<br />
steinhart = log(steinhart); // ln(R/Ro)<br />
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)<br />
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)<br />
steinhart = 1.0 / steinhart; // Invert<br />
steinhart -= 273.15; // convert to C<br />
<br />
<br />
lcd.setCursor(6, 0);<br />
lcd.print(steinhart, 1);<br />
lcd.print("C ");<br />
<br />
delay(500);<br />
}<br />
<br />
==== Padella ====<br />
<br />
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.<br />
<br />
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.<br />
<br />
==== PCB + componenti SMD ====<br />
<br />
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.<br />
<br />
<br />
== Reflowing ==<br />
<br />
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.<br />
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.<br />
<br />
=== Risultato ===<br />
[[File:padella_reflowing_pcb1.jpg|150px]] [[File:padella_reflowing_pcb2.jpg|150px]] [[File:padella_reflowing_pcb3.jpg|150px]]<br />
<br />
Nella seconda foto, la seconda stagnatura da sinistra non è bellissima, però il sensore funziona.<br />
<br />
== TODO ==<br />
<br />
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.</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Padella_reflowing&diff=4079Padella reflowing2015-03-09T18:03:33Z<p>Zasf: /* Reflowing */</p>
<hr />
<div><br />
== Padella reflowing ==<br />
<br />
Tecnica di reflowing casalingo per componenti SMD<br />
<br />
AVVERTENZE:<br />
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative<br />
* usate tutte le precauzioni del caso: guanti, pinze, etc<br />
* utilizzate una padella che non utilizzerete più per uso alimentare<br />
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]<br />
<br />
<br />
=== Cosa serve ===<br />
<br />
* sonda di temperatura<br />
* padella<br />
* PCB + componenti SMD<br />
* stagnatore + stagno, nastro kapton, pinzette per SMD<br />
<br />
==== Sonda di temperatura ====<br />
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]<br />
<br />
Io ho utilizzato cose che avevo già in casa, cioè:<br />
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d<br />
* lcd 16x2 + backpack<br />
* attiny85<br />
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805<br />
* regolatore di tensione<br />
<br />
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]<br />
<br />
===== Sketch =====<br />
// 100k ohm EPCOS 100k (4.7k pullup)<br />
<br />
// which analog pin to connect<br />
#define THERMISTORPIN 2 <br />
// resistance at 25 degrees C<br />
#define THERMISTORNOMINAL 100000 <br />
// temp. for nominal resistance (almost always 25 C)<br />
#define TEMPERATURENOMINAL 25 <br />
// how many samples to take and average, more takes longer<br />
// but is more 'smooth'<br />
#define NUMSAMPLES 10<br />
// The beta coefficient of the thermistor (usually 3000-4000)<br />
#define BCOEFFICIENT 4066<br />
// the value of the 'other' resistor<br />
#define SERIESRESISTOR 4700 <br />
<br />
#include <TinyWireM.h> <br />
#include <LiquidCrystal_I2C_852.h> <br />
<br />
LiquidCrystal_I2C lcd(0x27, 16, 2);<br />
<br />
int samples[NUMSAMPLES];<br />
<br />
void setup()<br />
{<br />
lcd.init(); // initialize the lcd <br />
lcd.backlight(); // Print a message to the LCD.<br />
lcd.setCursor(0, 0);<br />
lcd.print("Temp:");<br />
}<br />
<br />
void loop(void) {<br />
uint8_t i;<br />
float average;<br />
<br />
// take N samples in a row, with a slight delay<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
samples[i] = analogRead(THERMISTORPIN);<br />
delay(10);<br />
}<br />
<br />
// average all the samples out<br />
average = 0;<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
average += samples[i];<br />
}<br />
average /= NUMSAMPLES;<br />
<br />
<br />
// convert the value to resistance<br />
average = 1023 / average - 1;<br />
average = SERIESRESISTOR / average;<br />
<br />
float steinhart;<br />
steinhart = average / THERMISTORNOMINAL; // (R/Ro)<br />
steinhart = log(steinhart); // ln(R/Ro)<br />
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)<br />
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)<br />
steinhart = 1.0 / steinhart; // Invert<br />
steinhart -= 273.15; // convert to C<br />
<br />
<br />
lcd.setCursor(6, 0);<br />
lcd.print(steinhart, 1);<br />
lcd.print("C ");<br />
<br />
delay(500);<br />
}<br />
<br />
==== Padella ====<br />
<br />
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.<br />
<br />
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.<br />
<br />
==== PCB + componenti SMD ====<br />
<br />
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.<br />
<br />
<br />
== Reflowing ==<br />
<br />
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.<br />
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.<br />
<br />
=== Risultato ===<br />
[[File:padella_reflowing_pcb1.jpg|150px]] [[File:padella_reflowing_pcb2.jpg|150px]] [[File:padella_reflowing_pcb3.jpg|150px]]<br />
<br />
Nella seconda foto, la seconda stagnatura da sinistra non è bellissima, però il sensore funziona.<br />
<br />
== TODO ==<br />
<br />
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.</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb3.jpg&diff=4078File:Padella reflowing pcb3.jpg2015-03-09T18:03:00Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb2.jpg&diff=4077File:Padella reflowing pcb2.jpg2015-03-09T18:01:27Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_pcb1.jpg&diff=4076File:Padella reflowing pcb1.jpg2015-03-09T18:00:49Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Padella_reflowing&diff=4075Padella reflowing2015-03-09T17:53:03Z<p>Zasf: /* Reflowing */</p>
<hr />
<div><br />
== Padella reflowing ==<br />
<br />
Tecnica di reflowing casalingo per componenti SMD<br />
<br />
AVVERTENZE:<br />
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative<br />
* usate tutte le precauzioni del caso: guanti, pinze, etc<br />
* utilizzate una padella che non utilizzerete più per uso alimentare<br />
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]<br />
<br />
<br />
=== Cosa serve ===<br />
<br />
* sonda di temperatura<br />
* padella<br />
* PCB + componenti SMD<br />
* stagnatore + stagno, nastro kapton, pinzette per SMD<br />
<br />
==== Sonda di temperatura ====<br />
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]<br />
<br />
Io ho utilizzato cose che avevo già in casa, cioè:<br />
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d<br />
* lcd 16x2 + backpack<br />
* attiny85<br />
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805<br />
* regolatore di tensione<br />
<br />
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]<br />
<br />
===== Sketch =====<br />
// 100k ohm EPCOS 100k (4.7k pullup)<br />
<br />
// which analog pin to connect<br />
#define THERMISTORPIN 2 <br />
// resistance at 25 degrees C<br />
#define THERMISTORNOMINAL 100000 <br />
// temp. for nominal resistance (almost always 25 C)<br />
#define TEMPERATURENOMINAL 25 <br />
// how many samples to take and average, more takes longer<br />
// but is more 'smooth'<br />
#define NUMSAMPLES 10<br />
// The beta coefficient of the thermistor (usually 3000-4000)<br />
#define BCOEFFICIENT 4066<br />
// the value of the 'other' resistor<br />
#define SERIESRESISTOR 4700 <br />
<br />
#include <TinyWireM.h> <br />
#include <LiquidCrystal_I2C_852.h> <br />
<br />
LiquidCrystal_I2C lcd(0x27, 16, 2);<br />
<br />
int samples[NUMSAMPLES];<br />
<br />
void setup()<br />
{<br />
lcd.init(); // initialize the lcd <br />
lcd.backlight(); // Print a message to the LCD.<br />
lcd.setCursor(0, 0);<br />
lcd.print("Temp:");<br />
}<br />
<br />
void loop(void) {<br />
uint8_t i;<br />
float average;<br />
<br />
// take N samples in a row, with a slight delay<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
samples[i] = analogRead(THERMISTORPIN);<br />
delay(10);<br />
}<br />
<br />
// average all the samples out<br />
average = 0;<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
average += samples[i];<br />
}<br />
average /= NUMSAMPLES;<br />
<br />
<br />
// convert the value to resistance<br />
average = 1023 / average - 1;<br />
average = SERIESRESISTOR / average;<br />
<br />
float steinhart;<br />
steinhart = average / THERMISTORNOMINAL; // (R/Ro)<br />
steinhart = log(steinhart); // ln(R/Ro)<br />
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)<br />
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)<br />
steinhart = 1.0 / steinhart; // Invert<br />
steinhart -= 273.15; // convert to C<br />
<br />
<br />
lcd.setCursor(6, 0);<br />
lcd.print(steinhart, 1);<br />
lcd.print("C ");<br />
<br />
delay(500);<br />
}<br />
<br />
==== Padella ====<br />
<br />
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.<br />
<br />
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.<br />
<br />
==== PCB + componenti SMD ====<br />
<br />
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.<br />
<br />
<br />
== Reflowing ==<br />
<br />
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.<br />
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.<br />
<br />
== TODO ==<br />
<br />
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.</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Padella_reflowing&diff=4074Padella reflowing2015-03-09T17:49:32Z<p>Zasf: /* Padella */</p>
<hr />
<div><br />
== Padella reflowing ==<br />
<br />
Tecnica di reflowing casalingo per componenti SMD<br />
<br />
AVVERTENZE:<br />
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative<br />
* usate tutte le precauzioni del caso: guanti, pinze, etc<br />
* utilizzate una padella che non utilizzerete più per uso alimentare<br />
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]<br />
<br />
<br />
=== Cosa serve ===<br />
<br />
* sonda di temperatura<br />
* padella<br />
* PCB + componenti SMD<br />
* stagnatore + stagno, nastro kapton, pinzette per SMD<br />
<br />
==== Sonda di temperatura ====<br />
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]<br />
<br />
Io ho utilizzato cose che avevo già in casa, cioè:<br />
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d<br />
* lcd 16x2 + backpack<br />
* attiny85<br />
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805<br />
* regolatore di tensione<br />
<br />
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]<br />
<br />
===== Sketch =====<br />
// 100k ohm EPCOS 100k (4.7k pullup)<br />
<br />
// which analog pin to connect<br />
#define THERMISTORPIN 2 <br />
// resistance at 25 degrees C<br />
#define THERMISTORNOMINAL 100000 <br />
// temp. for nominal resistance (almost always 25 C)<br />
#define TEMPERATURENOMINAL 25 <br />
// how many samples to take and average, more takes longer<br />
// but is more 'smooth'<br />
#define NUMSAMPLES 10<br />
// The beta coefficient of the thermistor (usually 3000-4000)<br />
#define BCOEFFICIENT 4066<br />
// the value of the 'other' resistor<br />
#define SERIESRESISTOR 4700 <br />
<br />
#include <TinyWireM.h> <br />
#include <LiquidCrystal_I2C_852.h> <br />
<br />
LiquidCrystal_I2C lcd(0x27, 16, 2);<br />
<br />
int samples[NUMSAMPLES];<br />
<br />
void setup()<br />
{<br />
lcd.init(); // initialize the lcd <br />
lcd.backlight(); // Print a message to the LCD.<br />
lcd.setCursor(0, 0);<br />
lcd.print("Temp:");<br />
}<br />
<br />
void loop(void) {<br />
uint8_t i;<br />
float average;<br />
<br />
// take N samples in a row, with a slight delay<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
samples[i] = analogRead(THERMISTORPIN);<br />
delay(10);<br />
}<br />
<br />
// average all the samples out<br />
average = 0;<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
average += samples[i];<br />
}<br />
average /= NUMSAMPLES;<br />
<br />
<br />
// convert the value to resistance<br />
average = 1023 / average - 1;<br />
average = SERIESRESISTOR / average;<br />
<br />
float steinhart;<br />
steinhart = average / THERMISTORNOMINAL; // (R/Ro)<br />
steinhart = log(steinhart); // ln(R/Ro)<br />
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)<br />
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)<br />
steinhart = 1.0 / steinhart; // Invert<br />
steinhart -= 273.15; // convert to C<br />
<br />
<br />
lcd.setCursor(6, 0);<br />
lcd.print(steinhart, 1);<br />
lcd.print("C ");<br />
<br />
delay(500);<br />
}<br />
<br />
==== Padella ====<br />
<br />
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.<br />
<br />
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.<br />
<br />
==== PCB + componenti SMD ====<br />
<br />
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.<br />
<br />
<br />
=== Reflowing ===<br />
<br />
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.<br />
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.</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Padella_reflowing&diff=4073Padella reflowing2015-03-09T17:48:43Z<p>Zasf: /* Sonda di temperatura */</p>
<hr />
<div><br />
== Padella reflowing ==<br />
<br />
Tecnica di reflowing casalingo per componenti SMD<br />
<br />
AVVERTENZE:<br />
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative<br />
* usate tutte le precauzioni del caso: guanti, pinze, etc<br />
* utilizzate una padella che non utilizzerete più per uso alimentare<br />
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]<br />
<br />
<br />
=== Cosa serve ===<br />
<br />
* sonda di temperatura<br />
* padella<br />
* PCB + componenti SMD<br />
* stagnatore + stagno, nastro kapton, pinzette per SMD<br />
<br />
==== Sonda di temperatura ====<br />
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]<br />
<br />
Io ho utilizzato cose che avevo già in casa, cioè:<br />
* termistore EPCOS 100k + 4,7k ohm pull-up, ricambio della stampante 3d<br />
* lcd 16x2 + backpack<br />
* attiny85<br />
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805<br />
* regolatore di tensione<br />
<br />
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]<br />
<br />
===== Sketch =====<br />
// 100k ohm EPCOS 100k (4.7k pullup)<br />
<br />
// which analog pin to connect<br />
#define THERMISTORPIN 2 <br />
// resistance at 25 degrees C<br />
#define THERMISTORNOMINAL 100000 <br />
// temp. for nominal resistance (almost always 25 C)<br />
#define TEMPERATURENOMINAL 25 <br />
// how many samples to take and average, more takes longer<br />
// but is more 'smooth'<br />
#define NUMSAMPLES 10<br />
// The beta coefficient of the thermistor (usually 3000-4000)<br />
#define BCOEFFICIENT 4066<br />
// the value of the 'other' resistor<br />
#define SERIESRESISTOR 4700 <br />
<br />
#include <TinyWireM.h> <br />
#include <LiquidCrystal_I2C_852.h> <br />
<br />
LiquidCrystal_I2C lcd(0x27, 16, 2);<br />
<br />
int samples[NUMSAMPLES];<br />
<br />
void setup()<br />
{<br />
lcd.init(); // initialize the lcd <br />
lcd.backlight(); // Print a message to the LCD.<br />
lcd.setCursor(0, 0);<br />
lcd.print("Temp:");<br />
}<br />
<br />
void loop(void) {<br />
uint8_t i;<br />
float average;<br />
<br />
// take N samples in a row, with a slight delay<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
samples[i] = analogRead(THERMISTORPIN);<br />
delay(10);<br />
}<br />
<br />
// average all the samples out<br />
average = 0;<br />
for (i=0; i< NUMSAMPLES; i++) {<br />
average += samples[i];<br />
}<br />
average /= NUMSAMPLES;<br />
<br />
<br />
// convert the value to resistance<br />
average = 1023 / average - 1;<br />
average = SERIESRESISTOR / average;<br />
<br />
float steinhart;<br />
steinhart = average / THERMISTORNOMINAL; // (R/Ro)<br />
steinhart = log(steinhart); // ln(R/Ro)<br />
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)<br />
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)<br />
steinhart = 1.0 / steinhart; // Invert<br />
steinhart -= 273.15; // convert to C<br />
<br />
<br />
lcd.setCursor(6, 0);<br />
lcd.print(steinhart, 1);<br />
lcd.print("C ");<br />
<br />
delay(500);<br />
}<br />
<br />
==== Padella ====<br />
<br />
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.<br />
<br />
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.<br />
<br />
==== PCB + componenti SMD ====<br />
<br />
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.<br />
<br />
<br />
=== Reflowing ===<br />
<br />
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.<br />
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.</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Padella_reflowing&diff=4072Padella reflowing2015-03-09T17:42:24Z<p>Zasf: /* Sonda di temperatura */</p>
<hr />
<div><br />
== Padella reflowing ==<br />
<br />
Tecnica di reflowing casalingo per componenti SMD<br />
<br />
AVVERTENZE:<br />
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative<br />
* usate tutte le precauzioni del caso: guanti, pinze, etc<br />
* utilizzate una padella che non utilizzerete più per uso alimentare<br />
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]<br />
<br />
<br />
=== Cosa serve ===<br />
<br />
* sonda di temperatura<br />
* padella<br />
* PCB + componenti SMD<br />
* stagnatore + stagno, nastro kapton, pinzette per SMD<br />
<br />
==== Sonda di temperatura ====<br />
[[File:Padella reflowing sonda1.jpg|150px]] [[File:Padella reflowing sonda2.jpg|150px]] [[File:Padella reflowing sonda3.jpg|150px]]<br />
<br />
Io ho utilizzato cose che avevo già in casa, cioè:<br />
* termistore EPCOS 100k, ricambio della stampante 3d<br />
* lcd 16x2 + backpack<br />
* attiny85<br />
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805<br />
* regolatore di tensione<br />
<br />
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]<br />
<br />
==== Padella ====<br />
<br />
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.<br />
<br />
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.<br />
<br />
==== PCB + componenti SMD ====<br />
<br />
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.<br />
<br />
<br />
=== Reflowing ===<br />
<br />
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.<br />
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.</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda3.jpg&diff=4071File:Padella reflowing sonda3.jpg2015-03-09T17:42:19Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda2.jpg&diff=4070File:Padella reflowing sonda2.jpg2015-03-09T17:41:19Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=File:Padella_reflowing_sonda1.jpg&diff=4069File:Padella reflowing sonda1.jpg2015-03-09T17:39:03Z<p>Zasf: </p>
<hr />
<div></div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Padella_reflowing&diff=4068Padella reflowing2015-03-09T17:37:37Z<p>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...'</p>
<hr />
<div><br />
== Padella reflowing ==<br />
<br />
Tecnica di reflowing casalingo per componenti SMD<br />
<br />
AVVERTENZE:<br />
* ho usato questo metodo solo un paio di volte, quindi abbassate le vostre aspettative<br />
* usate tutte le precauzioni del caso: guanti, pinze, etc<br />
* utilizzate una padella che non utilizzerete più per uso alimentare<br />
* [se a qualcuno viene in mente qualche altra avvertenza, prego di aggiungerla]<br />
<br />
<br />
=== Cosa serve ===<br />
<br />
* sonda di temperatura<br />
* padella<br />
* PCB + componenti SMD<br />
* stagnatore + stagno, nastro kapton, pinzette per SMD<br />
<br />
==== Sonda di temperatura ====<br />
<br />
Io ho utilizzato cose che avevo già in casa, cioè:<br />
* termistore EPCOS 100k, ricambio della stampante 3d<br />
* lcd 16x2 + backpack<br />
* attiny85<br />
* vecchio carica cellulare da 5V, 900mA con regolatore LM7805<br />
* regolatore di tensione<br />
<br />
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]<br />
<br />
==== Padella ====<br />
<br />
Io ho utilizzato un pentolino, ma la vernice tende a sbruciacchiarsi, quindi credo sia meglio una di quelle padelle in alluminio non verniciate.<br />
<br />
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.<br />
<br />
==== PCB + componenti SMD ====<br />
<br />
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.<br />
<br />
<br />
=== Reflowing ===<br />
<br />
Estraete il componente SMD dalla sua custodia e prendetelo con le pinzette, verificando la posizione in cui lo adagierete sul PCB.<br />
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.</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&diff=4067Gruppo CNC2015-03-09T17:15:50Z<p>Zasf: /* Idee folli */</p>
<hr />
<div>{{Gruppo<br />
|nome=CNC<br />
|descrizione=stampante 3D e tornio<br />
|icona=Icon_gruppo_3d.jpeg<br />
|mailinglist=http://liste.raspibo.org/wws/subscribe/cnc-3d Vuoi partecipare o solamente essere informato? Iscriviti alla mailing list<br />
|iscritti=(impazienti) <br />
Mirco [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B], Gabriele [http://raspibo.ofpcina.net/profile/gielle Gielle], <br />
Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], Alessandro [http://raspibo.ofpcina.net/profile/axr75 axr75], <br />
Daniele [http://raspibo.ofpcina.net/profile/dancast78 dancast78], [http://raspibo.ofpcina.net/profile/robertoc RobertoC] , Savino [http://raspibo.ofpcina.net/profile/thegamer thegamer]<br/><br />
<br />
(polleggiati)<br/> <br />
Gabriele[http://raspibo.ofpcina.net/profile/gielle Gielle], Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], <br />
Yogi, Andrea, Giacomo [http://raspibo.ofpcina.net/profile/eineki eineki], [http://raspibo.ofpcina.net/profile/renzo Renzo], <br />
Davide, [http://raspibo.ofpcina.net/profile/sini Psini], [http://raspibo.ofpcina.net/profile/dave4rp Dave4rp],<br />
Walter [http://raspibo.ofpcina.net/profile/wave wave], [http://raspibo.ofpcina.net/profile/GioCupo Giovanni]}}<br />
<br />
= Prossimo incontro =<br />
Proponilo in [http://liste.raspibo.org/wws/compose_mail/cnc-3d lista]!<br />
<br />
Ad esempio in una delle prossime date di NonCorso o in una delle serate al MakerSpace.<br />
<br />
= Progetti in corso =<br />
<br />
* [[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.<br />
* [[Stampante_3D_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B].<br />
* Assemblaggio e costruzione di [[raspiBo_stampante_3D_001|stampanti 3D]].<br />
<br />
<br />
= Progetti completati =<br />
<br />
[[Fresa_CNC_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B]<br />
<br />
= Idee folli =<br />
* [[Padella reflowing]]<br />
<br />
= Materiali =<br />
<br />
'''Componenti meccanici:'''<br />
*Viti a ricircolazione di sfere,[http://www.servomech.it/Pdf/prodotti/SERVOMECH-catalogo-viti-e-madreviti-a-sfere.pdf guida]<br />
<br />
*Guide e tavole lineari,[http://www.bettsistemi.com/index.php?page=hbbett&prod=3&sez=pano catalogo]<br />
<br />
'''Elettronica'''<br />
*[http://reprap.org/wiki/Sanguinololu Sanguinololu]<br />
*[[Programmazione di Sanguinololu]]<br />
<br />
'''Software'''<br />
*[http://www.linuxcnc.org/ Linux CNC]<br />
*[http://slic3r.org/about Slic3r] G-code generator for 3D printers [[Installazione Slic3r su Debian]]<br />
*[https://github.com/ErikZalm/Marlin Marlin] Firmware per scheda di controllo<br />
*[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.<br />
*[[http://www.raspibo.org/wiki/index.php/Blender Blender]] slides intrduttive all'uso di blender per la stampa 3D<br />
<br />
'''Guide pratiche'''<br />
*[[Cronaca dei miei primi esperimenti di CNC]] le indicazioni di Renzo per configurazione dei software e delle seriali<br />
*[[Estrudere un file vettoriale]] per creare un file stl<br />
*[[Convertire stl in gcode]], da modello 3D a comandi per la stampante<br />
<br />
= Incontri =<br />
*[[10 luglio 2013 - Introduzione alla stampa 3D]]</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&diff=4066Gruppo CNC2015-03-09T17:12:05Z<p>Zasf: /* Idee folli */</p>
<hr />
<div>{{Gruppo<br />
|nome=CNC<br />
|descrizione=stampante 3D e tornio<br />
|icona=Icon_gruppo_3d.jpeg<br />
|mailinglist=http://liste.raspibo.org/wws/subscribe/cnc-3d Vuoi partecipare o solamente essere informato? Iscriviti alla mailing list<br />
|iscritti=(impazienti) <br />
Mirco [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B], Gabriele [http://raspibo.ofpcina.net/profile/gielle Gielle], <br />
Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], Alessandro [http://raspibo.ofpcina.net/profile/axr75 axr75], <br />
Daniele [http://raspibo.ofpcina.net/profile/dancast78 dancast78], [http://raspibo.ofpcina.net/profile/robertoc RobertoC] , Savino [http://raspibo.ofpcina.net/profile/thegamer thegamer]<br/><br />
<br />
(polleggiati)<br/> <br />
Gabriele[http://raspibo.ofpcina.net/profile/gielle Gielle], Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], <br />
Yogi, Andrea, Giacomo [http://raspibo.ofpcina.net/profile/eineki eineki], [http://raspibo.ofpcina.net/profile/renzo Renzo], <br />
Davide, [http://raspibo.ofpcina.net/profile/sini Psini], [http://raspibo.ofpcina.net/profile/dave4rp Dave4rp],<br />
Walter [http://raspibo.ofpcina.net/profile/wave wave], [http://raspibo.ofpcina.net/profile/GioCupo Giovanni]}}<br />
<br />
= Prossimo incontro =<br />
Proponilo in [http://liste.raspibo.org/wws/compose_mail/cnc-3d lista]!<br />
<br />
Ad esempio in una delle prossime date di NonCorso o in una delle serate al MakerSpace.<br />
<br />
= Progetti in corso =<br />
<br />
* [[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.<br />
* [[Stampante_3D_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B].<br />
* Assemblaggio e costruzione di [[raspiBo_stampante_3D_001|stampanti 3D]].<br />
<br />
<br />
= Progetti completati =<br />
<br />
[[Fresa_CNC_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B]<br />
<br />
= Idee folli =<br />
- [[Padella reflowing]]<br />
<br />
= Materiali =<br />
<br />
'''Componenti meccanici:'''<br />
*Viti a ricircolazione di sfere,[http://www.servomech.it/Pdf/prodotti/SERVOMECH-catalogo-viti-e-madreviti-a-sfere.pdf guida]<br />
<br />
*Guide e tavole lineari,[http://www.bettsistemi.com/index.php?page=hbbett&prod=3&sez=pano catalogo]<br />
<br />
'''Elettronica'''<br />
*[http://reprap.org/wiki/Sanguinololu Sanguinololu]<br />
*[[Programmazione di Sanguinololu]]<br />
<br />
'''Software'''<br />
*[http://www.linuxcnc.org/ Linux CNC]<br />
*[http://slic3r.org/about Slic3r] G-code generator for 3D printers [[Installazione Slic3r su Debian]]<br />
*[https://github.com/ErikZalm/Marlin Marlin] Firmware per scheda di controllo<br />
*[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.<br />
*[[http://www.raspibo.org/wiki/index.php/Blender Blender]] slides intrduttive all'uso di blender per la stampa 3D<br />
<br />
'''Guide pratiche'''<br />
*[[Cronaca dei miei primi esperimenti di CNC]] le indicazioni di Renzo per configurazione dei software e delle seriali<br />
*[[Estrudere un file vettoriale]] per creare un file stl<br />
*[[Convertire stl in gcode]], da modello 3D a comandi per la stampante<br />
<br />
= Incontri =<br />
*[[10 luglio 2013 - Introduzione alla stampa 3D]]</div>Zasfhttps://www.raspibo.org/wiki/index.php?title=Gruppo_CNC&diff=4065Gruppo CNC2015-03-09T17:11:25Z<p>Zasf: /* Idee folli */</p>
<hr />
<div>{{Gruppo<br />
|nome=CNC<br />
|descrizione=stampante 3D e tornio<br />
|icona=Icon_gruppo_3d.jpeg<br />
|mailinglist=http://liste.raspibo.org/wws/subscribe/cnc-3d Vuoi partecipare o solamente essere informato? Iscriviti alla mailing list<br />
|iscritti=(impazienti) <br />
Mirco [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B], Gabriele [http://raspibo.ofpcina.net/profile/gielle Gielle], <br />
Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], Alessandro [http://raspibo.ofpcina.net/profile/axr75 axr75], <br />
Daniele [http://raspibo.ofpcina.net/profile/dancast78 dancast78], [http://raspibo.ofpcina.net/profile/robertoc RobertoC] , Savino [http://raspibo.ofpcina.net/profile/thegamer thegamer]<br/><br />
<br />
(polleggiati)<br/> <br />
Gabriele[http://raspibo.ofpcina.net/profile/gielle Gielle], Stefano [http://raspibo.ofpcina.net/profile/jobsystem stefano60], <br />
Yogi, Andrea, Giacomo [http://raspibo.ofpcina.net/profile/eineki eineki], [http://raspibo.ofpcina.net/profile/renzo Renzo], <br />
Davide, [http://raspibo.ofpcina.net/profile/sini Psini], [http://raspibo.ofpcina.net/profile/dave4rp Dave4rp],<br />
Walter [http://raspibo.ofpcina.net/profile/wave wave], [http://raspibo.ofpcina.net/profile/GioCupo Giovanni]}}<br />
<br />
= Prossimo incontro =<br />
Proponilo in [http://liste.raspibo.org/wws/compose_mail/cnc-3d lista]!<br />
<br />
Ad esempio in una delle prossime date di NonCorso o in una delle serate al MakerSpace.<br />
<br />
= Progetti in corso =<br />
<br />
* [[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.<br />
* [[Stampante_3D_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B].<br />
* Assemblaggio e costruzione di [[raspiBo_stampante_3D_001|stampanti 3D]].<br />
<br />
<br />
= Progetti completati =<br />
<br />
[[Fresa_CNC_Mirco.B]] realizzata da [http://raspibo.ofpcina.net/profile/Mirco.B Mirco.B]<br />
<br />
= Idee folli =<br />
- [[padella_reflowing]]<br />
<br />
= Materiali =<br />
<br />
'''Componenti meccanici:'''<br />
*Viti a ricircolazione di sfere,[http://www.servomech.it/Pdf/prodotti/SERVOMECH-catalogo-viti-e-madreviti-a-sfere.pdf guida]<br />
<br />
*Guide e tavole lineari,[http://www.bettsistemi.com/index.php?page=hbbett&prod=3&sez=pano catalogo]<br />
<br />
'''Elettronica'''<br />
*[http://reprap.org/wiki/Sanguinololu Sanguinololu]<br />
*[[Programmazione di Sanguinololu]]<br />
<br />
'''Software'''<br />
*[http://www.linuxcnc.org/ Linux CNC]<br />
*[http://slic3r.org/about Slic3r] G-code generator for 3D printers [[Installazione Slic3r su Debian]]<br />
*[https://github.com/ErikZalm/Marlin Marlin] Firmware per scheda di controllo<br />
*[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.<br />
*[[http://www.raspibo.org/wiki/index.php/Blender Blender]] slides intrduttive all'uso di blender per la stampa 3D<br />
<br />
'''Guide pratiche'''<br />
*[[Cronaca dei miei primi esperimenti di CNC]] le indicazioni di Renzo per configurazione dei software e delle seriali<br />
*[[Estrudere un file vettoriale]] per creare un file stl<br />
*[[Convertire stl in gcode]], da modello 3D a comandi per la stampante<br />
<br />
= Incontri =<br />
*[[10 luglio 2013 - Introduzione alla stampa 3D]]</div>Zasf