A society of things

A network of household objects developing personalities and opinions as they chat about the weather.

Similar projects worth following
An amusing network of items around the room that carries on a continuous conversation simply for the sake of socializing. They develop personalities and opinions about other objects based on their environment and communication with others.
It's a big step beyond a virtual pet. It's a virtual social network. Actually, you could say it's a social network of virtual pets... But this is getting strange.
Although there could be some academic application, this is purely for entertainment. Plus, since it is basically a sensor network I can record the light and temperature profile of my room.

If the picture frames, lamps, clocks and other things around your room could converse with each other, what do you think would happen? They might form opinions about other items in the room. They might form social groups. There may be bullying or romance or arbitrary hierarchies.

The goal of this project is to create a social network of household objects for entertainment, social model experiments, or just to give the room a little more personality. And of course, all designs and code will be open-source so you can make your room cool too.

The system consists of several nodes attached to various stationary objects in my house. They are able to communicate with each other via IR and they observe their environment through temperature and light intensity sensors. There is an ongoing conversation between nodes that affects parameters corresponding to human feelings such as trust, affection and perceived social status. They also have personal parameters such as confidence, honesty and desire to socialize. Before you start laughing, I admit these words don't have any meaning to a microcontroller. The parameters simply influence the way they communicate with others and thus how the society develops.

A lot more information such as design concept, components list, current progress, plans and goals, links to code and resources, and license information can be found in the system design document(github, pdf).

Here is a rough outline.

Also, here is the first concept video.

This is not be a deterministic system where the outcome is based only on the algorithm. The environmental input plays a significant role in molding their personalities and the messages they send to others. Stochasticity is also generated in the software since every interaction has several possibilities whose probabilities of being chosen are influenced by various factors. See the project logs for much more detailed descriptions.

There is also a monitoring hub which periodically logs all of the current parameters. This data will paint a picture of the developing society of things. There are currently two types of hub. One connects to a computer via usb for debugging and viewing real time data. The other records data to an SD card and doesn't require a computer. Both types are also capable of acting as nodes and take part in the conversation. The details and schematics for the monitoring hub are currently being made, but a temporary test setup based on an arduino and breadboard is in use.

  • 1 × ATtiny85 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × IR receiver - TSOP38238
  • 1 × IR LED - OS15LA5113A
  • 1 × thermistor - NTC-MF52
  • 1 × photoresistor - GL5537

