IoT Coffee Pot Monitor (6 / 9 steg)
Steg 6: Firmware - ESP8266
Firmware för den här modulen kan hittas i esp8266 katalog av koden källdatabasen. Denna kod är skrivet i C, bör sammanställas med hjälp av Espressif SDK och XTensa verktyg GCCoch kan blixtrade till chip med hjälp av esptool och en 3.3V USB to Serial Converter. Detta är inte Arduino kod.
Koden presenteras bygger bort av en annan Instructable jag tidigare skrev. Igen, jag uppmuntrar dig att ta dig tid att läsa igenom denna guide, eftersom den visar hur man ställer in utvecklingsmiljön, flash chip, och Detaljer koden används samt hur man skriver ditt eget PubNub bibliotek.
På stöveln ske följande:
- Initiera UART och I/O pins
- Ansluta till WiFi-nätverk
- Ansluta till PubNub
- Aktiverar en återkommande 1 ms timer
1ms timer kan fungera som en huvudloop, eftersom det upprepas varje 1ms. Det är här som vi kommer att begära information om skalan eller begär en återställning från Atmel ATmega328p. Hela I2C bit-bang genomförandet hanteras även här med hjälp av olika statliga flaggor och ställa in raderna clock och data HI eller LO därmed. När båda data-byte som representerar de skala siffrorna har lästs är värdena sammanlänkade och används för att bygga en JSON-sträng som ska publiceras i funktionen publishMsg() .
Publicera värdet med PubNubstatic Tom publishMsg (void)
{
Kolla värdena för I2C linje fel... om (TWI_msg [0] > 99 || TWI_msg [1] > 99) {
TWI_fullMsg = 10000;
}
Ignorera mycket liten valueselse om (TWI_msg [0] == 0 & & TWI_msg [1] < 50) {
TWI_fullMsg = 0;
}
Spela in fulla värdet och runda av till närmaste 10else {
int mod = TWI_msg [1] % 10.
TWI_msg [1] = 10.
om (mod > 4)
++ TWI_msg [1].
TWI_msg [1] * = 10;
TWI_fullMsg = (uint16_t) TWI_msg [1] + 100 * (uint16_t) TWI_msg [0];
}
Bara att publicera om detta är ett nytt värde eller det har varit ett tag... om ((TWI_fullMsg! = TWI_lastMsg) || TIME_TO_PUBLISH) {
char buf [40] = {0};
sprintf (buf, "{\"columns\":[[\"Coffee\",\"%d\ "]]}", TWI_fullMsg);
pubnub_publish (kanal, buf);
TWI_lastMsg = TWI_fullMsg;
stat_flag & = ~ REQUEST_PUBLISH;
}
}
Observera data publiceras endast om den är ny! Det vettigt inte att ständigt sända irrelevant eller upprepade byte. En räknare garanterar dock att minst ett meddelande publiceras varje några minuter, som fungerar som en signal om heartbeat . Du måste ange din egen PubNub nycklar och personliga WiFi autentiseringsuppgifter i källkoden. Detta diskuteras i att få igång guide jag skrev.