You keep saying this, and I keep wondering what it gets you over a box that does the networky stuff and acts as a hub using something simple and appropriate like RS485 to the devices. The only thing I can think of is WiFi ability, but you've explicitly ruled that out.
because its 2022 and i expect ethernet to be as simple as usb to uart is . that is the real answer.
the secondary answer is that my entire property is ethernet wired , all the way to the back shed. so plugging devices is easy. even managed ethernet switches are cheap these days (mikrotik) .
it goes beyond that sprinkler controller. that is just step one. it can be all kinds of devices. if i want a camera somewhere : i have ethernet ready.
ethernet is distributed , galvanically isolated, bus . i only need one bus in the entire home. i can plug anything. no need for translators. if i want to add some wireless devices they can go on the wifi. it is all one network of things.
if i want remote access i run a VPN. (i have two properties and they share one network through a VPN link. so it doesn't matter where i am : i can see everything. for example i have a NAS in both locations. one replicates itself to the other. )
It is more of an experiment than anything else but one with a purpose. It would be great to be able to release a firmware that does exactly this on a cheap device. it exists for wifi on esp32 and esp8266. those are cheap
But it does not exist for wired, in the sense there is stuff out there but it requires handling the networking on your target device. It really needs to be ethernet to uart. The target is unaware where the data comes from. It comes from the uart. Just like when you are using a usb to uart. it's a pipe.
This is what i am working on (in flux. evolves...)
the device is a network bridge. the application is your processor dangling off the uart.
- Ethernet auto mdx to a magjack with ACT and LINK leds 10/100TX
- Two wire uart (TX RX) programmable baudrate but always 8n1.
- TXEMPTY output: BRIDGE can accept uart data, uart buffer is empty
- HOLD input : application you can tell the BRIDGE not to send data on the uart. the application is not ready to take uart data.
- DAV output: bridge has data
- INTERRUPT output : if something BRIDGE has received something that is for us . programmable OR logic
-- Pulse per packet: every time there is a packet with our ip on it.
-- goes high on reception, but only goes back low if incoming (from network) buffer is empty
-- loss of network
-- acquisition of network
-- buffer overrun from uart : application is blabbering too fast.
-- buffer overrun from network : application is stalling (via HOLD)
- Net_ready output : goes high when bridge have a working network( IP obtained and ready to roll )
- RESET input : resets bridge and flushes uart buffer. falling edge sensitive. deadlock cannot block reset
- FLUSH input : flushes uart buffer (both). rising edge sensitive. so a deadlock cannot block the buffers.
- i2c port. Here you must wire an 2402 eeprom holding mac address , static ip if set , uart settings and other options. it also supports a 2x16 lcd display. if display installed : top line shows your ip address , bottom line uart speed and some status indicators. no guessing. If i can get on-board eeprom working this will be optional. But the advantage is that, if the eeprom is missing (or corrupted : you remove it) it defaults the uart. Hook up the display and you see what is going on. I may go for a DEFAULT input pin . If you pull that one the device shuts down network and goes into CMD mode with 9600 baud. Have not made up my mind yet. it needs to be fool proof both for recovery , initialisation and usage
- cmd/data input. To configure from uart : pull line low and execute commands (configuration). If this input is high it is a data pipe. Data passes through. There is no configuration from network side or in data mode. If eeprom is blank this defaults the uart to 9600,n,8,1. If eeprom has settings then it stays in those settings. I do not want to encumber the user with things like AT commands or using special characters(or sequences). in DATA mode it is a pipe. just like uart to usb is. CMD mode is for initial configuration during build.
- watchdog output (programmable functionality) this is a logical OR from several functions that can be enabled/disabled. should be tied to application reset pin
-- no data from uart for X seconds (application locked up)
-- no packet for us for x seconds (network locked up)
-- replication of NET_READY pin (this can hold application in reset until network is ready)
-- receive buffer full (application has locked HOLD pin and bridge has buffer overflow... so application may be in deadlock
-- watchdog is disabled in CMD mode
-- activate on 'magic packet' reception. this allows a remote entity to reset the application. i'll probably use a specific port for that. ideally there should be no need for this. the other watchdog functions can handle this. you can just send a very long packet to overload the uart buffer.
something along those lines. right now im attempting this with esp32 + wiz5500 but i would like to see this as a simple to use single chip. PIC18F97J60 is a possibility.