Suite à mes recherches de ce week-end, j'ai travaillé aujourd'hui sur un modèle en arbre. Un tel modèle est un graphe où chaque noeud (sommet) est le parent d'un ou plusieurs noeuds et où noeud objet possède un parent (excepté celui qui se situe au sommet de tous les autres).
Ce qui me plaît avec cette idée c'est que (1) ça reproduit certaines structures empruntées par des animaux sociaux tels que les fourmis et les abeilles et (2) en cas de rupture d'un lien, on se retrouve simplement avec deux réseaux hiérarchiques distincts (voir image).
Following a comment expressed in a post in the Arduino forum I wrote a patch on the source code of AFSoftSerial by Ladyada. This patch adds a distinct buffer for each serial input (instead of a static, shared buffer). It thus allows to have several inputs/outputs (rx/tx).
This is an important proof-of-concept I wanted to implement with respect to circular serial communication. For nodes in the circular network to be able to send messages to other nodes, they need to be able to send and receive addressed packets. Those packets are relayed through the network until they reach their final destination.
The first kind of packet that I wished to implement is very simple: it allows the node to be aware of the number of nodes in the network. Here is the general algorithm that is run:
generate a unique key
I just implemented a very simple example of serial communication in circle. I used a handshaking algorithm that works with two arduinos. I just added the same algorithm to the third one, plugged them properly, and it worked! The result is that it makes all of the modules synchronize together.
The handshaking algorithm is very simple. Each node has one sender and one receiver. The board sends a "ping" signal to its receiver. It then waits for a "pong" signal to come back from its sender. Since each node does the same thing, the objects will eventually synchronize as the messages propagate.
Alors, suite à mes dernières expériences et constatations, voici un petit résumé de la situation actuelle. Quand j'ai commencé à réfléchir à cette idée de réseaux de modules sur laquelle je suis parti, j'avais en tête un réseau avec des connections un peu dans tous les sens. Les découvertes que j'ai faites sur les protocoles sériel et I2C me conduisent à la conclusion qu'aucun de ces deux protocoles ne permet, a priori, ce type de réseau. Cependant, ils permettent d'autres types de réseaux.
I had a late night reflexion about I2C communication with more than 2 devices in a multi-master network. I made a videocast that explains the whole idea. However, my first real-life experiments has raised important synchronization issues with respect to I2C communication in multi-master networks.
Super LEDs suggested by Meriol. Low voltage (3.2V), low amperage (20mA) and incredible luminous intensity (80000-100000mcd).
http://www.besthongkong.com/product_info.php?products_id=34
I had this (wrong) idea that I could communicate with more than two Arduinos through the RX/TX ports using Serial communication. One of the issues is, (1) that it's not possible to do so :) ... and (2) even if it would, it would not be possible to identify the nodes in the network. Chatting on the Arduino IRC channel, I was suggested to use a protocol such as I2C or 1-Wire.
J'ai discuté avec Meriol aujourd'hui de la question de la connection et des fils pour relier les modules dans le projet Entangled. La problématique est la suivante:
I always wonder, so I write it down here as a reminder. To the question: can we plug 12V in an Arduino? The answer is: yes, between 6 and 12V. Reference here. Quote: "To power the board from an external power supply (6-12V), place the jumper on the two pins closest to the power plug."