Whitecat ESP32 N1

De The Things Network Catalunya Wiki
Jump to navigation Jump to search

Introducció

La Whitecat ESP32 N1 (https://whitecatboard.org/) és una placa de prototipat desenvolupada al Citilab (https://www.citilab.eu/) de Cornellà basada en el chip ESP32 de Espressif i el mòdul LoRa RFM95 de HopeRF.


Whitecatn1-mini.png


La placa es pot connectar fàcilment a una placa de prototipat (breadboard) o es pot fer servir la carrier que venen ells mateixos i que disposa de sortides per cada GPIO a més d'específiques per I2C o SPI.

Requeriments

La Whitecat ESP32 N1 es programa des del navegador. Per disposar de l'entorn funcional caldrà:

Un cop fet farem doble click a la icona del Whitecat Agent que es quedarà a la safata d'inici. Des de l'agent es pot obrir l'IDE en el navegador. Si tinguèssim un altre navegador per defecte que no fos Google Chrome haurem d'obrir aquest últim a mà i navegar a https://ide.whitecatboard.org on ens demanarà logar-nos fent servir el nostre compte de Google i ens obrirà l'entorn de programació.

L'entorn de programació és ne realitat dos entorn: un de blocs basat en Blockly (https://developers.google.com/blockly/) i un de text per programar la placa en Lua.

Mode blocks

En el mode blocs tindrem una sèrie de blocs ja predefinits agrupats per temàtica (events, control, operadors, llistes,...). També inclou un munt de sensors predefinits i també connectivitat (WiFi, LoRa, MQTT). Alguns dels blocs són de configuració (no tenen representació visual) com per exemple el que ens permet definir l'SSID i la clau de la WiFi a la que volem que es connecti.


Wcb blocks.jpg


Programació amb Lua

L'entorn de programació Lua et permet un control més detallat del teu codi.

function init()
  lora.attach(lora.BAND868)
  lora.setAppEui("0000000000000000")
  lora.setAppKey("00000000000000000000000000000000")
  lora.setDr(0)
  lora.setAdr(false)
  lora.join(lora.OTAA)
end

function send(counter)
  lora.tx(true, 1, pack.pack(counter))
end

function sleep(n)
  local t = os.clock()
  while os.clock() - t <= n do
    -- nothing
  end
end

init()
local counter = 0
while(true) do
    send(counter)
    counter = counter + 1
    sleep(60)
end