
Explorer
anyshake/explorer
🌏 Detecting seismic wave using 3 geophones and 3-axis accelerometer, pack & send data to AnyShake Observer over RS232 / RS485 serial.

A unit to interface various RS485 sensors with a simple serial interface via an Arduino based circuit.
RS485 Interface Board PCB is an open-source printed circuit board by curiouselectric, from the curiouselectric/RS485InterfaceBoard repository on GitHub, published under the MIT licence. It is a 2-layer board of 80 × 80 mm with 44 parts on 35 nets, routed with 430 tracks and 3 vias.
It is built around the ATMEGA328P-PU, RS485 and IRFR9220. Its parts include 11 connectors, 7 resistors, 6 capacitors, 2 ICs and 2 transistors. It belongs with the interfaces and adapters and sensors and measurement boards and the AVR (ATmega, ATtiny) boards of this library.
A unit to interface various RS485 sensors with a simple serial interface via an ATMega328-based circuit. The unit also provides averaged data, controlled stepped-up supply voltage and a field-adjustable ID.
"Why do you need that?", you ask....
I had been wanting to use an industrial soil mositure sensor for a simple project. This device was only available as an RS3485 device. So I ordered that - it then took days of head scratching to sort basic communication with the device. This unit is meant to simplify reading of avaeraged data from RS485 sensors and make it easy to get that data into your project via a simple serial request/reply set of commands.
The other issue with a lot of the RS485 sensor is that they need higher voltages supplied (such as 12V or even 24V DC). So on this interface board I added a DC-DC step up converter to power the sensor.
I was also concerned with energy consumption (my project was battery based). If I was to leave the DC-DC converter running all the time then my battery would run down very quickly. So I added control of the power to the sensor, so that I can power up, take the readings then power down. This saves a huge ammount of energy (well, proportional to my battery size).
The problem with measuring sensors with values that change relatively quickly is that they constantly need to be checked. This requires a bit of microcontroller time and processing. This unit is designed to solve that.
Wire up your RS485 sensor. Power the unit up. Then it will save the averaged data for you. You can then get hold of the data through serial requests and process as you need.

