Gbox 4.20
Grow box automation and monitoring - <a href='https://sites.google.com/site/growboxguy/'>https://sites.google.com/site/growboxguy/</a>
 
Loading...
Searching...
No Matches
Gbox420_Nano_Hempy.ino File Reference

Hempy module for Nano. More...

#include "Arduino.h"
#include "avr/wdt.h"
#include "avr/boot.h"
#include "printf.h"
#include "Thread.h"
#include "StaticThreadController.h"
#include "SPI.h"
#include "RF24.h"
#include "SerialLog.h"
#include "Settings.h"
#include "src/Modules/HempyModule.h"
#include "src/WirelessCommands_Hempy.h"
Include dependency graph for Gbox420_Nano_Hempy.ino:

Go to the source code of this file.

Functions

RF24 Wireless (WirelessCEPin, WirelessCSNPin)
 
void setup ()
 
void InitializeWireless ()
 
void loop ()
 Threads.
 
void run1sec ()
 
void run5sec ()
 
void run1min ()
 
void heartBeat ()
 Wireless communication.
 
void getWirelessData ()
 
void getWirelessStatus ()
 
time_t updateTime ()
 

Variables

bool & Debug = *new bool
 < communicate with SPI devices, with the Arduino as the master device
 
bool & Metric = *new bool
 
char LongMessage [MaxLongTextLength] = ""
 Temp storage for assembling long messages (REST API, MQTT reporting)
 
char ShortMessage [MaxShotTextLength] = ""
 Temp storage for assembling short text messages (Log entries, Error messages,etc)
 
char CurrentTime [MaxWordLength] = ""
 Buffer for storing current time in text format.
 
uint8_t ReceivedMessage [WirelessPayloadSize]
 
uint32_t ReceivedMessageTimestamp = millis()
 
HardwareSerial & ArduinoSerial = Serial
 < Component initialization
 
SettingsModuleSettings
 
HempyModule * HempyMod1
 
Thread OneSecThread = Thread()
 < Thread initialization
 
Thread FiveSecThread = Thread()
 
Thread MinuteThread = Thread()
 

Detailed Description

Hempy module for Nano.

To change the default pin layout / startup settings navigate to: Settings.h

Runs autonomously on an Arduino RF-Nano or Arduino Nano with an nRF24L01+ wireless transceiver.

Supports wireless data exchange with the Main module

Author
GrowBoxGuy - https://sites.google.com/site/growboxguy/
Version
4.20

Definition in file Gbox420_Nano_Hempy.ino.

Function Documentation

◆ getWirelessData()

void getWirelessData ( )

< Updating internal timer

Definition at line 139 of file Gbox420_Nano_Hempy.ino.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getWirelessStatus()

void getWirelessStatus ( )

Definition at line 159 of file Gbox420_Nano_Hempy.ino.

Here is the call graph for this function:

◆ heartBeat()

void heartBeat ( )

Wireless communication.

Definition at line 130 of file Gbox420_Nano_Hempy.ino.

Here is the caller graph for this function:

◆ InitializeWireless()

void InitializeWireless ( )

< Set the speed to slow - has longer range + No need for faster transmission, Other options: RF24_2MBPS, RF24_1MBPS

< RF24_CRC_8 for 8-bit or RF24_CRC_16 for 16-bit

< RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, and RF24_PA_MAX=0dBm.

< The number of bytes in the payload. This implementation uses a fixed payload size for all transmissions

< Not necessary, startListening should switch back to normal power mode

< Dump all previously cached but unsent ACK messages from the TX FIFO buffer (Max 3 are saved)

< Dump all previously received messages from the RX FIFO buffer (Max 3 are saved)

< Reset timeout counter

Definition at line 72 of file Gbox420_Nano_Hempy.ino.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ loop()

void loop ( )

Threads.

< put your main code here, to run repeatedly:

< loop only checks if it's time to trigger one of the threads (run1sec(), run5sec(),run1min()..etc)

< Checks for a control package from the main module

