TweeterBie: exibe os tweets mais recentes em LCD 16X2 usando CubieBoard A 20 e Arduino

TweeterBie: exibe os tweets mais recentes em LCD 16X2 usando CubieBoard A 20 e Arduino

O TweeterBie é um dispositivo que consiste em
1. CubieBoard A20 (CubieBoard 2) 2. Arduino Uno ou qualquer outra placa compatível (estou usando o freeduino) 3. Visor LCD 16X2 4. Conexão com a Internet O objetivo do projeto é exibir os tweets mais recentes no Display 16×2 usando os componentes acima.

Os downloads de software necessários são:

1. Phoenix / Live Suite, Live suite é para MAC e LINUX e Phoenix é para Windows

2. Um sistema operacional/firmware para inicializar no CubieBoard, de preferência com sabor Ubuntu

a. Cubieez (estou usando isso para este projeto) em torno de 550 MB (X11VNC pré-construído)

b. Cubo

c. Lubuntu e muito mais..

3. Um cliente Putty SSH para SSH no CubieBoard.

4. Use um emulador de terminal serial ou qualquer outro cliente

5. Scanner IP avançado ou scanner IP irritado

Precisamos de um sistema operacional baseado em Linux e, de preferência, em Ubuntu, no qual possamos executar python e usar conexão serial e de soquete para constituir um TweeterBie.

Há duas coisas que podemos fazer neste momento: 1. Podemos substituir o NAND Flash por um sistema operacional Linux. 2. Podemos usar um cartão MicroSD para gravar o sistema operacional nele e inicializar o CubieBoard no Linux.

O procedimento passo a passo para a tarefa acima está disponível nos sites do CUBIEEZ ou em outros sites relacionados ao sistema operacional.

Na minha configuração eu tinha Sem mouse ou teclado sobressalente, sem conectividade Ethernet, apenas um dongle Wi-Fi e um conversor USB para RX-TX com fios de conexão

Imagem mostrando Dongle Wi-Fi e conversor USB para RX-TX

Figura 1: Imagem mostrando Dongle Wi-Fi e conversor USB para RX-TX

Para isso primeiro instalei o emulador de terminal Termite Serial, conectei meu conversor TTL para USB ao PC, instalei todos os drivers necessários para o mesmo e o mantive pronto para inicializar a comunicação. Em seguida, na extremidade do conversor TTL para USB, peguei três fios – um de cada pino Rx, Tx e Gnd e os conectei aos pinos correspondentes na interface serial de depuração de hardware fornecida na parte superior do CubieBoard. . Observe também que conectar 5v danificará o CubieBoard.

Imagem mostrando conexões do conversor USB para RX-TX com Cubieboard A20

Figura 2: Imagem mostrando conexões do conversor USB para RX-TX com Cubieboard A20

Agora abra o Cupim no seu PC e escolha as configurações. Selecione a porta COM apropriada (no meu caso é COM4). Defina os seguintes parâmetros: Taxa de transmissão: 115200 Bits de dados : 8 Parar bits: 2 Paridade: Nenhum Texto transmitido: Anexar CR + LF como mostrado na figura acima. Nota: Você também pode usar apenas SE ou CR mas isso depende do sistema operacional que você está usando. Pressione Enter no teclado mantendo o cursor na caixa de texto na parte inferior do TERMITE. Agora a tela apresenta o shell de login: Digite “cubie” como nome de usuário e pressione enter (ou clique em enviar), quando for solicitada a senha digite “cubieboard” e pressione enter (ou clique em enviar). Isto nos levará ao Cubie Shell para programar e executar todos os nossos programas futuros. Tipo “sudoifconfig”E pressione Enter. Quando for solicitada a senha, a partir de agora use “cubículo”. Ou dê “SU”Primeiro, digite a senha como“cubículo” isso lhe dá acesso root para que você não precise mais usar o sudo. E você pode executar todos os comandos shell sob o usuário root nesta janela do terminal. Supondo que você tenha um monitor compatível com entrada HDMI ou DVI, um mouse USB e um teclado USB, você não precisa ter SSH na placa. Basta conectá-los e começar a programar.

