Skip to the content
PCBKitNew board
2 layers100 × 60 mmPpse-2021, the printed circuit board in 3D

This is the repository for SALMO, the Solar Azimuth and eLevation Motorized lOcator. It is a PCB used for driving a tracking solar panel system, using GPS location and a MPPT algorithm to maximise the incident power. The official name of the project is PPS2021_SUN_TRK

Size
100 × 60 mm
Copper layers
2
Thickness
1.6 mm
Parts
133
Nets
96
Pads
394
Tracks, vias
875, 139
Pours
458
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
3 Mar 2022
Updated
11 Jul 2022

Overview

Ppse-2021 is an open-source printed circuit board by thomasnonis, from the thomasnonis/ppse-2021 repository on GitHub. It is a 2-layer board of 100 × 60 mm with 133 parts on 96 nets, routed with 875 tracks and 139 vias.

It is built around the RP2040, W25Q16JVSSIQ and TPS563201, with the CGRA4007-HF, SI2300DS and BC846A among its other parts. Its parts include 41 resistors, 26 capacitors, 16 diodes, 13 transistors and 11 connectors. It belongs with the RP2040 boards of this library.

Main components

10

README

README.md

Abstract

This is the repository for SALMO, the Solar Azimuth and eLevation Motorized lOcator. It is a PCB used for driving a tracking solar panel system, using GPS location and a MPPT algorithm to maximise the incident power.
The official name of the project is PPS2021_SUN_TRK

About the project

During the second semester of the 2021/2022 A.Y. of their bachelor degree in Electronics Engineering, a group of students known as SALMO SOCIETY, developed a custom board to solve real world problems.
Nowadays, we are all aware about climate change and it's impact, so the SALMO SOCIETY decided in partecipate to the renewable energy run, in particular exploiting the energy obtained by a solar panel to drive a load.
The aim of the board it's to move the solar panel using two step motors (along z-y axis) facilitating the MPP (Maximum Power Point) reaching and, as consequence, delivering the maximum power to the load.
Using a GPS module, the board knows exactly where it is located around the globe; afterwards the position of the sun is computed with a specific algorithm based on astronomical calculations. Then, the spatial position of the panel is derived by the accelerometer and compass modules; lastly, the motor is moved in order to follow the exact position of the sun (given its azimuth and elevation).

Salmo board

Repo structure

text
📂 SALMO_pico_fw    -> Firmware 
📂 datasheets       -> Datasheet of every component mounted on board
📂 kicad-project    -> KiCad and gerber files 

:rainbow: Building process

Debian:

text
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential

Fedora:

text
sudo dnf install cmake
sudo dnf group install "C Development Tools and Libraries" "Development Tools"
sudo dnf install gcc-arm-linux-gnu \
arm-none-eabi-gcc-cs-c++ \
arm-none-eabi-gcc-cs \
arm-none-eabi-binutils \
arm-none-eabi-newlib

then:

text
git pull
git submodule update --init --recursive

now add to your shell profile (~/.bashrc or ~/.zshrc) the current directory (pico-sdk folder) as env variable:

export PICO_SDK_PATH=<path_to>/pico-sdk

Windows:

Follow this guide and you're good to go.

Finally, in order to compile:

text
cd SALMO_pico_fw
mkdir build
cd build 
cmake ..
cd src
make -j4

After this process some binaries files will be created.
The suitable one is the .uf2 file, which is located into SALMO_pico_fw/build/src.
Now you can start the board in bootloader mode:

  1. Disconnect the board
  2. Hold the BOOTSEL button
  3. Connect the device to your computer

Then drag and drop the .uf2 file to RPI-RP2 mass storage device.

Picotool

If you want to install picotool and easily flash when RP2040 is not in BOOTSEL mode, you need to follow these steps:

Debian:

text
sudo apt install build-essential pkg-config libusb-1.0-0-dev

Fedora:

text
sudo dnf install libusb-devel libusb libusb1-devel systemd-devel
sudo reboot

Mac:

text
xcode-select --install
brew install libusb
brew link --overwrite libusb

Windows:

For now Picotool doesn't seem to work on Windows, skip these steps and flash "manually" moving the .uf2 file.

Compiling Picotool

After you have downloaded picotool you have to compile it:

text
cd picotool
mkdir build
cd build
cmake ..
make

Afterwards, you must give execution permissions to the scripts:

text
cd ../../SALMO_pico_fw/src
sudo chmod +x build.sh
sudo chmod +x flash.sh
sudo chmod +x build_and_flash.sh

If something on MacOS doesn't work use

text
sudo chown -R {username}:{workgroup} ppse-2021

Then, you can simply navigate to SALMO_pico_fw/src/ and execute build.sh, flash.sh or build_and_flash.sh to respectively build, flash or build and flash the project. :nail_care:

