IoT Coffee Pot Monitor (5 / 9 steg)
Steg 5: Firmware - ATmega328p
Firmware för detta chip kan hittas i katalogen atmega328p kod källdatabasen. Denna kod är skrivet i C, bör sammanställas med AVR-GCC och kan blixtrade till chip med Atmel Studio eller AVRDUDE och en extern AVR programmerare. Detta är inte Arduino kod. Det finns några ändringar av koden som används i LCD-läsaren Instructable, så jag kommer att kort beröra dessa punkter.
På stöveln, kommer att följande åtgärder äga rum:
- Initiera I/O pins och maskinvara och kringutrustning
- Aktivera ESP8266
- Aktiverar skalan, se till i vikt läge med gram som enheten
- Aktivera I2C bussen
- Ange huvudloop
Den huvudsakliga loopen gör följande saker ungefär en gång per sekund:
- Läsa LCD
- Avkoda LCD data till en vikt i gram
- Återställa ESP8266, om så önskas
- Hålla skalan vaken (varje 45 sekunder)
För att hålla skalan vaken, används knappen enhet ett par gånger. Annars går skalan in en klockvisningsläge som inte kan vara enkelt lämnat. Även om detta chip är den huvudsakliga styrenheten, fungerar det som en slav på I2C bussen. Detta skedde främst eftersom modulen ESP8266 används inte har tillgång till faktiska I2C hårdvara stift, och en "lite-bang" master är mycket enklare att implementera än en slav.
När en I2C läsa initieras, överförs de skala siffrorna på bussen. Den första byten representerar de övre två siffrorna, medan den andra byten representerar de nedre två siffrorna. Till exempel skulle en vikt av 1234 gram skickas som [12] [34]. Som mega328 aldrig väntar en I2C skriva, signalerar sådan händelse en reset begäran av ESP8266. Vid denna tid, kommer att mega328 dra linjen reset i ESP8266 låg för några millisekunder och sedan släppa den. Detta används som ett grundläggande sätt att övervinna fel stater i ESP8266.