Translate

terça-feira, 8 de dezembro de 2015

Iniciando com testes AT+ do ESP8266 ESP-12 via CP2102


Por vários meses corri atrás da tal IoT, a Internet das Coisas. Resumindo, conectar as "coisas" (interruptores, motores, sensores, etc) à Internet (subentende-se que o interior de nossa casa também faça parte da Internet - por exemplo, nosso computador, celular, smarTV, vídeogame, etc).

Nas andanças atrás de peças eletrônicas baratas no Aliexpress, me deparei com um adaptador de Wi-Fi para o Arduino e que surpresa eu tive ao pesquisar mais sobre o componente e saber que ele poderia ser programado como um Arduino. Uma peça do tamanho da ponta do nosso dedo indicador ser um Arduino com Wi-Fi. Para quem conhece um pouco, é uma miniaturização fantástica. E barata! Existe até uma versão Arduíno com o ESP-12 no lugar do ATMega chamado WeMos.

Isso nos possibilita fazer nosso próprio aparelho com tecnologia embarcada e conectada à Internet (DIY - Do It Yourself), permitindo ser controlado e monitorado pelo nosso celular, por exemplo, em qualquer lugar em que haja conexão à Internet.

Vou explicar aqui o primeiro passo que consegui dar nessa área, utilizando um ESP-12 conectado à um PC, através do monitor serial da IDE Arduino.

O objetivo é fazer a conexão do ESP-12 com o Access Point (roteador) de casa, para uma familiarização inicial com estes módulos. O mais mastigado que posso, pois tive que colher informações de outros módulos para conseguir fazê-lo funcionar.

Apesar de ter usado um Breakout board para o ESP-12, pois o espaçamento da conexão não é do padrão que utilizamos para prototipação de 2 mm, é bem menor, o esquema do projetinho ficou assim:



O Breakout board que usei foi um bem barato encontrado no mercado livre e que já contém alguns resistores e espaço para um regulador de tensão de 3.3v. Usei um LD1086v33 o que deixou meio grosseiro e fui obrigado a acrescentar mais um à protoboard para energizar outros pinos para o funcionamento.