Firmware flow chart

mermaid
graph TB
A[Peripherals initialization] -->B(Infinite loop)
    B --> C{Is go home btn pressed?}
    C -->|Yes| D(Go home) --> E
    C -->|No| E{Is tracking enable btn pressed?}
	E -->|Yes| E1(Enable or disable tracking mode) --> F
	F{Is update_motor_position_timer elapsed <br>and tracking mode on?}
	F -->|Yes| G(Update motor position) --> H
	F -->|No| H{Is gps timer elapsed?}
	E -->|No| H
	H -->|Yes| I(Read and parse GPS output) --> L
	H -->|No| L{Is update sun position timer elapsed?}
	L -->|Yes| M(Run algorithm to compute sun position based on GPS data) --> B
	L -->|No| B

How to contribute to the project

In this sections you can find some guidelines in order in order to contribute with out project

Commits

A good commit message should be preceded by a prefix, then a colon and then a brief and descriptive comment on the changes made.
All commits should be written in the present simple tense (eg. add file, modify this, edit that).
Commits may also include longer descriptions in the second argument of a commit message.

Following are the prefix conventions for this repository.

  • hw: for hardware (schematic, pcb, ...)
  • fw: for firmware
  • sw: for software (interfaces on a pc and such)
  • docs: for documentation
  • notes: for lecture notes
  • chore: for general tasks (file management, moving stuff around, ...)

:x: git commit -m "Added some features to code"
:heavy_check_mark: git commit -m "fw: add uart implementation to gps driver"

File naming

All files must have no spaces and should be lowercase.

:x: Name of file.ext
:heavy_check_mark: name-of-file.ext

:briefcase: Adding new drivers or libraries

If you want to add a new driver or library please keep this tree structure

text
📦 SALMO_pico_fw
 ┣📜 CMakeLists.txt (Project cmake file)
 ┣ 📂 build
 ┣ 📂 src
 ┗ 📜 CMakeLists.txt (SALMO.C cmake file)
 ┣ 📂 your_lib
 ┃ ┗ 📂 your_lib docs
 ┃ ┗ 📜 CMakeLists.txt (lib cmake file)
 ┃ ┗ 📜 your_lib.c.
 ┃ ┗ 📜 your_lib.h

Every library needs some sort of documentation, and of course a cmake file!

Parts

133
QtyValueFootprintReferences
17100nCapacitor_SMD:C_0603_1608MetricC2, C4, C6, C10, C11, C12, C13, C14, C15, C16, C17, C20, C21, C24, C25, C26 +1
1510kResistor_SMD:R_0603_1608MetricR1, R3, R6, R9, R11, R13, R22, R30, R31, R32, R33, R38, R39, R40, R41
822Resistor_SMD:R_0603_1608MetricR26, R27, R28, R29, R34, R35, R36, R37
8CGRA4007Diode_SMD:D_SMAD9, D10, D11, D12, D13, D14, D15, D16
8SI2300DSPackage_TO_SOT_SMD:SOT-23Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13
533kResistor_SMD:R_0603_1608MetricR10, R15, R17, R19, R24
5TestPointTestPoint:TestPoint_Keystone_5005-5009_CompactTP1, TP2, TP3, TP4, TP5
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
3470RResistor_SMD:R_0603_1608MetricR16, R18, R20
3BC846APackage_TO_SOT_SMD:SOT-23Q3, Q4, Q5
3Fiducialppse_2021:Fiducial-ppseFID1, FID2, FID3
210uCapacitor_SMD:C_0805_2012MetricC18, C19
218pCapacitor_SMD:C_0603_1608MetricC1, C3
21kResistor_SMD:R_0603_1608MetricR2, R4
21uCapacitor_SMD:C_0805_2012MetricC8, C9
222uCapacitor_SMD:C_0805_2012MetricC22, C23
227RResistor_SMD:R_0603_1608MetricR7, R8
24k7Resistor_SMD:R_0603_1608MetricR14, R25
2SMA S1BDiode_SMD:D_SMAD3, D4
2SMAJ15ADiode_SMD:D_SMAD1, D2
112MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
112V INConnector_Molex:Molex_Micro-Fit_3.0_43650-0200_1x02_P3.00mm_HorizontalJ4
12.2uppse_2021:InductorL1
12016L050MRppse_2021:2016L Series PPTCF1
13LP01MPackage_TO_SOT_SMD:SOT-323_SC-70Q1
14k7 DNPResistor_SMD:R_0603_1608MetricR23
1500mResistor_SMD:R_1210_3225MetricR21
1510Resistor_SMD:R_0603_1608MetricR12
1AccelerometerConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_HorizontalJ6
1BuzzerBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1CompassConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_HorizontalJ5
1Conn_02x03_Counter_ClockwiseConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ1
1Conn_02x08_Counter_ClockwiseConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ2
1DNP 100nCapacitor_SMD:C_0603_1608MetricC5
1DNP 10kResistor_SMD:R_0603_1608MetricR5
1D_ZenerDiode_SMD:D_0603_1608MetricD8
1EN_SWButton_Switch_THT:SW_PUSH_6mmSW4
1FerriteBeadInductor_SMD:L_0603_1608MetricFB1
1Fuse 1.5Appse_2021:Fuse HolderF2
1HOME_SWButton_Switch_THT:SW_PUSH_6mmSW3
1LED_RGB 5050LED_SMD:LED_RGB_1210D7
1Motor 1Connector_JST:JST_XH_S5B-XH-A_1x05_P2.50mm_HorizontalJ9
1Motor 2Connector_JST:JST_XH_S5B-XH-A_1x05_P2.50mm_HorizontalJ10
1OLEDConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ7
1PAM-7Q-0ppse_2021:PAM-7Q0U4
1PDTC114YPackage_TO_SOT_SMD:SOT-23Q2
1PRG_SWButton_Switch_THT:SW_PUSH_6mmSW1
1PWR_LEDLED_SMD:LED_0603_1608MetricD6
1Panel+ ConnectorTerminalBlock_TE-Connectivity:TerminalBlock_TE_282834-2_1x02_P2.54mm_HorizontalJ11
1Panel- ConnectorTerminalBlock_TE-Connectivity:TerminalBlock_TE_282834-2_1x02_P2.54mm_HorizontalJ8
1RBR1VWM30ATFTRppse_2021:Package-PMDED5
1RP2040ppse_2021:RP2040-Hand-SolderU2
1RST_SWButton_Switch_THT:SW_PUSH_6mmSW2
1TPS563201Package_TO_SOT_SMD:SOT-23-6U3
1USB_B_MiniConnector_USB:USB_Mini-B_Wuerth_65100516121_HorizontalJ3
1W25Q16JVSSPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU1