I wrote this to interface to an ESP32 data logger, which sleeps most of the time. It wakes up, talks to the RS485 sensor, gets the data it needs, then goes back to sleep, knowing the RS485 Interface Board is always monitoring.
It was designed as a relatively simple interface to remove the need for monitoring pulses/dealing with RS485 requests/getting sensor data and averaging the sensor data.
The brilliant ESPHome project has loads of sensor types you can interafce easily with a low cost ESP microcontrollers. For systems that have WiFi and good power connections then that project is a good resource to use. This project is designed for very low power systems (battery based datalogging) and for situations where easy access to Wi-Fi is not available.
The firmware for this project has been moved to:
This is within the Sensor Interface Board repository: https://github.com/curiouselectric/SensorInterfaceBoard
I have done this to keep all the sensor boards up to date with just one set of firmware for all the sensor boards.
A number of PCBs have been designed in KiCAD. This repository holds the RS485 sensor and is available here. A small PCB has been designed.
There is one reset switch, one user input switch and one LED output.
There is a step-up DC-DC converter with power control (to power higher voltage sensors).
There is a TTL to RS485 converter (to connect to the RS485 sensors)
There is a 4 pin 'Grove'-type connector for direct connection I2C (code for this is not yet implemented)
Each unit can have a unique ID (using a push link 6 pin pad for 0-7 values), so multiple units can be added to a serial bus, if needed. The defalt is 0 (no links used).
There is one user switch (SWA) and one user LED on the unit. There is also a reset switch (RST) which will reset the microcontroller (and all stored data will be lost)
The LED will show a regular flash every 5 seconds. This will briefly flash once every 5 seconds if the unit is in 'Response' mode. The LED will briefly flash twice every 5 seconds if the unit is in 'Broadcast' mode. Data will be sent at the broadcast rate.
The LED will also flash whenever data is sent of the serial port. The LED will go on before data sent and then off after data is sent.
Pressing the user switch for > 0.5 seconds and then releasing will result in a switch press.
A switch press will increment the mode from 0-1-2-3-4-5 then back to 0.
The unit will flash after a button press to indicate the broadcast mode (so 0 flashes if the value is 0, 1 flash if the value is 1 etc).
If this is set to 5 then the unit works in 'Response' mode.
If this is set to 0-4 then the unit is in 'Broadcast' mode and will send the data at the relevant interval (0 = 1s, 1 = 10s, 2 = 1 min, 3 = 10 min and 4 = 1 hour).
The mode can also be set with a serial request, using the "Set the unit to broadcast:" method.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 100n | REInnovationFootprint:C1_wide_lg_pad_2 | C1, C3, C4 |
| 2 | 100k | REInnovationFootprint:TH_Resistor_1 | R2, R3 |
| 2 | 22p | REInnovationFootprint:C1_lg_pad | C5, C6 |
| 2 | 4k7 | REInnovationFootprint:TH_Resistor_1 | R6, R7 |
| 1 | 100u | REInnovationFootprint:C_Radial_D6.3_L11.2_P2.5 | C2 |
| 1 | 10k | REInnovationFootprint:TH_Resistor_1 | R5 |
| 1 | 1k | REInnovationFootprint:TH_Resistor_1 | R1 |
| 1 | 2N3904 | Package_TO_SOT_THT:TO-92_Inline | Q1 |
| 1 | 470 | REInnovationFootprint:TH_Resistor_1 | R4 |
| 1 | 8MHz_XTAL | Crystal:Crystal_HC49-4H_Vertical | Y1 |
| 1 | ATmega328P-P | Package_DIP:DIP-28_W7.62mm | U2 |
| 1 | BOARD ID | REInnovationFootprint:ID_SELECT_3x2 | P7 |
| 1 | DC-DC_GENERIC | REInnovationFootprint:TH_DCDC_Step_up_MT3608 | DCDC1 |
| 1 | G*** | kibuzzard-68D6B946 | kibuzzard-68D6B946 |
| 1 | G*** | kibuzzard-68D6B9BB | kibuzzard-68D6B9BB |
| 1 | G*** | kibuzzard-68D6BA4A | kibuzzard-68D6BA4A |
| 1 | G*** | kibuzzard-68D6B99D | kibuzzard-68D6B99D |
| 1 | G*** | kibuzzard-68D6BAD1 | kibuzzard-68D6BAD1 |
| 1 | G*** | kibuzzard-68D6BA8E | kibuzzard-68D6BA8E |
| 1 | G*** | kibuzzard-68D6B980 | kibuzzard-68D6B980 |
| 1 | G*** | kibuzzard-68D6B9C5 | kibuzzard-68D6B9C5 |
| 1 | G*** | kibuzzard-68D6BA98 | kibuzzard-68D6BA98 |
| 1 | G*** | kibuzzard-68D6B914 | kibuzzard-68D6B914 |
| 1 | G*** | kibuzzard-68D6BA3C | kibuzzard-68D6BA3C |
| 1 | I2C | REInnovationFootprint:SIL-4_Grove_Labelled_Correct | P5 |
| 1 | IRFR9220 | Package_TO_SOT_THT:TO-251-3_Vertical | Q2 |
| 1 | ISP | REInnovationFootprint:ISP_3x2 | P9 |
| 1 | LED | REInnovationFootprint:TH_LED-5MM_AK | D1 |
| 1 | LOGO2 | REInnovationGraphics:RS485 Logo Design | P2 |
| 1 | LOGO2 | CuriousElectric3:2019_011_16_CuriousElectricCompany_Logo_Round_Logo_No_words_KiCAD_10mm_PCBLogo | P11 |
| 1 | LOGO3 | CuriousElectric3:TCEC_Words_13mm | P10 |
| 1 | PCB | REInnovationFootprint:PCB_outline_JSL22L | P3 |
| 1 | PROG | REInnovationFootprint:TH_6x1_FTDI | P8 |
| 1 | PWR SEL | REInnovationFootprint:SIL-3_lg_pad_PWR_SELECT | J1 |
| 1 | RS485 | REInnovationFootprint:SIL-4_Grove_SCREW | P6 |
| 1 | RS485_TTL_Module | REInnovationFootprint:TH_RS485_BI_SERIAL | U1 |
| 1 | RST | REInnovationFootprint:TH_FRONT_SW | SW2 |
| 1 | SERIAL | REInnovationFootprint:SIL-4_Grove_SCREW | P1 |
| 1 | SWA | REInnovationFootprint:TH_FRONT_SW | SW1 |
It measures 80 × 80 mm and has 2 copper layers, 1.6 mm thick.
44 parts, built around the ATMEGA328P-PU, RS485 and IRFR9220. 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.
From the curiouselectric/RS485InterfaceBoard repository on GitHub, at the commit this page was made from: the board is RS485 Interface Board PCB/RS485 Interface Board PCB.kicad_pcb and its schematic RS485 Interface Board PCB/RS485 Interface Board PCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

anyshake/explorer
🌏 Detecting seismic wave using 3 geophones and 3-axis accelerometer, pack & send data to AnyShake Observer over RS232 / RS485 serial.



bvarner/pi485
An open-source TTL UART <-> RS485 converter, intended for a Raspberry Pi or Arduino

Neumi/fastLOGIC
An affordable Arduino-based board designed for straightforward (industrial) logic control, ideal for building small-scale automation and control solutions.

zhbi98/ODriveX
【无刷电机FOC驱动器】双通道 FOC 无刷电机驱动套件,最高电压 60V 单通道电流可达 100A,可以驱动 1.2kW 以内 BLDC 或 PMSM(有中文注释)。

tomrodinger/servomotor
Open-source NEMA-17 integrated servomotor (motor + closed-loop driver + controller + encoder). RS-485, Python/Arduino libraries, MCP server for AI control. Hardware, firmware and software.

charlesbaynham/DigitalTemperatureController
Schematic, PCB and source code for a high-precision digital temperature controller