-
Posts
451 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Intrudera6 postou
-
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Papel vegetal também resolve, dizem que fica muito bom, mas eu nunca testei. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Senhores, Adaptei a biblioteca para o BME280 (primeira tentativa), está dando diversos erros, entre eles logo na linha 36. Como é que eu passo dados para um subrotina em basic ? os erros são : Error at line 36: Gosub Label not found:[BME280_begin](sda, sck) Error at line 46: Failed to reach end of input expression, likely malformed input Error at line 47: Failed to reach end of input expression, likely malformed input Error at line 48: Failed to reach end of input expression, likely malformed input Sun Sep 04 14:48:05 2016 Error at line 51: Failed to reach end of input expression, likely malformed input error Abaixo o programa: BME280_ADDRESS = 118 ' 0x76 dim data[32] as integer dig_T1 = 0 dig_T2 = 0 dig_T3 = 0 dig_P1 = 0 dig_P2 = 0 dig_P3 = 0 dig_P4 = 0 dig_P5 = 0 dig_P6 = 0 dig_P7 = 0 dig_P8 = 0 dig_P9 = 0 dig_H1 = 0 dig_H2 = 0 dig_H3 = 0 dig_H4 = 0 dig_H5 = 0 dig_H6 = 0 ' Returns temperature in DegC, resolution is 0.01 DegC. Output value of “5123” equals 51.23 DegC. ' t_fine carries fine temperature as global value t_fine = 0 '======================================================================================== sda = 0 scl = 2 contador = 0 io(po,2,0) ' acende o led no ESP-1 gosub [BME280_begin](sda, sck) timesetup(-3,0) timer 1000, [imprime] wait ' ======================================================================================= [imprime] temperatura = gosub [BME280_readTemperature] umidade = gosub [BME280_readHumidity] pressao = gosub [BME280_readPressure] 'gcls print time() print " Temperatura = " + temperatura + " Umidade = " + umidade + " Pressão = " pressao io(po,2,contador & 1) 'pisca o led a cada 2 segundos no ESP-1 contador = contador + 1 end sub [BME280_writeReg](reg_address as byte, data as byte) i2c.begin(BME280_ADDRESS) i2c.write(reg_address) i2c.write(data) i2c.end() end sub [BME280_readTrim] temp_raw as unsigned long var1 as signed long var2 as signed long i as int data[8] as unsigned long i2c.begin(BME280_ADDRESS) i2c.write(0x88) i2c.end() i2c.requestfrom(BME280_ADDRESS,24) if i2c.available() then do data[i] = i2c.read() i = i + 1 loop while i2c.available() end if i2c.begin(BME280_ADDRESS) i2c.write(0xA1) i2c.end() i2c.requestfrom(BME280_ADDRESS,1) data[i] = i2c.read() i = i + 1 i2c.begin(BME280_ADDRESS) i2c.write(0xE1) i2c.end() i2c.requestfrom(BME280_ADDRESS,7) if i2c.available() then do data[i] = i2c.read() i = i + 1 loop while i2c.available() end if dig_T1 = (data[1] << 8) Or data[0] dig_T2 = (data[3] << 8) Or data[2] dig_T3 = (data[5] << 8) Or data[4] dig_P1 = (data[7] << 8) Or data[6] dig_P2 = (data[9] << 8) Or data[8] dig_P3 = (data[11]<< 8) Or data[10] dig_P4 = (data[13]<< 8) Or data[12] dig_P5 = (data[15]<< 8) Or data[14] dig_P6 = (data[17]<< 8) Or data[16] dig_P7 = (data[19]<< 8) Or data[18] dig_P8 = (data[21]<< 8) Or data[20] dig_P9 = (data[23]<< 8) Or data[22] dig_H1 = data[24] dig_H2 = (data[26]<< 8) Or data[25] dig_H3 = data[27] dig_H4 = (data[28]<< 4) Or (0x0F And data[29]) dig_H5 = (data[30] << 4) Or ((data[29] >> 4) And 0x0F) dig_H6 = data[31] end sub [BME280_begin](sda as byte, sck as byte) 'osrs_t as byte 'osrs_p as byte 'osrs_h as byte 'mode as byte 't_sb as byte 'filter as byte 'spi3w_en as byte 'ctrl_meas_reg as byte 'config_reg as byte 'ctrl_hum_reg as byte osrs_t = 1 'Temperature oversampling x 1 osrs_p = 1 'Pressure oversampling x 1 osrs_h = 1 'Humidity oversampling x 1 mode = 3 'Normal mode t_sb = 5 'Tstandby 1000ms filter = 0 'Filter off spi3w_en = 0 '3-wire SPI Disable 'ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mode 'config_reg = (t_sb << 5) | (filter << 2) | spi3w_en 'ctrl_hum_reg = osrs_h ctrl_meas_reg = (osrs_t << 5) Or (osrs_p << 2) Or mode config_reg = (t_sb << 5) Or (filter << 2) Or spi3w_en ctrl_hum_reg = osrs_h i2c.setup(sda, sck) gosub [BME280_writeReg](0xF2,ctrl_hum_reg) gosub [BME280_writeReg](0xF4,ctrl_meas_reg) gosub [BME280_writeReg](0xF5,config_reg) gosub [BME280_readTrim] end sub [BME280_compensate_T_int32](adc_T as long) 'retorna signed long var1 as long var2 as long T as long var1 = ((((adc_T>>3) – (dig_T1<<1))) * dig_T2) >> 11 var2 = (((((adc_T>>4) – dig_T1) * ((adc_T>>4) – dig_T1)) >> 12) * dig_T3) >> 14 t_fine = var1 + var2 T = (t_fine * 5 + 128) >> 8 BME280_compensate_T_int32 = T return end sub ' Returns pressure in Pa as unsigned 32 bit integer. Output value of “96386” equals 96386 Pa = 963.86 hPa [BME280_compensate_P_int32](adc_P as long) 'retorna unsigned long var1 as long var2 as long p as unsigned long var1 = (t_fine>>1) – 64000 var2 = (((var1>>2) * (var1>>2)) >> 11 ) * dig_P6 var2 = var2 + ((var1*(dig_P5))<<1) var2 = (var2>>2)+(dig_P4<<16) var1 = (((dig_P3 * (((var1>>2) * (var1>>2)) >> 13 )) >> 3) + ((dig_P2 * var1)>>1))>>18 var1 =((32768+var1) * (dig_P1))>>15 if var1 = 0 then BME280_compensate_P_int32 = 0 return ' avoid exception caused by division by zero end if p = ((1048576 - adc_P) - (var2>>12)) * 3125 if p < 0x80000000 then p = (p << 1) / (var1) else p = p / var1 * 2 end if var1 = (dig_P9 * ((((p>>3) * (p>>3))>>13)))>>12 var2 = (((p>>2)) * dig_P8)>>13 p = p + (var1 + var2 + dig_P7) >> 4 BME280_compensate_P_int32 = P return end sub [BME280_readTemperature] 'retorna double temp_raw as unsigned long var1 as signed long var2 as signed long i as int data[8] as unsigned long i2c.begin(BME280_ADDRESS) i2c.write(0xfa) i2c.end() i2c.requestfrom(BME280_ADDRESS,3) if i2c.available() then do data[i] = i2c.read() i++ loop while i2c.available() end if temp_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4) var1 = ((((temp_raw >> 3) - (dig_T1<<1))) * (dig_T2)) >> 11 var2 = (((((temp_raw >> 4) - (dig_T1)) * ((temp_raw>>4) - (dig_T1))) >> 12) * (dig_T3)) >> 14 t_fine = var1 + var2 BME280_readTemperature = ((t_fine * 5 + 128) >> 8) / 100.0 return end sub [BME280_readPressure]'retorna double temp_raw as unsigned long var1 as signed long var2 as signed long i as int data[8] as unsigned long i2c.begin(BME280_ADDRESS) i2c.write(0xf7) i2c.end() i2c.requestfrom(BME280_ADDRESS,3) if i2c.available() then do data[i] = i2c.read() i++ loop while i2c.available() end if pres_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4) var1 = ((t_fine)>>1) - 64000 var2 = (((var1>>2) * (var1>>2)) >> 11) * (dig_P6) var2 = var2 + ((var1*(dig_P5))<<1) var2 = (var2>>2)+((dig_P4)<<16) var1 = (((dig_P3 * (((var1>>2)*(var1>>2)) >> 13)) >>3) + (((dig_P2) * var1)>>1))>>18 var1 = ((((32768+var1))*(dig_P1))>>15) if var1 = 0 then BME280_readPressure = 0 return end if P = ((((1048576)-pres_raw)-(var2>>12)))*3125 if P < 0x80000000 then P = (P << 1) / (var1) else P = P / var1 * 2 end if var1 = ((dig_P9) * ((((P>>3) * (P>>3))>>13)))>>12 var2 = (((P>>2)) * (dig_P8))>>13 P = P + ((var1 + var2 + dig_P7) >> 4) BME280_readPressure = P / 100.0 return end sub [BME280_readHumidity] 'retorna double temp_raw as unsigned long var1 as signed long var2 as signed long i as int data[8] as unsigned long i2c.begin(BME280_ADDRESS) i2c.write(0xfd) i2c.end() i2c.requestfrom(BME280_ADDRESS,3) if i2c.available() then do data[i] = i2c.read() i = i + 1 loop while i2c.available() end if hum_raw = (data[0] << 8) | data[1] v_x1 = (t_fine - (76800)) v_x1 = (((((hum_raw << 14) -((dig_H4) << 20) - ((dig_H5) * v_x1)) + (16384)) >> 15) * (((((((v_x1 * (dig_H6)) >> 10) * (((v_x1 * (dig_H3)) >> 11) + (32768))) >> 10) + (2097152)) * (dig_H2) + 8192) >> 14)) v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * (dig_H1)) >> 4)) if (v_x1 < 0) then v_x1 = 0 end if if v_x1 > 419430400 then v_x1 = 419430400 end if BME280_readHumidity = (v_x1 >> 12) / 1024.0 return end sub -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Para que eu vou colocar mais uma carga em cima das IOs do ESP8266 se está aparentemente funcionando sem ? Mas se for realmente necessário, ao invés de 4,7K porque não 10K ? O fato de comprar um pouco mais do que você não significa que não sejamos consumistas, esta doença está muito mais disseminada do que você pensa. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
@aphawk Eu compro mais que você, já estou em 670. Mas com eBay não gasto tanto assim, a minha despesa de lazer pesada é com viagens (que nesse caso o buraco é bem mais embaixo), e o meu lazer semanal é cinema, eu sou fanático por ficção científica, por sinal neste sábado vou ver o novo Star Trek, Sem Fronteiras. Mas eu ainda não me meti em criar uma rotina para acessar o BME280 em basic, ainda está me faltando tempo e também um pouco de coragem (acho que gastarei muitas horas para isso). Uma das etapas era testar a I2C do ESP-1, e verifiquei que ele encontra o BME280, isto sem precisar colocar nenhuma resistência no SDA e SCL. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Infelizmente eu só gasto dinheiro com isso, isto é um hobby um pouco caro (às vezes) mas as coisas duram bastante então o preço acaba se diluindo. Ser perfeccionista pode ser as vezes quase uma maldição. Acho que deveriam se importar, registrar ponto é coisa séria. E estes DS3231 são muito precisos e bastante baratos, acho que agregaria muito ter uma precisão decente num relógio de ponto. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Este PICOSYNC é um GPSDO com temperatura estabilizada, mas dá para encontrar coisas interessantes usadas no eBay para uso num laboratório caseiro por um preço acessível, por exemplo um relógio atômico de rubídio por menos de 200 USD. O bom de uma referência de tempo usando o GPS é que ela nunca vai sofrer de envelhecimento, estará sempre precisa e não precisa de calibração (a não ser que os satélites saiam do ar). Já ouviu falar de um CSAC (micro relógio atômico de césio) , precisão incrível que cabe num equipamento móvel. http://www.microsemi.com/products/timing-synchronization-systems/embedded-timing-solutions/components/sa-45s-chip-scale-atomic-clock, já vi vendendo no eBay por uns 1900 USD, se não me falha a memória. Tem este GPSDO http://www.prnewswire.com/news-releases/symmetricom-now-offers-gps-disciplined-atomic-oscillator-modules-and-high-frequency-source-modules-147143545.html Um Piconsync no eBay http://www.ebay.com/sch/i.html?_odkw=GPSDO&_osacat=0&_from=R40&_trksid=p2045573.m570.l1313.TR0.TRC0.H0.Xpicosync.TRS0&_nkw=picosync&_sacat=0 Tem este GPSDO usado sem caixa http://www.ebay.com/itm/Trimble-GPS-Receiver-GPSDO-10MHz-1PPS-GPS-Disciplined-Clock-/262401923665?hash=item3d185f9a51:g:KIsAAOSwYudXG3wA -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
@aphawk Estou usando um HP5385A com 10 dígitos de resolução (que comprei usado e deve ter mais de 20 anos de idade, mas muito bom), usando como referência uma base de tempo de 10MHz, um PICOSYNC versão 1 (que comprei usado pelo eBay) sincronizado pelo GPS, cuja precisão estimo em 1E-9 ou melhor (quando devidamente pareado com o GPS). Eu sou realmente muito chato com a precisão. Com este HP consigo medir a frequência do TCXO do DS3231 com 5 casas decimais. Fiz um programa num Arduino em que eu posso mudar manualmente o ajuste de zero do capacitor de referência do DS3231 (que corrige a deriva térmica dele e consigo teoricamente uma precisão máxima de até 0,1PPM ajustando esta capacitância), fazendo isso consigo uma precisão enorme, pena que depois de alguns meses ele foge um pouco do ajuste, mas ainda continua com uma excelente precisão. Mesmo tendo comprado estes equipamentos usados (com mais de uma década de uso) eles custaram alguns bons trocados, mas são uns brinquedos interessantes, e muito precisos. Estimei a precisão colocando dois PICOSYNC (tenho dois) num Osciloscópio e observando a deriva entre eles num gráfico de lissajous. Eu desisti de ajustar o HP5385A pelo PICOSYNC, pois ele não era capaz de manter estável a frequência (na precisão que eu queria) e eu acabei ligando ele diretamente no PICOSYNC pela entrada de base de tempo externa dele. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Dá para pendurar muitos periféricos I2C numa mesma porta , só que eles tem que ter obrigatoriamente endereços diferente. Mas no seu caso, eu usaria um DS3231, é muito mais preciso que este DS1302 e custa pouco (custa 0,75 USD), é fácil conseguir com ele 2ppm de precisão (5 segundos de erro por mês ou menos, mas quando novo consegue-se precisão melhor que 1 seg/mês). Eu coloquei um destes num frequencímetro e ajustei, consegui um erro melhor que 1 segundo a cada 3 meses mudando a capacitância do cristal TCXO por software. http://www.ebay.com/itm/DS3231-AT24C32-IIC-Module-Precision-RTC-Module-Memory-Module-/141976856663?hash=item210e7ae857:g:kbwAAOSw~1FUXL96 -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Eu fiquei tão curioso, que acho que vou comprar para mim, mas encontrei uma alternativa com alguém vendendo 10 unidades (para o risco de queimar, e quem sabe até comprar a versão de 512KB e trocar por 4MB), o chip é o W25Q32FVSSIG, que é aparentemente mais rápido (50MB/s) que o de W25Q32BVSSIG (40MB/s) e quase pelo mesmo preço do de 5 unidades. http://www.ebay.com/itm/10Pcs-WINBOND-W25Q32FVSSIG-W25Q32FVSIG-25Q32FVSIG-SOP-8-IC-Chips-FLASH/282035997383?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D38702%26meid%3D46ea59fdd4ed4a7abe852e4b3ff1a86a%26pid%3D100005%26rk%3D1%26rkt%3D6%26sd%3D181981752783 O W25Q32FVSSIG é compatível com o ESP8266 ? -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Eu montei uma tabela correspondendo os pinos com as funções, vou mandar abaixo, acho que a versão 0.9 também vale para um ESP12F (V1.0): PINOS ESP8266 com IDE Arduino / Basic ADC0 A0 TOUT PIN 16 D0 GPIO 16 USER WAKE PIN 5 D1 GPIO 5 SCL(V0.9) PIN 4 D2 GPIO 4 SDA(V0.9) PIN 0 D3 GPIO 0 FLASH SDA(ESP-1) PIN 2 D4 GPIO 2 TXD1 SCL(ESP-1) LED AZUL(V0.9) PIN 14 D5 GPIO 14 HSPICLK MTMS PIN 12 D6 GPIO 12 HSPIQ MTDI PIN 13 D7 GPIO 13 RXD2 HSPID MTCK CTS0 PIN 15 D8 GPIO 15 TXD2 HSPICS MTDO RTS0 PIN 3 D9 GPIO 3 RXD0 PIN 1 D10 GPIO 1 TXD0 SPICS1 LED AZUL(ESP-1) PIN 9 SDD2 GPIO 9 SD2 PIN 10 SDD3 GPIO 10 SD3 PIN 8 SDD1 GPIO 8 SD1 MOSI PIN 11 SDCMD GPIO 11 CMD CS PIN 7 SDD0 GPIO 7 SD0 MISO PIN 6 SDCLK GPIO 6 CLK SCLK -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Não tão antigo como o Paulo, mas eu também brinquei muito com um Z80 (TK85 e um MSX), bons tempos, mas a vida hoje é muito mais fácil (em programação). O problema é o tempo que para mim é muito escasso, até para ficar aqui no Fórum tem um custo em termos de horas de sono, que eu vou perder, amanhã eu terei que acordar as 4:35 independente da hora que eu durma (não dá para dormir muito tarde). -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
As minhas mãos não tremem mas mesmo assim eu não tenho esta firmeza toda, sou muito desastrado com estas coisas muito pequenas. Eu até já consegui soldar um transistor mos smd de 3 pernas, a solda ficou horrível mas o equipamento voltou a vida, fazendo isso sem estação de solda e apenas com um ferro de ponta fina (mas eu não tinha nada a perder, se não desse certo ele iria para o lixo do mesmo jeito). Acho mais fácil comprar os ESP-1 na versão 1MB (que saem um pouco mais caro), mas eu não me dou muito bem com coisas tão pequenas (tenho mais uma mão de ferreiro do que de relojoeiro). -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
@aphawk Um ESP-1 com 4MB seria o céu, o 4MB de flash é muito barato, porque será que ele não vem já com 4MB ??? Mas para trocar é complicado, mesmo sendo um componente grande (para um SMD). Eu certamente não tenho uma mão suficiente firme para conseguir isso, provavelmente iria botar tudo a perder. Mas se você tem uma mão de neurocirurgião (talvez precise tanto) ai é tranquilo. Mas usando a IDE Arduino (que é um pouco mais complicado de programar), o 512KB dá e sobra para muita coisa. O que incomoda é quase nenhuma IO disponível, e eu ainda não entendi bem para o que é que serve a função deepsleep se ele só retorna com um Reset, mesmo assim eu quero experimentar, mas nem pensar num ESP-1, pois ai tem mesmo que ter mãos de neurocirurgião, e vista muito apurada (ou utilizar uma enorme lente de aumento) para poder ligar as trilhas do ESP8266. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
E como é que se fazia antes deste novo firmware para selecionar outras portas SDA e SCL (num ESP-1), sem isto acho que não é possível utilizar I2C num ESP-1. Eu baixei o novo firmware e funcionou, mas se eu resolver instalar o Basic num ESP-1 com apenas 512KB isto pode ser um problema, pois eu vou querer usar a I2C e não dá para instalar o firmware 3.0 . -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
@aphawk Porque está dando erro de sintaxe na 5 linha ? (Programa para varrer as I2C), e o pior é fiz exatamente conforme o exemplo. 'I2C Scanner SDA = 0 SCL = 2 i2c.setup(SDA,SCL) for address = 1 to 127 i2c.begin(address) stat = i2c.end() if stat < 1 then ' print stat wprint "Found I2C device at address: 0x" & hex(address) wprint " - > " & address wprint " <br>" endif next wait -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
@aphawk Eu cheguei a testar com 1000 por segundo requisitando data e hora de servidor NTP e mantive a conexão (mas é bastante pesado e às vezes resetava), conseguia atualizar o LCD 10 vezes por segundo, mandava um trem de texto para a serial (a cada 0,1seg) e comparava com o timer do ESP8266. Este foi um teste que fiz para ver a incerteza do protocolo NTP. Acho até que o ESP8266 é poderoso demais para o que custa, mas tem os seus limites, e eu esbarrei nas limitações dele. Mas é impossível abrir uma nova conexão WIFI com uma interrupção alta, neste caso é até melhor inibir totalmente, o que com um ESP32 isto não deverá ser necessário. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
@aphawk Bem interessante este exemplo com o BME280, agora tenho 3 locais para pescar um exemplo para adaptar. O do pdf do site do fabricante está bem mastigado, acho que vou adaptar dele (do C para Basic), ajuda no meu aprendizado de C. Mas olhar o código em Bascon também é interessante. Quando criaram o ESP8266 tinha algo em mente, mas fizeram um controlador muito mais poderoso que o necessário, e ele acabou sendo usado para coisa muito maior. Eu também tenho o mal hábito de tentar espremer um hardware ao máximo. O futuro ESP32 deve vir com IOs muito mais poderosas (além de um controlador bem mais poderoso), deve começar a ficar bem interessante. Eu, por exemplo, esbarro com problemas quando quero que o ESP8266 faça muitas coisas ao mesmo tempo como atualizar um display LCD e ao mesmo tempo tente se conectar com a rede WIFI, e mantendo 200 interrupções por segundo fazendo isso (acho que estou querendo demais dele, e ai começam a acontecer problemas inexplicáveis). Acho que quando lançarem vou arranjar um ESP32 para mim, isto se ele não for caro demais, ele promete ter uns recursos bem interessantes. A parte interessante de usar C, que eu gosto, é poder fazer os cálculos com eficiência máxima, mas o samba do crioulo doido das bibliotecas complica tremendamente a minha vida. Acho que o uso do C no meu caso veio para ficar. Na minha rotina de teste eu andei espremendo um pouco e já estou com vontade de utilizar ASM, pois fazer um XOR de uma variável unigned char, sem que esta função exista no C, com eficiência só em assembler (o que nesse caso é tremendamente fácil para mim), mas trava a portabilidade permanentemente, por isso que e ainda não fiz desse jeito, mas talvez tenha um jeito de ter as duas formas juntas, em ASM e em C puro, e via diretiva de compilação manter a portabilidade. Eu ainda gosto de dar uma futucadas em ASM (o vírus do assembler fica latente, nunca estou totalmente curado). Eu andei esbarrando com uns funcionamentos erráticos (intermitência na conexão com WIFI) que eu ainda não consegui explicar totalmente, e isto está consumindo um tempo enorme, a minha rotina ainda não está do jeito que eu gosto, quando estiver coloco aqui a nova versão, mas isto não impede que eu poste aqui as funções de calculo de data e hora (estas estão ficando realmente interessantes). -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Não lembro de onde eu baixei. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Estou testando o Basic e às vezes ele para de funcionar direito (testando Graphic_Clock_Example.bas modificado incluindo o ponteiro dos segundos, não deu certo, ele não é veloz o suficiente) e eu tenho que desligar e ligar. E eu experimentei gravar de novo o flash e ele continuou conectado na mesma rede, isto pode ser um problema se eu mudar de rede. Imagino que teria que formatar com outra imagem, ou tem algum forma melhor de limpar tudo ao transferir o arquivo .bin ? Este Basic parece ter alguns bugs, como por exemplo: ao editar o arquivo dentro do ambiente WEB, ao usar o botão SAVE, o arquivo não sofre alterações. E ao fazer upload ele não transfere o arquivo se o nome dele for grande, tive problema com o arquivo Graphic_Clock_Example.bas, que tive que renomear para G_Clock_Example.bas, se não ele não fazia upload de jeito nenhum (mas não dava erro). E tem como eu acessar um BME280 pelo Basic, ou terei que escrever toda a rotina em Basic ? Em Bascon tinha um exemplo do BMP085 (rotina enorme e complicada). Com a biblioteca em C talvez eu consiga, mas preferia um caminho menos complicado do que ter que analisar o código em C para fazer isso. Para adaptar a biblioteca em C para Basic vai ser um trabalho grande (e com risco de BUGs, o meu conhecimento de C ainda deixa muito a desejar), e não estou com este tempo todo para isso, tem algum corajoso aqui (vai em anexo os fontes)? E a minha gambiarra com os dois transistores funcionou perfeitamente (apesar de não ter ficado muito bonita e nem com o contato muito confiável num protoboard), não precisei apertar nenhum botão para entrar em modo de programação, foi tudo automático. Mesmo assim vou colocar um botão de reset, que às vezes pode ser útil. Arduino-ESP8266-BME280-master.zip -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Depois de algumas horas consegui fazer funcionar o ESP8266 (ESP-1 versão de 1Mbyte de flash) com interpretador Basic. Mordeu um pouco até que eu conseguisse transferir para o Flash em 230kbps. Depois que eu configurei para conectar na minha rede eu tive que tentar alguns IPs na minha rede até encontrar o IP correto do ESP Basic, imagino que tinha uma forma mais fácil, mas eu demorei poucos minutos para isso. Não foi tão difícil assim. A minha gambiarra está pronta para que eu possa plugar um LCD nele (tenho um conversor de nível instalado) e coloquei um BME280. Mas hoje já está um pouco tarde, farei alguns testes amanhã. -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Estou separando os componentes para testar um ESP-01 com o Basic. Estou com um Serial TTL x USB CP2104 com saídas RTS e DTR, com elas eu vou montar um circuito para reset e flash automáticos (num prontoboard pequeno) nem vou me preocupar com o transistor NPN, acho que posso usar uns genéricos sem problema, talvez o BC548, acho que tenho vários deles. Não sei se vou colocar botão de reset e flash, se der tudo certo não devo precisar deles (talvez só instale o botão de reset). Mando abaixo a imagem obtida num site de um pernambucano que normalmente escreve alguns artigos interessantes sobre eletrônica no seu blog (http://www.automalabs.com.br/page/2/ e http://ryan.com.br/blogs/quicktalk/). E qual é a velocidade máxima que é seguro gravar um Flash ? É seguro mudar a configuração da serial do ESP8266 para valores mais altos ou será que existe o risco de eu trancar definitivamente as portas com a chave dentro e nunca mais conseguir me comunicar pela serial com ele ? -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Coloquei aqui o programa exemplo, baseado no exemplo RTC APIs Example (pág 176 2C-ESP8266-SDK__API Guide__EN_V1.5.3.pdf com algumas modificações) em anexo. Teste_RTC_APIs_envio.zip adicionado 4 minutos depois -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
No arquivo : 2C-ESP8266-SDK__API Guide__EN_V1.5.3.pdf (em anexo) O reset é: system_restart(); (pág 20) whatchdog: system_soft_wdt_stop(); ou system_soft_wdt_restart(); (pág 36). Mas se você quiser evitar o reset pelo whatdog é só num grande loop colocar um pequeno delay de 1 milessegundo: delay(1); ou menor: delayMicroseconds(100); fazendo isso a cada pelo menos 15 milessegundos. Eu tenho um programa exemplo que eu compilei em que eu testei a função de reset por software e preservado as memoria RTC, mas estou no trabalho e só em casa para ver mais detalhes. 2C-ESP8266-SDK__API Guide__EN_V1.5.3.pdf -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
Acho que é até possível combinar, mas isto terá que ser feito no fonte do Basic, o que deve dar um trabalho danado, mas parece ser possível incorporando uma nova biblioteca (criada por mim em C). No meu aprendizado de C eu acabei fazendo um RTC (sem um RTC real) que pega a hora da internet num servidor NTP qualquer (neste caso foi o ntp.puc-rio.br) com resolução de 32 bits na casa decimal, o que eu resumi a resolução de 1 microssegundo (para ficar igual ao timer interno do ESP8266), e uma vez feito isto ele funciona como um relógio calendário com resolução de 1 microssegundo, sem mais precisar da Internet, a não ser para corrigir o erro do cristal do ESP8266 (no meu caso encontrei um erro de -8 segundos por dia). A precisão ficou muito boa, pois o erro do NTP com o timer interno foi ao redor de 1 centésimo de segundo, que com uma Internet melhor e uma rotina mais enxuta deve ser possível melhorar. Deu um pouco mais de trabalho e não foram só 4 linhas de código (muitas vezes mais que isso), mas funcionou, acho que vou transformar isto numa biblioteca (quando aprender como fazer isso), ainda estou testando o código, quando ficar satisfeito totalmente posto aqui o fonte em C (vai ficar uma postagem enorme). Seria muito mais fácil com um DS3231, (e muito mais preciso), mas eu tinha isto como um primeiro desafio. Não vejo a hora de testar o Basic num ESP-01 versão de 1MByte (vou testar com a versão com mais recursos). Mas ainda preciso montar a gambiarra para poder transferir o arquivo .bin para ele. Pelo que eu entendi uma vez instalado dá para programar ele conectando pelo WIFI (sem cabo) ? -
ESP8266 - A Pequena Maravilha para Comunicação WIFI
Intrudera6 respondeu ao tópico de aphawk em Microcontroladores
@aphawk Vocês estão me deixando curioso com este Basic, pois algo que deve dar trabalho de fazer é a interface para o Browser usando as outras linguagens (isto inclui o LUA e o C) e com este Basic talvez seja bem mais fácil. Mas mesmo assim eu quero continuar a me desenvolver em C (por enquanto na IDE Arduino, que é mais fácil para mim), agora que comecei peguei o vírus e não quero parar mais. Será que dá para combinar o Basic (interpretado) com o C (para desenvolver funções e suportar componentes não disponíveis em Basic) ? Me digam uma coisa, será que dá para colocar este Basic, sem capar muito a linguagem, num ESP-01 de 500kBytes total de flash? Qual será o maior tamanho de arquivo .bin que dá para instalar nele ? Tenho de 4Mbytes também, mas o ESP-01 é bem menor e se funcionar começa a ficar interessante.
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais