====== Raspberry Pi - GPIO Control ====== === Sense-Hat - Definitive Guide === * **Sense Hat [[https://pinout.xyz/pinout/sense_hat#|pin outs]]** * **Sense Hat (Astro Pi) [[https://www.raspberrypi.org/blog/sense-hat-projects/|Latest Projects ]]** {{:brainbox:young-engineers:chickens:xypi-config:pi3_gpio.png?540 |}} {{ :brainbox:young-engineers:raspberry-pi:pi2_gpio_reference.png?200|}} ====== Resources ====== === HUMIDITY & TEMPERATURE MONITOR === {{ :brainbox:young-engineers:raspberry-pi:dht11-pinout-1024x742.jpg?400|DHT11 Image}} * Three pin [[http://www.uugear.com/portfolio/dht11-humidity-temperature-sensor-module/|DHT11 humidity sensor information]] * The [[http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-the-raspberry-pi/|DHT11 temperature and humidity]] sensor * DHT11 [[https://github.com/szazo/DHT11_Python|Python Code]] === INFRARED REMOTE CONTROL === * KY-022 [[https://arduinomodules.info/ky-022-infrared-receiver-module/|Infrared Receiver Module]] * The KY-005 [[https://arduinomodules.info/ky-005-infrared-transmitter-sensor-module/|Infrared Transmitter Module]] === Google API & Service Account === * [[https://console.developers.google.com/|Google API's Console]] * [[https://www.twilio.com/blog/2017/02/an-easy-way-to-read-and-write-to-a-google-spreadsheet-in-python.html|Read and write to Google Sheets]] * [[https://console.developers.google.com/apis/credentials?showWizardSurvey=true&project=id-dht11-data-01|dht11-data]] sheet credentials dashboard === PCF8591 ADC DAC AD/DA Analog Digital Converter Module === {{ :brainbox:young-engineers:raspberry-pi:pcf8591t.jpg?400|}} {{ :brainbox:young-engineers:raspberry-pi:adc-with-logic-converter.png?400|}} * [[https://circuitdigest.com/microcontroller-projects/interfacing-pcf8591-adc-dac-module-with-raspberry-pi|PCF8591 and Raspberry Pi control]] * [[https://www.nxp.com/docs/en/data-sheet/PCF8591.pdf|PCF8591 Data Sheet]] * [[https://raspberrypi.stackexchange.com/questions/36983/how-to-change-read-channels-on-pcf8591|Command byte structure]] * [[https://einhugur.com/blog/index.php/xojo-gpio/pcf8591-analog-to-digital/|PCF8591 Module - Connection and schematic]] * [[https://www.nxp.com/docs/en/application-note/AN4471.pdf|SMBus application notes]] * [[https://github.com/skoona/skn_rpi-display-services|Collection of C++ utilities and info]] * [[https://raspberrypi.stackexchange.com/questions/36983/how-to-change-read-channels-on-pcf8591|How to read channels on pcf8591]] * [[https://github.com/LatinAmericanProgramer/Python-Analog-to-Digital-Converter-with-PCF8591|Python3 code]] * [[http://bristolwatch.com/rpi/pcf8591.html|PCF8591 ADC DAC Module project]] * [[https://github.com/simonmonk|Sme code examples can be found in multiple repositories]] * [[http://bristolwatch.com/rpi/code/pcf8591.txt|PCF8591 ADC DAC ModuleRaspberry Pi code]] * [[http://wiringpi.com/extensions/i2c-pcf8591/|Wiring Pi Extension]] * [[https://einhugur.com/blog/index.php/xojo-gpio/pcf8591-analog-to-digital/|Overview]] * [[https://www.sunfounder.com/learn/sensor-kit-v2-0-for-raspberry-pi-b-plus/lesson-13-pcf8591-sensor-kit-v2-0-for-b-plus.html|Simple example]] * [[https://www.electrodragon.com/product/pcf8591-adc-dac-adda-analog-digital-converter-module/|Module overview]] * [[https://www.electrodragon.com/w/AD/DA|Schematic]] * [[http://www.pibits.net/code/raspberry-pi-and-a-pcf8591-example.php|Example code]] ^ Raspberry pi ^ PCF8591 Module ^ | SDA | SDA | | SCL | SCL | | 3V3 | VCC | | GND | GND | === XC-4486 5V-3V Logic Level Converter === {{ :brainbox:young-engineers:raspberry-pi:logic-converter.png|LLC Board}} * RXI – High voltage input to voltage divider from high-voltage device. Signal will be shifted down and sent to low-voltage device on “RXO” pin. * RXO – Low voltage output from voltage divider to low-voltage device. Signal is shifted down from “RXI” input. * TXI – Low voltage input/output of MOSFET circuit. This pin interacts with “TXO” on the high side. Bi-directional, but this is the only shifter that will shift from low to high. * TXO – High voltage input/output of MOSFET circuit. This pin interacts with “TXI” on the low side. Bi-directional, but this is the only shifter that will shift from low to high. * To send a signal from the low-voltage side to the high-voltage side (e.g. from 3.3V to 5V), the signal must be input at “TXI”. It’ll pass through the converter and come out as a higher voltage on the “TXO” (transmit output) pin. * On the other hand, a signal that strictly travels from high to low-voltage should pass from “RXI” to “RXO”. * Sending a signal from the high side to the low side is less restricted. We can use either the bi-directional channel or the voltage divider, but we may need to leave the bi-directional channel for converting from low-to-high. {{ :brainbox:young-engineers:raspberry-pi:logic-converter-2.png |}} All of these ‘RX’, ‘RXI’, ‘RXO’, and even ‘RX0’ labels can get confusing. Remember ‘I’ stands for Input and ‘O’ stands for Output. If the Electric Imp sends a signal out of it’s ‘TX’ pin it’ll go into the ‘TXI’ pin on the LLC, get shifted up to 5V and come out the ‘TXO’ pin, and finally run into ‘RX’ on the Arduino. Source: XC-4486 [[https://learn.sparkfun.com/tutorials/retired---using-the-logic-level-converter|Logic level converter]] {{ :brainbox:young-engineers:raspberry-pi:74c245-logic.jpg|}} === 74hc245 8Ch Logic Converter === * **[[http://www.ti.com/lit/ds/symlink/sn74hc245.pdf|74hc245 Data Sheet]]** * **Tips & Tricks[[http://ww1.microchip.com/downloads/en/DeviceDoc/chapter%208.pdf|3.3V - 5V]]** ====== Motor Library ====== * [[https://github.com/gavinlyonsrepo/RpiMotorLib/blob/master/Documentation/28BYJ.md|First go-to source]] for information and software for most popular micro-controlled motors / motor modules. {{ :brainbox:young-engineers:raspberry-pi:uln2003-stepper-module-connect.jpg?400|}} === ULN2003 28BYJ-U48 === To rotate the stepper motor you provide a sequence of “high” and “low” levels to each of the 4 inputs in sequence. By setting the correct sequence of high and low levels the motor spindle will rotate. Reversing the sequence results in the direction being reversed. Note the jumper is only used to isolate the motor - leave jumper 'on' even when using external 5-12V to motor). Using the pigpio python _stepper module: * **[[https://github.com/stripcode/pigpio-stepper-motor|pigpio stepper module]]** * **https://www.electronicoscaldas.com/datasheet/ULN2003A-PCB.pdf|ULN2003 Module Data Sheet]]** * **[[http://myandroidthings.com/post/tutorial-23|ULN2003 Stepper Motor Tutorial]]** * **[[http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino|Stepper motor module]]** * https://www.raspberrypi-spy.co.uk/2012/07/stepper-motor-control-in-python/ {{ :brainbox:young-engineers:raspberry-pi:l298-motor-control-module.jpg?400|}} === L298N Dual DC or Single Stepper Motor Module === * **[[https://dronebotworkshop.com/dc-motors-l298n-h-bridge/|High power dual stepper motor module]]** The board contains an L298N mounted on a heatsink, a 5 volt voltage regulator to “optionally) provide power for logic circuits, supporting diodes and capacitors and connectors as follows: * Logic inputs for each H-Bridge circuit * Power supply inputs for the motor power supply * An optional 5 Volt power input for the logic circuits. * Outputs for each DC motor You’ll notice that the board also has a number of jumpers. Most of the time you will leave them in place, with the exception of one. They are as follows: * **CSA** – This is the “current sensing” function for Motor A. If the jumper is in this function is ignored. Most of the time you’ll leave this jumper in place. * **CSB** – The “current sensing” function for Motor B. Again you’ll usually just leave this in place to disable this function. * **U1** – Input 1 pull-up resistor. You will usually leave this in place, which enables a 10k pull-up resistor for the input. * **U2** – Input 2 pull-up resistor. * **U3** – Input 3 pull-up resistor. * **U4** – Input 4 pull-up resistor. * **5v-EN** – IMPORTANT: When this jumper is in place it enables the boards internal 78M05 5 Volt regulator, supplying logic power from the motor power supply. When this jumper is enabled you will NOT supply 5 volts to the 5 Volt input terminal. * When the jumper is removed you need to supply 5 Volts to the 5 Volt input terminal. If you do use the internal voltage regulator, then the motor power supply must supply at least 7.5 volts - due to the internal voltage drop in the transistors in the H-Bridge circuit. The combined voltage drop is 1.4 volts. So, if using 6 Volt motors the board requires at least 7.4V and 12V motors require at least a 13.4V supply. The board has four input terminals plus two enable terminals. You will use these terminals to control both direction and speed or each motor. They are as follows: * **IN1** – Input 1 for Motor A * **IN2** – Input 2 for Motor A * **IN3** – Input 3 for Motor B * **IN4** – Input 4 for Motor B * **EN1** – Enable line for Motor A * **EN2** – Enable Line for Motor B ====== Image: WIRINGPI PINOUT ====== {{:brainbox:young-engineers:raspberry-pi:wiringpi-gpio.png?400 |WiringPi GPIO Pinout}}{{ :brainbox:young-engineers:raspberry-pi:raspberry-pi-pinout-450x850.jpg?320|BCM WiringPi GPIO Pinout}} ====== BRAINBOX YOUNG CODERS (bbpi server) ====== **Here is some information about how to use the Raspberry Pi server to control the Internet Of Things:** Some examples of [[http://amazing-toys.com.hk/v3/en-us/shop/connex|'things' to connect]] Using the information supplied below, create your own web page and add code that can control the remote 'things' (devices and multimedia content) via the Internet. * Each coder has their own private website and their own private password: * There is a real-time video streaming service that you can use to monitor the changes that you make, in real-time, at the remote site. * There are also real-time sounds which you can be played when you make a change to things connected to both the //bbpi// and the //thingypi// server. To create links to 'things' is like finding the route through a maze: you need to start at the beginning and 'join the dots' that take you on a clear path to the end of the maze. Yoiu can figure out how to join the dots by using a table, such as Table 1. below. When used this way, you are starting to learn about some very useful things that are more commonly known as [[https://en.wikipedia.org/wiki/Truth_table|Truth Tables]] For example, start by 'joining the dots' (creating a valid URI) to the correct site name, server name, switch type and the switch action: === The Information You Will Need To 'Join The Dots' === * Private server address (direct): 10.145.169.17 * Public server address (proxy): flipster.tv * Private link to 34Spi server: 10.145.169.17// * Public link to 34Spi server: flipster.tv// ^Name ^Location ^Switch type ^Pin/device number/id ^ Valid actions ^^^ ^Relay 01 | |gpio ((RaspberryPi GPIO)) |3 | - | - |flip | ^Relay 02 | |gpio |5 | - | - |flip | ^Button 1 | |gpio |7 | - | - |click | ^Button 2 | |gpio |8 | - | - |click | ^Switch 1 | |rf ((Radio Frequency switch)) |switch_01 |on |off | - | ^Switch 2 | |rf |switch_02 |on |off | - | ^Sound 01 |files |((see example HTML5 code below)) |sound-01.mp3 | | | | ^Video 01 |files |((see example HTML5 code below)) |video-01.mp4 | | | | === To control a remote device: === You must create a link to 'join the dots' by using forward slashes "/" to join each part together to make a link from your browser to the remote device: === For example: === - To turn Relay 01 on/off from within school: http://10.145.169.17//gpio/5/flip - To turn Relay 02 on/off from within school: http://10.145.169.17//gpio/5/flip - To turn Switch 2 on from within school: http://10.145.169.17//switch_02/on - To press Button 1 2 from within school: http://10.145.169.17//gpio/7/click You don't need to know this but it may help -see information about: * The Raspberry Pi [[https://www.raspberrypi.org/blog/using-the-gpio/|General Purpose In Out (GPIO)]] **pin/device** numbers * Radio Frequency (RF), [[http://shaunsbennett.com/piblog/?p=142|remote control power switches]] === To play a remote sound: === You must create a link to 'join the dots' by using forward slashes "/" to join each part together to make a link from your browser to the remote device. You must also place your link within the correct HTML5 multimedia tags. This is some example HTML5 code that you may add to your web page to create a link to **play a remote sound**: === To play a remote video: === And here is some example HTML5 code that you may add to your web page to create a link to **play a remote video:** Here are two working example of files that include the above code: - [[http://flipster.tv/34sfiles/simple-sound.html|Play remote sound]] - [[http://flipster.tv/34sfiles/simple-video.html|Play remote video]] Also, see WC3 Schools [[http://www.w3schools.com/HTML/html5_video.asp|HTML5 video]] and [[http://www.w3schools.com/HTML/html5_audio.asp|HTML5 audio]] coding tutorials. **NOTE:** It may take a few seconds for a sound and/or video link to appear in the page...! If the link(s) fail(s) to appear after one minute, try refreshing your web page. ---- See the introductory and advanced [[:brainbox:young-coders:home|HTML coding information and examples]] for more help. === To View Remote Video === * http://flipster.tv/cam/wps-stream.html ====== Raspberry Pi SENSE HAT ====== SYNOPSIS How to use a Raspberry Pi and on-line 3D emulator to create code and devices to solve problems and explore the possibilities of the Internet Of Things. A practical guide for primary school students and teachers with links to projects, lesson plans and resources. ---- The Raspberry Pi Sense Hat (//Hardware Attached on TOP//), is one of many push-on additions for the Raspberry Pi - a small affordable computer that kids can use to program and control the [[http://en.wikipedia.org/wiki/Internet_of_Things|Internet Of Things (IOT)]]. {{ :brainbox:young-coders:sense-hat:aiy-vision-kit-open21.jpg?320|Google AIY Edu Kit}} The [[https://www.raspberrypi.org/about/|Raspberry Pi Foundation]] supports on-going education projects developed and supported by Cambridge University, Google, NASA, the UK Education Department and many others. Writing programs for the [[https://www.raspberrypi.org/products/sense-hat/|Sense HAT]] is powerful but simple to do. Coding is fast and easy using fully integrated Python libraries. Others Raspberry Pi supporters/partners, such as Google, are constantly developing education-based add-ons such as the recently released (April 2018) [[https://9to5google.com/2018/04/16/google-aiy-projects-target/|DIY kits for AI voice & vision w/edu focus]]. Also check out the [[http://astro-pi.org/|AstroPi website]], for many more ideas and education resources. \\ === Video: Sense Hat (Astro Pi) On-board the ISS === {{ youtube>utlN9ztenEM?640x360 |The magic ingredient that brings Pixar movies to life}} * IF UNABLE TO ACCESS YOUTUBE TRY: Viewpure [[http://viewpure.com/utlN9ztenEM|Viewpure]] \\ ====== On-Line Raspberry Pi Interactive 3D Emulator ====== === Image: Trinket - On-line Coding Emulator === [[https://trinket.io/help|Trinket]] is a browser-based, an all-in-one coding environment designed for education. Teachers and students use trinket to code during class. Every student will have access access to their own, personal [[https://trinket.io/sense-hat|Trinket Sense-Hat Emulator]]. To enable 24/7 access from anywhere, students may create a free account on the Trinket website to save their work. {{:brainbox:young-coders:sense-hat:sense-hat-trinket.png?360 |Trinket - Sense Hat Emulator}}{{ :brainbox:young-coders:sense-hat:sense-emu-500x315.png?310|Desktop Sense-emu}} \\ In case you do not want to use an internet-based emulator, there is an optional free [[https://www.raspberrypi.org/blog/desktop-sense-hat-emulator/|desktop version]]. Code written in the emulator is directly portable to a physical Raspberry Pi and Sense HAT without modification. This means students can now develop and test programs using the movement sensors from any internet-connected computer, anywhere in the world. * **[[https://opensource.com/life/16/9/coding-raspberry-pi-web-emulator|HOW TO USE A RASPBERRY PI SENSE-HAT EMULATOR]]** * **[[https://www.youtube.com/watch?v=MzMR_PYMCXE|DETAILED VIDEO TUTORIAL (17m)]]** \\ === IRF 540 module - 4 Channel Opto Isolated DC Switch === {{:brainbox:young-engineers:raspberry-pi:irf540_mod_012.jpg?360 |}}{{ :brainbox:young-engineers:raspberry-pi:irf540_mod_013.jpg?360|}} MOSFET's have good switching characteristics and are widely used to control almost any DC load. This 4 channel IRF540 MOSFET is perfect for switching DC loads up to 10A. The module is optoisolated - note that the GROUND connections are in common so there is not complete isolation. The module is basically a "Solid-State Relay" for DC. Up to 4 individually controllable loads may be connected to the (+) and (-) switched outputs, all fed from a common power rail. Being a low side switch, when the switch is on, it connects the load (-) terminal to ground. * Max Control Voltage (signal) : 6V * LED indicator for each channel * Chipset : IRF540 * Opto Isolator used : PS2801-4 * Max Switch Current: 10A (absolute max 33A with heatsink) * Max Switch Voltage: 100V \\ === Transmit Infrared without LIRC === * Send [[https://blog.bschwind.com/2016/05/29/sending-infrared-commands-from-a-raspberry-pi-without-lirc/\|Infrared commands]] without LIRC - Including simple IR transmitter circuit diagram. * TSOP38438 [[http://www.farnell.com/datasheets/2049183.pdf|IR Receiver]] and detector module \\ === TCPDump Cheat Sheet === * https://rationallyparanoid.com/articles/tcpdump.html \\ ====== Getting Started ====== The [[https://www.raspberrypi.org/|Raspberry Pi Foundation]] is a UK-based charity that works to put the power of digital making into the hands of people all over the world. [[https://www.raspberrypi.org/about/|The Foundation]] provides low-cost, high-performance computers that people use to learn, solve problems and have fun. We provide outreach and education to help more people access computing and digital making. We develop free resources to help people learn about computing and how to make things with computers, and train educators who can guide other people to learn. In this project, you will learn how to control the Sense HAT’s LED matrix and collect sensor data, and you will combine these ideas in a number of small projects. What you will learn By following [[https://projects.raspberrypi.org/en/projects/getting-started-with-the-sense-hat|this resource]] with your Raspberry Pi and Sense HAT you will learn how to: - Communicate with the Sense HAT using Python - Access the outputs of the Sense HAT - Program the inputs of the Sense HAT - Use the Sense HAT library to display messages and images - Use variables to store sensor data - Use loops to repeat behaviours For detailed technical reference, see [[https://github.com/RPi-Distro/python-sense-hat/blob/master/examples/README.md|example command-line scripts]], [[https://pythonhosted.org/sense-hat/|API docs]] and [[https://pinout.xyz/pinout/sense_hat#|hardware pinout]]. Here is an [[https://www.youtube.com/watch?v=tLaBNqbVLPI|introduction video]] and/or a more advanced [[https://www.coursera.org/learn/developer-iot/lecture/nf3cu/setting-up-a-raspberry-pi-and-raspberry-pi-sense-hat|video]] created by IBM for it's in-house developers as an introduction to the Internet Of Things [IoT] and provides access to free IBM on-line course. For experts, it is possible to [[https://www.youtube.com/watch?v=kHMwcdIjQeg|reclaim GPIO's]] and add extra devices with the Sense-Hat installed. IMPORTANT: Later versions of sense-hat may use [[https://pinout.xyz/pinout/sense_hat#|additional pins]]. Check first! ====== Pi Projects With Python ====== A collection of authentic, detailed, step-by-step procedures and resources designed for kids. Some great projects that will help you start writing code and get going with digital making: * [[https://projects.raspberrypi.org/en/|START HERE]] * [[https://projects.raspberrypi.org/en/projects/|PROJECTS]] * [[https://projects.raspberrypi.org/en/projects?technologies[]=python|PYTHON]] Also, there are [[https://www.raspberrypi.org/training/|free training programmes]] available for educators. We have a strong support [[https://www.raspberrypi.org/community/|community]] who can help educators with support for training and events [[https://www.raspberrypi.org/community/|such as set up coding dojos at your school]]. ====== Hardware Installation ====== - Connect the //Sense HAT// to the //Raspberry Pi// via the 40 pin GPIO socket - Open up a terminal window on the Raspberry Pi and run the following command: apt-get install sense-hat This will take between 2 - 5 minutes to run on Raspberry Pi 2 or later hardware, and up to 20 minutes on early models) When the install is finished you will need to reboot your Raspberry Pi Note: The Raspberry Pi Sense HAT is compatible with the Raspberry Pi 3, Raspberry Pi 2, Model B+, and Model A+, but NOT the earlier 26-pin models of Raspberry Pi 1 Model B & A's. For more detal, view the [[https://www.raspberrypi.org/documentation/hardware/sense-hat/|technical documentation and specifications]]. === 27Mhz 40Mhz RC Controller === **TX-2B / RX-2B** From Silan Semiconductors, is a 5V CMOS remote encoder decoder pair that can be used for remote control applications. TX-2B / RX-2B has five channels, wide operating voltage range (from 1.5V to 5V), low stand-by current (around 10uA), low operating current (2mA), auto power off function and requires few external components. The TX-2B / RX-2B was originally designed for remote toy car applications, but they can be used for any kind of remote switching application. **pi-rc** is a program that turns your Raspberry Pi into a radio controller for RC cars without any additional hardware. With it, you should be able to drive just about any cheap toy-grade RC car programmatically with your Raspberry Pi. * **[[http://www.circuitstoday.com/5-channel-radio-remote-control|5CH 27Mhz 40Mhz 49Mhz TX-2B RC Transmitter]]** * https://github.com/bskari/pi-rc * https://www.riyas.org/2014/08/decoding-and-learning-remote-control.html * https://electronics.howstuffworks.com/rc-toy1.htm * https://www.instructables.com/id/Arduino-controls-cheap-RC-car-transmitter/ * https://www.instructables.com/id/How-to-convert-almost-any-27-or-49-MHz-RC-Car-in/ * http://rcarduino.blogspot.com/2012/05/interfacing-rc-channels-to-l293d-motor.html * http://www.talkingelectronics.com/projects/27MHz%20Transmitters/27MHzLinks-1.html * https://www.instructables.com/id/Fastest-way-to-Hack-RC-Car-H-Bridge-1/ 10.145.169.17 34spi.example.org 10.145.169.18 bbcpi.example.org 172.16.1.11 xypi.example.org ======================================= START: Tue Apr 17 10:04:23 2018 ======================================= MATRIX: Pads: GPIO2 INPUT PUD_UP Pads: GPIO3 INPUT PUD_UP Pads: GPIO4 INPUT PUD_UP Pads: GPIO7 INPUT PUD_DOWN Pads: GPIO8 INPUT PUD_DOWN Pads: GPIO9 INPUT PUD_DOWN Pads: GPIO10 INPUT PUD_DOWN Cols: GPIO11 INPUT PUD_DOWN Cols: GPIO14 INPUT PUD_DOWN Cols: GPIO15 INPUT PUD_DOWN Cols: GPIO22 INPUT PUD_DOWN Rows: GPIO23 INPUT PUD_DOWN Rows: GPIO24 INPUT PUD_DOWN Rows: GPIO25 INPUT PUD_DOWN Rows: GPIO27 INPUT PUD_DOWN ======================================= NON-MATRIX PADS Snd:cb1 GPIO_2 p3 sfx_callback_1 Snd:cb2 GPIO_3 p5 sfx_callback_2 Row:cb3 GPIO_4 p7 sfx_callback_3 Row:cb4 GPIO14 p8 sfx_callback_4 Row:cb5 GPIO15 p10 sfx_callback_5 Row:cb6 GPIO18 p12 sfx_callback_6 Col:cb7 GPIO27 p13 sfx_callback_7 Col:cb8 GPIO22 p15 sfx_callback_8 Col:cb9 GPIO23 p16 sfx_callback_9 Col:cb10 GPIO24 p18 sfx_callback_10 Snd:cb11 GPIO10 p19 sfx_callback_11 Snd:cb12 GPIO_9 p21 sfx_callback_12 Snd:cb13 GPIO11 p23 sfx_callback_13 Rly14:cb14 GPIO25 p22 sfx_callback_14 Rly15:cb15 GPIO_8 p24 sfx_callback_15 Rly16:cb16 GPIO_7 p26 sfx_callback_16