View all 15 components

  • What comes next

    shlonkin08/30/2014 at 22:30 0 comments

    Congratulations to the lucky ones who passed the contest cut. In honesty this is not really a practical, marketable or way impressive project, so I wasn't really expecting to pass the quarterfinal cut for the hackaday prize. But still it is very disappointing to scroll through the list and find my project missing. I felt the same for the sci-fi contest. Oh well, that's the way it is. Maybe someday.

    With my prime motivation for this project gone, I'm wondering where to take things. I'm not just going to drop it. No, in fact I'm hoping that it will be even better than I was planing because now I'm free to change it in any way I want. And for those few people who were kind enough to follow this, I'll try to make it worth your time to click the occasional link buried in your feed.

    I just got back from a trip oversees and jetlag sucks, so I don't think I'll be getting much done this weekend. This is just a note to tell the internet that this project didn't just die after being cut from its sweet sweet motivational nectar thing... stuff.

  • Second video and system design document

    shlonkin08/12/2014 at 04:24 0 comments

    Here is the second video, which covers the current prototype progress and the next steps and goals.

    And here is the official system design document:

    This document contains all sorts of information concerning the design concept, components list, current progress, plans and goals, links to code and resources, and license information. That's a lot of stuff. 

    I believe that this project has completed all requirements for the hackaday prize quarterfinal round. If you notice something I missed, please let me know before it is too late.

    Thanks for your support.

  • New video, better model description, software update

    shlonkin08/11/2014 at 13:55 0 comments

    I've got the first concept video made. Here it is.

    Now that I've had a chance to test out the software a bit, I've refined the model(I'll call the social aspect of the programming "the model") and added some more features. Also, I finally got around to setting up a github account, so I'll be putting the code files there:

    As for the description, it's becoming a really complex model, so instead of boring you with an endless text description, I'll keep it as concise and graphical as I can.

    First, some terminology and basic points.

    • "exchange" = two nodes exchange sensor data, either about themselves or a third party node.
    • "propose" = two nodes propose to enter either a friend or enemy relationship.
    • "ignore" = When a node receives a message, there is a chance to not reply.
    • "lie" = during certain exchanges there is a chance to send false sensor data.
    • Each node has three personal parameters: confidence, honesty, and desire to socialize.
    • Each node has four parameters for each of the other nodes(four x nodeCount total values): affection, trust, perceived social status, and relationship.

    Then let's look at what an interaction is like. When a node has a turn to speak, it has the following possibilities.

    When a node receives a message, it has the following possibilities.

    I hope that this was not too hard to follow. Feel free to ask me any questions. If you are adventurous and have mountains of spare time, you could work your way through the code and figure it out on your own.

  • First node constructed

    shlonkin08/08/2014 at 14:32 0 comments

    The parts arrived and I immediately set to work making the first node. This log will highlight the construction process.

    I had a beautiful stroke of luck. Those solar keychain lights from the 100 yen shop(dollar store), from which I love to harvest 5V solar panels and rechargeable coin cells, just happen to provide the perfect enclosure for this project. Here's what the keychains look like new.

    That square button on the back is exactly the size of an 8 pin DIP socket and the three LED holes are just right for sticking the IR receiver, LED and light sensor through. And to top everything off, when all the components are removed from the green pcb except for that sophisticated charge controller(a diode), a piece of protoboard of just the right size fits snugly in place. Also notice the small 100uF cap next to the battery.

    Then I just snap it back together and it's done. You can see the ATtiny85 sticking out of the button hole on the back along with the thermistor. This allows me to pop the chip out for programming without even opening anything. This is all just too convenient.

    And since I obviously had to decide on resistor and capacitor values, I've updated the schematic to include more info. (EDIT: I had the sensor names backwards)

  • Preliminary software, schematic, and test

    shlonkin08/05/2014 at 13:20 0 comments

    I'm getting pretty excited about this. I was just watching the data scroll by as two nodes happily conversed and saw some interesting interdependencies in their parameters. This is exactly the kind of thing I was hoping for. But before I get carried away, this is just a very preliminary test and things should get much more interesting as the project develops. Anyway, on with the log.

    I wrote version one of the software for both the nodes and the monitor. Most of the bugs seem to be worked out of it and the nodes are communicating with acceptable reliability, so I'll release this version of the code. Keep in mind that this code will be changing a lot and I will update the files whenever I make substantial progress.

    • SocietyNode.ino - The node.
    • SocietyMonitorUSB.ino - The monitor, which also joins the conversation as a node. This version communicates via usb and prints lots of data for debugging purposes.

    Also, if you try to use these with the Arduino IDE, you will run into an error for the ATtiny85. It's because Arduino is using an outdated version of the compiler. Don't worry, this has been fixed and all you have to do is replace one file buried deep in your arduino folder. Here is the file(for Windows): Thank you to the person on the Arduino forums who discovered this fix. Just follow the same folder structure as in the .zip and you'll find the right file.

    For testing I just stuck everything on a breadboard and bounced the signals off the wall. There are no sensors here because they haven't arrived yet. Here's the setup:

    I drew up a simple schematic for the nodes. Notice that the resistor values are not shown. This is because I'm still waiting for some of the parts to arrive and I want to try them out to get a feel for what values will work best.

  • Parts ordered, social parameters being decided

    shlonkin07/31/2014 at 13:12 0 comments

    I have ordered enough parts for 10 nodes, though I don't know if I'll actually make that many. I think I'll start with just three or four and if things work well I'll make more. The controller is an ATtiny85. The sensors at this point are a thermistor and a photoresistor and I have one more open pin on the controller in case I want to add something else.

    I've also begun coding. I got the basic stuff mostly out of the way, like the IR communication. The 38kHz carrier wave is made by a timer and the rest is bit banged with timing similar to the NEC remote control protocol. I doubt any other remote controlled stuff in the room will react, but I may have some trouble turning on the TV.

    Right now I'm figuring out the social interactions. Specifically, I'm thinking about the parameters and how they affect and are affected by interactions. Nothing is completely set yet, but I'm thinking of the following. I'm sorry if this looks like an indecipherable wall of text. Things will be better described once they are set.

    *Note: exchange means exchanging environmental data. Propose means to propose friendship or enemyship, default relationship is neutral.

    Personal parameters: confidence, honesty, desire to socialize

    Parameters concerning each of the other nodes: affection, trust, perceived social status, relationship

    Parameters affect conversation in the following ways.

    • confidence: higher values mean more exchanges are about self and higher chance to propose.
    • honesty: lower values mean higher chance and magnitude of sending false self data
    • desire: higher values mean more frequent exchanges and lower chance to ignore
    • affection: more frequent exchanges and less chance to ignore nodes with high affection. When affection is high enough, there's a chance to propose/accept friendship. When low, same for enemy proposals.
    • trust: lower values mean more frequent exchanges with 3rd parties about this node(gossip). Higher values mean lower chance of sending false data to this node.
    • status: still working on this, but this is where environmental input is important

    Parameters are affected by conversation in the following ways.

    • affection: increased by successful exchanges and when enemy proposal is rejected
      decreased by ignored exchanges, upon discovering false data and when friendship proposal is rejected
    • trust: increased by verifying true data with 3rd party exchanges
      decreased by discovering false data with 3rd party exchanges
    • status: increased when other's environmental parameters are closer to ideal and when others are in friendly relationships
      decreased by opposite of above
    • relationship: can be neutral, enemy, or friend. It is changed by accepting proposals.

    Parameters affected by environment:

    • confidence: related to light intensity (wealth)
    • honesty: related to temperature (comfort)

    I have thought of writing up a set of equations intertwining everything(imagine a far less elegant set of Maxwell's equations), but there is nothing yet.

View all 6 project logs

  • 1
    Step 1

    Using the provided schematic, assemble as many nodes as you want to have. If you don't have the handy keychain lights, you'll have to come up with an enclosure and power source, though I'm working on designing a more accesable version.

  • 2
    Step 2

    Assemble a monitoring hub. Use the usb version if you want to keep your computer on the whole time running software to handle incoming data. Use the SD version otherwise.

  • 3
    Step 3

    Use Arduino to program all of the microcontrollers. Don't forget to assign each one a unique ID.

View all 6 instructions

Enjoy this project?



somove5603 wrote 05/29/2021 at 07:06 point

This is looking very interesting idea I am also working on a similar type of golden retriever puppies website you can see here.

  Are you sure? yes | no

Dina wrote 07/22/2020 at 21:19 point

I know this project is long since dead and not going anywhere any time soon, but I just wanted to say that I've been so inspired by this concept for so many years since I found this page online, I come back to it every couple of months and think about how I could apply some of these concepts into my own projects. Thanks for making this!

  Are you sure? yes | no

davidshep315 wrote 03/04/2015 at 19:05 point

Avoid the confusion by adding actual data and interactions to a log they all tell the truth to...  Call it 'Doc' if you like, the psychoanalyst of the group. He can help you make sense of the chatter.

  Are you sure? yes | no


[this comment has been deleted]

shlonkin wrote 08/12/2014 at 01:07 point
Yeah, and then I'd probably go loony combing through the code to figure out what went wrong.
But seriously, you are giving me some good ideas. It would be great if the nodes could take over the functions of the devices they are attached to. If this project makes it into the quarterfinals I will make a determined effort to make that a reality.

  Are you sure? yes | no

Zardoz wrote 08/11/2014 at 15:03 point
I think this project has some traction... I will keep my eye on this one...

  Are you sure? yes | no

shlonkin wrote 08/11/2014 at 23:27 point
Thanks for the support. I'll do my best to make it interesting.

  Are you sure? yes | no


[this comment has been deleted]

shlonkin wrote 08/11/2014 at 23:38 point
Sorry, I know you wrote this a couple of weeks ago.
That's a good quote, but the ideal outcome of this project is if the devices begin acting in ways that I did not intentionally program them to. If my clock develops a sense of humor I will shout for joy.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates