mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
boards: add zigduino
This adds support for the ATmega128RFA1 based Zigduino. The board is available on the Strasbourg site of the IoT lab for testing.
This commit is contained in:
parent
83fbde1e91
commit
5fdbd09187
21
boards/zigduino/Kconfig
Normal file
21
boards/zigduino/Kconfig
Normal file
@ -0,0 +1,21 @@
|
||||
# Copyright (c) 2021 Benjamin Valentin
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU Lesser
|
||||
# General Public License v2.1. See the file LICENSE in the top level
|
||||
# directory for more details.
|
||||
|
||||
|
||||
config BOARD
|
||||
default "zigduino" if BOARD_ZIGDUINO
|
||||
|
||||
config BOARD_ZIGDUINO
|
||||
bool
|
||||
default y
|
||||
select CPU_MODEL_ATMEGA128RFA1
|
||||
select HAS_PERIPH_ADC
|
||||
select HAS_PERIPH_I2C
|
||||
select HAS_PERIPH_RTC
|
||||
select HAS_PERIPH_RTT
|
||||
select HAS_PERIPH_SPI
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_UART
|
5
boards/zigduino/Makefile
Normal file
5
boards/zigduino/Makefile
Normal file
@ -0,0 +1,5 @@
|
||||
MODULE = board
|
||||
|
||||
DIRS = $(RIOTBOARD)/common/atmega
|
||||
|
||||
include $(RIOTBASE)/Makefile.base
|
6
boards/zigduino/Makefile.dep
Normal file
6
boards/zigduino/Makefile.dep
Normal file
@ -0,0 +1,6 @@
|
||||
USEMODULE += boards_common_atmega
|
||||
|
||||
ifneq (,$(filter saul_default,$(USEMODULE)))
|
||||
USEMODULE += saul_adc
|
||||
USEMODULE += saul_gpio
|
||||
endif
|
14
boards/zigduino/Makefile.features
Normal file
14
boards/zigduino/Makefile.features
Normal file
@ -0,0 +1,14 @@
|
||||
CPU = atmega128rfa1
|
||||
|
||||
# This board is based on an atmega CPU, thus import the features from it
|
||||
FEATURES_PROVIDED += periph_adc
|
||||
FEATURES_PROVIDED += periph_i2c
|
||||
FEATURES_PROVIDED += periph_rtc
|
||||
FEATURES_PROVIDED += periph_rtt
|
||||
FEATURES_PROVIDED += periph_spi
|
||||
FEATURES_PROVIDED += periph_timer
|
||||
FEATURES_PROVIDED += periph_uart
|
||||
|
||||
# Put defined MCU peripherals here (in alphabetical order)
|
||||
# Peripherals are defined in common/arduino-atmega/Makefile.features
|
||||
# Add only additional Peripherals
|
8
boards/zigduino/Makefile.include
Normal file
8
boards/zigduino/Makefile.include
Normal file
@ -0,0 +1,8 @@
|
||||
# configure the terminal program
|
||||
PORT_LINUX ?= /dev/ttyUSB0
|
||||
PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
|
||||
BAUD ?= 57600
|
||||
|
||||
ZIGDUINO_BOOTLOADER ?= atmegaboot
|
||||
|
||||
include $(RIOTBOARD)/common/atmega/Makefile.include
|
80
boards/zigduino/doc.txt
Normal file
80
boards/zigduino/doc.txt
Normal file
@ -0,0 +1,80 @@
|
||||
/**
|
||||
* @defgroup boards_zigduino Zigduino
|
||||
* @ingroup boards
|
||||
* @brief Support for the Zigduino board
|
||||
|
||||
# Hardware
|
||||
## Pinout
|
||||
|
||||
![Zigduino](https://www.iot-lab.info/assets/images/docs/boards/zigduino/zigduino.png)
|
||||
[Pinout](https://static1.squarespace.com/static/511f4f0de4b09463c7605f13/t/5275c46be4b07e72f74c7438/1383449707749/zigduino-r2-pinout.pdf)
|
||||
|
||||
@warning Unlike on other ATmega MCUs, the GPIOs are not 5V tolerant.
|
||||
|
||||
@note The 5V pin cannot be used to power the board, as the board is not
|
||||
equipped with an voltage regulator. The pin is therefore not
|
||||
connected. But it can be used to pass 5V to shields, if connected
|
||||
to a 5V supply voltage.
|
||||
|
||||
## Board
|
||||
The Zigduino board is an Arduino-compatible microcontroller platform that integrates
|
||||
a SOC with a 8-Bit AVR MCU and a IEEE 802.15.4 radio chip (ATmega128RFA1).
|
||||
|
||||
## MCU Details
|
||||
| MCU | ATmega128RFA1 |
|
||||
|:------------------------------|:----------------------------------|
|
||||
| Family | ATmega |
|
||||
| Vendor | Atmel |
|
||||
| Package | QFN/MLF |
|
||||
| SRAM | 16KiB |
|
||||
| Flash | 128KiB |
|
||||
| EEPROM | 4KiB |
|
||||
| Core Frequency | 8MHz (16MHz no power save mode) |
|
||||
| Oscillators | 32.768 kHz & 16 MHz |
|
||||
| Timer | 6 ( 2x8bit & 4x16bit ) |
|
||||
| Analog Comparator | 1 |
|
||||
| ADCs | 1x 15 channel 6 to 12-bit |
|
||||
| USARTs | 2 |
|
||||
| SPIs | 3 (1 SPI & 2 USART SPI) |
|
||||
| I2Cs | 1 (called TWI) |
|
||||
| Vcc | 1.8V - 3.6V |
|
||||
| Datasheet / Reference Manual | [Datasheet and Reference Manual](http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-8266-MCU_Wireless-ATmega128RFA1_Datasheet.pdf) |
|
||||
| Board Manual | [Product Page](http://www.logos-electro.com/store/zigduino-r2) |
|
||||
|
||||
The MCU comes with a 2.4 GHz IEEE 802.15.4 radio that is compatible with the
|
||||
Atmel AT86RF23x line of transceivers with the only difference being that it is
|
||||
not being accessed over an SPI bus, but instead the radio registers are directly
|
||||
mapped into memory.
|
||||
|
||||
# Flashing RIOT
|
||||
Flashing RIOT on the Zigduino is done using the on-board USB-TTL adapter.
|
||||
The ATmega bootloader is present on the MCU.
|
||||
Simply use
|
||||
|
||||
`make flash BOARD=zigduino`
|
||||
|
||||
# Use on IoT Lab
|
||||
|
||||
Most of the Zigduino nodes are deployed in the Strasbourg site with sensors.
|
||||
Some of these nodes are also combined with a LoRa modem in order to offer a dual radio stack IEEE 802.15.4/LoRaWAN.
|
||||
|
||||
There are two available configurations:
|
||||
|
||||
## Zigduino (atmega128rfa1)
|
||||
|
||||
A basic Zigduino nodes with embedded sensors:
|
||||
|
||||
- [Grove Temperature Humidity sensor](https://wiki.seeedstudio.com/Grove-Temperature_and_Humidity_Sensor_Pro/) (pin 14, A0)
|
||||
- [Grove Light sensor](https://wiki.seeedstudio.com/Sensor_light/) (pin 15, A1)
|
||||
- [Grove Loudness sensor](https://wiki.seeedstudio.com/Grove-Loudness_Sensor/) (pin 16, A2)
|
||||
- [Grove PIR Motion sensor](https://wiki.seeedstudio.com/Grove-PIR_Motion_Sensor/) (pin 4, D4)
|
||||
|
||||
## Zigduino (atmega128rfa1_rn2483)
|
||||
This is an extension of the previous Zigduino (atmega128rfa1)
|
||||
|
||||
- Secondary serial port (LoRa modem): 57600 bauds
|
||||
- [RN2483](https://ww1.microchip.com/downloads/en/DeviceDoc/RN2483-LoRa-Technology-Module-Command-Reference-User-Guide-DS40001784G.pdf) modem with 1.0.3 firmware (LoRaWAN Class A only)
|
||||
- TX (pin 1, TXD1)
|
||||
- RX (pin 0, RXD1)
|
||||
|
||||
*/
|
56
boards/zigduino/include/adc_params.h
Normal file
56
boards/zigduino/include/adc_params.h
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Benjamin Valentin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_zigduino
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Board specific configuration of direct mapped ADC
|
||||
*
|
||||
* @author Benjamin Valentin <benpicco@googlemail.com>
|
||||
*/
|
||||
|
||||
#ifndef ADC_PARAMS_H
|
||||
#define ADC_PARAMS_H
|
||||
|
||||
#include "board.h"
|
||||
#include "saul/periph.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief ADC configuration
|
||||
*/
|
||||
static const saul_adc_params_t saul_adc_params[] =
|
||||
{
|
||||
{
|
||||
.name = "temp",
|
||||
.line = ADC_LINE(0),
|
||||
.res = ADC_RES_10BIT,
|
||||
},
|
||||
{
|
||||
.name = "light",
|
||||
.line = ADC_LINE(1),
|
||||
.res = ADC_RES_10BIT,
|
||||
},
|
||||
{
|
||||
.name = "loud",
|
||||
.line = ADC_LINE(2),
|
||||
.res = ADC_RES_10BIT,
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ADC_PARAMS_H */
|
||||
/** @} */
|
64
boards/zigduino/include/board.h
Normal file
64
boards/zigduino/include/board.h
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Benjamin Valentin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_zigduino
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Board specific definitions for the Zigduino board.
|
||||
*
|
||||
* @author Benjamin Valentin <benpicco@googlemail.com>
|
||||
*/
|
||||
|
||||
#ifndef BOARD_H
|
||||
#define BOARD_H
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @name baudrate for STDIO terminal
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#ifndef STDIO_UART_BAUDRATE
|
||||
#define STDIO_UART_BAUDRATE (57600U) /**< Sets Baudrate for e.g. Shell */
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name xtimer configuration values
|
||||
* @{
|
||||
*/
|
||||
#define XTIMER_WIDTH (16)
|
||||
#define XTIMER_HZ (250000UL)
|
||||
#define XTIMER_BACKOFF (40)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Grove PIR Motion sensor
|
||||
*/
|
||||
#define PIR_MOTION_PIN GPIO_PIN(PORT_D, 4)
|
||||
#define PIR_MOTION_MODE GPIO_IN_PU
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief Initialize board specific hardware, including clock, LEDs and stdio
|
||||
*/
|
||||
void board_init(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BOARD_H */
|
||||
/** @} */
|
46
boards/zigduino/include/gpio_params.h
Normal file
46
boards/zigduino/include/gpio_params.h
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Benjamin Valentin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_zigduino
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Board specific configuration of direct mapped GPIOs
|
||||
*
|
||||
* @author Benjamin Valentin <benpicco@googlemail.com>
|
||||
*/
|
||||
|
||||
#ifndef GPIO_PARAMS_H
|
||||
#define GPIO_PARAMS_H
|
||||
|
||||
#include "board.h"
|
||||
#include "saul/periph.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIO pin configuration
|
||||
*/
|
||||
static const saul_gpio_params_t saul_gpio_params[] =
|
||||
{
|
||||
{
|
||||
.name = "motion",
|
||||
.pin = PIR_MOTION_PIN,
|
||||
.mode = PIR_MOTION_MODE,
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GPIO_PARAMS_H */
|
||||
/** @} */
|
30
boards/zigduino/include/periph_conf.h
Normal file
30
boards/zigduino/include/periph_conf.h
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Benjamin Valentin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_zigduino
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Peripheral MCU configuration for the Zigduino board
|
||||
*
|
||||
* @author Benjamin Valentin <benpicco@googlemail.com>
|
||||
*/
|
||||
|
||||
#ifndef PERIPH_CONF_H
|
||||
#define PERIPH_CONF_H
|
||||
|
||||
#include "periph_conf_atmega_common.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* PERIPH_CONF_H */
|
||||
/** @} */
|
@ -79,6 +79,7 @@ IOTLAB_ARCHI_nrf52840-mdk = nrf52840mdk:multi
|
||||
IOTLAB_ARCHI_pba-d-01-kw2x = phynode:kw2xrf
|
||||
IOTLAB_ARCHI_samr21-xpro = samr21:at86rf233
|
||||
IOTLAB_ARCHI_samr30-xpro = samr30:at86rf212b
|
||||
IOTLAB_ARCHI_zigduino = zigduino:atmega128rfa1
|
||||
IOTLAB_ARCHI := $(IOTLAB_ARCHI_$(BOARD))
|
||||
|
||||
# There are several deprecated and incompatible features used here that were
|
||||
@ -93,7 +94,7 @@ else
|
||||
_NODES_DEPLOYED = $(shell iotlab-experiment --jmespath='"0"' --format='" ".join' get $(_IOTLAB_EXP_ID) --deployment)
|
||||
_NODES_LIST_OPTION = --nodes
|
||||
_NODES_FLASH_OPTION = --flash
|
||||
ifneq (firefly,$(BOARD))
|
||||
ifeq (,$(filter firefly zigduino,$(BOARD)))
|
||||
# All boards in IoT-LAB except firefly can be flashed using $(BINFILE).
|
||||
# On IoT-LAB, firefly only accepts $(ELFFILE) and WSN320 boards on accept $(HEXFILE).
|
||||
# Using $(BINFILE) speeds up the firmware upload since the file is much
|
||||
|
@ -40,7 +40,7 @@ BOARD_PROVIDES_NETIF := acd52832 adafruit-clue airfy-beacon atmega256rfr2-xpro \
|
||||
microduino-corerf native nrf51dk nrf51dongle nrf52dk nrf52840dk nrf52840-mdk nrf52840dongle nrf6310 \
|
||||
nucleo-f207zg nucleo-f767zi openmote-b openmote-cc2538 pba-d-01-kw2x remote-pa \
|
||||
remote-reva ruuvitag same54-xpro samr21-xpro samr30-xpro spark-core telosb thingy52 yunjia-nrf51822 z1 \
|
||||
frdm-kw41z phynode-kw41z usb-kw41z openlabs-kw41z-mini openlabs-kw41z-mini-256kib
|
||||
frdm-kw41z phynode-kw41z usb-kw41z openlabs-kw41z-mini openlabs-kw41z-mini-256kib zigduino
|
||||
|
||||
ifneq (,$(filter $(BOARD),$(BOARD_PROVIDES_NETIF)))
|
||||
# Use modules for networking
|
||||
|
Loading…
Reference in New Issue
Block a user