Questions

How big is the Ppse-2021 PCB?

It measures 100 × 60 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ppse-2021 use?

133 parts, built around the RP2040, W25Q16JVSSIQ, TPS563201 and CGRA4007-HF. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ppse-2021 KiCad files?

From the thomasnonis/ppse-2021 repository on GitHub, at the commit this page was made from: the board is kicad-project/PPSE_2021.kicad_pcb and its schematic kicad-project/PPSE_2021.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ppse-2021 design in my own project?

Its repository states no licence, so its author keeps all rights: ask thomasnonis before reusing the design.

Similar boards

  • 4 layers85.7 × 73.9 mmLAITS HW, the printed circuit board in 3D

    LAITS HW

    tollsimy/LAITS-HW

    LAITS Hardware Repo

    200 parts
  • 2 layers102.4 × 77.4 mmScheda PSE, the printed circuit board in 3D

    Scheda PSE

    Eduzyolo/PSE_project

    This is the official repo for the PSE project

    176 parts1
  • 2 layers50 × 50 mmKch ha, the printed circuit board in 3D

    Kch ha

    kit-kch/ha-pcb

    PCB realizing various kinds of adders using NAND gates

    54 partsMIT
  • 4 layers40.6 × 20.8 mmSafepulse, the printed circuit board in 3D

    Safepulse

    Safecast/safepulse

    Open Source HVS for geiger counters.

    92 parts12
  • 2 layers40.6 × 57.9 mmLaser control, the printed circuit board in 3D

    Laser control

    begemotv2718/laser_control

    Unit to control medical laser power source with control lines of conventional CNC power source

    20 parts1
  • 4 layers74.7 × 66.6 mmBUCK BOOST CONVERTER, the printed circuit board in 3D

    BUCK BOOST CONVERTER

    MHI-Design/BUCK-BOOST-CONVERTER-DESIGN--SINGLE-PCB-

    Buck ve Boost converter tasarımı yaptım. Teknik detaylar ve tasarım dosyaları bulunmaktadır.

    99 parts
  • 2 layers100 × 70 mmGswitch brain, the printed circuit board in 3D

    Gswitch brain

    MarkWestbroek/MusicBrain

    A central brain running on teensy or a lighter MCU to process any control signals (MIDI, CV, our own) into the same but adding logic, ADSRs, DCOs, CV matrices etc. to it

    69 partsMIT
  • 4 layers75 × 75 mmUSAN r0, the printed circuit board in 3D

    USAN r0

    alu-source/open_USAN

    This project documents the software and hardware of an ultrasonic anemometer, created in cooperation between FH Aachen and DLR Göttingen

    262 parts1