Summary
This article is a walk through of the architecture of the PSoC 6 – AnyCloud firmware which I will implement for my Tilt Hydrometer IoT application
This series is broken up into the following 12 articles with a few additional possible articles. Tilt Hydrometer (Part 1) Overview & Out-of-Box Tilt Hydrometer (Part 2) Architecture Tilt Hydrometer (Part 3) Advertising Scanner Tilt Hydrometer (Part 4) Advertising Packet Error? Tilt Hydrometer (Part 5) Tilt Simulator & Multi Advertising iBeacons Tilt Hydrometer (Part 6) Tilt Simulator an Upgrade Tilt Hydrometer (Part 7) Advertising Database Tilt Hydrometer (Part 8) Read the Database Tilt Hydrometer (Part 9) An LCD Display Tilt Hydrometer (Part 10) The Display State Machine Tilt Hydrometer (Part 11) Draw the Display Screens Tilt Hydrometer (Part 12) CapSense Tilt Hydrometer: LittleFS & SPI Flash (Part ?) Tilt Hydrometer: WiFi Introducer (Part ?) Tilt Hydrometer: WebServer (Part ?) Tilt Hydrometer: Amazon MQTT (Part ?) Tilt Hydrometer: Printed Circuit Board (Part ?) You can get the source code from git@github.com:iotexpert/Tilt2.git This repository has tags for each of the articles which can be accessed with "git checkout part12" You can find the Tilt Simulator at git@github.com:iotexpert/TiltSimulator.git.
Story
I started this whole thing by just writing some code without really thinking about the architecture too much. I had been wanting to try the Bluetooth SDK inside of AnyCloud and I was just focused on how that worked inside of the PSoC 6. As I wrote the code, I naturally implemented with a common design pattern of
- Individual tasks have responsibility for a specific hardware block
- Each task has a command queue to which other tasks can send commands
- Tasks that need to have data fed to them by other tasks have a data queue
As I worked on the code and things started to get a bit more involved I decided that I had better draw a picture of the system. This picture served two main purposes.
- It kept me on track
- I knew that I was going to need it for this series of articles
Here is the architecture of what I have implemented for this series of articles. As of this writing I have not started started not the wifi or the file system part of the implementation but I think that my design will work.
The system has 7 tasks:
Task | Role |
---|---|
Bluetooth Manager | Listens for advertising packets in the correct format. When it finds them it submits the data to the Tilt Data Manager |
Tilt Data Manager | A database of all of the "Tilt" data |
NTShell | A serial command line to control the system |
Display Manager | A task to handle all of the ST7789V display functions |
CapSense Manager | Responsibility for reading capsense buttons and the slider and sending commands to the display task |
File System Manager | Responsibility for writing data to the SD Card and possibly the SPI flash |
WiFi Manager | An MQTT interface to the internet (maybe) |
There are two places in the picture above where my lines have to cross, something that I really hate. So I decided to try a different picture to explain the system. The picture below describes the tasks, what data they own, what hardware they own, what the inputs are and what the outputs are.
In the next article Ill start the basic project and create an advertising observer.
No comment yet, add your voice below!