Esp8266 WIFI série módulo porta IO placa de placa de terminais ( apenas adaptador frete grátis(China (Mainland))
O CP2102 é genérico, sem pinos de CTS nem DTR. Ground, VCC (5v), TX e RX já bastam para fazer funcionar. Não utilize o 3.3v, pois nunca tem corrente suficiente para alimentar o ESP8266.
Novo USB 2.0 para TTL UART módulo conversor Serial CP2102 STC 5PIN PRGMR cabo livre SG051-SZ(China (Mainland))
Aliás, quando for utilizar em portas USB de microcomputadores, não utilize cabos longos e/ou finos, e prefira utilizar diretamente (sem cabo) as portas onboard traseiras. Pelo que pesquisei, o ESP8266 precisa de pelo menos 500mA de corrente.

Reforçando, o ESP8266 só trabalha com tensão 3.3v. Deve ser utilizado um LD1086v33 ou LM1117 para que não force e queime o componente.

O circuito correto, segundo o site esp8266/Arduino é com o esquema abaixo. Acabei por não utilizando os resistores nem o capacitor, mas funcionou para os testes de conexão com AP.


Abaixo fotos da montagem.

Utilizei o próprio IDE Arduíno 1.6.5, para fazer os testes. O monitor serial é simples e deu certo sem muitos entraves. 

Conforme orientações pesquisadas, deve ser utilizada essa versão ou mais recente, mas a 1.6.6 tem alguns problemas de projeto, por isso não recomendam utilizá-la. 

Após conectar o CP2102 na porta USB e ser detectado, escolha a COM correta em Ferramentas/Porta. Escolha Ferramentas/Monitor Serial. 

Na janela, escolha na caixa à direita, "115200 velocidade" e na caixa ao lado, "Ambos, NL e CR".

Agora podem ser dados os comando AT+ das tabelas NurdspacePridopia,Sparkfun

Observem que o erro foi por ter digitado o comando em minúsculas, isto é, não podem ser.

Caso a placa responda com caracteres estranhos, provavelmente a velocidade está errada.

Mais orientações podem ser conseguidas nos endereços:
Provavelmente o próximo post deva ser sobre upload de firmware, especificamente o NodeMCU para programação via IDE Arduino.





quarta-feira, 14 de outubro de 2015

Sugar ORM no Android Studio 1.4 com erro android.database.sqlite.SQLiteException: no such table

Foi difícil de achar solução para o problema, restando apenas a tentativa e erro para corrigí-lo.

Muito provável que a troca de versão do Android Studio de 1.3 para 1.4 tenha ocasionado o erro, então segue a solução que encontrei.

No build.gradle (Module app), acrescentar, na seção dependencies a linha

compile 'com.github.satyan:sugar:1.4'
ao invés da sugestão do site


compile 'com.github.satyan:sugar:1.3'
ou

compile 'com.github.satyan:sugar:1.3.1'
No AndroidManifest.xml incluir a expressão


android:name="com.orm.SugarApp"

Na seção <application /> e


<meta-data android:name="DATABASE" android:value="sugar_example.db" />
<meta-data android:name="VERSION" android:value="2" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example" />
entre as seções <application /> e <activity />, lembrando de alterar o DATABASE para o nome do arquivo e DOMAIN PACKAGE NAME para o domínio utilizado (o mesmo que está no item package da seção <manifest />; de preferência alterar o QUERY LOG para false.

Para teste, podemos inserir a classe e exemplo oferecidos no site do ORM:


public class Book extends SugarRecord<Book> {  String title;  String edition;
  public Book(){  }
  public Book(String title, String edition){    this.title = title;    this.edition = edition;  }}
mas com uma modificação, que deve ter sido adotada no versão 1.4 (a versão utilizada no site deve ter sido a 1.3): retire o parâmetro <Book> da primeira linha:


public class Book extends SugarRecord {

Insira um botão na content_main.xml ou no layout criado e insira na propriedade onclick o texto clique.

Na activity correspondente, crie o método clique:


public void clique(View v) {
    Book book = new Book("Title here", "2nd edition");
    book.save();
}
E teste no emulador (sugiro o Genymotion).

Testei e refiz várias vezes para conferir a causa do problema. 
Aparentemente a causa principal era a versão mesmo.








terça-feira, 29 de setembro de 2015

Botão voltar / home em Android 4.03+

Perdi muito tempo tentando encontrar como fazer aparecer a seta para esquerda na janela filha de um aplicativo Android, pois a explicação foi feita às pressas na aula.

A solução está no arquivo AndroidManifest.xml.

Basta acrescentar, ao final da seção activity da janela filha as linhas entre //---  abaixo:

<activity    android:name=".acnMain2Activity"    android:label="@string/title_activity_acn_main2" >

    //--------------- vvvvvvvvvvvvvvvvvv
    android:parentActivityName=".MainActivity" >
    <meta-data        android:name="android.support.PARENT_ACTIVITY"        android:value="br.com.ee.app1.MainActivity" />
    //--------------- ^^^^^^^^^^^^^^^^^^
</activity>

sendo que ".MainActivity" e "br.com.ee.app1.MainActivity" referem-se à classe pai, para onde retornará.

quarta-feira, 18 de março de 2015

Acesso ethernet cabeado do Arduino com enc28j60


Montagem rápida para teste do breakout ENC28J60, ethernet de baixo custo para o arduíno.

Para ser rápido e não repetir outros sites, montei conforme o site http://hofmannsven.com/2013/laboratory/arduino-ethernet-module/ e com a exceção do modelo da placa que comprei ser 5v enquanto a grande maioria é 3.3v, deu certíssimo.





terça-feira, 3 de março de 2015

Programador CP2102 SEM Autoreset - upload com botão de reset



Mais um básico que fui procurar no meio do meu Blog e não achei (porque não fiz, lógico).

Achei alguns programadores CP2102 baratos (R$ 8,98 cada) e não resisti, comprei para estocar, pois paguei pelo menos o dobro há alguns anos atrás. Aproveitei a compra de algumas matrizes de Led, o que ia baratear o frete, pois estavam em MG.


O problema foi que ele não tem disponível o autoreset e quando programamos o atmega, temos que apertar o botão de reset (7-GND X 1-RST) para que o programa seja carregado.

A documentação sobre esse reset de upload é muito obscura na NET.
Algumas dicas, pois sofri fazendo uma besteira atrás da outra tentando upar e quase desisti:

  • tenha certeza sobre o modelo do microcontrolador (eu estava usando um atmega8 e não sabia);
  • esteja certo de ter bootloader neste;
  • acerte o lado, caso tenha um conector rápido;
  • confira bem a fiação;
Depois que acertei tudo, testei as 4 peças que comprei e deu tudo certo. Nunca tinha conseguido upar com o reset manual :). Na verdade, o reset manual é para modelos de arduino mais antigos, desprovidos do autoreset, mas acabam sendo uma mão na roda para ICSP (In Circuit Serial Programming) - programação serial do microcontrolador no próprio circuito.

Primeiro o esquema de ligação (4 FIOS):

CP2102 ---- ATMega328
  +5V  ----  7-VCC
  GND  ----  8-GND
  RXD  ----  3-TX
  TXD  ----  2-RX



Driver do CP2102:
https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

Acertos no Arduino IDE (versões 1.6.0 e 0023): placa Arduino UNO; porta - a que foi dectada placa CP2102; carregado o exemplo Blink.


Quando notar que essas linhas laranjas aparecem, apertar e soltar o reset rapidamente.
Se estiver certo, o final do console será parecido com:



Logo que tiver paciência, tentarei colocar o autoreset no circuito (basta ligar na perna 28-DTR do CI CP2102 e colocar um capacitor de cerâmica de 0.1 μF entre ele e o pino 1-RST do ATmega.







sábado, 31 de janeiro de 2015

Por que utilizar Attiny?



O preço é quase o mesmo de um Atmega328 (falamos das versões DIP), que por sua vez tem muito mais entradas, saidas, memórias, etc.

Mas obviamente o tamanho é muito diferente: o Atmega328 tem 14 vias em cada lateral enquanto o attiny (25, 45, 85) tem 4. Isso resulta em muita economia de espaço para projetos mais simples.


Uma boa também por conseguirmos encontrar facilmente no Brasil, por um preço que vale a pena.

E se você tiver um USBASP poderá programá-lo no próprio circuito - ICSP - In-Circuit Serial Programming.

Um outro microcontrolador que vale a pena é o Atmega8 por ser mais barato que o atmega328, mas tem o mesmo número de vias, praticamente se igualando em entradas e saídas, mas tendo menos memória.

Attiny85: Default de fábrica e bricando para testes de reset via HVSP


Sem querer, eu já bricava um attiny. Propositalmente então, deve ser moleza. Mas primeiro, anotar quais são as configurações de fábricas e constatar no microcontrolador, é uma obrigação.

No site http://www.engbedded.com/fusecalc podemos calcular e ver os padrões de fábrica dos microcontroladores AVR. Os fuses do Attiny85 estão motrados assim para a configuração default


LowHighExtendedActionAVRDUDE arguments
0x0x0x* 
Apply manual changes to the values on the left side, or load factory default values for the selected device.
-U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
Select (try triple-click) and copy-and-paste this option string into your avrdude command line. You may specify multiple -U arguments within one call of avrdude.
* Note that some numerical values refer to fuses containing undefined bits (set to '1' here). Depending on the target device these fuse bits will be read either as '0' or '1'. Verification errors will occur if the values are read back with undefined bits set to '0'. Everything is fine if the values read from the device are either the same as programmed, or the following values (undefined set to '0'):Extended: 0x01.


Meu Attiny85 recém resetado mostra as informações abaixo, no AVRDUDESS:

Isto é, as informações batem.

Para bricar o Attiny85: o meio mais fácil que achei foi configurar o Low para 0x00 no AVRDUDESS e dar um write. Observe a mensagem do console depois de dar um Detect:


Depois disso, pode tentar gravar os fuses de fábrica ou qualquer outro, que o AVRDUDESS não vai mais conseguir ler ou gravar qualquer informação.

Passando pelo circuito de reset via HVSP, o resultado é esse, no serial monitor da IDE:


Voltando ao AVRDUDESS, o Detect dá a tela:


Repeti duas vezes, o microcontrolador bricou as duas vezes e ressucitou duas vezes. 

Realmente, apesar de simplificado, o circuito resetador funciona mesmo e o mais importante: é muito fácil de montar.

quinta-feira, 29 de janeiro de 2015

Circuito para reset HVSP para attiny


Tinha até desanimado em programar os ATTINY devido ao fato de bricarem muito fácil.

Recentemente, por acaso, estava passeando no http://www.pinterest.com/ e apareceu um circuito muito simples para reset de attiny por HVSP (High Voltage Serial Programming) utilizando um arduino como auxiliar. Fiz e deu certo de pri-me-i-ra.

Desta vez planejei mais e como levei um ano para me abastecer com algumas peças e ferramentas, foi muito mais eficiente montar o circuito (tenho que fazer um curso de eletrônica para entender um pouco).

O circuito e o programa encontram-se no site https://sites.google.com/site/wayneholder/attiny-fuse-reset, mas como de costume, deixarei links no gdrive:

O Sr. Wayne otimizou o código original, do Sr. Paul Willoughby do site http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/, fazendo-o detectar automaticamente o tipo de Attiny.


Desenhei o circuito no Fritzing:
Lembrando que a bateria de 9 volts é ilustrativa, pois o circuito exige 12 v para fazer o processo. Fiz o circuito para sobrar bastante espaço na placa padrão para ver se futuramente comporta um atmega328, dispensando o arduino. Caso verifique o esquema no fritzing, olhe cuidadosamente os componentes, pois há fios sobrepostos, escondendo a conexão real. Saliento somente um pequeno corte feito na raia da perna 3 do attiny, aproveitando para ganhar espaço na placa. O arquivo do fritzing está aqui.

Um outro detalhe é que compraram para mim um 2N3906 em vez do 2N3904. Ainda bem que pesquisei e para minha surpresa um é PNP e o outro NPN. Graças ao meu amigo 4 zóio (Edilson Souza), fiquei sabendo que tinha um equivalente BC54x e por acaso eu tinha um BC547, que usei e deu certo (consulte a equivalência no site http://www.electronica-pt.com/db/componentes.php?ref=2N3904 - me ajudou muito).





O código fonte do programa está aqui.
Rodou sem nenhuma modificação e sem acréscimos no Arduino IDE 0023.

Detect / Config de ATTINY com USBASP


Vixi! Fui verificar o estado de um attiny85 e... nem lembrava como conectava com o USBASP. Sorte que hoje tem informação sobrando na net. Após essa grande parada (meses sem mexer com circuitos), milagrosamente as coisas estão dando certo....

Primeiro, a pinagem do cabo do USBASP (do site http://www.ozwald.fr/):


Em seguida, a pinagem do ATTINY (25-45-85):


A ligação é direta: RST-Reset, GND-GND, MOSI-MOSI, MISO-MISO, SCK-SCK e VCC-VCC.
Não é necessário nenhum outro componente quando utilizado o USBASP. Para ligações com outros Attinys, verificar a pinagem.


Usei o AVRDUDESS para ler (outras vezes já usei para gravar os fuse bits - e brickei os avrs).
Prá meu espanto, deu certo de prima:

Notar que usei o USBASP, Port USB, Baud 19200 e Bit clock 1.5, conforme orienta a maioria dos sites. O resultado no console foi da detecção (botão Detect). Como disse, este avr estava bricado. Montei um esquema de reset de fábrica para o avr e pelo jeito funcionou, pois o AVRDUDESS conseguiu detectar o modelo e ler os Fuse bits. Próximo blog é sobre esse circuito.