Embedded Networking and Communications

Have you:

  • [x] Described your design and fabrication process using words/images/screenshots.

  • [x] Explained the programming process/es you used.

  • [x] Outlined problems and how you fixed them

  • [x] Included original design files and code

Group Assignment

For embedded networking, I will follow language proposed by the Center for Democracy & Technology. This proposal cites research by Ron Eglash who states that metaphors used in technology should be replaced with alternatives that are more accurate and less distracting.

Link to proposal:


For the group assignment at Fab Lab BCN, we used Arduino Uno Rev3 boards to send and receive signals. This is done through synchronous communication using the standard I2C library. We tried several iterations. The code example linked below is a wired example of the primary sending messages for which a secondary listens.

The next activity was to connect to an MQTT server running on a Raspberry PI which is connected to the WIFI network at IAAC. We then author messages that get published to a topic on the server. Through the code, we can also subscribe to topics on the MQTT server and follow along to whatever user publish to these.

Current Issues

Up until this assignment, I have had issues in concatenating and sending strings. I am able to hard code a character buffer and send that to an output device through TX connections on my boards. I need to be able to send messages from the DHT11 sensor module and its ATTiny44 microcontroller to the 16x02 LCD connected to the SerLCD v.2.5 backpack and its ATTiny44 microcontroller. Once I have this task done, I will have embedded networking included.

Programming processes

Consistent with my workflow through the development of “Abundance”, I use code that I write in C that is flashed to the ATTiny44 microcontroller boards through the avrdude toolchain. I will use a copy of the original code from the Input and Output weeks that I will then modify to send and receive messages through TX/RX.

The design of my current boards limits the amount of wires that I can use for communication. Currently, I have pins for TX/RX and PA3. PA3 connects to the input or output device. TX/RX are reserved for communication with other devices in the network. Because the DHT11 sensor module gets queried for data by its microcontroller at an interval of 5 seconds, it seems that this is a bit freeing of timing constraints. I can therefore use asynchronous communication.

Document the project

There are already several examples of networking in my project just between the DHT11 sensor module and its microcontroller and the SerLCD v.2.5 and its microcontroller. The code of the DHT11 sensor module input device includes communications protocols. As explained in input devices week, the microcontroller “requests” data from the sensor by setting PA3 to output and sending a low signal. There is a 20 microsecond pause before sending a high signal. The microcontroller then listens for a "response" from the DHT11 sensor by switching PA3 to an input. The DHT11 responds by sending a series of signals from high to low to high. Finally, the data is sent from the DHT11 sensor to the microcontroller in chunks of 40 bits. These represent 5 bytes which are integers for humidity (integer and decimal), for temperature (integer and decimal), and a parity byte or checksum. I then verify the data by checking the sum total of the first four integers against the value of the parity byte. If that is true, then a success message is sent out to TX which I can then monitor through an FTDI connection and the Arduino serial monitor.

The SerLCD v2.5 has a PIC16F688 that communicates with my ATTiny44 with UART. I can control the output of the LCD by sending ASCII characters for display text. I can also control the functions of the LCD by sending hexidecimal characters. The current version of my code is a bit rough, but I am starting to understand the microcontroller and communications better as the weeks progress.

Link to Input week – DHT11 sensor module

Link to Output week – 16x02 LCD, SerLCD v.2.5 backpack

2018 Class Notes

The assignment for this week is to design and build a wired or a wireless network connecting at least two processors.

Why network? Location is an obvious motive to send . Parallelism, devices with big processors can do many things at once. You can do a parallel system in which each processor has a separate thread. Modularity, helps to develop modules separately for development and debugging purposes. Interference, current from big processors can affect multiple components. Separate modules cut down on the possibility of interference.

The example boards employ a simple serial bus. The host board has single Tx/Rx lines that nodes in the network can use to talk to each other. The important distinction is that each board is addressed. In Neil's example, he hard codes addresses for each board. I2C is a standard that used to be proprietary but is now widely supported. In Input week, the accelerometer employs I2C. SPI, this is used in the in the in system programmer. SD Cards support SPI. In SPI, you write from the host to the target. If you want the target to talk to you, then you have to talk to it. V-USB is a software implementation of USB that can run down to ATTiny45. It is USB 1, but for interfacing you shouldn't have to care about that. These adaptively clock by listening to the host. The difference between a bus and a network, there are nodes hanging off of a bus where as a network does not care where you are in the wold.

OSI layers 7: application (HTTP) - the actual application 6: presentation (SSL) - how you present the data 5: session (RPC) - how you set the conservations 4: transport (TCP, UDP) - what goes when 3: network (IP) - how you make addresses 2: data link (MAC) - who gets to talk 1: physical (PHY) - physcial media

2018 Review Notes

Aitor Aloa, is using Gitbook like me. He is considering migrating his repo to MK dot. He did the Hello Bus 45 and two nodes. He used Neil's code to program the board. Neil suggested that Aitor change the code just a little bit.

Abdulla, he only did research this week, due to being in a competition. He proposes to do two boards that will use Bluetooth. Neil suggested Fastel as a vendor for good Bluetooth modules.

Georges Hanna, his final project is an interactive lamp. He was behind on the weekly assignments. Neil showed a Bluetooth component at DigiKey which is "trivially compatible" with the ATTiny45. The component acts as a serial connection and similar to a text terminal.

Murad Saadeh, he used a ESP8266 and was able to send packets.

Coral, she worked on the I2C. Neil stated that I2C is a bit more complex for a networking beginner. Coral tried going through a tutorial on Sparkfun on why I2C is better than asynchronous.

Jari Uusitalo, he used board created in previous weeks. He created an Rx/Tx hub that talks to the boards from previous weeks. He demonstrated how modules can be connected by an external master board to create a system.

Tanvir Khorajiya, used bluetooth to sendthe data. He is broadcasting data to the boards through Bluetooth over a mobile app.

results matching ""

    No results matching ""