Arduino

PaulStoffregen
https://github.com/PaulStoffregen/TimeAlarms set alarm times.

Serial lib
Jabelone

Raspberry pi spidev library

canbus
https://forum.arduino.cc/index.php?topic=555608.0 canbus is a multi-master system where are all nodes are equal with each message being priority based. Any node can transmit a message at any time with the highest priorty message getting thru CAN only has masters. One node transmits at a time - if multiple nodes being a transmission at approximately the same time, they will collide, and the node transmitting the lowest ID will win arbitration. The other nodes will listen to the winning node's message and then after some backoff time re-try their own transmissions. ''Are you trying to get remote sensor readings at specific points in time or intervals in time? If so there are strategies that don't involve the request/response cycle of a polled system. Essentially you configure one node to broadcast a clock to which all the other synchronise their activity.''

Each node does'nt have an Unique Address ID like I2C, they messages with any id and react to any message ID's as per the logic you apply in the MCU code you write.

https://electronics.stackexchange.com/questions/106715/is-the-can-bus-protocol-a-master-and-slave-protocol A CAN bus is multi-master and automatically arbitration free. The whole point is that you don't need a single master or main controller to take care of everything. Each message that is sent has a priority, and higher priority messages trump lower priority ones (a lower priority message will wait until there isn't a high priority message being sent). So there are no slaves. It's kind of similar to a peer to peer network, in that it's decentralized. The reason this is done is to reduce failure points. If a single main controller failed, so would the entire network. If there is no central controller, a single component can fail and the rest of the system will keep going. For your network, you should assign priorities to each command sent depending on what's most important. The Wikipedia article is actually quite good. https://en.wikipedia.org/wiki/CAN_bus


 * https://alselectro.wordpress.com/2020/04/29/sensor-data-on-can-bus-arduino-with-can2515/ CANBUS
 * https://github.com/autowp/arduino-mcp2515

bitbank2
https://github.com/bitbank2

https://github.com/bitbank2/Nano_33_Gamepad he purpose of this code is to use BLE HID gamepads with the Arduino Nano 33 BLE.

SPI LCD/OLED library which can be built for Arduino and Linux

ethernet shield
https://www.youtube.com/watch?v=eoiuhPxCcM4 UDP This tutorial presents a step by step demonstration of how to transfer data between Python and Arduino using a simple UDP client server setup. The arduino is the server, and Python is the client. We demonstrate using a BMP180 pressure sensor. You can find the full lesson on our WEB site at: http://www.toptechboy.com/tutorial/python-with-arduino-lesson-17-sending-and-receiving-data-over-ethernet/

interrupts
http://www.toptechboy.com/arduino/lesson-30-advanced-software-interrupt-techniques-for-reading-serial-data-with-arduino/ and https://github.com/PaulStoffregen/TimerOne
 * https://github.com/PaulStoffregen/TimerThree timerthree

server
https://www.youtube.com/watch?v=pyKPivef3ks

https://medium.freecodecamp.org/how-to-make-your-own-python-dev-server-with-raspberry-pi-37651156379f

https://towardsdatascience.com/python-webserver-with-flask-and-raspberry-pi-398423cc6f5d

Stepper code
https://github.com/grbl/grbl/blob/90ad129ad262bd6e785cf11b8387a1c376cdd11a/grbl/config.h // Creates a delay between the direction pin setting and corresponding step pulse by creating // another interrupt (Timer2 compare) to manage it. The main Grbl interrupt (Timer1 compare) // sets the direction pins, and does not immediately set the stepper pins, as it would in // normal operation. The Timer2 compare fires next to set the stepper pins after the step // pulse delay time, and Timer2 overflow will complete the step pulse, except now delayed // by the step pulse time plus the step pulse delay. (Thanks langwadt for the idea!) // NOTE: Uncomment to enable. The recommended delay must be > 3us, and, when added with the // user-supplied step pulse time, the total time must not exceed 127us. Reported successful // values for certain setups have ranged from 5 to 20us. // #define STEP_PULSE_DELAY 10 // Step pulse delay in microseconds. Default disabled.


 * 1) define DWELL_TIME_STEP 50 // Integer (1-255) (milliseconds)

serial
https://askubuntu.com/questions/58119/changing-permissions-on-serial-port The issue with the permissions for /dev/ttyACM0 can be permanantly solved by adding yourself to the dialout group. You will have to logout and then log back in before the group change is recognized. You can do this with sudo usermod -a -G dialout terrik if terrik is your username. https://unix.stackexchange.com/questions/18796/how-to-apply-changes-of-newly-added-user-groups-without-needing-to-reboot. Ctrl shift m shortcut displays serial monitor.

http://playground.arduino.cc/Interfacing/LinuxTTY

https://learn.adafruit.com/usbtinyisp

http://forum.arduino.cc/index.php/topic,73748.0.html loopback test if not uploading from http://forum.arduino.cc/index.php?topic=38838.msg286321#msg286321

http://blog.spitzenpfeil.org/wordpress/projects/ various diy projects

http://www.engbedded.com/fusecalc fuse settings.

TM1638
https://github.com/gavinlyonsrepo/TM1638plus

https://www.youtube.com/watch?v=2rT2YqhSARc

links
https://www.seeedstudio.com/blog/2019/11/20/best-single-board-computers-of-2019/ SBC reviews, pocket beagle bone etc.

AtmelMicro

C coding

https://store.siqma.com/txs0108e-logic-level-converter.html txs0108 logic level shifter. cjmcu

RS485