Programação

Arduíno

Supõe-se que o leitor passou por como começar com arduino e Interface LCD com Arduino .

É de conhecimento comum escolher o Arduino para a maioria dos sistemas embarcados devido à sua simplicidade de programação e grande quantidade de recursos para obter o máximo em um curto espaço de tempo.

Portanto, conecte a placa Arduino ao seu desktop/laptop (a partir de agora chamado de PC) e inicie o software Arduino. Agora abra o programa Exemplos > Cristal Líquido > Olá Mundo conforme mostrado abaixo.

Captura de tela do IDE do Arduino mostrando a navegação para amostra de código para display de cristal líquido

Figura 3: Captura de tela do IDE do Arduino mostrando a navegação para amostra de código para display de cristal líquido

Faça todas as conexões de pinos conforme descrito nos comentários do programa no início. Eu o representei no Diagrama de circuito para referência. Agora o módulo LCD está funcionando no modo de 4 bits em vez do modo de 8 bits. Dado que a transferência de dados demora o dobro do tempo, mas é suficiente para o TweeterBie. O código do Arduino foi reprojetado. A alteração do código anexado introduz o efeito de rolagem no texto a ser exibido. Nota: O código anexado foi anexado como arquivo INO Depois de despejar o código e executar com “ENGINEERING GARAGE” na porta serial

Imagem do Cubieboard A20 e TweeterBie baseado em Arduino mostrando mensagens iniciais

Figura 4: Imagem do Cubieboard A20 e TweeterBie baseado em Arduino mostrando mensagens iniciais

Agora precisaremos de uma forma de nos comunicarmos com o Arduino e enviar dados.

Eu escolhi python para scripts. Cubieez tem uma versão pré-instalada do PITÃO para testar, abra o terminal e digite o seguinte

Phyton

Assim que o terminal mudar para a porta python como >>>

Isso significa que o PYTHON está instalado agora para sair do prompt de uso

>>>saída

Existe uma ferramenta chamada pySerial que pode ser usada para fins de comunicação serial. Mais documentação pode ser encontrada aqui

Agora, antes de instalarmos pySerial nós precisamos PIP Ser instalado. Isso facilita a instalação das bibliotecas python nos repositórios.

Para instalar o PIP siga as instruções

Depois de instalar o pySerial, você pode usar o minitermo que o acompanha.

Para executar o minitermo digite o seguinte comando no terminal. Vejamos as portas disponíveis no CubieBoard

Ø python -m serial.tools.list_ports

isso listará as portas disponíveis

Este tutorial introdutório dá uma boa ideia sobre como usar o pySerial.

Meu Arduino está conectado via USB.

Protótipo de Cubieboard A20 e TweeterBie baseado em Arduino

Figura 5: Protótipo de Cubieboard A20 e TweeterBie baseado em Arduino

Portanto, a saída do comando anterior será agora:

Captura de tela do aplicativo Mini Term mostrando comandos python

Figura 6: Captura de tela do aplicativo Mini Term mostrando comandos python

Ok, vamos ligar mini prazo com porta ttyUSB0 e taxa de transmissão de 9600. Certifique-se de executá-lo no root.

O comando para isso é Phyton -m serial.tools.miniterm nome>

sudopython -m serial.tools.miniterm/dev/ttyUSB0

ou

sudopython -m serial.tools.miniterm–p /dev/ttyUSB0 –b 9600

Captura de tela do aplicativo Mini Term mostrando a execução de comandos python

Figura 7: Captura de tela do aplicativo Mini Term mostrando a execução de comandos python

Tudo o que você digitar será exibido no LCD. (É “OLÁ”, o O está logo atrás…)

Imagem do Cubieboard A20 e TweeterBie baseado em Arduino mostrando um tweet recebido

