Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in
M
meteorolog
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 5
    • Issues 5
    • List
    • Boards
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • EMM
  • meteorolog
  • Wiki
  • BoardCommands

BoardCommands

Last edited by Nelso Jost Oct 01, 2015
Page history

Esta wiki documenta os comandos que o firmware está preparado para receber através da porta serial.

Entende-se um comando por uma string (sequência de caracteres), enviada para a porta serial, com o seguinte formato:

comando,arg1,arg2,...,argN

onde arg1, arg2, ..., argN são argumentos para o comando.

Enviando comandos para serial

  • 1ª Opção: Monitor Serial da IDE do Arduino (acessível pelo botão de lupa);

  • 2ª Opção: Pelo terminal, fazendo-se

    $ make serial
    >>> send('comando,arg1,arg2,...,argN')

    ATENÇÃO! O símbolo >>> indica que você está dentro de um terminal Python. Os comandos da placa listados na próxima seção devem ser passados dentro de uma string para a função send() conforme ilustrado acima. Veja a seção final desta página sobre as vantagens de estar num ambiente Python.

Comandos para o firmware

Comando Descrição
read,a1,a2,...,aN Solicita a leitura de um ou mais sensores.
a1, a2, ..., aN devem ser nomes ou apelidos dos sensores.
Retorna: r1,r2,...,rN (valores correspondentes da leitura dos N sensores)
setrtc,Y,m,d,H,M,S Configura o relógio RTC_DS1307 (se presente)
Y: ano, m: mês, d: dia, H: hora, M: minuto, S: segundo
Retorna: done: Y-m-d H:M:S (hora configurada)
listall Retorna uma lista de todos os sensores disponíveis e seus apelidos
help Retorna uma lista dos comandos disponíveis

Os sensores suportados oficialmente são:

Nome Apelido Medida Unidade
DHT22_TEMP t tempertura ºC
DHT22_AH ah umidade relativa do ar %
BMP085_PRESSURE p pressão atmosférica Pa
LDR l luminosidade u.a. (escala 0-100)
RTC_DS1307 dt relógio %Y-%m-%d %H:%M:%S

Solicitando leituras

Por exemplo, podemos solicitar a leitura de temperatura, pressão e luminosidade de uma só vez como segue:

read,t,p,l

A resposta deverá ser algo como

24.5,101308,75.0

valores que interpretados juntamente com suas unidades indicam (lembre-se de que os computadores utilizam o ponto como separador decimal):

  • 24.5 ºC de temperatura
  • 101308 Pa de pressão atmosférica
  • 75.0 % de luminosidade ambiente (escala de 0 a 100 %)

É possível passar tanto o nome do sensor, como seu apelido. Logo, read,BMP085_PRESSURE e read,p são equivalentes.

OBS: No caso da leitura de sensores como LDR e o DHT22, que não utilizam I2C, valores retornados podem parecer válidos mesmo que o sensor não esteja presente na placa!

Configurando o relógio RTC_DS1307

Exemplo:

setrtc,2015,6,30,7,28,41

Caso bem sucedido, a resposta deverá ser:

done: 2015-6-30 7:28:41

Explorando make serial

Esta seção é dedicada àqueles que optaram por enviar os comandos para a serial utilizando o terminal, via

$ make serial
>>> send('comando,arg1,arg2,...,argN')

Uma vez que você está dentro de um terminal Python, você poderá utilizar todo o poder dessa linguagem para manipular os valores retornados por send(), salvá-los em arquivo, etc.

  • Salve a string de resposta em uma variável
>>> r = send('read,t,p,l')
>>> type(r)
<class 'str'>
>>> r
'24.5,101308,75.0'
>>> send('read,l,ah')
'33.5,78.0'
>>> r = _      # o caracetere _ refere-se ao último valor recebido
>>> print(r)
33.5,78.0
  • Sincronize o relógio da placa com o do sistema
>>> sync_rtc()
'done: 2015-09-02-16-55-11'
  • Pegue a data do sistema (para quem não tem o RTC_DS1307 presente na placa)
>>> from datetime import datetime
>>> r = send('read,t,ah,p,l')          # lê todos os sensores, menos o RTC
>>> dt = datetime.now().strftime('%Y-%m-%d-%H-%M-%S')  # pega data do sistema
>>> print(dt)
2015-07-17-15-23-12
>>> s = ','.join([dt, r])   # junta o dt com a resposta r da serial numa única string
>>> print(s)
2015-07-17-15-23-12,23.5,78.0,101450,89.4
  • Salve a string lida em um arquivo CSV
>>> r = send('read,dt,p,t,ah,l')    # lê todos sensores, incluindo o RTC
>>> SEP = '\t'                      # separador de valores (padrão é vírgula)
>>> with open('datalog.csv', 'a') as f:
...     f.write(r.replace(',', SEP))
...
>>> # se tudo deu certo, um arquivo 'datalog.csv' deve ter sido criado na pasta local
>>> # saia do interpretador apertando CTRL + D
$ cat datalog.csv
2015-07-17-15-23-12   23.5   78.0   101450   89.4
Clone repository
  • BoardCommands
  • arduino ide
  • Home
More Pages

Os conteúdos dos repositórios estão sob licenças livres e são responsabilidade dos próprios autores, não representando as opiniões e posicionamento da UFRGS ou do CTA.