git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
Category: Elektroonika
Just nice gpio raspberry pi2 output
Voltage divider formula
Display your home temperature in cool way
I started to build my own digital clock using DS1302RTC
I have long time considered how to build digital watch. Now I am ready for this. I did not wanted to do it without real time clock (DS1302). So ordered some from china and now I got them
I put together first prototype and it works nice
So RTC gives me time
DS1302RTC is connected to Arduino. Later I will design my own board and going to use Atmega328PU. Battary keeps time even external power is down.
At the moment this is my fancy user interface. Later I will use LCD or OLED
Now I can measure battery level
Arduino-Uno and TFT 2.4”
Driving 220V 10A relay with Atmega328p
Wireless temperature measure system
The main components are atmega328p micro cpu, RFM12b radio modules and DS18S20 for temperature measurement.
Temperature sender unit
Sender code – github
Senders can power up using USB power converters or pattery pack.
Display unit gets power from any USB.
Display unit owns LCD plug (MCP23008) between atmega328p and LDC.
Now I thought it might by cool to collect all sensors data.
So I build network module who collects the same data that display module gets but sends it to my zabbix server.
Network module is built using ENC28J60
So now I can see cool graphs
Apache-kafka and Atmel 328p + enc28j60
I put together a simple hardware
atmega328p – executes programm
enc28j60 – ethernet
programmed it using C code:
…
// Demo using DHCP and DNS to perform a web client request.
// 2011-06-08 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php
#include <EtherCard.h>
// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
byte Ethernet::buffer[700];
static uint32_t timer;
Stash stash;
char website[] PROGMEM = “vm37.dbweb.ee”;
#define PATH “”
#define VARIABLE “test”
// called when the client request is complete
static void my_callback (byte status, word off, word len) {
Serial.println(“>>>”);
Ethernet::buffer[off+300] = 0;
Serial.print((const char*) Ethernet::buffer + off);
Serial.println(“…”);
}
void setup () {
Serial.begin(57600);
Serial.println(“\n[webClient]”);
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println( “Failed to access Ethernet controller”);
if (!ether.dhcpSetup())
Serial.println(“DHCP failed”);
ether.hisport = 8080;
ether.printIp(“IP: “, ether.myip);
ether.printIp(“GW: “, ether.gwip);
ether.printIp(“DNS: “, ether.dnsip);
if (!ether.dnsLookup(website))
Serial.println(“DNS failed”);
ether.printIp(“SRV: “, ether.hisip);
}
void loop () {
ether.packetLoop(ether.packetReceive());
if (millis() > timer) {
timer = millis() + 10000;
byte sd = stash.create();
stash.print(“{\”messages\”: [{\”value\”:{\”key\”:\”Margusja\”}}]}”);
stash.print(VARIABLE);
stash.print(“&action=Submit”);
stash.save();
// generate the header with payload – note that the stash size is used,
// and that a “stash descriptor” is passed in as argument using “$H”
Stash::prepare(PSTR(“POST /topics/kafkademo1 HTTP/1.1” “\r\n”
“Host: vm37.dbweb.ee:8080” “\r\n”
//”User-Agent: margusja” “\r\n”
“Accept: */*” “\r\n”
“Content-Type: application/json” “\r\n”
“Content-Length: $D” “\r\n”
“\r\n”
“$H”),
website, PSTR(PATH), website, stash.size(), sd);
// send the packet – this also releases all stash buffers once done
ether.tcpSend();
}
}
…
Uploaded code to MC and powered it up.
And after it got data from DHCP I saw nice picture – it sends data into my kafka queue