Figura 8: Imagem do Cubieboard A20 e TweeterBie baseado em Arduino mostrando um tweet recebido

Configuração

Ok, já que a parte Display está instalada e funcionando, vamos configurar a parte TWEETER do TweeterBie.

O seguinte pode ser feito diretamente no CubieBoard, mas estou fazendo isso no meu PC.

Para acessar os tweets precisamos estabelecer uma conexão com os servidores do Twitter, nos autenticar como usuário e também como CubieBoard dispositivo e uso API chamadas para obter os últimos tweets. O tutorial mencionado abaixo trata apenas disso desde o básico.

Para criar acesso ao TweeterBie acesse https://dev.twitter.com/ e faça login com as credenciais do Twitter.

Como estamos usando Python para codificação e existe uma biblioteca API bem construída para acesso ao Twitter em python, ela é chamada TweePy, para mais informações TweePy use esta documentação e este tutorial Auth.

A primeira coisa que precisamos aqui é instalar o TweePy no CubieBoard. Como já temos o PIP instalado é muito fácil instalar o TweePy. Use o seguinte comando no terminal. sudopip instalar tweepy cd tweepy Isso muda o diretório para tweepy instalação do sudopython setup.py Agora instalamos o tweepy. Vamos criar o diretório de trabalho “TweeterBie” mkdirTweeterBie E vamos mudar o prompt de comando para apontar para dentro do diretório cd TweeterBie Agora criaremos um arquivo para armazenar nosso código python. nano TweeterBie.py No Editor NANO insira o seguinte código referido neste site http://stackoverflow.com/questions/7714282/return-actual-tweets-in-tweepy, weeterBie.py importtweepy# importa a biblioteca TweePy importserial # importa a biblioteca pySerial importtime # o uso da instrução delay precisa desta biblioteca ser = serial.Serial('/dev/ttyUSB0', 9600, tempo limite = 1) # Chaves de consumidor e tokens de acesso, usados ​​para OAuth> Tweeter User Dependent consumer_key = 'MfRPzXL7gsfxsB1T1Tdab42lY' # CHAVE DE API consumidor_secret = 'O9k5dVSbIxYM4GCQj0IKnRdGkFTKGwaLLEunz2v9jwZriFh2qQ' access_token = '2526693469-raqqlVcj6jMV36AshYVAX48jvt8Q3BvSuEkrjOM' access_token_secret = 'CbvbGGxTl50dTishhxjfDklNATHkKaiaedv5zWpVzH86p' # Chaves de consumidor e tokens de acesso usados ​​para OAuth terminam aqui # Processo OAuth, usando chaves e tokens autenticação = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) # Criação da interface real, utilizando autenticação api=tweepy.API(auth) hora.sleep(3); # durma 3 segundos para iniciar o arduino public_tweets = api.home_timeline # acessa todos os tweets da linha do tempo para tweet em public_tweets: printtweet.text # imprime todos os Tweets no terminal ser.write(tweet.text.encode('utf-8')) # imprime texto no LCD hora.sleep(8); # Durma por 8 segundos entre tweets ser.close # fecha porta Agora salve e saia .save = ctrl^o e Exit= ctrl^X Se você precisar de atualização regular, use o código fornecido abaixo. # Editor de arquivo: Arquivo GNU nano 2.2.6: SuperLoop_TweeterBie.py importtweepy# importa a biblioteca TweePy importserial # importa a biblioteca pySerial importtime # o uso da instrução delay precisa desta biblioteca ser = serial.Serial('/dev/ttyUSB0', 9600, tempo limite = 1) # Chaves de consumidor e tokens de acesso, usados ​​para OAuth> Tweeter User Dependent consumer_key = 'MfRPzXL7gsfxsB1T1Tdab42lY' # CHAVE DE API consumidor_secret = 'O9k5dVSbIxYM4GCQj0IKnRdGkFTKGwaLLEunz2v9jwZriFh2qQ' access_token = '2526693469-raqqlVcj6jMV36AshYVAX48jvt8Q3BvSuEkrjOM' access_token_secret = 'CbvbGGxTl50dTishhxjfDklNATHkKaiaedv5zWpVzH86p' # Chaves de consumidor e tokens de acesso usados ​​para OAuth terminam aqui # Processo OAuth, usando chaves e tokens autenticação = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) # Criação da interface real, utilizando autenticação api=tweepy.API(auth) hora.sleep(3); # durma 3 segundos para iniciar o Arduino enquanto Verdadeiro: public_tweets = api.home_timeline # acessa todos os tweets da linha do tempo para tweet em public_tweets: printtweet.text # imprime todos os Tweets no terminal ser.write(tweet.text.encode('utf-8')) # imprime texto no LCD hora.sleep(8); # Durma por 8 segundos entre tweets hora.sleep(30); # durma 30 segundos antes de acessar a API novamente ser.close # fecha porta Agora vamos atualizar os Tweets do Twitter e ter certeza de que está funcionando!!! Aviso: Por favor, não forneça tweets com mais de 22 caracteres…!! Isso resulta na mudança de linha neste ponto, conforme mostrado abaixo. Novos Tweets:- mas exibidos na ordem inversa 1. Bem-vindo ao Twitter 2. Você é demais haha 3. Olá@engineersGarage 4. Este é o quarto tweet O resultado dos tweets acima do TweeterBie é fornecido abaixo.