Definition at line 102 of file Gbox420_Nano_Hempy.ino.

Here is the call graph for this function:

◆ run1min()

void run1min ( )

Definition at line 123 of file Gbox420_Nano_Hempy.ino.

Here is the caller graph for this function:

◆ run1sec()

void run1sec ( )

< reset watchdog timeout

< Blinks built-in led

Definition at line 110 of file Gbox420_Nano_Hempy.ino.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run5sec()

void run5sec ( )

Definition at line 117 of file Gbox420_Nano_Hempy.ino.

Here is the caller graph for this function:

◆ setup()

void setup ( )

< New line

< logs to the Arduino serial, adds new line after the text (true), and uses no indentation (0). More on why texts are in F(""): https://gist.github.com/sticilface/e54016485fcccd10950e93ddcd4461a3

< Watchdog timeout set to 8 seconds, if watchdog is not reset every 8 seconds it assumes a lockup and resets the sketch

< fix watchdog not loading sketch after a reset error on Mega2560

< Copy a blank command to the memory block pointed ReceivedMessage. Without this ReceivedMessage would contain random data

< Loading settings from EEPROM

< Setting up wireless module

< 1000ms - Setting up how often threads should be triggered and what functions to call when the trigger fires

< This Module contains the watering logic, weight sensors, pump controllers

Definition at line 44 of file Gbox420_Nano_Hempy.ino.

Here is the call graph for this function:

◆ updateTime()

time_t updateTime ( )

Definition at line 170 of file Gbox420_Nano_Hempy.ino.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Wireless()

RF24 Wireless ( WirelessCEPin  ,
WirelessCSNPin   
)
Here is the caller graph for this function:

Variable Documentation

◆ ArduinoSerial

HardwareSerial& ArduinoSerial = Serial

< Component initialization

Printing serial messages to the Arduino Serial output.

Printing serial messages to the Arduino Serial output and the esp-link Microcontroller Console (uC Console)

Definition at line 33 of file Gbox420_Nano_Hempy.ino.

◆ CurrentTime

char CurrentTime[MaxWordLength] = ""

Buffer for storing current time in text format.

Definition at line 28 of file Gbox420_Nano_Hempy.ino.

◆ Debug

bool& Debug = *new bool

< communicate with SPI devices, with the Arduino as the master device

Definition at line 24 of file Gbox420_Nano_Hempy.ino.

◆ FiveSecThread

Thread FiveSecThread = Thread()

Definition at line 40 of file Gbox420_Nano_Hempy.ino.

◆ HempyMod1

HempyModule* HempyMod1

Definition at line 35 of file Gbox420_Nano_Hempy.ino.

◆ LongMessage

char LongMessage[MaxLongTextLength] = ""

Temp storage for assembling long messages (REST API, MQTT reporting)

Definition at line 26 of file Gbox420_Nano_Hempy.ino.

◆ Metric

bool& Metric = *new bool

Definition at line 25 of file Gbox420_Nano_Hempy.ino.

◆ MinuteThread

Thread MinuteThread = Thread()

Definition at line 41 of file Gbox420_Nano_Hempy.ino.

◆ ModuleSettings

Settings* ModuleSettings

Definition at line 34 of file Gbox420_Nano_Hempy.ino.

◆ OneSecThread

StaticThreadController<3> ThreadControl& OneSecThread = Thread()

< Thread initialization

Definition at line 39 of file Gbox420_Nano_Hempy.ino.

◆ ReceivedMessage

uint8_t ReceivedMessage[WirelessPayloadSize]

Definition at line 29 of file Gbox420_Nano_Hempy.ino.

◆ ReceivedMessageTimestamp

uint32_t ReceivedMessageTimestamp = millis()

Definition at line 30 of file Gbox420_Nano_Hempy.ino.

◆ ShortMessage

char ShortMessage[MaxShotTextLength] = ""

Temp storage for assembling short text messages (Log entries, Error messages,etc)

Definition at line 27 of file Gbox420_Nano_Hempy.ino.