Código-fonte do projeto

###


#include   // already there in the sketch for LCD display

// initialize the library with the numbers of the interface pins
LiquidCrystallcd(12, 11, 5, 4, 3, 2);
charinData(141); // Allocate some space for the string max of 140 charcters in Tweets
charinChar; // Where to store the character read from serial port
byte index = 0; // Index into array to point the memory location
bytebytesrecvd = 0; // counter to check the incoming bytes

void setup  {
Serial.begin(9600);  // Serial Port to send the characters to be displayed
Serial.write("Power On");   // Power up Signalling on the Debug port after establishing connection

lcd.begin(16, 2);    // set up the LCD's number of columns and rows
lcd.print("hello, world!");  // Print a message to the LCD Sample from old sketch
delay(1000); // Time lag until message is read out of the LCD
lcd.setCursor(0, 0); // Set LCD cursor to Home Position.
index = 0; // Set character Indexing position to nil (zero)

lcd.setCursor(0, 0); // bring back cursor to home
lcd.print("Latest Tweet: "); // Display the Header on First Line
lcd.setCursor(16, 1); // Go to last column of the Second line and wait for Characters to appear.
}
// This ends the Setup of the Arduino , Now to create the Super Loop
void loop  {
index = 0; // always reset to zero at the beginning of data reception
while(Serial.available  > 0) // Don't enter the section unless data is available to read
   { 
if(index < 140) // One less than the size of the array get only 140 characters
       {
inChar = Serial.read ; // Read a character
inData(index) = inChar; // Store it in “inData” array
index++; // Increment where to write next increment the index
inData(index) = ''; // Add terminating character (Null character) for the next position
delay(5); // give 5 milliseconds gap to avoid data corruption
bytesrecvd = index; // get the total count of bytes received
       }
   } // keep loping until data is available

lcd.clear ;  // now clear the LCD of previous Data
lcd.setCursor(0, 0); // Go to Home Position
lcd.print("Latest Tweet: "); // write the latest tweet header on first line
lcd.setCursor(16, 1); // go to end of line on second row
lcd.autoscroll ; // start auto scroll (the problem is it will rotate both rows)

for (intthisChar = 0; thisChar
 

###

 

Diagramas de circuito

Diagrama de circuito-Cubieboard-A20-Arduino-Based-TweeterBie
Diagrama de blocos-Cubieboard-A20-Arduino-Based-TweeterBie

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.